来源:http://bbs.ichunqiu.com/thread-8965-1-1.html?from=ch
作者:野驴
首发:i春秋社区
注明:转载请务必注明i春秋社区(bbs.ichunqiu.com)
0x01 前言
又到周末了,野驴的心又骚动了,又想渗透测试了,可是苦于没有目标,殊不知在这个日新月异,技术一日千里的今天,渗透测试在很多方面都已做到工程化,只是大多内部使用,但是互联网的精神就是开放、共享,所以有了zoomeye、censys、shadan等业界搜索神器,为我们确定渗透目标提供了极大的方便,特别是zoomeye,国产自主,方便使用,最近还开放了API,简直就是业界良心(老师,我真的不是在打广告),今天我与大家分享的就是从zoomeyeAPI脚本的编写一直到提权这样一个过程。
0x02 zoomeyeAPI
什么?你还不知道什么是zoomeye?你知道吗,你这样容易被老虎拖走,我跟你讲,看这里
而前期还开放了API,为了节约篇幅,直接给出DOC(点我),zoomeyeAPI流程如下
下面我们就利用python批量获取目标。(当然,你要先注册账号哦)
直接上代码,详细说明请看注释。
[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# coding: utf-8
importos
importrequests
importjson
access_token=''
ip_list=[]
deflogin():
"""
输入用户米密码 进行登录操作
:return: 访问口令 access_token
"""
user=raw_input('[-] input : username :')
passwd=raw_input('[-] input : password :')
data={
'username': user,
'password': passwd
}
data_encoded=json.dumps(data)# dumps 将 python 对象转换成 json 字符串
try:
r=requests.post(url='https://api.zoomeye.org/user/login',data=data_encoded)
r_decoded=json.loads(r.text)# loads() 将 json 字符串转换成 python 对象
globalaccess_token
access_token=r_decoded['access_token']
exceptException,e:
print'[-] info : username or password is wrong, please try again '
exit()
defsaveStrToFile(file,str):
"""
将字符串写如文件中
:return:
"""
withopen(file,'w') as output:
output.write(str)
defsaveListToFile(file,list):
"""
将列表逐行写如文件中
:return:
"""
s='\n'.join(list)
withopen(file,'w') as output:
output.write(s)
defapiTest():
"""
进行 api 使用测试
:return:
"""
page=1
globalaccess_token
withopen('access_token.txt','r') asinput:
access_token=input.read()
# 将 token 格式化并添加到 HTTP Header 中
headers={
'Authorization':'JWT '+access_token,
}
# print headers
while(True):
try:
r=requests.get(url='https://api.zoomeye.org/host/search?query="phpmyadmin"&facet=app,os&page='+str(page),
headers=headers)
r_decoded=json.loads(r.text)
# print r_decoded
# print r_decoded['total']
forxinr_decoded['matches']:
printx['ip']
ip_list.append(x['ip'])
print'[-] info : count '+str(page*10)
exceptException,e:
# 若搜索请求超过 API 允许的最大条目限制 或者 全部搜索结束,则终止请求
ifstr(e.message)=='matches':
print'[-] info : account was break, excceeding the max limitations'
break
else:
print'[-] info : '+str(e.message)
else:
ifpage==10:
break
page+=1
defmain():
# 访问口令文件不存在则进行登录操作
ifnotos.path.isfile('access_token.txt'):
print'[-] info : access_token file is not exist, please login'
login()
saveStrToFile('access_token.txt',access_token)
apiTest()
saveListToFile('ip_list.txt',ip_list)
if__name__=='__main__':
main()
这里我重点说一下第65行,因为我们进行的是主机搜索,所以请求的接口为
[AppleScript]纯文本查看复制代码
1
https://api.zoomeye.org/host/search?query="your sring"&facet=app,os&page=
如果进行web搜索,请求接口为
[AppleScript]纯文本查看复制代码
1
https://api.zoomeye.org/web/search?query="port:21"&page=
Query为要搜索的关键字。
好了,zoomeeyeAPI工具打造好了,我们来搜索什么目标呢?就搜索个phpmyadmin吧,说不定有弱口令呢,多说无益,行动。在65行query处,把“your string”替换为phpmyadmin。
[AppleScript]纯文本查看复制代码
1
Python zoomAPI2.py
运行后,就会不断返回符合要求的主机地址了,搜索完毕后,会在当前目录下生成你的access_token文件access_token.txt,方便下次调用,以及搜索结果文件ip_list.txt。妈妈再也不用担心我没有目标了。哪里不会搜哪里,so easy!
0x03 渗透目标
0x031 信息搜集
有了目标主机后,大家就可以尽情发挥了。这里我找到一个目标,大概是这个样子的
大家可以看到,有很多信息。我们点backups进去看看,真是意想不到的收获,数据库备份
表结构、用户名、密码等信息应有尽有,密码还是明文存储。可它用在哪呢?我们再点helpdesk_central,啊哈!登录界面出来了,可这helpdesk_central是个什么东东?问度娘
原来是控制台,用刚才获得的用户名密码尝试登录,成功了,幸福来得就是这么突然,还是管理员……
看到后边有个邮箱,看看这个管理系统属于什么组织,搞清楚对手是谁?
再看看DNS记录,尝试输入域名
原来是一家南非的一家互联网厂商
0x032 getshell
这系统转一圈,没发现可以getshell的地方,停下来,出去喝妹子约会,休息是为了更好的开始。回去以后继续,看看phpinfo吧,中规中矩,win系统,有web绝对路径,为getshell打下了基础。
再看看phpmyadmin吧,Duang!!!竟然是空口令
查看权限,我的天哪(岳云鹏表情)!是root权限,幸福来的太突然。那还等什么?绝对路径都有了,写文件吧
成功getshell,发现了很多敏感资料,还发现了前辈的足迹。
0x033 提权
看看PHP是什么权限吧,DuangDuang!!竟然是system,到目前为止,形势一片大好。
来建个用户吧,成功了
远程一下,可惜要证书,失败了,也是,总不能太顺利。本来想上MSF的,可没有公网服务器,不太方便,对方还是内网,就此打住吧。有机会再单独写个内网渗透的。
0x04 后记
重点在zoomAPI的学习,有了它,大家可以尽情的发挥想象,比如jboss、SSH弱口令等等,后面的渗透大家可能会说,这运气也太好了,各种高权限。我想说,“谁过年不吃顿饺子呢”,呸呸呸,是“运气也是实力的一部分”,重要的还是要思路清晰啦。
以上
作者:野驴
首发:i春秋社区
注明:转载请务必注明i春秋社区(bbs.ichunqiu.com)