XSS漏洞 | iwebsec

文章详细介绍了在iwebsec环境中检测和利用反射型XSS、存储型XSS和DOM型XSS漏洞的过程,以及如何通过示例修复XSS漏洞。反射型XSS通过输入直接输出到页面,存储型XSS则将恶意脚本存储在服务器上,而DOM型XSS发生在客户端,无需服务器交互。最后,文章展示了使用htmlspecialchars函数作为修复反射型XSS的一个例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:iwebsec

这个环境是以前搭建好的,测了文件上传和一些SQL注入,现在好久没用了,重新启动。

  1. 显示正在运行或者和历史运行过的容器信息。在这里插入图片描述

  2. 启动容器
    在这里插入图片描述

  3. 查看容器
    在这里插入图片描述

  4. 访问成功
    在这里插入图片描述

XSS漏洞

这个知识点以前有写过。
在这里插入图片描述

1、反射型XSS漏洞

在这里插入图片描述

  1. 打开环境页面
    在这里插入图片描述

  2. 随便测试几个,看回显
    在这里插入图片描述
    在这里插入图片描述
    像这种将输入直接输出到页面的大概就是反射型XSS了。

  3. <script>alert(1)</script>测试
    在这里插入图片描述

  4. 继续使用burpsuite的爆破版块测试哪些XSS语句能用,payload可以去GitHub找
    在这里插入图片描述

  5. 选一句出来用/xss/01.php?name=<img src/onerror=prompt(8)>
    在这里插入图片描述

  6. 看源码

    docker exec -it iwebsec bash
    cat /var/www/html/xss/01.php
    
    <table class='table table-striped'>
    	//下面这些php代码是在后端执行的
    	<?php
    		if(isset($_GET['name'])){
    			$name=$_GET['name'];
    			echo "<h2>"."Hello ".$name."<h2>";//将输入的直接输出成h2的内容
    		}else{
    			exit();
    		}
    	?>
    </table>
    
2、存储型XSS漏洞

这种攻击常见于论坛、博客和留言板。攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。【摘自《web安全攻防》】
在这里插入图片描述

  1. 打开环境
    在这里插入图片描述

  2. 随便输入一些,看回显
    在这里插入图片描述
    将输入的东西提交后,展示在页面中,并且展示所有输入提交过的,这种就是存储型XSS了。

  3. <img src/onerror=prompt(8)>
    在这里插入图片描述

  4. 继续添加仍会加载前面的XSS语句
    在这里插入图片描述

  5. 源码

    </form>
    	<body>
      <?php
      if(isset($_GET['name'])){
    		$name=$_GET['name'];
    		$sql="INSERT INTO xss set name='$name'"; //将输入的内容存入数据库中
    		$result=mysql_query($sql);
    		
    		$sql="SELECT * FROM xss";//查询xss数据库的所有内容
    		$result=mysql_query($sql);
    	}
    	else{
    		exit();
    	}
    	
    	if ($result) {
    	?>
    		<table class='table table-striped'>
          <tr><th>id</th><th>name</th></tr>
    	<?php
    		while ($row = mysql_fetch_assoc($result)) { //将查询结果一行一行输出
    			echo "<tr>";
        			echo "<td>".$row['id']."</td>";
        			echo "<td>".$row['name']."</td>";
    			echo "</tr>";
    		}	
    		echo "</table>";
    	}
    	else 
    	{
    		print_r(mysql_error());
    	}
    	?>
    
3、DOM XSS漏洞

客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型XSS漏洞不需要与服务器交互,它只发生在客户端处理数据阶段。【摘自《web安全攻防》】
在这里插入图片描述

  1. 打开环境,随便输出测试
    在这里插入图片描述
    这个跟反射型XSS很像,但是机制是不一样的,这里不需要用到后端,也就是不涉及php代码。

  2. 我们看看网页源代码,注意里面的一个函数

    <table class='table table-striped'>
    	<script>
    		//domxss函数,该函数的作用是通过DOM操作将元素"output"的内容修改为元素"input"的内容
    		function domxss()  
    		{
    			var str = document.getElementById("input").value;
    			document.getElementById("output").innerHTML = str;
    		}
    	</script>
    	
    	<!--"output"元素,这个元素的值取自 输入内容 -->
    	<h2 id = "output"></h2>  
    	<!--"input"元素-->
    	<input type="text" id="input" value="" />  
    	<!--点击"submit",触发domxss函数-->
    	<input type="button" value="submit" onclick="domxss()" />
    </table>
    
  3. <img src/onerror=prompt(8)>
    在这里插入图片描述
    进行测试其他句<img src=1 onerror=alert(1)>
    在这里插入图片描述

4、XSS修复示例

这一关是修复第一关的。
在这里插入图片描述
看网页源代码,应该是添加了htmlspecialchars函数,即将输入的内容先进行一次实体编码再输出。
在这里插入图片描述
实体编码一般涉及< & > "等符号,倘若是在scriptinput标签当中,再找一些避开这些符号的XSS语句,即可突破。但是看源码的关键部分

echo "<h2>"."Hello ".htmlspecialchars($name)."<h2>";

不涉及scriptinput标签,因此目前没啥办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值