技术笔记

一次基于XSS的刷票实践

字号+ 作者:kiang70 来源:转载 2016-11-25 10:50 我要评论( )

0x01 前言 好不容易周末,本宝正在睡懒觉,被一个夺命连环call叫醒,是基友甲打来的。赶紧的,给我女儿投票,一天可以投一次。好处少不了你的,如果得第一,让 我......

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

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

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

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


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

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


哈哈,投票发布页面,正合我意。利用xss.me等平台生成我们的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进行刷票。
刷票成功
0x04 结束语
    刷票就到这里。这次刷票实践,主要是抛砖引玉,在我们学习渗透过程中最重要的是思路要清,然后脑洞大开,奇技淫巧,守正出奇。比如这次的XSS完全可以进行蠕虫,让点击我们XSS链接的人再创建一个链接等。对了,我的好基友,你别跑,你女儿的香吻呢……

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/285.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • xss字符过大多waf思路

    xss字符过大多waf思路

    2017-04-18 08:42

  • XSS构造剖析

    XSS构造剖析

    2016-12-19 14:31

  • XSS后门的使用及隐藏

    XSS后门的使用及隐藏

    2016-12-18 14:38

  • XSS Phishing (XSS钓鱼)

    XSS Phishing (XSS钓鱼)

    2016-11-27 16:24

网友点评
暂时未开启评论功能~