文档章节

【渗透实践】从ZoomeyeAPI脚本编写到提权

i春秋学院
 i春秋学院
发布于 2016/08/10 14:12
字数 1626
阅读 31
收藏 0

【渗透实践】从ZoomeyeAPI脚本编写到提权

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

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行,因为我们进行的是主机搜索,所以请求的接口为

[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)

 

本主题由 yyyxy 于 2016-7-30 21:11 审核通过

helpdesk.jpg (97.21 KB, 下载次数: 3)

 

helpdesk.jpg

 

qianbei.jpg

本文转载自:http://bbs.ichunqiu.com/thread-8965-1-1.html?from=kysq

i春秋学院
粉丝 16
博文 105
码字总数 159006
作品 0
海淀
私信 提问
在Linux中使用环境变量进行提权

  在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!   介绍   PATH是Linux和类Unix操作系统...

FreeBuf
2018/06/20
0
0
技术分享 如何使用Cron Jobs实现Linux提权

      写在前面的话   今天给各位渗透测试同行们提供一种Linux提权方法,在这篇文章中,我们将介绍如何使用Cron Jobs来实现Linux下的权限提升,并获取远程主机的root访问权。   Cro...

FreeBuf
2018/06/28
0
0
FreeBSD爆严重安全漏洞,疑是圣诞前的礼物

在圣诞节即将到来的日子,以安全著称的FreeBSD系统被著名黑客Kingcope爆了一个零日(0day)漏洞。据Kingcope所说,他长 期致力于挖掘FreeBSD系统的本地提权漏洞,终于有幸在近期发现了这个非...

红薯
2009/12/02
634
0
MySQL数据库渗透及漏洞利用总结

MySQL 数据库渗透及漏洞利用总结 Simeon MySQL 数据库是目前世界上使用最为广泛的数据库之一,很多著名公司和站点都使用 MySQL 作为其数据库支撑,目前很多架构都以 MySQL 作为数据库管理系统...

simeon2005
2017/11/14
0
0
根据主板的SN码匹配对应的 计算机名字 并且完成改名.

根据主板的SN码匹配对应的 计算机名字 并且完成改名. 大家好,我是新来的小白.95年,目前在一家外企工作,技术很水.代码基本不会. 原因 公司新来了一批机器,大概40-50台左右,因为要入域嘛,所以要...

挣扎挣扎看看吧
2018/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

跨域的理解,以及解决方案!

/*什么是跨域? * 跨域的主要原因是浏览器的同源策略。 * =>>所谓的同源策略就是A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。 * 什么是同源? * =>>同源就是协议相同、域名相同...

流年那么伤
8分钟前
1
0
Nginx配置try_fiels,php无法获取$_GET参数

平时开发都是用LNMP,新安装的虚拟机在配置nginx的rewrite的时候使用try_files命令。但是在写的时候配置成“try_files $uri $uri/ /index.php?q=args;”, 在PHP的web程序中,打印$_GET为空。...

叫我哀木涕
8分钟前
0
0
【原创】Microsoft Edge可以用localhost访问但无法用IP访问

Microsoft Edge可以用localhost和127.0.0.1访问但无法用本机IP访问, chrome ie都可以推测是edge的问题,网络是专用网络,防火墙也关了: 在edge里 按F12 以在控制台里看到这句 CONSOLE21301...

shzwork
9分钟前
0
0
Python利用数学方程式画4种不一样的心型图案

前言 下面这四个心型图案,是通过科学地计算,根据数学方程式生成的,虽然做的不是特别完美,但是基本的还是能实现的 第一个心型 结果图 第二心型 结果图 学习从来不是一个人的事情,要有个相互监...

A_裙232550246
9分钟前
0
0
微信带场景参数的二维码生成与使用?

微信公众号推广时,用户通过扫二维码关注公众号,需要统计用户是通过谁的二维码进行关注。 在用户扫码关注公众号时,二维码带上推广者的参数,在关注公众号后,获取到该推广者的参数。 目前有...

wxgzhgncj
10分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部