-
-
[原创]第十九届全国大学生信息安全竞赛半决赛 ISW 第二题 WP
-
发表于: 20小时前 339
-
题目只提供了IP地址,访问发现应该是以http服务器挂载了某个目录上来,简单访问能发现 office 目录,dev 目录,最终在 monitoring/agent 目录下得到了后端的二进制压缩包 WatchAgent.zip 其中有编译产生的符号信息,能够直接在 IDA 中显示全部的符号。

目录是 Microsoft-IIS 服务挂载的,服务器系统应该是比较新的 Windows Server 2022, Version 21H2 至此能够完全确定是Windows渗透题目,渗透方案应该是通过给出的二进制后端发现漏洞,然后提权尝试通过 RDP 登录,3389 端口直接连上靶机

咱也不知道他这个操作是为了啥(69128、67540)
这里有两个办法,要么直接跑拿到的后端文件,要么简单分析,65535是上限的话,如果没有端口占用的情况,最终工作的应该是62831.
了解到这是一个RPC的后端,根据导入表,这个项目用的是 Windows 自带的 RPCRT4,不是第三方 RPC 库.
好像就 ExecuteCommand 比较有用
已经开始爽起来了,没有任何鉴权的任意命令执行啊这可是
到此已经拿到一半的 Shell 了,因为
如上执行的话,比如 cmd.exe /c whoami 就会真的被进程执行,但是比较麻烦的是,我们拿不到 shell 命令完整的回显,只能拿到 ErrorCode 和 ExitCode
目前掌握的信息已经足够建立 RPC 连接了,只是有一个点还需要注意,对于命令
如果直接这样
然后调用库,会出问题的,关键的问题是我们不知道 ExecuteCommand 的第一个参数 pszCommand 在 RPC 线上到底该怎么编码,可能是
根据 IDA 伪代码无法确定这点,我们需要一个一个试,如果有一个提前写好的尝试模板会轻松不少,其次,如果本地有 impacket 库会轻松不少,不然就要手写了
是 Windows 服务器,那优先考虑以下目录
C:\flag.txt
C:\Users\Administrator\Desktop\flag.txt(最终在这里)
C:\Users\Public\flag.txt
刚才提到了,虽然能执行 Shell ,但是只能拿到 ErrorCode 和 ExitCode,那只好对不起 ExitCode 了
通过以上方式,我们就可以逐字节获取某个文件的内容了,对于获取 flag 显然是足够了,最后,完整的攻击代码如下(这并不是赛场的那版本了,赛场没有 impacket 库):
在本机模拟的执行效果是
比赛时候的输出如下(目前的 EXP 和比赛时候有变动)
然后发现 C 盘 C:\Program Files\WatchGuard 文件夹下有 nssm.exe 同样的方式尝试拿出来,跟拿flag的代码没有区别,后边补充如下代码即可,但是也是一个字节一个字节拿 估计会比较慢。
这个太慢了
最后也没拿出来
实际上在赛场上没有做出来这一步,一共好像有六到八个 flag ,也无缘见到了,队友在赛场上尝试根据本地大模型给出的命令添加远程桌面用户,然后尝试连接,但是没有成功。要是能远程桌面连接上去,应该就能做进一步渗透了。赛后 ChatGPT 5.4 给出的相关命令是
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!