当前位置:首页 > 知识

提权课程

拿到一台低权限的提权课程Linux服务器,你只能读不能写,提权课程连个像样的提权课程目录都进不去。这时候你要做的提权课程第一件事,是提权课程打开终端敲下id。屏幕上回显的提权课程那一串uid=33(www-data) gid=33(www-data) groups=33(www-data),就是提权课程你当前的全部身份。提权这件事,提权课程说到底就是提权课程把这行字换成uid=0(root)。

很多人卡在第一步——不知道从哪找突破口。提权课程我的提权课程习惯是先跑一遍uname -a和cat /etc/os-release。内核版本和发行版号直接决定了你该去翻哪个CVE。提权课程去年碰到一台Ubuntu 16.04,提权课程内核4.4.0,提权课程我脑子里立刻跳出CVE-2017-16995。提权课程那个漏洞利用代码GitHub上随手就能搜到,编译一下扔上去,三分钟拿到root shell。但你要是连系统版本都不看,上来就盲试exploit,纯属碰运气。

内核漏洞是条捷径,但不是每次都有。更多时候你得靠配置疏漏。SUID文件是个金矿。find / -perm -4000 -type f 2>/dev/null这条命令我敲过不下几百遍。有次在一台CentOS上翻出来一个叫backup_tool的自定义SUID程序,一看就是运维自己写的。用strings扫了一下,里面调用了tar命令但没写绝对路径。我直接在/tmp里放了个假的tar,内容就一行/bin/bash -p,然后把/tmp加到PATH最前面。再跑那个backup_tool,root shell弹出来了。这种PATH劫持的手法老套,但架不住有人写代码就是不爱用绝对路径。

计划任务也值得盯。用crontab -l看当前用户的,再翻/etc/crontab和/etc/cron.d/。有回我发现一个root的定时任务每五分钟执行/home/deploy/clean.sh,而那个脚本的权限是-rwxrwxrwx。777。我直接把脚本内容改成chmod +s /bin/bash,等五分钟,/bin/bash -p,完事。写这个脚本的人大概觉得/home/deploy目录只有自己人能访问,但他忘了同组的其他用户也能进去。

密码复用是另一个常见入口。拿到低权限shell后,cat /etc/passwd看用户列表,cat /etc/shadow通常读不了,但你可以翻/home/*/下的.bash_history、.mysql_history、.git-credentials。有人把数据库密码写在脚本里,有人把sudo密码敲进了history。我甚至见过把root密码明文放在/var/www/html/config.php里的,注释还写着“TODO: move to env”。这种时候你只需要su root,然后输入那个密码。

提权工具像LinEnum、LinPEAS能帮你省时间,但别完全依赖它们。脚本跑出来的结果有时候会漏掉关键细节,或者把无关紧要的警告标红让你分心。我更倾向于自己手动过一遍:SUID、sudo -l、cron、可写文件、内核版本、环境变量、挂载点、NFS共享。这套流程走下来,八成以上的机器都能找到路子。

最后说个容易被忽略的点——sudo -l的输出。如果看到(ALL) NOPASSWD: /usr/bin/vim,那等于直接送你root。sudo vim -c ':!/bin/bash'就完事了。同理还有less、find、awk这些。GTFOBins这个网站把这些命令的利用方式列得清清楚楚,没事多翻翻。

提权不是背命令,是理解系统哪里出了错。你越熟悉Linux的权限模型和常见配置,越能快速定位问题。每次拿到新机器,先花十分钟做信息收集,比上来就瞎试exploit效率高得多。

分享到: