bash <(curl -fsSL http://某脚本) 这一行,等于把 root 权限交给一个你不认识的人。90% 的人不会先看一眼。这篇给一套 10 分钟能走完的审计流程:不装、先看、沙箱验证、最后才执行。
一、先搞清这一行在干什么
curl 从网络拉一段文本,bash <(...) 把它当成脚本执行。整个过程没有哈希校验、没有签名,以当前用户身份(通常是 root)运行,可以读 SSH 私钥、改防火墙、写 systemd、装定时任务。而且脚本内容随时可能被替换——你今天看过的和明天跑的不是同一份。
二、第一步:只下载,不执行
curl -fsSL http://example.com/install.sh -o install.sh
ls -lh install.sh
sha256sum install.sh
head -40 install.sh
file install.sh
三、第二步:关键词扫描
grep -nE 'curl|wget' install.sh # 二次下载了什么
grep -nE 'base64 -d|xxd -r|eval' install.sh # 混淆执行:高危
grep -nE 'rm -rf|mv .*/etc' install.sh # 破坏性操作
grep -nE 'crontab|systemd|\.service' install.sh # 持久化
grep -nE 'authorized_keys|/etc/passwd|shadow' install.sh
grep -nE 'iptables|nft|ufw' install.sh # 改防火墙
grep -nE 'curl.*\|.*sh|wget.*\|.*bash' install.sh
base64 -d | bash 这类组合基本可以直接判死。正规安装脚本不需要混淆。
四、第三步:看它往哪发数据
grep -oE 'https?://[a-zA-Z0-9./_-]+' install.sh | sort -u
grep -nE 'curl.*-d|curl.*-F|curl.*--data' install.sh
纯安装脚本只会从 GitHub 拉压缩包。如果它往陌生域名 POST 你的 IP、机器码、hostname,那就是遥测或回传。
五、第四步:沙箱里真跑一遍
docker run --rm -it --network none \
-v $PWD:/w -w /w debian:12 bash
# 容器内
apt update && apt -y install curl
bash -x ./install.sh 2>&1 | tee /w/trace.log
--network none 是关键:断网执行,脚本的下载和上报全都会失败,但你能看到它想连哪里。bash -x 会打印每一条实际执行的命令。
六、第五步:跑完做体检
如果你已经在真机上跑了,用这几条命令把”脚本改了什么”翻出来:
crontab -l; ls -l /etc/cron.d /etc/cron.hourly 2>/dev/null
systemctl list-unit-files --state=enabled | tail -20
ls -lt /etc/systemd/system | head -10
ss -lntup
ufw status verbose; iptables -S | head -20
diff <(echo) ~/.ssh/authorized_keys 2>/dev/null; ls -l ~/.ssh/
find /etc /usr/local /opt -mmin -15 -type f 2>/dev/null | head -40
最后一条最有用:按修改时间列出最近 15 分钟内被动过的文件,脚本留下的东西基本都在里面。
七、红旗清单
| 特征 | 为什么危险 |
|---|---|
eval $(echo ... | base64 -d) | 完全隐藏真实逻辑 |
下载后 chmod +x 直接跑二进制 | 你无法审计二进制内容 |
写 /etc/cron.d/* 或 systemd timer | 定时回连,删了服务还在 |
往 authorized_keys 追加 | 直接开后门 |
改 /etc/resolv.conf 或全局 DNS | 全站流量被接管 |
| 要求关闭 SELinux / 防火墙 | 降低你原有防护 |
八、更省事的替代做法
- 用官方安装脚本:Xray、Hysteria2、sing-box 都有官方 install 脚本,代码在仓库里,可审计、可卸载
- 自己写 30 行:装个内核无非是下载二进制 + 写 systemd + 起服务,比读别人 800 行脚本快
- 固定哈希:必须用第三方脚本时,把 sha256 存下来,每次执行前校验
- 跑完改密码:脚本接触过你的机器,重要凭据换一遍成本很低
最后一句话:能看懂 800 行脚本的人,30 行就自己写完了;看不懂的人,也不该用 root 跑它。这不是危言耸听,是这类脚本被投毒的历史太长了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END








暂无评论内容