漏洞本地

 人参与 | 时间:2026-10-17 06:51:16

凌晨两点,漏洞本地安全研究员老赵的漏洞本地屏幕上跳出一行报错:Segmentation fault (core dumped)。他没急着关终端,漏洞本地反而把日志往上翻了三页。漏洞本地那个崩溃点落在某款国产办公软件处理文档时调用的漏洞本地一个动态库函数里——函数名很普通,但参数里有一个他从未见过的漏洞本地结构体指针。老赵把断点挂上去,漏洞本地单步跟了四十分钟,漏洞本地最后发现这个指针指向的漏洞本地内存块在释放后又被写了一次。典型的漏洞本地释放后重用漏洞。他截了图,漏洞本地发到群里,漏洞本地配文:“本地提权,漏洞本地稳。漏洞本地”

这就是漏洞本地漏洞本地。不是远程打点,不是钓鱼邮件,攻击者已经坐在你的机器上,或者至少能跑一段代码。剩下的问题只有一个:他能爬多高。

很多人以为漏洞利用都得靠网络。其实真正让管理员头疼的,恰恰是那些“本地”的玩意儿。你给服务器打了补丁,关了外部端口,防火墙规则写得像铁桶。可只要有一个低权限账户——哪怕是数据库连接池里的那个只读用户——攻击者就能拿它当跳板。本地漏洞不挑食,它只要求一个立足点。

我见过一个案例。某企业的运维跳板机上跑着一个老版本的sudo。攻击者先通过一个Web应用的SQL注入拿到了一个普通shell,权限低得连/etc/shadow都读不了。然后他翻了翻/usr/bin,发现sudo是2019年的版本。一个CVE-2021-3156,直接root。整个过程没碰网络,全在本地完成。事后查日志,从低权到高权只用了十一秒。

本地漏洞的可怕之处在于它的隐蔽性。远程攻击会留下网络流量,IDS和WAF多少能嗅到点味道。本地提权呢?进程列表里多一个bash,或者某个系统服务突然重启了一下。你要是没开auditd,没配eBPF监控,根本看不见。攻击者甚至不需要反弹shell,他就在你的机器上开个tty,慢慢翻文件。

更麻烦的是,本地漏洞往往藏在那些“信任边界”内部。比如一个以SYSTEM权限运行的服务,通过命名管道接收命令。它觉得管道另一头肯定是自己人,于是连参数都不校验。你写个脚本往管道里塞一段畸形数据,它照单全收,然后以最高权限执行。这种漏洞在代码审计里一抓一个准,但厂商经常不认——他们觉得“本地用户本来就能做很多事”。

我自己的习惯是,拿到一台机器后先跑一遍linpeas或winPEAS。不是指望它直接给出exploit,而是看那些异常项:SUID文件、计划任务、可写的服务二进制、没引号的服务路径。有一次在一台测试机上,我发现C:\Program Files\Common Files\这个目录对普通用户可写。而某个以SYSTEM运行的计划任务会从这个目录加载一个DLL。替换掉那个DLL,等任务触发,权限就到手了。整个过程不需要内存破坏,纯配置问题。

防御本地漏洞,光打补丁不够。你得假设攻击者已经进来了。最小权限原则不是口号——给服务账户该有的权限,别动不动就SYSTEM。应用白名单能拦住大部分提权工具,虽然绕过的办法也有,但至少提高了成本。还有日志,别只收网络日志。进程创建、令牌提升、服务安装,这些事件在本地提权里全是信号。

老赵最后把那个办公软件的漏洞报给了CNVD。厂商回复说“利用需要本地权限,风险较低”。老赵没争辩,只是把PoC里的提权部分删了,留了个崩溃证明。他知道,等这个漏洞进了野利用,厂商就会改口了。本地漏洞从来不是低风险,它只是离你更近。

顶: 8踩: 34469