api控制linux脚本,一次从ZoomeyeAPI脚本编写到提权的***实践

作者:野驴

首发:i春秋社区

0x01 前言

又到周末了,野驴的心又骚动了,又想***测试了,可是苦于没有目标,殊不知在这个日新月异,技术一日千里的今天,***测试在很多方面都已做到工程化,只是大多内部使用,但是互联网的精神就是开放、共享,所以有了zoomeye、censys、shadan等业界搜索神器,为我们确定***目标提供了极大的方便,特别是zoomeye,国产自主,方便使用,最近还开放了API,简直就是业界良心(老师,我真的不是在打广告),今天我与大家分享的就是从zoomeyeAPI脚本的编写一直到提权这样一个过程。0x02 zoomeyeAPI什么?你还不知道什么是zoomeye?你知道吗,你这样容易被老虎拖走,我跟你讲,看这里https://www.zoomeye.org/about而前期还开放了API,为了节约篇幅,直接给出DOC(点我),zoomeyeAPI流程如下

111209t1u211twq21w2h2u.jpg

下面我们就利用python批量获取目标。(当然,你要先注册账号哦)

直接上代码,详细说明请看注释。# coding: utf-8

import os

import requests

import json

access_token = ''

ip_list = []

def login():

"""

输入用户米密码 进行登录操作

: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 对象

global access_token

access_token = r_decoded['access_token']

except Exception,e:

print '[-] info : username or password is wrong, please try again '

exit()

def saveStrToFile(file,str):

"""

将字符串写如文件中

:return:

"""

with open(file,'w') as output:

output.write(str)

def saveListToFile(file,list):

"""

将列表逐行写如文件中

:return:

"""

s = '\n'.join(list)

with open(file,'w') as output:

output.write(s)

def apiTest():

"""

进行 api 使用测试

:return:

"""

page = 1

global access_token

with open('access_token.txt','r') as input:

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']

for x in r_decoded['matches']:

print x['ip']

ip_list.append(x['ip'])

print '[-] info : count ' + str(page * 10)

except Exception,e:

# 若搜索请求超过 API 允许的最大条目限制 或者 全部搜索结束,则终止请求

if str(e.message) == 'matches':

print '[-] info : account was break, excceeding the max limitations'

break

else:

print  '[-] info : ' + str(e.message)

else:

if page == 10:

break

page += 1

def main():

# 访问口令文件不存在则进行登录操作

if not os.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行,因为我们进行的是主机搜索,所以请求的接口为https://api.zoomeye.org/host/search?query="your sring"&facet=app,os&page=

如果进行web搜索,请求接口为https://api.zoomeye.org/web/search?query="port:21"&page=

?Query为要搜索的关键字。好了,zoomeeyeAPI工具打造好了,我们来搜索什么目标呢?就搜索个phpmyadmin吧,说不定有弱口令呢,多说无益,行动。在65行query处,把“your string”替换为phpmyadmin。Python zoomAPI2.py

运行后,就会不断返回符合要求的主机地址了,搜索完毕后,会在当前目录下生成你的access_token文件access_token.txt,方便下次调用,以及搜索结果文件ip_list.txt。妈妈再也不用担心我没有目标了。哪里不会搜哪里,so easy!

111445jqdna1nndvvqg5n5.jpg

0x03 ***目标

0x031 信息搜集有了目标主机后,大家就可以尽情发挥了。这里我找到一个目标,大概是这个样子的

111158md9wbuvv81wb8b89.jpg

大家可以看到,有很多信息。我们点backups进去看看,真是意想不到的收获,数据库备份

111208o3vh0olvivbno3ys.jpg

表结构、用户名、密码等信息应有尽有,密码还是明文存储。可它用在哪呢?我们再点helpdesk_central,啊哈!登录界面出来了,可这helpdesk_central是个什么东东?问度娘

111730eaarr6kcow4kcchk.jpg

原来是控制台,用刚才获得的用户名密码尝试登录,成功了,幸福来得就是这么突然,还是管理员……

111154rsgggcagqrcapdtp.jpg

看到后边有个邮箱,看看这个管理系统属于什么组织,搞清楚对手是谁?

111156qpgp7s7cjtngz17k.jpg

再看看DNS记录,尝试输入域名

112047stxbxi5o6kmd7kto.jpg

原来是一家南非的一家互联网厂商

111159sf3ssmr83kgmm8sz.jpg

0x032 getshell这系统转一圈,没发现可以getshell的地方,停下来,出去喝妹子约会,休息是为了更好的开始。回去以后继续,看看phpinfo吧,中规中矩,win系统,有web绝对路径,为getshell打下了基础。

111203az143fy0fq7aj4ay.jpg

再看看phpmyadmin吧,Duang!!!竟然是空口令

111206lbb87fwx5kflbiln.jpg

查看权限,我的天哪(岳云鹏表情)!是root权限,幸福来的太突然。那还等什么?绝对路径都有了,写文件吧

111207evvgwjolghzgkti6.jpg

111155osswyey6ri7wytty.jpg

成功getshell,发现了很多敏感资料,还发现了前辈的足迹。

111209r93szlz4mh96d0so.jpg

111207k8wn4nanxu148oer.jpg

111158dhpcq70fefnchuft.jpg

0x033 提权看看PHP是什么权限吧,DuangDuang!!竟然是system,到目前为止,形势一片大好。

111208trrjzdrj6vmjr0jv.jpg

来建个用户吧,成功了

111208c9m1gd9c50m1oc03.jpg

111201lb5kgfazg3vvvb3y.jpg

远程一下,可惜要证书,失败了,也是,总不能太顺利。本来想上MSF的,可没有公网服务器,不太方便,对方还是内网,就此打住吧。有机会再单独写个内网***的。

111207uhpph3reghweth1u.jpg

111154mw4tr5y4yfq6qzqx.jpg

111157lmmuhwh4bq9hhbzb.jpg

0x04 后记重点在zoomAPI的学习,有了它,大家可以尽情的发挥想象,比如jboss、SSH弱口令等等,后面的***大家可能会说,这运气也太好了,各种高权限。我想说,“谁过年不吃顿饺子呢”,呸呸呸,是“运气也是实力的一部分”,重要的还是要思路清晰啦。

注明:转载请务必注明i春秋社区(bbs.ichunqiu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值