bWAPP——20201121

Session Mgmt. - Cookies (HTTPOnly)

low:
Cookies中httponly字段设置为false
点击 Click Here ,本地JS脚本可以直接访问到top_security这个变量值

Medium:
Cookies中httponly字段设置为true
点击Click Here,本地JS脚本无法访问top_security变量值了
通过服务器端是可以直接访问的

high:
Cookies中httponly字段设置为ture,同时缩短了cookies的生存时间
与中级难度的区别在于,调整了Cookie的生存时间,仅有300秒(5分钟)

Session Mgmt. - Cookies (Secure)

基于安全的考虑,需要给cookie加上Secure和HttpOnly属性,HttpOnly比较好理解,设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie打出cookie的内容。
Secure属性是说如果一个cookie被设置了Secure=true,那么这个cookie只能用https协议发送给服务器,用http协议是不发送的。换句话说,cookie是在https的情况下创建的,而且他的Secure=true,那么之后你一直用https访问其他的页面(比如登录之后点击其他子页面),cookie会被发送到服务器,你无需重新登录就可以跳转到其他页面。但是如果这是你把url改成http协议访问其他页面,你就需要重新登录了,因为这个cookie不能在http协议中发送。
low:

Session Mgmt. - Session ID in URL

三个难度都一样,sessionID暴露在url中,抓包可看

Session Mgmt. - Strong Sessions

本题主要是通过观察top_security_nossl和top_security_ssl的情况,来了解Session的安全存储
low:
没有安全性

medium:
top_security_nossl经过了Hash处理

high:
在非SSL情况下,看不到top_security_ssl的值
改用HTTPS后,可以观察到top_security_nossl值

XSS - Reflected (GET)

function xss($data)
{
         
    switch($_COOKIE["security_level"])
    {
        
        case "0" : 
            
            $data = no_check($data);            
            break;
        
        case "1" :
            
            $data = xss_check_4($data);
            break;
        
        case "2" :            
                       
            $data = xss_check_3($data);            
            break;
        
        default : 
            
            $data = no_check($data);            
            break;   

    }       

low/medium:
没有进行过滤,可以直接进行xss

function xss_check_4($data)
{
  
    // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
    // These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).
    // Do NOT use this for XSS or HTML validations!!!
    
    return addslashes($data);
    
}

high:
对符号进行了严格的过滤

function xss_check_3($data, $encoding = "UTF-8")
{

    // htmlspecialchars - converts special characters to HTML entities    
    // '&' (ampersand) becomes '&' 
    // '"' (double quote) becomes '"' when ENT_NOQUOTES is not set
    // "'" (single quote) becomes ''' (or ') only when ENT_QUOTES is set
    // '<' (less than) becomes '&lt;'
    // '>' (greater than) becomes '&gt;'  
    
    return htmlspecialchars($data, ENT_QUOTES, $encoding);
       
}

XSS - Reflected (POST)

同上一题

XSS - Reflected (JSON)

<script>

        var JSONResponseString = '<?php echo $string ?>';

        // var JSONResponse = eval ("(" + JSONResponseString + ")");
        var JSONResponse = JSON.parse(JSONResponseString);

        document.getElementById("result").innerHTML=JSONResponse.movies[0].response;

    </script>

low:
可使用闭合json语句的方法,输入"}]}';alert(1);,成功显示。

medium/high:

if($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2")
    {

        // Retrieves the movie title
        $title = $_GET["title"];

    }

    else
    {

        $title = xss_check_3($_GET["title"]);

    }

输入的必须是已有电影名,不是的话就去执行xss_check_3,xss_check_3对符号进行了严格过滤

XSS - Reflected (AJAX/JSON)

AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
low/medium:
使用常用语句 ,会出现重复(鬼畜)弹窗。

XSS - Reflected (AJAX/XML)

low/medium:
据说使用HTML转义字符或特殊实体可实现,如 <img src=x onerror=alert(1)>,

XSS - Reflected (Back Button)

Click the button to go to back to the previous page:

<input type=button value="Go back" onClick="document.location.href='<?php echo isset($_SERVER["HTTP_REFERER"]) ? xss($_SERVER["HTTP_REFERER"]) : ""?>'">

low: 根据代码知——可改变onClick的值,用burp将Referer请求头修改为 "> ![](https://img2020.cnblogs.com/blog/2047558/202011/2047558-20201121151419417-221272341.png) ![](https://img2020.cnblogs.com/blog/2047558/202011/2047558-20201121151514408-1406942555.png) medium: 源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。 high: 源码中使用了htmlspecialchars()函数来进行过滤

XSS - Reflected (Custom Header)


foreach(getallheaders() as $name => $value)
{

    if($name == "bWAPP")
    {

        echo "<i>" . xss($value) ."</i>";

    }

}

low:
本题需要在HTTP的头部加入'bWAPP字段即可 Palyload: bWAPP: ,不过试了好几次都没成功,加了referer也没弹窗

medium:
源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。

high:
源码中使用了htmlspecialchars()函数来进行过滤

XSS - Reflected (Eval)

low:
将data()函数改为alert()函数即可

medium:
源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。

high:
源码中使用了htmlspecialchars()函数来进行过滤

 <?php

    if(isset($_GET["date"]))
    {    

        if($_COOKIE["security_level"] == "2")
        {

            if($_GET["date"] != "Date()")
            { 

                echo "<p><font color=\"red\">Invalid input detected!</font></p>";        

            }

            else
            {

    ?>
posted @ 2020-11-21 15:42  WANGXIN_YU  阅读(338)  评论(0)    收藏  举报