统用 WSockExpert.exe 抓了一下上传的包,在一句话 asp 木马里添加下 gif89a 头,再在包 的这里改为: Content-Disposition: form-data; name="article_img"; filename="C:\aa.asp .gif" 用nc提交后即得到名为120107005538_53.asp的上传文件,也就拿到其webshell。如图 7: ![]() 其实这里上传的时候,web 防火墙也拦了好几次,几乎杀了我 95%的小马,最后只能请 出独门暗器才躲过这 bt 的防火墙。后来才知道该虚拟主机使用的组合是【星外+护卫神.入 侵防护专家】。 拿到 www.aaa.com的webshell后,自然是想跨目录到a.111.com。而最新的星外+护卫神 的确很有效,删除了wscript.shell、shellapplication等扩展,还不支持aspx,没有任何 运行命令的可能。 调试 php 漏洞 我用phpinfo看了下www.aaa.com的web服务器的php版本是 5.2.9-2。版本不高,我印象 里php5.2.13以下的版本出过好几个漏洞,其中【PHP hash_update_file() Already Freed Resource Access Vulnerability】是比较著名的。于是我放下该站的webshell,找到这个 漏洞公告和poc,准备调试一下这个漏洞,用它去执行命令,进而提升权限。 公告地址为: http://php-security.org/2010/05/01/mops-2010-001-php-hash_update_file-alrea dy-freed-resource-access-vulnerability/index.html 我在 vmware_winxp的 apache+php环境里,用 windbg附加进程httpd.exe,然后在浏览 器打开这个漏洞的poc,发生异常,如图8: ![]() 由图8可以看到发生问题的模块是php5ts.dll,发生问题的函数是php_hash_register. 8 在这个函数偏移0x2bf 处发生了异常。 显然 php5ts.dll 是 php 的核心解析器,php 所有的功能都包含在它里面,不论什么操 作系统运行php都少不了要加载它。从这里可以看出这个漏洞危害的范围很广,是跨平台的。 至于漏洞发生的原因就不在这里调试叙述了。 现在看发生异常的位置是: 00a74fef ff5204 call dword ptr [edx+4] ds:0023:55555559=???????? Eip 为 0x00a74fef 的地方,而 poc 第一句代码就是 define("OFFSET", pack("L",0x55555555));把这个地址装入一个二进制串中。再看异常发生时的寄存器环境如 图 8 中的 edx=0x55555555,后来再通过调试确定开始的第一句代码的地址就是控制的 edx 寄存器。那么只要能在edx+4 指向的地址装入精心构造的shellcode,就可以顺利溢出了。 后来和 2yue 聊天时告诉我,他发现了一种把另一个 php 漏洞【PHP addcslashes() Interruption Information Leak Vulnerability】和这个漏洞结合起来利用的方法。后来 我也证实了这个结果。以下是 2yue的调试结果,我在这里和大家分享,希望他不介意。 “PHP addcslashes()信息泄露漏洞,他可以读出内存空间中的信息,在读出的信息中 , 从偏移 0x10 开始,保存了一个指针,而在该指针偏移0x20 开始保存我们控制的变量的值。” 这样的话我们就可以用 PHP addcslashes()漏洞找到放置 shellcode 的地址,再找到某 个变量 A 的地址,在变量 A 的地方存放 shellcode 的地址,那么 call [edx+4]就可以执行 shellcode 了。把那两个 poc 结合起来,最后那个 hexdump()函数改成我们自己的找到偏移 0x10指向的0x20 的地址的函数,好像很绕口。 其实是很简单的一个功能,直接附上2yue写的这个函数。 function hexdump($x) { $ret_long = ord($x[0x13]) * 0x1000000 + ord($x[0x12]) * 0x10000 + ord($x[0x11]) * 0x100 + ord($x[0x10]); $ret_long = $ret_long + 0x20; return $ret_long; } 只是里面的细节还需要调一调:例如要生成纯字母数字的shellcode,edx+4那个地方调 一下等等,然后就可以用 metasploit生成我们想要的纯字母数字的shellcode了。 我在本机测试成功,如图9,当然还是要感谢2yue。 ![]() 在漏洞调试成功后的第2天,我准备用这个exp 提权时,用菜刀连上我的webshell,谁 知道却返回404. 我把www.aaa.com |