【野驴原创】一次基于XSS的刷票实践

  • A+
所属分类:moonsec_com
摘要

还有js泄露,通过进一步分析,还找到了作者的github主页,后期继续渗透成功获取一边界防
火墙权限,此处按下不表,专注刷票。

0x01 前言前言
    好不容易周末,本宝正在睡懒觉,被一个夺命连环call叫醒,是基友甲打来的。“赶紧的,
给我女儿投票,一天可以投一次。好处少不了你的,如果得第一,让我女儿给你个香吻。
”我一听来精神了,毕竟单身太久了。。。。。据说刷票这活已经基本形成产业链,有人工
的、有技术的,某宝上一搜便知,怎奈我这基友就一铁公鸡,一毛不拔。今天趁着这个机会
我也来研究研究,二话不说,挂了电话就开工。
0x02 信息收集
    经过一番信息收集,发现这个投票页面应该是一个新闻网站自己开发的,但是基于微信客
户端浏览,也就是只能手机访问,其他终端会提示错误。(相信大家对这个界面不陌生)

【野驴原创】一次基于XSS的刷票实践

还有js泄露,通过进一步分析,还找到了作者的github主页,后期继续渗透成功获取一边界防
火墙权限,此处按下不表,专注刷票。

【野驴原创】一次基于XSS的刷票实践

【野驴原创】一次基于XSS的刷票实践

【野驴原创】一次基于XSS的刷票实践

0x02 分析分析

既然浏览器不能访问,只能手机抓包分析。进一步证明了前期猜想,仅仅是通过user-agent验
证客户端,我们改一下就可以在电脑浏览器浏览。

【野驴原创】一次基于XSS的刷票实践

返回包中有大量敏感信息,如手机号等。

【野驴原创】一次基于XSS的刷票实践

【野驴原创】一次基于XSS的刷票实践

【野驴原创】一次基于XSS的刷票实践

我先用一部手机在微信客户端中投票抓包,第一次成功,重放,提示每个客户端每天只能投
一票,我假设是通过cookie验证,修改数据包中cookie中的一个字母,提示登录错误,(如
果可以,那刷票就简单了:)

【野驴原创】一次基于XSS的刷票实践

0x03 刷票实践刷票实践

我们先来缕一下思路,现在我们知道了要想刷票,必须有大量cookie,并且是有效合法
的cookie。那么怎么才能获取大量有效合法的cookie呢?
1. 1、找大量的手机登录微信投票
2. 2、一个手机微信多开
3. 3、盗取其他人的cookie</div>
复制代码
    我想这也是目前大多数刷票平台采用的。前两种就不说了,我们采用第三种方法,盗取其
他人的cookie,小伙伴们是不是想到了什么?对了,盗取cookie还有什么比XSS更方便
吗?Talk is cheap。动起来.....
 
要想盗取别人的cookie,就要让对方点击含有我们xss脚本的链接或访问页面。那就要找输入
点,看这里,此处就存在跨站漏洞。

【野驴原创】一次基于XSS的刷票实践

哈哈,投票发布页面,正合我意。利用xss.me等平台生成我们的xss代码,插入到“一句话标
语处”其他信息随便填写,但要有诱惑性。

【野驴原创】一次基于XSS的刷票实践

发布以后,稍等一会,就会有鱼上钩了。

【野驴原创】一次基于XSS的刷票实践

【野驴原创】一次基于XSS的刷票实践

我们要的是其中的cookie,可它本身就有时效性,如果手工一个一个提取,效率太低,并且
可能过期。所以我们要通过正则表达式提取cookie,我写了个简单的python脚本,关键代码
如下:

1. #! /usr/bin/env python 2. #coding=utf-8 3. import re 4.  5. txt='Your txt' #需要提取的文本 6.  7. re1='(PHPSESSID)'        # 字段1 8. re2='(=)'        # 等号 9. re3='(ugrm9eetvt4k56bfo7vapg1lv4)'        # 字段2 10. re4='(;)'        # 分号 11. re5='( )'        # 空格 12. re6='(Hm_lpvt_ba0e7859a57505c5640c98a3fa61b61d)'        # 字段3 13. re7='(=)'        # 等号 14. re8='(1450680436)'        # 字段4 15. re9='(;)'        # 分号 16. re10='( )'        # 空格 17. re11='(Hm_lvt_ba0e7859a57505c5640c98a3fa61b61d)'        # 字段5 18. re12='.*?'         19. re13='(1450677207)'        # 字段6 20.  21. rg =  re.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12+re13,re.IGNORECASE|re.DOTALL) 22. m = rg.search(txt) 23. if m: 24.     var1=m.group(1) 25.     c1=m.group(2) 26.     var2=m.group(3) 27.     c2=m.group(4) 28.     c3=m.group(5) 29.     var3=m.group(6) 30.     c4=m.group(7) 31.     int1=m.group(8) 32.     c5=m.group(9) 33.     c6=m.group(10) 34.     var4=m.group(11) 35.     int2=m.group(12)   36. print "("+var1+")"+"("+c1+")"+"("+var2+")"+"("+c2+")"+"("+c3+")"+"("+var3+")"+"("+c4+")"+" ("+int1+")"+"("+c5+")"+"("+c6+")"+"("+var4+")"+"("+int2+")"+"/n" 

然后将cookie整理为payload,使用burpsuit的Intruder进行刷票。

【野驴原创】一次基于XSS的刷票实践

【野驴原创】一次基于XSS的刷票实践

0x04 结束语结束语
    刷票就到这里。这次刷票实践,主要是抛砖引玉,在我们学习渗透过程中最重要的是思路
要清,然后脑洞大开,奇技淫巧,守正出奇。比如这次的XSS完全可以进行蠕虫,让点击我
XSS链接的人再创建一个链接等。对了,我的好基友,你别跑,你女儿的香吻呢……

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: