來自i春秋作者: 野驢@i春秋社區

0x01 前言

又到周末了,野驢的心又騷動了,又想滲透測試了,可是苦于沒有目標,殊不知在這個日新月異,技術一日千里的今天,滲透測試在很多方面都已做到工程化,只是大多內部使用,但是互聯網的精神就是開放、共享,所以有了zoomeye、censys、shadan等業界搜索神器,為我們確定滲透目標提供了極大的方便,特別是zoomeye,國產自主,方便使用,最近還開放了API,簡直就是業界良心(老師,我真的不是在打廣告),今天我與大家分享的就是從zoomeyeAPI腳本的編寫一直到提權這樣一個過程。

0x02 zoomeyeAPI

什么?你還不知道什么是zoomeye?你知道嗎,你這樣容易被老虎拖走,我跟你講,看這里 https://www.zoomeye.org/about 而前期還開放了API,為了節約篇幅,直接給出DOC(點我),zoomeyeAPI流程如下

下面我們就利用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!

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春秋查看更多:http://bbs.ichunqiu.com/thread-8965-1-1.html?from=paper


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/14/