当前位置:首页 > 娱乐 > 漏洞提权 正文

漏洞提权

来源:烟消火灭网   作者:热点   时间:2026-10-17 05:51:03

拿到一台低权限的漏洞提权WebShell,第一反应不是漏洞提权翻文件,是漏洞提权看能不能提权。这事儿没什么好绕的漏洞提权——你手上这个www-data用户,连/etc/shadow都读不了,漏洞提权能干什么?漏洞提权

我见过太多人卡在这一步。去年有个朋友扔给我一个靶机,漏洞提权说“进去了但啥也干不了”。漏洞提权我连上去一看,漏洞提权Apache跑在Ubuntu 18.04上,漏洞提权内核版本4.15.0-20。漏洞提权心里大概有数了。漏洞提权

提权的漏洞提权本质就一句话:找到当前用户能执行、但设计上不该由他执行的漏洞提权东西。这个东西可能是漏洞提权内核漏洞,可能是配置错误,也可能是某个带SUID位的二进制文件。

先看内核,但别只盯着内核

内核漏洞是最直接的路径。CVE-2019-13272,Linux内核ptrace的提权漏洞,影响4.10到5.1.17之间的版本。我朋友那台机器正好在范围内。但直接上exp之前,得确认两件事:目标架构是x86_64还是ARM,以及有没有装gcc。没编译器就得交叉编译好再传上去,或者找现成的静态编译版本。

不过内核提权有个问题——容易把机器搞崩。ptrace那个exp我跑过几次,大概三次里有一次会触发kernel panic。生产环境里这么干,等于自杀。所以不到万不得已,我优先看配置问题。

SUID文件里的机会

命令很简单:find / -perm -4000 -type f 2>/dev/null。但看结果需要经验。满屏的/bin/su、/usr/bin/passwd、/bin/mount,这些是正常的。真正有意思的是那些“不该有SUID位”的东西。

比如某次我碰到一个/usr/local/bin/backup脚本,root所有,SUID位开着。脚本内容里调用tar的时候没写绝对路径,直接是tar czf /backup/xxx.tar.gz /home。这就好办了——在PATH里放一个假的tar,内容写cp /bin/bash /tmp/bash && chmod +s /tmp/bash,然后等root的cron跑这个备份脚本。十分钟后,/tmp/bash -p,直接root。

这种PATH劫持的思路,比内核exp稳得多。核心逻辑是:程序以root身份运行,但执行了用户可控路径下的命令。

别忽略sudo

sudo -l是必须跑的。有次我看到一行输出:(ALL) NOPASSWD: /usr/bin/find。很多人觉得find能干什么?find本身不能直接提权,但它支持-exec参数。于是:sudo find /tmp -exec /bin/bash \; -quit。root shell到手。

类似的还有vim、less、awk、python。只要sudo允许你以root跑这些,基本等于给了root shell。GTFOBins这个网站就是干这个的,把能提权的二进制文件列了个遍。

环境变量里的惊喜

LD_PRELOAD这个方向容易被忽略。如果sudo配置里保留了LD_PRELOAD环境变量,或者某个SUID程序依赖了用户可写的共享库,就能劫持函数调用。写个C文件,构造函数里setuid(0); system("/bin/bash");,编译成.so,设好LD_PRELOAD再跑那个SUID程序。前提是sudoers里没有env_reset,或者有env_keep += LD_PRELOAD。

这个手法比内核exp干净,不留崩溃风险。但需要目标机器有gcc,或者你提前编译好对应架构的.so。

实际提权时的取舍

我的习惯是:先跑LinEnum或linpeas.sh这类脚本,快速过一遍所有可疑点。然后按风险从低到高排序——配置错误优先,SUID次之,内核漏洞最后。因为内核exp可能把机器打挂,而配置错误通常只是改个文件、跑个命令的事。

还有一点:提权成功后,别急着删日志。先确认自己拿到了真正的root(id输出uid=0),再考虑持久化。很多时候你拿到的只是“能执行root命令”,不是完整的root shell,这两者有区别。

漏洞提权没什么神秘的。就是信息收集加经验判断。跑脚本能帮你省时间,但最终做决定的还是人。脚本告诉你“这个SUID文件可疑”,但能不能利用、怎么利用,得你自己看代码、试路径、调参数。这活儿干多了,看到sudo -l的输出就能条件反射地想到三四种利用方式。没别的,就是熟。

标签:

责任编辑:百科