前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【渗透技巧】XSS三重URL编码绕过实例

【渗透技巧】XSS三重URL编码绕过实例

作者头像
Bypass
发布2019-07-08 17:35:29
3.3K0
发布2019-07-08 17:35:29
举报
文章被收录于专栏:BypassBypass

0x00 前言

跨站脚本攻击(Cross Site Scripting),缩写为XSS,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。在黑盒渗透中,XSS在很多网站中普遍存在,这边分享一个简单有意思的XSS三重URL编码绕过漏洞实例。

0x01 漏洞实例

某次测试中,遇到一个很奇葩的XSS,我们先来加一个双引号,看看输出:

如图,可以看到,双引号被转义了,这时候是不是有种想放弃的想法,抱着尝试的状态,我对双引号进行URL双重编码,再看一下输出:

很惊喜的发现, 居然又被转义了,正常情况下,如果接受参数直接进行HTML ENCODE编码输出,这里应该输出是%22,但是这边却输出了 " ,说明服务端接收参数后进行了url解码操作。

我们再加一层URL编码,即三重url编码,再看一下输出:

URL编码被还原为双引号,闭合了前面的双引号,并带入到html中。我们可以轻易地构造Payload实现XSS。

0x02 思考与总结

通过黑盒测试的情况,我们可以反推服务端代码逻辑,服务端代码可能是这样子写的,以PHP示例:

代码语言:javascript
复制
<?php
$a=urldecode($_GET['id']); //接收参数并进行url解码
$b=htmlspecialchars($a);   //HTML ENCODE处理,到这里都是没有问题的
echo urldecode($b);        //最后,url解码输出
?>

这边代码逻辑中,问题根源在于最后一句的url解码输出,导致存在XSS编码绕过的情况。根据实际情况,给出的安全建议:HTML ENCODE处理后直接输出变量。

一次有趣的漏洞挖掘过程,黑盒渗透的乐趣,你无法想象你构造的Payload,服务端会返回给你什么样的惊喜。so,对于渗透测试,要有足够细心以及耐心,并且大胆的质疑一切,共勉。

喜欢这篇文章的人也喜欢 · · · · · ·

【代码审计】EasySNS_V1.6远程图片本地化导致Getshell

【代码审计】SQL二次编码注入漏洞实例(附tamper脚本)

【代码审计】MIPCMS 远程写入配置文件Getshell

【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞

Bypass

About Me

一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 漏洞实例
  • 0x02 思考与总结
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档