DVWA靶场联系(第三周)

一.Brute Force(暴力破解)

high

查看源码发现token

对于与token的使用攻击模式为pitchfock来爆破

二Command injection(命令行注入)

Windows系统支持的管道符如下:
" |" 前面命令输出结果作为后面命令的输入内容
"|| " 如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
"& " 两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
"&& " 如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

Linux系统支持的管道符如下:
    " ; " 执行完前面的语句再执行后面的语句、同时执行多条命令。
    " | " 显示后面语句的执行结果。
    " || " 当前面的语句执行出错时,执行后面的语句。
    " & "两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
    "&&"如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

    Linux系统还可以使用
    分号(;)同时执行多条命令
    还可以使用
    重定向(>)在服务器中生成文件
    或是使用(<)文件写入127.0.0.1&echo test>c:\1.txt
    在c盘生成一个1.txt


1.low

没有任何过滤,管道符可以任意使用。

2,medium

有黑名单过滤了&&和;。其他的还可以使用

3,high

黑名单过滤,可以使用命令&&。

 

三,CSRF (跨站请求伪造)

全称Cross-site request forgery。跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接,或者访问包含攻击代码的页面,在受害人不知情的情况下,以受害人的身份向服务器发送请求,完成一系列非法操作。

1、low

查看源码:

可以看出只要修改密码后和再次确认的密码一致就可以修改成功。 形成新链接

 使用户直接访问构造链接即可

2.medium

查看源码,发现增加了检查来源地址中是否包含http包头中host函数和访问的主机名来地址csrf攻击

 使用burp suite工具截断功能修稿referer头信息,修改成功

high

 <?php

$change = false;
$request_type = "html";
$return_message = "Request Failed";

if ($_SERVER['CONTENT_TYPE'] == "application/json") {
    $data = json_decode(file_get_contents('php://input'), true);
    $request_type = "json";
    if (array_key_exists("HTTP_USER_TOKEN", $_SERVER) &&
        array_key_exists("password_new", $data) &&
        array_key_exists("password_conf", $data) &&
        array_key_exists("Change", $data)) {
        $token = $_SERVER['HTTP_USER_TOKEN'];
        $pass_new = $data["password_new"];
        $pass_conf = $data["password_conf"];
        $change = true;
    }
} else {
    if (array_key_exists("user_token", $_REQUEST) &&
        array_key_exists("password_new", $_REQUEST) &&
        array_key_exists("password_conf", $_REQUEST) &&
        array_key_exists("Change", $_REQUEST)) {
        $token = $_REQUEST["user_token"];
        $pass_new = $_REQUEST["password_new"];
        $pass_conf = $_REQUEST["password_conf"];
        $change = true;
    }
}

if ($change) {
    // Check Anti-CSRF token
    checkToken( $token, $_SESSION[ 'session_token' ], 'index.php' );

    // Do the passwords match?
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = mysqli_real_escape_string ($GLOBALS["___mysqli_ston"], $pass_new);
        $pass_new = md5( $pass_new );

        // Update the database
        $insert = "UPDATE `users` SET password = '" . $pass_new . "' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert );

        // Feedback for the user
        $return_message = "Password Changed.";
    }
    else {
        // Issue with passwords matching
        $return_message = "Passwords did not match.";
    }

    mysqli_close($GLOBALS["___mysqli_ston"]);

    if ($request_type == "json") {
        generateSessionToken();
        header ("Content-Type: application/json");
        print json_encode (array("Message" =>$return_message));
        exit;
    } else {
        echo "<pre>" . $return_message . "</pre>";
    }
}

// Generate Anti-CSRF token
generateSessionToken();

?>


查看源码发现服务端代码增加了token验证机制,看似已经可以防御CSRF攻击了,但是并不是无懈可击,这种防御机制,如果网站或系统存在XSS漏洞,可以结合xss漏洞来获取user_token,实现攻击。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值