eveplw

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

10.XSS攻防与绕过

一.XSS获取cookie

# JS获取当前页面cookie
<button onclick="alert(document.cookie)">点我有惊喜</button>

 

二.XSS的攻击方式

1.获取cookie,实现越权,如果是获取网站管理员的cookie,也可以叫越权(尽快注销账号,让cookie失效)。

2.钓鱼网站,模拟真实网站,获取用户信息(用户名密码),再跳转真实网站。

3.执行JS代码,用于DDOS攻击别的目标站点。

4.恶意链接,或者直接将网页植入到站点的<iframe>标签中。

 

三.XSS的防御手段

1.使用函数 htmlspecialchars() 把括号内的特殊字符转换成实体编码

$content  = htmlspecialchars($_GET['content']);

2.正则表达式或字符串判断

实体字符编码如果输出在事件属性中,还是有可能存在绕过的可能性。比如在a标签中,<a href=javascript:alert(1)>,

这种形式,没有尖括号也没有引号,就有可能被绕过。如果存在类似这种的情况,需要在链接属性中加上http://或

https://的正则表达式来限制。

 

四.XSS的绕过方式

1.绕过过滤

(1)前端限制,直接用F12开发者选项修改JS即可,或者用burpsulte绕过。

(2)字符过滤,双写,大小写绕过,通过注释符绕过,也可以通过换行符绕过。

(3)HTML实体转换:

字符实体是用一个编号写入HTML代码中来代替一个字符,在使用浏览器访问网页时会将这个编号解析还原为字符以供阅读。

javascript:alert("Hello")编号为:

十六进制:

2.绕过编码

明确浏览器解析的机制,明白机制后,选择对应的编码

3.其他技巧

(1)输出标签间的情况:测试<>是否被过滤或转义,若无则直接<img src=1 onerror=alert(1)>

(2)输出在script标签内:我们需要在保证内部JS语法正确的前提下,去插入我们的paylod。

如果我们的输出在字符串内部,测试字符串能否被闭合。如果我们无法闭合包裹字符串的引号,

这个点就很难利用了。可能的解决方案:可以控制两处输入且\可用,存在宽字节

 

 

 

 

 

 

posted on   eveplw  阅读(207)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示