XSS漏洞介绍
xss(cross site script)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的,它主要分为俩种类型
1. 存储型XSS(持久型):攻击者将恶意脚本存储在目标服务器上,每当用户访问受感染的页面时,恶意脚本就会执行。
2. 反射型XSS(非持久型):攻击者诱使用户点击一个链接,该链接将恶意脚本作为输入传递给服务器,然后服务器将这个脚本反射回用户的浏览器执行。
3. DOM型(非持久型):它主要发生在客户端(浏览器端),依赖于网页中动态的文档对象模型(DOM)结构。与传统反射型XSS和存储型XSS不同,DOM XSS攻击不依赖于服务器端的漏洞,而是利用客户端JavaScript代码中的漏洞来注入并执行恶意脚本。
XSS攻击的常见目标是盗取用户的cookie和其他敏感信息,这些信息可以用来进行会话劫持、身份冒充等进一步攻击。如何防御?
1. 输入验证:网站开发者需要对用户输入进行严格的验证和过滤,避免将不受信任的数据直接输出到HTML中。
2. 输出编码:当将用户输入的数据输出到页面时,使用适当的编码方法(如HTML实体编码)来转义可能被浏览器解释为脚本的特殊字符。
3. 对输出内容进行编码:在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。
第一关Payload
src='http://192.168.11.129:8081/xss/level10.php?t_sort="onclick="javascript:alert(1)" type="text'
![图片[1]-xss-labs靶场xss靶场通关教程第15关-山河网络安全](https://tools1012.com/wp-content/uploads/2025/02/d2b5ca33bd20250205144048-1024x868.png)
查看前端页面代码,发现了ng-include,猜测可能要用到文件包含
知识补充
知识补充:ng-include 指令用于包含外部的 HTML 文件基本语法< ng-include src= "filename" οnlοad= "expression" autoscroll= "expression" > < /ng-include >
![图片[2]-xss-labs靶场xss靶场通关教程第15关-山河网络安全](https://tools1012.com/wp-content/uploads/2025/02/d2b5ca33bd20250205144351-1024x523.png)
看一下后端代码,看看有没有可以传值的变量
</script>
<title>欢迎来到level15</title>
</head>
<h1 align=center>欢迎来到第15关,自己想个办法走出去吧!</h1>
<p align=center><img src=level15.png></p>
<?php
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>
有个src变量,并进行了HTML实体编码,那就是构造一个src语句,完成脚本运行。
可以把前面的关卡利用起来,Level 10也使用htmlspecialchars,我们包含html选择Level 10的http://192.168.11.129:8081/xss/level10.php
(注意:这里你要填自己的链接地址,注意修改),并利用前面的通关代码,因此可以构造src='http://192.168.11.129:8081/xss/level10.php?t_sort="onclick="javascript:alert(1)" type="text'
点击输入框,触发弹窗,通关!
暂无评论内容