<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>GTFOBins on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/gtfobins/</link>
        <description>Recent content in GTFOBins on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Sat, 01 Aug 2026 07:00:00 +0800</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/gtfobins/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>记一次Web应用账户经sudo配置不当提权到root的入侵溯源与加固</title>
            <link>https://blog.5772447.xyz/posts/ca7c58b6/</link>
            <pubDate>Sat, 01 Aug 2026 07:00:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/ca7c58b6/</guid>
            <description>&lt;h2 id=&#34;问题背景&#34;&gt;&lt;a href=&#34;#%e9%97%ae%e9%a2%98%e8%83%8c%e6%99%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;问题背景&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;我们有一台对外提供图片处理 API 的 Linux 服务器（Ubuntu 20.04），业务进程由 systemd 拉起，运行账户是低权限的 &lt;code&gt;www-data&lt;/code&gt;。按设计，这台机器上不应该有任何以 &lt;code&gt;root&lt;/code&gt; 身份运行的业务相关进程——应用连读写自己数据目录都是 &lt;code&gt;www-data&lt;/code&gt; 权限。&lt;/p&gt;&#xA;&lt;p&gt;某天凌晨，主机安全（HIDS）弹出一条中危告警：&lt;code&gt;/etc/passwd&lt;/code&gt; 文件被修改。值班同事第一反应是误报，但登上去一看，&lt;code&gt;/etc/passwd&lt;/code&gt; 末尾赫然多了一行 UID 为 0 的账户 &lt;code&gt;oracle&lt;/code&gt;（这台机器根本没装 Oracle）。一个只该跑 &lt;code&gt;www-data&lt;/code&gt; 的应用服务器，凭空冒出一个 root 等价账户，这不是误报，是实打实被人拿到 root 了。问题是：入口在哪？攻击者是怎么从低权限爬到 root 的？&lt;/p&gt;&#xA;&lt;h2 id=&#34;故障现象&#34;&gt;&lt;a href=&#34;#%e6%95%85%e9%9a%9c%e7%8e%b0%e8%b1%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;故障现象&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;初步观察到的异常集中在三处：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;多出一个 UID 0 账户&lt;/strong&gt;：&lt;code&gt;grep &#39;:0:&#39; /etc/passwd&lt;/code&gt; 除了 &lt;code&gt;root&lt;/code&gt; 外还有 &lt;code&gt;oracle:x:0:0::/home/oracle:/bin/bash&lt;/code&gt;，是典型的“影子 root”后门。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;root 身份的异常进程&lt;/strong&gt;：&lt;code&gt;ps -ef&lt;/code&gt; 里有一个 root 拥有的 &lt;code&gt;.../.cache/.sysupdate&lt;/code&gt; 进程在持续外联，而它的父进程链最终追溯到 &lt;code&gt;www-data&lt;/code&gt; 启动的应用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;可疑的 sudo 使用记录&lt;/strong&gt;：&lt;code&gt;/var/log/auth.log&lt;/code&gt; 中出现多条 &lt;code&gt;www-data&lt;/code&gt; 执行 &lt;code&gt;sudo&lt;/code&gt; 成功的记录，而运维从没给应用账户配过“正常要用”的 sudo。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;关键矛盾点是：&lt;code&gt;www-data&lt;/code&gt; 是低权限账户，正常情况下它连 &lt;code&gt;sudo&lt;/code&gt; 都不该能用，为什么日志里它能成功执行 sudo，还最终跑出了 root 进程？这条“低权限 → root”的链路就是本次排查的核心。&lt;/p&gt;&#xA;&lt;h2 id=&#34;排查过程&#34;&gt;&lt;a href=&#34;#%e6%8e%92%e6%9f%a5%e8%bf%87%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;排查过程&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;第一步，锁定 root 进程的来源。&lt;/strong&gt; 先别急着删账户，先看攻击链。用 &lt;code&gt;ps&lt;/code&gt; 打印完整父子关系：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps -eo pid,ppid,user,lstart,cmd | grep -v grep | grep sysupdate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;拿到可疑进程 PID 后，逐级回溯 PPID，发现链路是 &lt;code&gt;systemd → 应用主进程(www-data) → sh → sudo → .sysupdate(root)&lt;/code&gt;。也就是说，是应用进程内部触发了一次 &lt;code&gt;sudo&lt;/code&gt;，把自己提权成了 root。应用为什么会去调 &lt;code&gt;sudo&lt;/code&gt;？八成是应用先被打穿，攻击者拿到了 &lt;code&gt;www-data&lt;/code&gt; 的命令执行能力。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第二步，找应用层入口。&lt;/strong&gt; 查 Nginx access log，定位到图片上传接口有大量异常 POST，其中夹着对一个临时诊断脚本的调用，攻击者借它拿到了 &lt;code&gt;www-data&lt;/code&gt; 的 webshell（这部分属于应用漏洞，是另一条线，本文聚焦提权）。确认落脚点确实是 &lt;code&gt;www-data&lt;/code&gt; 后，重点转向：&lt;code&gt;www-data&lt;/code&gt; 手里能有什么提权的“梯子”。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第三步，检查 sudo 权限——问题的核心。&lt;/strong&gt; 以 &lt;code&gt;www-data&lt;/code&gt; 身份看它能免密执行什么：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -l -U www-data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;输出让人后背发凉：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;User www-data may run the following commands on this host:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (ALL : ALL) NOPASSWD: /usr/bin/find&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (ALL : ALL) NOPASSWD: /usr/bin/tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;code&gt;www-data&lt;/code&gt; 被授予了对 &lt;code&gt;find&lt;/code&gt; 和 &lt;code&gt;tar&lt;/code&gt; 的&lt;strong&gt;免密 sudo&lt;/strong&gt;。翻 GTFOBins 就知道，这两个命令都能直接“越狱”成 root：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# find 的 -exec 可以在 root 上下文里拉起 shell&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo find . -maxdepth &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; -exec /bin/sh &lt;span style=&#34;color:#ae81ff&#34;&gt;\;&lt;/span&gt; -quit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# tar 的 checkpoint-action 也能执行任意命令&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tar -cf /dev/null /dev/null --checkpoint&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; --checkpoint-action&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;exec&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;code&gt;auth.log&lt;/code&gt; 里 &lt;code&gt;www-data&lt;/code&gt; 成功执行的正是 &lt;code&gt;sudo find ... -exec&lt;/code&gt;。攻击者拿到 &lt;code&gt;www-data&lt;/code&gt; 后，只用一条命令就借 &lt;code&gt;find&lt;/code&gt; 拿到了 root shell，接着写影子账户、装外联程序做持久化。至此，“低权限 → root”的整条链路清晰了：&lt;strong&gt;应用漏洞拿 www-data → sudoers 里可提权命令的 NOPASSWD → GTFOBins 一步登天&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第四步，摸清攻击者干了什么。&lt;/strong&gt; 用 &lt;code&gt;find / -newermt &amp;quot;$(date -d &#39;2 days ago&#39; +%F)&amp;quot; -type f 2&amp;gt;/dev/null&lt;/code&gt; 找近两天被改动的文件，结合 &lt;code&gt;auth.log&lt;/code&gt;、&lt;code&gt;~/.bash_history&lt;/code&gt;、&lt;code&gt;/var/log/audit&lt;/code&gt;（可惜 auditd 没开，取证信息有限），确认攻击者做了：加影子 root 账户、下 &lt;code&gt;.sysupdate&lt;/code&gt; 外联程序、在 &lt;code&gt;/etc/rc.local&lt;/code&gt; 和一个 &lt;code&gt;www-data&lt;/code&gt; 的 crontab 里都留了拉起脚本。&lt;/p&gt;&#xA;&lt;h2 id=&#34;解决方案&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方案&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;确认范围后按“先隔离、后清理、再加固”推进：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;隔离&lt;/strong&gt;：安全组只保留运维跳板机入站，切断 &lt;code&gt;.sysupdate&lt;/code&gt; 的外联 C2，业务临时摘出负载均衡。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;清理落地物&lt;/strong&gt;：&lt;code&gt;kill&lt;/code&gt; 掉外联进程，删除 &lt;code&gt;oracle&lt;/code&gt; 影子账户（&lt;code&gt;userdel -r oracle&lt;/code&gt;），清掉 &lt;code&gt;/etc/rc.local&lt;/code&gt;、&lt;code&gt;www-data&lt;/code&gt; crontab 里的持久化项，删掉 &lt;code&gt;.sysupdate&lt;/code&gt; 及其 &lt;code&gt;.cache&lt;/code&gt; 目录。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;收敛 sudo 权限——治本第一刀&lt;/strong&gt;：直接删掉 &lt;code&gt;/etc/sudoers.d/&lt;/code&gt; 下那条给 &lt;code&gt;www-data&lt;/code&gt; 授权的文件，&lt;code&gt;www-data&lt;/code&gt; 恢复到“完全不能 sudo”的状态。用 &lt;code&gt;visudo -c&lt;/code&gt; 校验语法无误。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;凭据与密钥轮换&lt;/strong&gt;：机器上涉及的数据库口令、API Key、SSH 私钥全部轮换，因为 root 沦陷期间它们都可能已泄露。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;重装保底&lt;/strong&gt;：由于取证不完整、无法 100% 断定没有更深的内核态后门，最终选择备份数据后&lt;strong&gt;重装系统&lt;/strong&gt;，用干净基线重新上线，而不是原地“清干净”后继续用。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;根因分析&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e5%9b%a0%e5%88%86%e6%9e%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根因分析&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;技术根因只有一句话：&lt;strong&gt;给低权限应用账户配了可交互提权命令的免密 sudo&lt;/strong&gt;。&lt;code&gt;find&lt;/code&gt;、&lt;code&gt;tar&lt;/code&gt;、&lt;code&gt;vim&lt;/code&gt;、&lt;code&gt;awk&lt;/code&gt;、&lt;code&gt;systemctl&lt;/code&gt;、&lt;code&gt;less&lt;/code&gt; 这类命令都能在 root 上下文里派生 shell 或执行任意命令，一旦以 &lt;code&gt;NOPASSWD&lt;/code&gt; 授权给应用账户，等于把 root 直接送出去——它把“应用被打穿”这种&lt;strong&gt;局部失陷&lt;/strong&gt;，一步放大成了&lt;strong&gt;整机 root 沦陷&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;追溯 sudoers 的来历：几个月前有个批量打包/清理的运维脚本要以 &lt;code&gt;www-data&lt;/code&gt; 跑，为图省事，运维直接给它开了 &lt;code&gt;find&lt;/code&gt;/&lt;code&gt;tar&lt;/code&gt; 的 NOPASSWD，用完既没回收、也没做最小化。这条配置就成了埋在系统里的提权后门，静静等着应用层任何一个漏洞来引爆。&lt;/p&gt;&#xA;&lt;h2 id=&#34;预防措施&#34;&gt;&lt;a href=&#34;#%e9%a2%84%e9%98%b2%e6%8e%aa%e6%96%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;预防措施&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;sudoers 最小权限&lt;/strong&gt;：绝不给应用/服务账户授予可交互提权的命令。确需授权，只给具体子命令和固定参数，杜绝 &lt;code&gt;ALL&lt;/code&gt; 和裸命令；能用 &lt;code&gt;Cmnd_Alias&lt;/code&gt; 精确到路径与参数就精确到底。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;定期审计提权面&lt;/strong&gt;：把 &lt;code&gt;sudo -l -U &amp;lt;每个服务账户&amp;gt;&lt;/code&gt; 纳入基线巡检，对照 GTFOBins 名单排查危险命令；同时扫描 SUID/SGID 文件（&lt;code&gt;find / -perm -4000 -type f&lt;/code&gt;）防止另一条提权路径。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;开启 sudo I/O 日志与 auditd&lt;/strong&gt;：&lt;code&gt;sudoers&lt;/code&gt; 里配 &lt;code&gt;Defaults log_output&lt;/code&gt;，并启用 auditd 记录 execve，出事时才有完整取证链，别再像这次一样两眼一抹黑。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;账户与文件完整性监控&lt;/strong&gt;：对 &lt;code&gt;/etc/passwd&lt;/code&gt;、&lt;code&gt;/etc/sudoers&lt;/code&gt;、&lt;code&gt;/etc/sudoers.d/&lt;/code&gt;、&lt;code&gt;authorized_keys&lt;/code&gt; 做 FIM 监控（本次正是 &lt;code&gt;/etc/passwd&lt;/code&gt; 告警救了场），任何 UID 0 新增即高危报警。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;纵深防御&lt;/strong&gt;：应用漏洞是第一道被突破的门，提权是第二道；两道都得守。低权限运行 + 最小 sudo + 目录不可执行 + EDR，缺一不可。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;这次事件里，应用被打穿只是“擦伤”，真正致命的是那条给 &lt;code&gt;www-data&lt;/code&gt; 开的 &lt;code&gt;find&lt;/code&gt;/&lt;code&gt;tar&lt;/code&gt; 免密 sudo——它让一次普通的低权限失陷直接升级成整机 root 沦陷。排查的关键动作其实很朴素：顺着 root 进程的父进程链往回追，一路追到 &lt;code&gt;sudo&lt;/code&gt;，再用 &lt;code&gt;sudo -l -U&lt;/code&gt; 一照，问题原形毕露。给运维同行的提醒是：&lt;strong&gt;任何以 NOPASSWD 授权给服务账户的命令，都要先去 GTFOBins 查一遍能不能提权&lt;/strong&gt;；最小权限不是口号，它就是拦在“局部失陷”和“整机沦陷”之间的那道墙。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
