随记靶机渗透-KiraCTF
字数 1272 2025-08-15 21:32:52
KiraCTF靶机渗透实战教学文档
靶机概述
- 靶机名称: KiraCTF
- 作者: Bassam Assiri
- 难度: 简易
- 发布时间: 2020-11-04
- 环境:
- 系统: Ubuntu
- 平台: VMware
- 网络: 桥接模式
信息收集阶段
1. 主机发现
使用arp-scan识别局域网存活主机:
arp-scan -l
发现靶机IP: 192.168.0.103
2. 端口扫描
使用Nmap进行全端口扫描:
nmap -sS -T4 -p 1-65535 -v 192.168.0.103
扫描结果:
- 开放端口: 80/tcp (HTTP)
- 其他65534个端口关闭
Web应用渗透
1. 初步侦查
访问http://192.168.0.103发现:
- 文件上传功能
- 其他未知功能点
2. 文件上传漏洞利用
尝试上传PHP文件被拒绝,系统检测文件扩展名:
- 允许的扩展名: jpg, jpeg, png, gif
- 使用白名单验证机制
上传图片文件成功,返回上传路径:
uploads/[filename]
3. 文件包含漏洞发现
在另一个功能点发现LFI(本地文件包含)漏洞:
<?php
if(isset($_GET['lang'])){
include("/var/www/html/".$_GET['lang']);
}
?>
漏洞利用点:
- 无任何过滤和限制
- 可直接包含服务器上的任意文件
4. 制作图片马并Getshell
步骤:
- 准备图片文件
- 将PHP Webshell(如冰蝎马)写入图片:
copy /b image.jpg + shell.php webshell.jpg - 上传图片马
- 通过文件包含执行图片马中的PHP代码:
http://192.168.0.103/language.php?lang=uploads/webshell.jpg
5. 反弹Meterpreter会话
使用冰蝎的反弹功能:
- 在Kali上设置监听
- 通过冰蝎执行反弹命令
- 获取Meterpreter会话
6. 获取交互式Shell
在Meterpreter会话中:
python3 -c "import pty;pty.spawn('/bin/bash')"
权限提升
1. 发现用户凭证
在网站目录下发现用户bassam的密码
2. 切换用户
使用发现的密码切换到bassam用户:
su bassam
在/home/bassam目录下找到第一个Flag
3. 提权方法分析
Linux常见提权方法:
- 脏牛提权(需要特定内核版本)
- 利用低权限用户可被root调用的脚本
- 环境变量劫持高权限程序
4. Sudo提权
检查bassam用户的sudo权限:
sudo -l
发现可以无限制使用find命令
利用GTFOBins中的find提权方法:
sudo find . -exec /bin/sh \; -quit
成功获取root权限
5. 获取最终Flag
在/root目录下找到最终Flag:
THM{root-Is_Better-Than_All-of-THEM-31337}
知识点总结
- 图片马制作: 将Webshell嵌入图片文件绕过上传限制
- 文件包含漏洞利用: 通过LFI执行任意代码
- Sudo提权: 利用低权限用户可执行的root权限命令进行提权
- 交互式Shell获取: 使用Python获取TTY交互式界面
- 反弹Shell技术: 通过Meterpreter建立持久连接
防御建议
-
文件上传:
- 不仅验证扩展名,还应验证文件内容
- 将上传文件存储在Web根目录外
- 重命名上传文件
-
文件包含:
- 避免直接使用用户输入作为包含路径
- 使用白名单限制可包含的文件
- 禁用危险函数如
include、require
-
权限配置:
- 遵循最小权限原则
- 定期审核sudo权限
- 避免普通用户拥有危险命令的sudo权限
-
系统加固:
- 及时更新系统和软件
- 禁用不必要的服务和功能
- 实施适当的日志监控