发帖
 找回密码
 立即注册
搜索
0 0

分享 20250303 Web渗透系统班 第二十四课 樊子健

技术分享 1151 0 2025-5-7 16:43:35
XSS 跨站脚本攻击漏洞(一)





原理
Sql 注⼊:⽤户输⼊的内容被当作 sql 语句去执⾏
xss:⽤户输⼊的内容被当作 js 代码执⾏(js 注⼊)



利⽤(危害)
js 代码能够做任何事情



分类
dom 和 xss 都只能触发⼀次
http://10.211.55.3/3.html#alert(123)
http://10.211.55.3/3.html



Dom-xss
document.write
innerHTML
eval()

<meta charset='utf-8'>
<script>
var pos=document.URL.indexOf("name=")+5; //取name=后⾯的值
var username = unescape(document.URL.substring(pos,document.URL.length)); //取name=后⾯的值
var r='<b>'+username+'</b>'
document.write(r);
</script>




poc:http://192.168.10.150/1.html?name=<script>alert(1)</script>

示例代码1:
url总⻓度:100
name:60
substring(65,100)




示例代码 2:
<div id='404'>404</div>
<input type="button" onclick=fun() value="点击有惊喜">
<script>

function fun(){

var url=unescape(document.URL);//获取url

var pos=url.indexOf("name=")+5;//取name=后⾯的值

document.getElementById("404").innerHTML="Hi,
<b>"+url.substring(pos,url.length)+'</b>';}

</script>



poc:http://192.168.10.150/2.html?name=<img src=# onerror=alert(1) />




示例代码 3:
</h1>Hello World</h1>
<script>

//取#后⾯的数据

var a =location.hash.substr(1);

eval(a); // eval是⾼危函数。 把字符串当做代码进⾏执⾏

</script>



poc:http://192.168.10.150/3.html#alert(1);



反射-xss
<?php
// 反射型XSS漏洞示例(vulnerable.php)
$searchTerm = $_GET['search'] ?? '';
?>
<!-- 前端⻚⾯ -->
<!DOCTYPE html>
<html>
<head>
<title>反射型XSS演示</title>
</head>
<body>
<h1>搜索系统</h1>
<form method="GET">
<input type="text" name="search" placeholder="输⼊搜索内容">
<button type="submit">搜索</button>
</form>
<?php if(!empty($searchTerm)): ?>
<!-- 漏洞点:未对⽤户输⼊进⾏过滤处理 -->
<h3>搜索结果:<?php echo $searchTerm; ?></h3>
            <?php endif; ?>
</body>
</html>



存储-xss(⾼危)


会将⽤户输⼊的恶意代码存储在服务器⾥⾯,任何⽤户去访问都会触发这段恶意代码
核⼼:
反射型和 dom 型,恶意代码是存放在客户端的(只触发⼀次)
存储型,恶意代码是存放在服务端(多次触发)


<?php
// 存储型XSS漏洞示例(comment.php)
$commentFile = 'comments.txt';
// 处理表单提交(漏洞点:未过滤存储)
if(isset($_POST['submit'])){
$comment = isset($_POST['comment']) ? $_POST['comment'] : '';
if(!empty($comment)){
// 将⽤户输⼊直接存⼊⽂件
file_put_contents($commentFile, $comment . PHP_EOL, FILE_APPEND);//⽤户传⼊的参数会写
⼊⽂本 comments.txt⾥⾯
}
}
// 读取并显示历史评论(漏洞点:未过滤输出) 参数 1 ? 参数 2 :参数 3 三元表达式
$comments = file_exists($commentFile) ? file($commentFile) : []; //判断 txt 存不存在,如果不
存在,那么就会新建⼀个 txt ⽂件,如果存在,那么就会把⾥⾯的数据放到[xxx,ccc,aaa,bbb,ddd]
?>
<!DOCTYPE html>
<html>
<head>
<title>存储型XSS演示</title>
</head>
<body>
<h1>留⾔板系统</h1>
<!-- 留⾔表单 -->
<form method="POST">
<textarea name="comment" rows="4" cols="50"></textarea><br>
<input type="submit" name="submit" value="提交留⾔">
</form>
<hr>
<!-- 显示历史留⾔ -->
<h2>历史留⾔</h2>
<?php foreach($comments as $line): ?>//[xxx,ccc,aaa,bbb,ddd] xxx ccc aaa bbb ddd


<!-- 直接输出数据库/⽂件中的原始内容 -->
<div class="comment"><?php echo $line; ?></div>
<?php endforeach; ?>
</body>
</html>




www.abc.com
反射&dom
www.abc.com?恶意代码
存储
www.abc.com


实体


<script>

&ltscript&gt

绕过


xss-3


双写绕过


// 定义⼀个 HTTP 处理器函数,⽤于处理 XSS 过滤问题
func(writer http.ResponseWriter, request *http.Request) {
// 从请求的 URL 中获取 "name" 参数
var name = request.URL.Query().Get("name")
// 构建⼀个不区分⼤⼩写的正则表达式,⽤于匹配 "<script>" 标签
scriptRegex := regexp.MustCompile("(?i)<script>")
// 替换所有匹配到的 "<script>" 标签为空字符串,防⽌脚本注⼊
name = scriptRegex.ReplaceAllString(name, "")
// 构建⼀个不区分⼤⼩写的正则表达式,⽤于匹配 "</script>" 结束标签
scriptEndRegex := regexp.MustCompile("(?i)</script>")
// 替换所有匹配到的 "</script>" 标签为空字符串,进⼀步防⽌脚本注⼊
name = scriptEndRegex.ReplaceAllString(name, "")
// ⽣成 HTML 输出,将处理后的 name 参数嵌⼊其中,并写⼊响应输出
writer.Write([]byte(fmt.Sprintf(`<html>Hello %v</html>`, name)))
}




<sc<script>ript>alert(1)</scri</script>pt>



WEB渗透测试工程师系统班250303
24节课作业
1、什么是xss
跨站脚本攻击漏洞,用户输入的内容被当作js代码执行(js注入
2、xss危害?
js代码能做任何事情
3、xss有几种类型?
Dom-xxs  反射-xxs  存储型-xxs
4、什么是反射性xss
利用未对用户输入内容进行过滤的漏洞进行js注入;
反射型XSS攻击中,恶意脚本作为请求的一部分被发送到服务器,然后服务器将恶意脚本"反射"回响应页面中,最终在受害者的浏览器中执行。这种攻击通常需要诱骗用户点击特制的恶意链接。
5、什么是DOMxss
DOM型XSS攻击是通过修改页面的DOM环境来实现的,攻击载荷不会经过服务器处理,而是直接在客户端被解释执行。这种攻击发生在数据从源到接收器的流动过程中。
6什么是存储型xss

存储型XSS(又称持久型XSS)是最危险的一种XSS攻击方式,恶意脚本会被永久存储在目标服务器(如数据库、文件系统、评论区、用户资料等),并在用户访问受影响的页面时自动执行。


──── 0人觉得很赞 ────
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回