随记靶机渗透-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

步骤:

  1. 准备图片文件
  2. 将PHP Webshell(如冰蝎马)写入图片:
    copy /b image.jpg + shell.php webshell.jpg
    
  3. 上传图片马
  4. 通过文件包含执行图片马中的PHP代码:
    http://192.168.0.103/language.php?lang=uploads/webshell.jpg
    

5. 反弹Meterpreter会话

使用冰蝎的反弹功能:

  1. 在Kali上设置监听
  2. 通过冰蝎执行反弹命令
  3. 获取Meterpreter会话

6. 获取交互式Shell

在Meterpreter会话中:

python3 -c "import pty;pty.spawn('/bin/bash')"

权限提升

1. 发现用户凭证

在网站目录下发现用户bassam的密码

2. 切换用户

使用发现的密码切换到bassam用户:

su bassam

/home/bassam目录下找到第一个Flag

3. 提权方法分析

Linux常见提权方法:

  1. 脏牛提权(需要特定内核版本)
  2. 利用低权限用户可被root调用的脚本
  3. 环境变量劫持高权限程序

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}

知识点总结

  1. 图片马制作: 将Webshell嵌入图片文件绕过上传限制
  2. 文件包含漏洞利用: 通过LFI执行任意代码
  3. Sudo提权: 利用低权限用户可执行的root权限命令进行提权
  4. 交互式Shell获取: 使用Python获取TTY交互式界面
  5. 反弹Shell技术: 通过Meterpreter建立持久连接

防御建议

  1. 文件上传:

    • 不仅验证扩展名,还应验证文件内容
    • 将上传文件存储在Web根目录外
    • 重命名上传文件
  2. 文件包含:

    • 避免直接使用用户输入作为包含路径
    • 使用白名单限制可包含的文件
    • 禁用危险函数如includerequire
  3. 权限配置:

    • 遵循最小权限原则
    • 定期审核sudo权限
    • 避免普通用户拥有危险命令的sudo权限
  4. 系统加固:

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