WEB攻击中常见的提权方式有哪些
拿到一个webshell,击中权限低得可怜,权方连目录都翻不了几层,击中这时候提权就成了唯一的权方路。Web攻击里的击中提权,说白了就是权方“低权限用户想办法变成高权限用户”的过程,方式五花八门,击中但核心就那么几类——内核漏洞、权方配置错误、击中服务滥用、权方还有密码复用。击中
内核漏洞提权是权方最“暴力”也最经典的路子。Linux上有脏牛、击中Dirty Pipe,权方Windows上有PrintNightmare、击中永恒之蓝,这些漏洞一旦打穿,直接拿到root或SYSTEM权限。但现实里,目标系统往往打了补丁,内核版本新得让你无从下手。我见过一个案例,攻击者扫了半天发现系统是Ubuntu 22.04,内核6.2,网上公开的提权exp全失效,最后靠的是目标机器上装了一个老版本的docker——容器逃逸漏洞,反而成了突破口。内核漏洞讲究“对症下药”,你得先精准识别系统版本和补丁情况,再决定用哪个exp,盲目乱打只会触发防护报警。
配置错误提权更“阴险”,因为它不依赖系统漏洞,纯粹是管理员犯的错。最典型的是sudo配置不当——比如某个用户被允许以root权限执行某个脚本,但脚本本身可写,攻击者改掉脚本内容,下次sudo执行时就直接提权。还有/etc/passwd文件权限错误,某些老系统允许普通用户写入,往里加一个uid=0的用户就完事。Windows上也有类似问题,比如服务路径没加引号,或者服务运行的目录允许普通用户写入,替换掉exe就能以SYSTEM权限重启服务。这类提权不考验技术深度,考验的是信息收集的耐心——你得仔细翻遍每个配置文件、每个服务属性,找到那个“人为疏忽”的缝隙。
服务滥用提权,本质上是“借刀杀人”。系统里跑着mysql、redis、tomcat,这些服务本身有高权限,但配置不当就能被利用。比如redis未授权访问,直接写crontab或者ssh公钥,拿到root shell——这种老套路至今还在大量内网里奏效。再比如tomcat管理后台弱口令,上传一个war包就是webshell,然后利用tomcat的运行账户提权。更隐蔽的是利用计划任务——管理员写了个定时脚本以root身份跑,但脚本目录可写,攻击者替换脚本内容,等下一次执行就自动提权。这类方式讲究“借势”,你得先摸清目标机器上跑了哪些服务、服务以什么权限运行、有没有对外开放的端口。
密码复用提权,听起来有点“low”,但成功率极高。攻击者通过前面的漏洞拿到一个低权限账号,然后翻数据库、翻配置文件、翻历史命令,找各种明文密码或者hash。一旦发现某个密码跟root账号或者管理员账号相同,直接横向切换。我碰过一台机器,低权限用户家目录下放着一个.bash_history,里面记录着一条sudo su命令——密码就明文写在后面。这种提权不费任何技术力气,纯粹是运气加细心,但很多攻击者栽在“懒得翻历史文件”上。
还有个容易被忽视的是“内核模块加载”提权。如果普通用户能加载内核模块(比如insmod权限没限制),直接写一个恶意模块,注册一个回调函数,在模块加载时把当前进程的uid改成0,瞬间提权。Linux上这种场景少,但某些定制系统或者嵌入式设备上反而常见。Windows上对应的是驱动加载,如果普通用户能安装驱动,那基本等于给了SYSTEM权限。
提权方式再多,核心逻辑就一条:找到目标系统里“权限分配不合理”的那个点,然后把它放大成自己的高权限。攻击者不会只用一种方法,往往是先信息收集,把系统版本、服务列表、文件权限、历史命令全摸一遍,再挑最容易的那条路走。防御方呢,除了打补丁,更得管好配置——sudo规则收紧、服务最小化运行、密码定期换、历史文件及时清理,这些基本功比啥都管用。