用COOKIE方法劫持所有DISCUZ版本

DISCUZ和很多论坛都无法进行会话劫持,因为会话和IP绑定了,DISCUZ主要的会话认证机制如下:

/inlude/common.inc.php//第136行 验证会话重要的一段就是从sessions表中查询SID,其中一个重要的条件就是$onlineip,如果$onlineip和sessions表中的IP信息无法对应,就不能继续建立sessions表中保存的会话。――――――――――――――――――――――――――?看以下代码:if($sid) {if($discuz_uid) {$query = $db->query(“SELECT s.sid, s.styleid, s.groupid=6 AS ipbanned, s.pageviews AS spageviews, s.lastolupdate, s.seccode, $membertablefieldsFROM {$tablepre}sessions s, {$tablepre}members mWHERE m.uid=s.uid AND s.sid=$sid AND CONCAT_WS(.,s.ip1,s.ip2,s.ip3,s.ip4)=$onlineip AND m.uid=$discuz_uidAND m.password=$discuz_pw AND m.secques=$discuz_secques”);

//79行 $onlineip首先取自HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR这两个HTTP头——————————————————————————if(getenv(HTTP_CLIENT_IP) && strcasecmp(getenv(HTTP_CLIENT_IP), unknown)) {$onlineip = getenv(HTTP_CLIENT_IP);} elseif(getenv(HTTP_X_FORWARDED_FOR) && strcasecmp(getenv(HTTP_X_FORWARDED_FOR), unknown)) {$onlineip = getenv(HTTP_X_FORWARDED_FOR);} elseif(getenv(REMOTE_ADDR) && strcasecmp(getenv(REMOTE_ADDR), unknown)) {$onlineip = getenv(REMOTE_ADDR);} elseif(isset($_SERVER[REMOTE_ADDR]) && $_SERVER[REMOTE_ADDR] && strcasecmp($_SERVER[REMOTE_ADDR], ‘unknown’)) {$onlineip = $_SERVER[REMOTE_ADDR];}

PS:要是我们伪造HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR这两个HTTP头就可以绕过IP绑定

嘿嘿 当然我们可以在简单的欺骗之后的劫持也可以…

当然这个很鸡肋!!!

只知道心痛得滴血,都只为你。

用COOKIE方法劫持所有DISCUZ版本

相关文章:

你感兴趣的文章:

标签云: