热门关键字:   网站安全  黑客攻防  安全漏洞  系统安全  网络安全
站外
广告
域名申请虚拟主机 信息安全 域名注册 云主机 网络安全技术 企业网络安全 站外
广告
文字广告位招租 文字广告位招租 文字广告位招租 文字广告位招租 云安全

安全狗拦截webshell在某些条件下存在绕过

发布时间:2013-12-16 10:46文章来源:wooyun文章作者:在路上 点击次数:
摘要:一、前言 安全狗现在做的是越来越好了,这个拦截webshell功能也是越来越强大了。今天下午没有课,挺风和日子的...就简单测试一下! 二、测试过程 安全狗的防护webshell功能可以拦截1.asp;.gif这样利用解析创建的webshell。今天简单测试一下,发现这个功能做的...

一、前言

安全狗现在做的是越来越好了,这个拦截webshell功能也是越来越强大了。今天下午没有课,挺风和日子的...就简单测试一下!

 

二、测试过程

 

安全狗的防护webshell功能可以拦截1.asp;.gif这样利用解析创建的webshell。今天简单测试一下,发现这个功能做的很好,美中不足有个小问题来简单说一下

 

安全狗拦截绕过

 

 

C:\onlytest是站点根目录,创建test.asp和test.asp;文件夹,同时创建test.asp;.gif文件

 

两个文件夹下存放文件1.txt内容如下:

 

安全狗拦截绕过

 

 

一看大家都懂。

访问测试:

 

 

安全狗拦截绕过

 

 

访问http://localhost/test.asp;/1.txt

 

 

安全狗拦截绕过

 

 

呵呵,不拦截了就是这么简单。当然需要能创建特定文件夹的环境下才能起作用。这里简单说一下为什么test.asp;/1.txt可以当做asp来解析。(或者大家可能都知道,我这里就简单点说吧)

 

三、iis6特性说明

当iis接收到一个请求后,会首先判断调用哪个dll对请求进行响应,如果请求的是asp文件则调用asp.dll进行响应,其它后缀按照设置调用相应的dll进行响应。

经过对iis6.0的分析,最终确定在w3core.dll(C:\WINDOWS\system32\inetsrv)的W3_URL_INFO::ProcessUrl(IDA加载符号表后函数名)的函数中实现上述过程.

具体代码如下:

 

 

安全狗拦截绕过

 

首先,获得接收到的url相对路径,开始进行处理,从左到右查找第一个.字符,查找成功后,会做计算,判断点字符最大个数是否超过设置最大数0x64,如果小于最大值,则继续处理。

 

 

安全狗拦截绕过

 

在上一个结果基础上,从左到右查找/字符。如果找到则跳转。

 

 

安全狗拦截绕过

 

 

获得点与/之间字符的个数,设置STRU(字符串对象长度)的长度。然后无条件跳转,继续进行判断

 

 

安全狗拦截绕过

 

查找分号:

 

 

 

安全狗拦截绕过

 

查询成功后,会截取点字符与分号字符之间的字符,计算长度,设置长度信息

 

 

安全狗拦截绕过

 

 

获得点字符与/或者;之间的字符,然后将其转化成小写。调用FindEntry进行查询。Entry保存的是iis的配置信息的映射关系。在iis配置信息中如下所示:

 

安全狗拦截绕过

 

 

Entry里面保存的是这个对应关系表。asa后缀对应C:\WINDOWS\system32\inetsrv\asp.dll。

传入的获得的后缀如.asp则会在列表中根据后缀进行查找,如果查找成功会返回一个对象,包括dll路径,动作等信息的对象。

 

 

安全狗拦截绕过

 

如果查询成功则会将上述对象保存,后面会调用响应dll进行处理请求即参数等信息。如果查询失败:

 

安全狗拦截绕过

 

则会判断后缀是否是.dll、.isa、cgi等后缀。如果不是则回到开始位置,查找下一个点字符。进行循环处理。

 

