隐蔽挖掘 xss 漏洞

回顾 XSS 漏洞原理和防御的知识

XSS 漏洞原理

​ XSS 通过构造的代码(JavaScript)注入到网页中,并由浏览器解释运行这段JS 代码,以达到恶意攻击的效果。当用户访问被 XSS 脚本注入过的网页,XSS 脚本就会被提取出来,用户浏览器就会解析执行这段代码

关键点:输入的内容服务器是否原样返回(未被编码、过滤等

XSS 防御

​ XSS 过滤器的作用是过滤用户(浏览器客户端)提交的有害信息,从而达到防范XSS 攻击的效果。

输入过滤

输入验证
  • 仅接受指定长度;
  • 仅包含合法字符;
  • 仅接收指定范围;
  • 特殊的格式,例如,email、IP 地址。
数据消毒

净化或过滤有害输入

<?php
// echo $_GET['keywords'];
$keywords = $_GET['keywords'];
$keywords = strtolower($keywords);
$keywords = str_replace("on", "", $keywords);
$keywords = str_replace("<script>", "", $keywords);
$keywords = str_replace("<", "", $keywords);
$keywords = str_replace(">", "", $keywords);
echo $keywords;
?>

输出编码

将特殊字符转换为 HTML 实体,从而可以在 HTML 页面中安全地显示这些字符,避免被误解为 HTML 标记或 JavaScript 代码

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

黑白名单策略

不管是采用输入过滤还是输出编码,都是针对用户提交的信息进行黑、白名单式的过滤:

  • 黑名单:非允许的内容
  • 白名单:允许的内容

漏洞验证(DVWA 为例)

若输入的内容没有被过滤、实体编码,原样返回则说明存在 XSS 漏洞

存在 XSS 漏洞

poc:

<script>alert(/gjl/)</script>

image-20231120195926791

​ 但如果直接使用 poc 验证很容易被 waf 等防御措施发现 XSS 攻击的特征,从而封掉 ip 等

可以验证输入的内容是否原样返回

如提交测试内容

a1>/)

查看返回页面的源代码,未被过滤或转义,则存在 XSS

image-20231120200208861

不存在 XSS 漏洞

将难度调为 impossible

输入测试内容

a1>/)

查看其源代码

image-20231120200622784

发现关键字符被 HTML 实体编码,说明此 XSS 漏洞不可利用

image-20231120200740694

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

gjl_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值