- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Session去访问.
SessionID作为特定用户访问站站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易的获取访问控制权,无需登录直接进入特定用户界面,进而进行其他操作.
用户访问服务器的时候,在服务器端会创造一个新的会话(session),会话中会保存用户的状态和相关信息,用于标识用户.
服务器端维护所有在线用户的session,此时认证,只需要知道哪个是用户在浏览器当前的页面即可。为了告诉服务器应该用一个session,浏览器需要把当前用户持有的SessionID告知服务器。用户拿到SessionID就会加密保存到cookie上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。SessionID一旦在生命周期内被窃取,就相当于用户失窃.
Session利用的实质: 由于SessionID是用户登录之后才持有的唯一认证凭证,因此黑客不需要再攻击登录过程(比如密码),就可以轻易获取访问权限,无需登录密码就可以直接进入特定用户界面,进而查找其他漏洞如XSS、文件上传等.
Session劫持: 就是一种通过窃取用户SessionID,使用该SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户有效的Session。如果SessionID是保在Cookie中的,则这种攻击可以称为Cookie劫持。SessionID还可以保存在URL中,作为一个请求的一个参数,但是这种方式的安全性难以经受考验.
(1)目标用户需要先登录站点; 。
(2)登录成功后,该用户会得到站点提供的一个会话标识SessionID; 。
(3)攻击者通过某种攻击手段捕获SessionID,
(4)攻击者通过捕获到的SessionID访问站点即可获得目标用户合法会话.
(1)暴力破解:尝试各种SessionID,直到破解为止; 。
(2)预测:如果SessionID使用非随机的方式产生,那么就有可能计算出来.
(3)窃取:使用网络嗅探,XSS攻击等方式获取.
(1)更改Session名称:PHP中Session的默认名称是PHPSESSID,此变量会保存在Cookie中,如果攻击者不分析站点,就不能猜到Session名称,阻挡部分攻击.
(2)关闭透明化SessionID:透明化SessionID指当浏览器中的HTTP请求没有使用Cookie来存放SessionID时,SessionID则使用URL来传递.
(3)设置HttpOnly通过设置Cookie的HttpOnly为true,可以防止客户端访问这个Cookie,从而有效的防止XSS攻击.
(4)关闭所有的phpinfo类dump request信息的页面.
(5)使用User-Agent检测请求的一致性:但有专家警告不要依赖于检查User-Agent的一致性。这里是因为服务器群集中的HTTP的代理服务器会对User-Agent进行编辑,而本群集中的多个代理服务器在编辑该值时可能会不一致.
(6)加入Token校验:同样是用于检测请求的一致性,给攻击者制造一些麻烦,使攻击者即使获取了SessionID,也无法进行破坏,减少对系统造成的损失。但Token需要存放在客户端,如果攻击者有办法获取到SessionID,那么也同样可以获取到Token.
代码分析:
<?
php $html
= ""
;
if
($_SERVER['REQUEST_METHOD'] == "POST"
) {
if
(!isset ($_SESSION['last_session_id'
])) { $_SESSION[
'last_session_id'] = 0
; } $_SESSION[
'last_session_id']++
; $cookie_value
= $_SESSION['last_session_id'
]; setcookie(
"dvwaSession"
, $cookie_value); }
?>
看代码low级别还是没有什么防护.
开始进行攻击,我们打开BurpSuite,我们开始发包然后进行尝试.
我们这里可以看见Cookie这一栏,“Cookie: PHPSESSID=1fa3jls5mq9ok54q3l4j44u0q1; security=low”,重新打开一个没有Cookie的账户,复制进去就可以登入.
代码分析:
<? php $html = "" ; if ($_SERVER['REQUEST_METHOD'] == "POST" ) { $cookie_value = time(); setcookie( "dvwaSession" , $cookie_value); } ?>
我们看这个级别的代码,可以知道这里是通过时间戳来生成session的,所以我们这里利用时间戳转换器来转换就可以了.
我们开始攻击,这里提供一个时间戳转换器的网址: https://tool.lu/timestamp/ 。
与Low等级相同,我们找到Cookie,然后截包将时间戳,修改为现在就可以攻击成功了。 。
代码分析:
<? php $html = "" ; if ($_SERVER['REQUEST_METHOD'] == "POST" ) { if (!isset ($_SESSION['last_session_id_high' ])) { $_SESSION[ 'last_session_id_high'] = 0 ; } $_SESSION[ 'last_session_id_high']++ ; $cookie_value = md5($_SESSION['last_session_id_high' ]); setcookie( "dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], false , false ); } ?>
这里我们可以看见使用了md5进行了加密.
所以我们这里开始攻击,使用md5解密,发现从零开始的整数进行加密,设置拆解后构造的SessionID,可以直接免密登录.
代码分析:
<?
php $html
= ""
;
if
($_SERVER['REQUEST_METHOD'] == "POST"
) { $cookie_value
= sha1(mt_rand() . time() . "Impossible"
); setcookie(
"dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'],
true
,
true
); }
?>
我们这里查看代码SessionID作为起始值.
最后此篇关于DVWA靶场实战(九)——WeakSessionIDS的文章就讲到这里了,如果你想了解更多关于DVWA靶场实战(九)——WeakSessionIDS的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
DVWA靶场实战(九) 9、Weak Session IDS: 1.漏洞原理: Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(
我是一名优秀的程序员,十分优秀!