gpt4 book ai didi

DVWA靶场实战(九)——WeakSessionIDS

转载 作者:我是一只小鸟 更新时间:2023-01-23 06:31:16 27 4
gpt4 key购买 nike

DVWA靶场实战(九)

9、Weak Session IDS:

1.漏洞原理:

  Weak Session IDS也叫做弱会话,当用户登录后,在服务器就会创造一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Session去访问.

  SessionID作为特定用户访问站站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易的获取访问控制权,无需登录直接进入特定用户界面,进而进行其他操作.

  用户访问服务器的时候,在服务器端会创造一个新的会话(session),会话中会保存用户的状态和相关信息,用于标识用户.

  服务器端维护所有在线用户的session,此时认证,只需要知道哪个是用户在浏览器当前的页面即可。为了告诉服务器应该用一个session,浏览器需要把当前用户持有的SessionID告知服务器。用户拿到SessionID就会加密保存到cookie上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。SessionID一旦在生命周期内被窃取,就相当于用户失窃.

2.Session:

Session利用的实质: 由于SessionID是用户登录之后才持有的唯一认证凭证,因此黑客不需要再攻击登录过程(比如密码),就可以轻易获取访问权限,无需登录密码就可以直接进入特定用户界面,进而查找其他漏洞如XSS、文件上传等.

Session劫持: 就是一种通过窃取用户SessionID,使用该SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户有效的Session。如果SessionID是保在Cookie中的,则这种攻击可以称为Cookie劫持。SessionID还可以保存在URL中,作为一个请求的一个参数,但是这种方式的安全性难以经受考验.

3.攻击步骤:

(1)目标用户需要先登录站点; 。

(2)登录成功后,该用户会得到站点提供的一个会话标识SessionID; 。

(3)攻击者通过某种攻击手段捕获SessionID,

(4)攻击者通过捕获到的SessionID访问站点即可获得目标用户合法会话.

4.获取Session的几种方法:

(1)暴力破解:尝试各种SessionID,直到破解为止; 。

(2)预测:如果SessionID使用非随机的方式产生,那么就有可能计算出来.

(3)窃取:使用网络嗅探,XSS攻击等方式获取.

5.防御方式:

(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.

6.实战:

(1)Low:

  代码分析:

                          
                            <?
                             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的账户,复制进去就可以登入.

(2)Medium:

  代码分析:

                          
                            <?
                             php $html 
                            = ""
                             ; 
                             if 
                             ($_SERVER['REQUEST_METHOD'] == "POST"
                             ) { $cookie_value 
                            =
                             time(); setcookie( 
                            "dvwaSession"
                             , $cookie_value); } 
                            ?>
                          
                          
                             
                          
                        

  我们看这个级别的代码,可以知道这里是通过时间戳来生成session的,所以我们这里利用时间戳转换器来转换就可以了.

  我们开始攻击,这里提供一个时间戳转换器的网址: https://tool.lu/timestamp/ 。

  与Low等级相同,我们找到Cookie,然后截包将时间戳,修改为现在就可以攻击成功了。   。

(3)High:

  代码分析:

                          
                            <?
                             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,可以直接免密登录.

(4)Impossible:

  代码分析:

                          
                            <?
                             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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com