看了下MailEnable的IMAP服务UNSUBSCRIBE命令超长参数溢出问题。有点麻烦,看了快两天才弄清楚,希望没看错。主要是用IDA反汇编,然后结合OD一起看的。先用perl写了个脚本测试,代码很简单: 代码:
第一个断点下在0x00424631这里。至于为什么,理由很简单,这里是在判断命令,而且恰好是开始判断UNSUBSCRIBE命令,我们从头开始走下去,看看到底出了什么问题。开始是一个字符串比较,随后一个拷贝,走到下面出现异常。 代码:
第二次跟进sub_419E90,一开始,就分配了栈内存, 代码:
随后调用sub_412430是判断状态,当前是否可以执行UNSUBSCRIBE命令。判断完成后我们会跳到下面这里,查找空格解析命令和参数。 代码:
参数解析完成后,再次转跳到下面的位置,注意这里会进行拷贝,将传入的参数拷贝到栈内存中。 代码:
跟进sub_43B100子函数,代码如下: 代码:
可以看到,这里先判断源字符串的长度是否大于0x800,如果大于就调用strncpy拷贝0x800-1个字节。如果小于,就调用strcpy拷贝所有的字符串。但是搞笑的是,在sub_43B100的父函数中分配的内存是0x588,而调用sub_43B100的时候,传递的最大长度是0x800。伪代码如下: 代码:
这里的长度有限制,覆盖不到SEH。虽然可以覆盖到vuln的返回地址,但是在vuln返回之前就异常了,在一次strlen调用中,eax被字符串覆盖改写导致读取异常。小心的调整字符串,应该是可以顺利执行下去最后执行shellcode的,不过我没那耐心,也没那时间。 | |||||||
今天早上起来,发现主页又被arp挂马了。还好只是首页,blog没有问题。被插入的网页为:http://b0067.com/wm/5.htm。查看代码,如下: 代码:
分别看了那几个网页,一个是ms06014漏洞,一个是联众大厅的ActiveX溢出。一个木马是http://b0067.com/aa.exe,加了壳,没去拆开看。看来是ARP欺骗挂了整个C类,又是城门失火,殃及我啊。 123帮忙把壳拆掉了,地址是http://icylife.net/pic/aaun.rar,盗号,貌似还感染html文件,并且传播局域网。 | |
webshell中上传asp文件调用服务器ActiveX控件溢出获取shell | |
做windows系统渗透测试的时候有webshell了,但是拿不到shell,用来提升权限,也是个很郁闷的事情。一般来说,使用mdb jet引擎的溢出比较常见,但是有时候根据服务器上安装的第三方软件,使用一些新的方法,或许能有一点转机。这里主要描述一下调用activex溢出服务器的思路,方法很简单。 activex溢出一般都是用来攻击客户端的,但是这里,主要就是利用了asp是在服务端执行的,而且可以调用activex控件的原理。废话不多说了,一小段测试性质的代码,在服务器上放这么个asp文件,远程访问一下,服务器就执行计算器。代码没什么奇特的地方,把JS放到<%中执行就行了,主要是提供点思路。 ————————很傻很天真的分割线———————— 代码:
|