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

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

缺陷编号:wooyun-2013-016761

漏洞标题:[祝PKAV以及wooyun所有白帽子元旦快乐]anwsion缺陷大结合.

相关厂商:anwsion.com

漏洞作者: _Evil

提交时间:2013-01-01 00:17

修复时间:2013-02-15 00:18

公开时间:2013-02-15 00:18

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

foreach处理不当爆路径,程序设置缺陷,绕过全局变量的包含----变量覆盖

详细说明:

(1).foreach处理不当爆路径

http://wenda.anwsion.com/search/ajax/search_result/


1.jpg


缺陷:

<?php foreach ($this->search_result AS $key => $val)


代码没有检测$this->search_result是否为空,是否没数组....
\wenda\views\default\inbox\read_message.tpl.htm

<?php foreach($this->list AS $key => $val) {


缺陷一样.

2.jpg


2)程序设置缺陷.

http://wenda.anwsion.com/question/395

当你直接点击桌面zip下载需需要注册.
在源码中看见:

file/download/file_name-5qGM6Z2iLnppcA==__url-aHR0cDovL3dlbmRhLmFud3Npb24uY29tL3VwbG9hZHMvcXVlc3Rpb25zLzIwMTIwNjA3L2JkMGFhY2FhNjg2YzEyNDlkOTY1YzZjZWM5ZDEwY2Y1LnppcA==


其中:

aHR0cDovL3dlbmRhLmFud3Npb24uY29tL3VwbG9hZHMvcXVlc3Rpb25zLzIwMTIwNjA3L2JkMGFhY2FhNjg2YzEyNDlkOTY1YzZjZWM5ZDEwY2Y1LnppcA==

我们base64解码下.
最终连接;

http://wenda.anwsion.com/uploads/questions/20120607/bd0aacaa686c1249d965c6cec9d10cf5.zip


= =不用登陆能下载了,如果对方指定为VIP用户或者得注册(要邀请码)才能下载的话呢??
3)绕过全局变量的包含----变量覆盖
wenda\system\init.php 中

if (@ini_get('register_globals'))
{
if ($_REQUEST)
{
foreach ($_REQUEST AS $name => $value)
{
unset($$name);
}
}
}


此段代码程序是当全局开启全局时销毁变量,防止恶意代码赋值导致严重的后果.
但是程序员没了解,unset()默认只会销毁局部变量.
我们测试下:

<?php
if (@ini_get('register_globals'))
{
if ($_REQUEST)
{
foreach ($_REQUEST AS $name => $value)
{
unset($$name);
}
}
}
print $a."<br>";
print $_GET[b];
?>


http://127.0.0.1:8080/wenda/system/unset.php?a=1&b=2


3.jpg


a变量被销毁,达到程序目的.
可是:....

http://127.0.0.1:8080/wenda/system/unset.php?GLOBALS[a]=1&b=2


4.jpg


GLOBALS[a]以覆盖全局变量时,则可以成功控制变量$a的值~~~~
还有思路突破:
http://zone.wooyun.org/content/1872

为什么超全局变量$_REQUEST没有读取到$_COOKIE的参数呢?这个是php 5.3以后php.ini默认设置
request_order = "GP",所以你懂的!如果你修改request_order = "GPC",$_REQUEST应该就可以接受到参数了!
所以如果php是大于5.3的,变量覆盖漏洞应该可以再次利用!


漏洞证明:

见详细说明.

修复方案:

检查是否数组,是否空. 逻辑严格点? 变量覆盖这个我想不出好点子,你写好了我再看看。。。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2013-01-01 00:35

厂商回复:

谢谢,新年快乐

最新状态:

2013-01-05:GLOBALS 暂时不做处理。request_order 已经解决了


漏洞评价:

评论

  1. 2013-01-01 00:24 | Blackeagle ( 实习白帽子 | Rank:62 漏洞数:10 | 向WooYun致敬)

    新年快乐~

  2. 2013-01-01 11:59 | 疯子 ( 普通白帽子 | Rank:242 漏洞数:42 | 世人笑我太疯癫,我笑世人看不穿~)

    新年快乐~

  3. 2013-01-01 13:05 | Coody 认证白帽子 ( 核心白帽子 | Rank:1565 漏洞数:189 | 不接单、不黑产;如遇接单收徒、绝非本人所...)

    新年快乐~

  4. 2013-01-01 14:04 | 0x0F ( 普通白帽子 | Rank:231 漏洞数:60 | 尖刀安全 (JDSec.Com).......................)

    我明明是沙发。

  5. 2013-01-21 09:31 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    哇塞 小猪的 需要支付乌云币了 看来我落伍好多了

  6. 2013-01-31 11:39 | 猫头鹰 ( 路人 | Rank:29 漏洞数:6 | 不解释)

    新年快乐

  7. 2013-02-15 11:16 | 溪水流淌 ( 路人 | Rank:9 漏洞数:2 | 如果一切都任我欲为,我会有迷失在这自由深...)

    新年快乐~