最近后台不少朋友在问落花流水提权到底是个啥,说网上资料东一榔头西一棒子,看完了还是懵。我干脆把自己这段时间折腾落花流水提权漏洞利用的笔记整理出来,从它是怎么来的、怎么用,到提权过程中容易踩的坑,尽量用大白话讲清楚。你要是刚接触这块,或者平时做运维想搞明白这类提权漏洞的门道,这篇应该能帮你少走点弯路。先说明一点,下面内容只做技术交流和防护参考,别拿去干不该干的事。
很多人一听落花流水提权,以为是某个具体的 CVE 编号,其实不完全是。它更像一类提权思路的统称,核心问题出在权限校验这一环。我实测下来发现,最常见的成因就是程序在处理某些请求时,把用户传进来的参数直接拼进了系统调用或者文件操作里,中间少了那道该有的身份确认。你想想,低权限账号本来只能干低权限的事,结果因为校验漏了,它就能借着高权限进程的手去执行命令,这就是落花流水提权漏洞利用能成立的根本原因。
还有一种情况是配置文件或者临时目录权限给得太松。我上次复现的时候就碰到一个,服务跑在 root 下,但它读的配置文件普通用户可写,那就等于把门钥匙挂在门口。这种落花流水提权场景不需要多高深的技术,关键是你能不能细心地把这些边角料找出来。所以别一上来就想着上工具,先把目标系统的权限分布摸清楚,比啥都强。
说点实在的。落花流水提权漏洞利用大致分两条路走,一条是纵向提权,就是从普通用户往管理员或者 root 爬;另一条是横向的,从一个低权限账户挪到另一个权限更高的账户上。我平时更关注纵向这条,因为危害更直接。具体操作上,先看 SUID 文件、计划任务、还有那些以高权限运行的服务,这几个地方是重灾区。拿 SUID 举例,有些系统自带的二进制文件本身带提权属性,配合落花流水提权的思路,稍微构造一下参数就能拿到一个高权限 shell。
不过这里得提醒一句,网上流传的很多一键提权脚本,跑之前最好先看懂它干了啥。落花流水提权技巧里最值钱的部分不是脚本本身,而是你对目标环境的判断。我有次图省事直接跑了个现成脚本,结果把服务搞崩了,排查半天才发现是脚本改了不该改的配置。所以宁可手动一步步来,也别盲目相信自动化工具,这是实打实的教训。
聊完路子,再说几个我踩过的坑。第一,别忽略系统版本和补丁情况。同样是落花流水提权漏洞,在打了补丁的机器上就是白费劲,所以动手前先确认内核版本,这一步能省你大把时间。第二,提权成功不代表就稳了,很多人在拿到高权限后一激动就乱删日志、乱改文件,结果留下明显痕迹,反而暴露了。稳妥的做法是先做信息收集,把能用的落花流水提权路径列个清单,挑最不容易被发现的走。
第三点关于落花流水提权的防护,其实反过来想就明白了。既然漏洞多出在权限校验和配置上,那日常运维里把最小权限原则落实到位,敏感目录的写权限收紧,服务别动不动就用 root 跑,能挡掉一大半问题。我见过太多单位图方便全用高权限账户,出了事才后悔。另外定期做权限审计,看看有没有多出来的 SUID 文件或者异常的计划任务,这习惯养成了,落花流水提权这类风险自然就降下来了。
最后嗦一句,落花流水提权漏洞利用和提权技巧这东西,学它主要是为了知道风险在哪、怎么补。你要是做安全测试,记得在授权范围内操作;要是做运维,把上面说的权限审计和配置检查当成日常习惯。技术本身没好坏,关键看用的人。这篇笔记就到这,后面有新的复现案例我再补充。