DVWA操作手册(三)Weak Session IDs,XSS反射-存储-DOM

本文详细介绍了DVWA中Weak Session IDs的Low、Medium、High三个难度级别的漏洞利用方法,以及XSS(DOM、Reflected、 Stored)各难度的攻击与防御策略,包括Cookie篡改、时间戳生成、MD5加密和各种XSS绕过技巧。
摘要由CSDN通过智能技术生成
2.8 Weak Session IDs
2.8.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级别的代码cookie产生策略是:在上一个cookie值的基础上加一。当用户访问服务器的时候,Low级别的代码会先检查服务器是否存在名称为"last_session_id"的session,如果存在,取出其值,自加一后赋值给名称为"dvwaSession"的cookie。
利用:
点Generate,按F12查看headers信息,可以看到

dvwaSession=2; security=low; PHPSESSID=5gu342kf3e7rp8bf5fjrjtmhho

dvwaSession就是生成的需要测试的SessionID,PHPSESSID是在访问时服务器分配给我的,不是用来测试的。再点Generate,可以看到dvwaSession=3,再点几次,依次加一,显而易见dvwaSession生成方法就是一次加1。在另一个浏览器上访问这个网址,burpsuite抓包,添加Cookie如下

dvwaSession=3; security=low; PHPSESSID=5gu342kf3e7rp8bf5fjrjtmhho

成功访问。

2.8.2 Medium难度

依旧点Generate,按F12查看headers信息,可以看到

dvwaSession=1551608372; security=medium; PHPSESSID=5gu342kf3e7rp8bf5fjrjtmhho

多点几次Generate,可以看到dvwaSession为1551608374,1551608380。这是自 Unix 纪元(January 1 1970 00:00:00 GMT)起的到当前时间的秒数。就应该是按照时间来生成的SessionID的(time函数)。依旧在另一个浏览器上访问这个网址,burpsuite抓包,添加如上Cookie。成功访问。

2.8.3 high难度

依旧点Generate,按F12查看headers信息,可以看到
dvwaSession=aab3238922bcc25a6f606eb525ffdc56
32位字符。由0-9和a-f组成猜想应该是MD5,拿到网站去解密,为14,在测试几次,发现就是如low一样从0开始每次加1,然后经过MD5加密,作为SessionID。依旧在另一个浏览器上访问这个网址,burpsuite抓包,添加上Cookie。成功访问。

2.9 XSS(DOM)
2.9.1 Low难度

服务器端核心代码

<?php
# No protections, anything goes
?>

可以看到,前端使用 document.write() 动态生成页面,服务器端代码没有任何的保护性措施!
页面本意是叫我们选择默认的语言,但是对default参数没有进行任何的过滤。

我们可以构造XSS代码,访问链接:
http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=

在这里插入图片描述

2.9.2 Medium难度

php服务端核心代码:

<?php
// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
   
    $default = $_GET['default'];  
    # Do not allow script tags
    if (stripos ($default, "<script") !== false) {
   
        header ("location: ?default=English");
        exit;
    }
}
?>

前端代码:

<form name="XSS" method="GET">
    <select name="default">
        <script>
            if (document.location.href.indexOf("default=") >= 0) {
    
                var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);
                document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");
                document.write("<option value='' disabled='disabled
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值