一个漏洞的发现过程

  in   tech with  0  comment

无意间发现的一个漏洞。本想提交乌云,结果一看活动时间,今天晚上就要结束了,遂作罢。整个过程都抱着学习的态度记录了一下,整理成文,以记之。

在12306研究研究咋买票,点了图片验证点了几十次都没登录成功。尼玛,那8*8像素的图片你让我咋识别。先刷个朋友圈放松一下。现在这朋友圈真是不行了,都是面膜。翻翻翻,戳我免单?这是什么玩意?原来是一个APP的活动,正好我手机上装的有这个玩意。点开火车票栏目,还真有个免单的玩意。唔,先看一下规则。
fmYbErm.jpg!web.jpg
我默默的数了数自己微信好友。。。这活动太不靠谱了。

买买买,买了两张高铁票。买完又弹一个烦人的页面让我找人帮忙免单。尼玛,我去哪找那么多人帮我。随手给基友的微信分享了一个,骚扰骚扰他。然后顺手点进免单看了一下。这页面简直不忍直视,估计哪个程序员通宵赶工出来。整页的图片背景,图片按钮。好吧,我准备看一下它的代码写的烂不烂。把链接复制到电脑上。页面down下来看一下。

js代码写的不错,暗赞了一句。开始找提交的按钮触发的事件。
za6fayu.png!web.png

然而菜鸡表示压力山大,没看懂。还是分析请求吧。模拟器开启,抓包工具开启。
6zaeqmi.jpg!web.jpg

看了一圈,这个请求比较可疑。拿出来分析一下。先照葫芦画瓢模拟一下请求。
VVnYzaA.jpg!web.jpg
毫无疑问,肯定会有限制,提示非法用户。由于是get请求,也不可能做特别复杂验证。并且这个活动是微信内部页面,大多数程序员都会或多或少的对安全验证方面不自觉的忽略( 比如我,顺便鄙视一下居然用jsonp做跨域)。所以最用可能的还是在header中的几个参数。,加了cookie,没反应。加了X-Requested-With,没反应。加了Referer,我擦?竟然有反应了。
jIbEfuU.jpg!web.jpg
看到这个提示,觉得有戏。微信里用什么识别身份的?openid啊!找了找get的参数。果然有一个openid。随便改了一个字母。
uy2UNrB.png!web.png
执行成功,回头刷新了一下那个页面,over
Iz6N7rf.png!web.png
出现bug原因就是这一步没有验证openid的有效性。但即使验证了openid有效性,还是会出现问题。无非多收集几个有效的openid。其实最重要的还是在程序设计中对安全性的轻视。以为这个请求是在APP执行的,以为这个页面是在微信中打开的。如果放到电脑端,估计没有任何程序员会这样写一个活动页面,更别提这个大的一个公司的活动和产品。

Responses