四、小结

Iis保存着后缀和dll之间的对应关系。而iis对url解析获得后缀的过程如下:

1.获得url请求的路径如/1.txt/test.asp/test/1.txt( 原始url:

http://localhost/1.txt/test.asp/test/1.txt )

2.从左向右查询.字符,如果点字符个数大于0x64,退出

3.在找到的字符后查询/查找成功后获得.与/之间字符txt

4.在找到的字符串之间进行查找;

5.如果查找后则获得.与;之间的字符

6.将找到字符转换成小写

7.查找映射表,找到则获得处理请求的dll。

8.查找失败,则查询是否是.dll等字符

9.如果不是cgi等字符,则goto 2进行处理

而在映射表中,看到还有很多后缀会调用asp.dll进行解析,如asa、cdx、cer。因此对于形如

http://localhost/test.asp(Asp、cer、cdx)/*

http://localhost/test.asp(Asp、cer、cdx);*

都可以当做asp来解析。

 

五、延伸

本来就想写到这的,但是怕剑总不给通过,因此这里在延伸一下, 仅仅输出一个helloworld就没有什么意义了,因此将1.txt内容改成一句话。

 

 

安全狗拦截绕过

 

使用菜刀连接发现403了,被禁止了。狗又起作用了。好牛叉。

 

 

 

 

怎么绕过狗使用菜刀?看了剑总的思路:http://zone.wooyun.org/content/6549

但是本人学生党、屌丝党,没有自己的服务器,而且这样改起来需要在一句话服务端做解密,很麻烦。因此想象有没有简单解决方案。(当然剑总的解决方法是通用的,不一定是安全狗了,任何防护可能都可以过,但是代价也是高,对脚本小子的要求也很高。问题的解决方法还是取决于问题,这里只是为了绕过安全狗对菜刀的检查,就不用高富帅的方法了,找个屌丝方法就好了。)

 

 

 

使用burp设置上http代理,抓取菜刀发送的原始请求,抓到如下内容:

 

 

安全狗拦截绕过

 

可以看到菜刀发送了上面的内容提交到服务器,看着这个请求很容易明白cmd是一句话密码,后面是要执行的asp代码。

 

经过测试发现对于asp脚步菜刀都是发送如上模式串,不同功能代码进行十六进制转换放到44696D...那个位置上就可以了。

 

以下内容纯属yy:

因此狗如果想简单的防护菜刀就检测特征串即可了,找每个请求都含有的字符串即可。

如果你是规则的制作者你想到的检测规则是什么?这个连发挥想象的余地都没有,一定是Execute("Execute太明显了这个。

 

因此,修改上述请求:

 

 

安全狗拦截绕过

 

 

在第一个execute后面多加一个空格,果然狗失效了。正常获得了返回结果。这说明我有当写规则的潜质,呵呵。

 

 

既然知道了狗的检测方法,因此解决方案就出来,将每个请求包的execute(中间添加一个空格就好了。刚开始想自己写个python脚本实现:1.接收菜刀请求包 2.替换字符串 3.发送请求。看着这个思路这不就是burp么!如果burp有这个替换功能那就完美了。Burp真的是神器,只有你没有用到的功能,”没有”没有的功能

 

 

安全狗拦截绕过

 

 

猜测就是match and replace功能,测试时发现不能输入Execute(,因此我就将execute替换成execute空格多一个空格就可以让狗放行了(已经测试),添加上之后,开始测试了。

 

同样需要在浏览器上设置http代理为burp。Burp不拦截请求,直接放行

 

 

安全狗拦截绕过
安全狗拦截绕过

 

 

畅通无阻了


六、总结

好吧就写到这了,简单总结一下,这是一个小问题,修复很简单多匹配一点就好了...

没有别的就求多给两个rank 换个手机啥的 呵呵

标签分类:

上一篇:DZ,WP的暴力破解PHP版本
下一篇:实现另类的脚本木马伪装思路