游客发表
拿到一台目标机器,登陆渗透你手上只有一个普通用户权限。登陆渗透想升到root,登陆渗透最直接的登陆渗透办法不是找内核漏洞,而是登陆渗透看看有没有别的入口没关严实。去年一次内部攻防演练,登陆渗透我就靠一个配置疏忽,登陆渗透从www-data爬到了root,登陆渗透前后不到二十分钟。登陆渗透
那台机器跑的登陆渗透是老版本CentOS,Web目录权限设得松松垮垮。登陆渗透上传一个php反弹shell,登陆渗透连上去一看,登陆渗透uname -a显示内核3.10,登陆渗透心里凉了半截——这个版本提权exp网上一抓一大把,登陆渗透但动静太大,容易触发告警。我习惯先翻家目录和计划任务,ls -la /home,发现有个叫deploy的用户,目录权限是755,里面躺着一个backup.sh。
脚本内容很简单,每天凌晨三点打包数据库,然后chown root:root再chmod 4755到一个叫sync_tool的二进制文件。问题出在哪?脚本本身是deploy用户可写的,而它被root的crontab调用。这就是典型的计划任务提权路径。
我往backup.sh末尾追加了一行:cp /bin/bash /tmp/rootbash && chmod 4755 /tmp/rootbash。等了三分钟,cron跑完,/tmp/rootbash -p直接拿到euid=0的shell。整个过程没有触发任何杀软,因为操作的都是系统自带命令,流量也没外连。
这种漏洞本质上是信任边界没划清。系统管理员觉得“脚本放在用户目录里没关系”,但root的cron不关心文件路径,它只认执行权限。一旦低权限用户能改脚本内容,就等于间接拿到了root执行权。
另一种常见情况是SUID滥用。有次碰到一个/usr/bin/find带着s位,版本还特别老。find / -exec /bin/sh -p \;直接提权。现在很多发行版默认不给find加s位了,但一些自编译软件或者旧镜像里还能见到。更隐蔽的是自定义SUID程序,比如某个运维写的“日志清理工具”,内部调用了system("rm -rf /var/log/*"),而PATH变量没写死。把当前目录塞进PATH前面,放个假的rm,等它一跑,shell就弹回来了。
内核漏洞反而要谨慎。Dirty Pipe(CVE-2022-0847)刚出来那会儿,我试过在Ubuntu 20.04上打,确实能覆盖只读文件,但一不小心就把系统搞崩了。生产环境里,能用配置问题提权就别碰内核,重启一次业务中断的代价比拿权限大得多。
还有个容易忽略的点:环境变量。sudo -l看到(root) NOPASSWD: /usr/bin/vi,直接sudo vi然后:!/bin/bash就完事。或者sudo awk 'BEGIN { system("/bin/sh")}'。这些在GTFOBins上都有现成命令,背几条常用的就够了。
提权成功后第一件事是留后门。我习惯加一个UID为0的用户,或者往/root/.ssh/authorized_keys里塞公钥。但别用useradd,日志里太明显。直接改/etc/passwd,追加一行backdoor:$1$xxx:0:0:root:/root:/bin/bash,密码哈希用openssl passwd -1生成。这样连useradd的日志都不会有。
清理痕迹比提权本身更考验耐心。history -c只能清当前会话,/root/.bash_history和/var/log/secure里的记录得手动处理。但别删整个日志文件,只删自己那几行,否则运维一眼就看出来被人动过。
说到底,登陆渗透的核心不是工具多牛,而是对系统运作方式的理解。知道cron怎么读文件、sudo怎么解析参数、SUID怎么继承权限,比背一百个exp有用。配置是人写的,人就一定会犯错。找到那个错误,权限就是你的。
友情链接