找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 703|回复: 0

用COOKIE方法劫持所有DISCUZ版本

[复制链接]

735

主题

1102

回帖

3076

牛毛

二级牛人

积分
3096
QQ
发表于 2009-9-7 18:43:44 | 显示全部楼层 |阅读模式 来自 山东省威海市
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, $membertablefields
FROM {$tablepre}sessions s, {$tablepre}members m
WHERE m.uid=s.uid AND s.sid='$sid' AND CONCAT_WS('.',s.ip1,s.ip2,s.ip3,s.ip4)='$onlineip' AND m.uid='$discuz_uid'
AND 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绑定

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

当然这个很鸡肋!!!
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 02:39 , Processed in 0.136573 second(s), 37 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表