我的一次真实踩坑与复盘记录
哎,今天必须得跟你们唠唠这个本地提权现场实操的事儿,说实话,干我们这行的,纸上谈兵看一百遍,不如自己上手搞一次,我前两天刚在一个靶场环境里做了一次完整的本地提权现场实操,过程那叫一个跌宕起伏,拿shell的时候挺顺,一提权直接给我整不会了,今天就把这次本地提权现场实操的完整流程和踩的坑,原原本本写出来,希望能帮到正在研究这块的兄弟们。

拿到初始shell之后的迷茫
首先说下环境哈,靶机是台老旧的Windows Server,我通过Web漏洞拿到了一个低权限的IIS用户shell,当时心里还挺美,想着“稳了稳了”,结果一执行whoami /priv,好家伙,权限少得可怜,啥特权都没有,这时候就得进入真正的本地提权现场实操环节了。
我先按老套路,systeminfo看一眼补丁情况,结果这一看,心里凉了半截——补丁打得挺全啊,常规的MS16-032、MS17-010这些肯定没戏,然后我又试了试whoami /groups,看看有没有什么意外之喜,结果也没有。
信息收集才是本地提权现场实操的灵魂
兄弟们听我一句劝,本地提权现场实操最忌讳的就是上来就瞎怼exp,你得静下心来搞信息收集,这一步偷懒,后面全白干。
我当时是这么干的:
-
查系统服务和计划任务:
schtasks /query /fo LIST /v,看看有没有以SYSTEM权限运行且路径可写的任务,结果发现一个计划任务跑的是C:\Program Files\SomeApp\update.bat,但那个目录我作为IIS用户根本没写权限,pass。 -
查可写目录和敏感文件:用
accesschk.exe扫了一圈,发现C:\inetpub\wwwroot下面有个配置文件里居然明文存着数据库sa的密码……连不上远程数据库,白高兴一场。 -
查已安装软件和版本:这个很关键,我在
Program Files (x86)里发现装了个老版本的某压缩软件,版本号一查,好家伙,正好存在一个DLL劫持的漏洞。
真正的本地提权现场实操:DLL劫持走起
找到突破口之后,真正的本地提权现场实操才算正式开始。
这个压缩软件有个服务是以SYSTEM权限启动的,而且它加载DLL的时候没有验证签名,我当时的操作步骤是这样的:
- 先用
Process Monitor监控了一下服务启动过程(当然是在我本地复现的环境里),确认它确实会去某个可写目录找DLL。 - 然后用msfvenom生成一个恶意的DLL,名字改成它要找的那个。
- 把DLL丢到可写目录里,重启服务。
当时心跳得贼快,生怕DLL写错了直接把服务搞崩,结果重启之后,监听端直接弹回来一个SYSTEM的shell!那一瞬间,真的,比中了彩票还爽。
复盘几个容易翻车的点
这次本地提权现场实操虽然成功了,但也暴露了我几个问题,兄弟们引以为戒:
- 别死磕一个方向:我一开始非要在补丁提权上吊死,浪费了快一个小时,后来换思路搞DLL劫持,十分钟就搞定了。
- 权限不够时别硬刚:有些文件你读不了就是读不了,赶紧换目标,别跟它较劲。
- 一定要做本地复现:我是在本地把那个软件装了一遍,用Procmon确认了DLL加载路径才动手的,直接在生产环境瞎搞,服务一崩你就等着被请喝茶吧。
最后说两句掏心窝子的话
本地提权现场实操这个东西,真的就是经验活,你看再多教程,不如自己搭个靶机摔几次,我现在每次提权之前都会深吸一口气,告诉自己别急,信息收集做扎实,思路打开一点,Web提权不行就换系统提权,系统提权不行就换服务提权,总有一条路能走通。
好了,今天就啰嗦这么多,如果你也在研究本地提权现场实操,欢迎在评论区交流你的踩坑经历,咱们一起避坑,一起进步!下篇文章我打算写写Linux下的提权实操,感兴趣的记得关注一波,别迷路哈!
本文为个人实操记录,仅用于技术交流与学习,请勿用于非法用途。