刷票之风云再起—看我如何开启上帝视角
时间:2016-11-25 10:52 来源:转载 作者:kiang70 点击:次
0x01 前言
本来之前写了很多前言了,可是昨天早晨发生了一件事,我打算重新写前言,小伙伴们,小板凳准备好,我的前言是这样的:满屏都是王宝强,真诚提醒忘掉他们昨 日的誓言。李晨说会一直保护张馨予,谢霆锋说不介意张柏芝的过去,文章说这辈子最骄傲的是马伊琍……人有时真的是很善变的动物,真正永恒不变的只有
你挖或不挖,漏洞就在那里
全心全意为你陪伴着你
很多盆友说不会再爱了,但我想说,女神还是得追的,万一她瞎呢。所以,书接上回,和女神聊天聊起来给基友孩子刷票的事,她一下就来劲了,说正好她也在参加一个投票活动,能不能帮她刷票啊,如果得第一,有特殊奖励哦,特殊奖励(做痴迷状)……
0x02 渗透测试
0x021 信息收集
投过手机浏览投票页面,发现是第三方程序,而非微信官方投票系统,那就能继续向前走,
并且都没微信端验证,在电脑上可以直接打开,隐隐觉得有戏。
![]()
手机抓包投票数据,根据上次刷票的经验,有可能下图中标识的两个id为验证项,也就是说,要想达到刷票目的,需要大量openid,后续事实证明如此,但我们今天刷票更精彩,各位客官,且听我慢慢道来。
![]()
将url除域名意外的部分删掉看看主页是个什么样子,当我看到登录界面时,我心中的猛虎已开始细嗅蔷薇。
![]()
平时我已经习惯了浏览网页时开着被动注入检测工具(点这里url),可这次却没用到,因为工具是有延时的,没有手工来得快。说来你们可能不信,看到第一张图我标示的那个搜索框了吗?当我输入一个单引号时,竟然报错了,这也许就是渗透经验吧。
![]()
果断用burp抓取搜索包,给sqlmap检测
![]()
[AppleScript] 纯文本查看 复制代码
经过漫长的等待,检测结果出来了,有两个参数存在注入,分别为id和token
![]() ![]()
经过漫长的分析(分析表结构,n多表,此处省略1万字,渗透是体力活啊),终于拿到了管理员的用户名和密码散列还有QQ。
![]() ![]() ![]() ![]()
花了1毛钱最终破解了密码,为了女神,值!
0x023 进后台加票
用破解的用户名密码成功登陆后台,此时我内心的猛虎已开始咆哮。
![]() ![]() ![]()
那还等什么,看看怎么加票吧!点“选手设置”,看到了女神,排名还比较靠后。点“投票选项管理”,加减票选项出现了,是的,既可以加票也可以检票
![]() ![]()
有的同学可能会问了,那这投票岂不是管理员说了算?想让谁第一就让谁第一?没错,管理员具有“上帝模式”(为什么加引号?因为我才是真正的上帝!),不仅如此,还有更扯淡的,那就是主页上的浏览量、投票量和报名数都可以在后台设置。我好像知道的有点多了。
![]()
为了不让管理员发觉,我分数次将女神顶到了前边,但出现了新问题,这套系统的目的就是微信圈粉,如果关注公众号投票后又取消,那么所投票数是会被自动减掉的,并且后台会记录所有投票的记录数。
![]() ![]()
也就是说,如果不在后台加票,那么总记录数=总票数+减去的票数,但如果我在后台直接加票,会使得总记录数<总票数,管理员就有理由认为有人进后台加票了。那怎么办?
理了一下思路发现有两条路可走,
第 一条路,利用刷票的方法满足以上等式条件,可刷票需要大量openid,哪里去弄那么多openid?再像上次那样XSS打?还不一定有XSS,即使有, 时间成本太高,也刷不了几票,但是(重读),系统竟然很贴心的为我们准备好了所有投过票用户的openid,还支持导出excle,
![]()
但通过实践,可以成功刷票并且满足以上条件(具 体过程限于篇幅不表,可参考上篇文章url),可是又有了新的问题,就是你把别人的openid用了,人家再投票回提示已投票,不能再投了,相当于我把所 有选手的支持者都拉到了我女神的石榴裙下,那人家能乐意吗?万一有好事者联系管理员,那九前功尽弃了,动静太大了,正所谓“善攻者,飞于九天之上;善守 者,遁于九地之下。”,此时我们就应该“遁于九地之下”,来看第二条路……
第二条路,就是取得webshell或者数据库权限,直接修改数据库中的记录数,使得后台加票后也满足以上等式。怎么?有些不耐心了?想直接加票就走人?不,我们要的是Perfect.
0x024 Get Webshell
我们来总结下,看看我们手里有多少料,你妹的,貌似我们除了一个后台,一个注入点,什么都没有。后台经过漫长的检测(累啊!头悬梁,锥刺股,大喊三声 “女神”,接着干),并没有上传漏洞,并没有命令执行,并没有CSRF,并没有……总之后台没能getshell。此时我心中的猛虎酣睡了。现在只有注入 点了,看看是什么权限吧,还算有点欣慰,是root。(这一天天,大起大落,小心脏都受不了)
那快用sqlmap写个webshell试试吧,写shell需要绝对路径,哪里找?刚开始的单引号报错就爆出了绝对路径,从后台照片处找到了照片上传路径,这样就构造出了有写权限的绝对路径。
![]() ![]() ![]()
竟然失败了。
![]() ![]()
说实话,当时我都快哭了,可是一想到女神,再一次目光坚定的望向了远方……那我看看能不能查出数据库用户名密码,然后幸运的话可以外联一下,事实证明,我特么想多了,又失败了。
![]()
既然工具不行,那就手工写shell把,还好,那我们直接经典的selectinto outfile导出webshell不就行了,用sqlmap的sql-shell试了下,总提示条件不满足。
![]()
还好注入点支持union联合查询,直接执行
[AppleScript] 纯文本查看 复制代码
还是失败了(绝对路径用双斜杠是因为在执行时会将一个\转义为空)。好像是超过了长度,这个时候看到了这篇帖子点我,我可以把一句话拆分再hex啊
![]() ![]()
还是失败了,查了下原因。
把outfile换成dumpfile,终于成功getshell,真是黄天不负有心人啊。
![]()
后来提权后测试发现,intooutfile会把一句话导出为这样
![]()
看到没有,中间多了空格。
终于可以放心大胆的给女神加票了,最终在我的帮助之下,女神取得了第一,特殊奖励就是一个大大的拥抱,88块的红包和她崇拜的眼神,我是说真的J
0x025 编写poc批量验证
刷票任务完成了,但是我们学习的脚步不能停,我发现这套投票系统比较通用,通过pentest(url)的谷歌工具发现网上有大量部署,何不写个poc批量验证呢,我习惯了用pocsuit写poc,大家可以选择其他框架。这里我直接给出代码
[Python] 纯文本查看 复制代码
这里我说下attack模式下,正则获取数据库用户的方法,通过测试发现投送payload(sqlmap –v 3获得)后,数据库用户是包含在两个特殊字符串中间的
![]()
所以我们的正则可以这么写
[AppleScript] 纯文本查看 复制代码
来执行下
![]()
导入刚才pentest爬取的域名文件
[AppleScript] 纯文本查看 复制代码
![]()
0x026 提权
提权就比较简单了,先msfVENOM生成payload
![]() ![]()
webshell直接下载公网metasploit的payload,执行后,获得meterpreter交互
![]() ![]()
0x03 结束语
实在写不动了,但是我想说,渗透虽然是个体力加脑力活,但因为我喜欢,所以痛并快乐着。回顾下我们渗透的过程
信息收集->注入管理员信息->进后台->getwebshell->合法加票->poc批量验证->提权
明天又会有什么趣闻发生呢?管他呢,我退出娱乐圈很久了。
首发i春秋
野驴原创,值得拥有!
声明:以上文章仅作学习交流之用,如读者因阅读本文而做出不恰当举动,纯属个人行为,与本文作者无关。 (责任编辑:蜗蜗侠) |