打靶日记--MyFileServer_3
字数 1788 2025-08-29 22:41:39

渗透测试实战教学:从信息搜集到提权完整流程

1. 信息搜集阶段

1.1 主机发现与端口扫描

  • 初始扫描:使用nmap等工具进行主机发现和基本端口扫描
  • 攻击向量优先级排序
    1. 共享文件系统(FTP/Samba等)
    2. Web系统(HTTP/HTTPS服务)
    3. 未知服务(非常见端口服务)
    4. SSH服务(作为最后手段)

1.2 详细服务扫描

  • FTP服务:发现允许匿名登录,存在pub/log目录
  • Samba服务(139/445端口):同样允许匿名访问
  • 其他服务:发现一些挂载与文件共享服务

1.3 漏洞扫描

  • 使用nmap自带漏洞扫描功能,未发现可直接利用的漏洞

2. 渗透阶段

2.1 FTP匿名登录利用

  1. 登录FTP服务,发现pub/log目录
  2. 下载所有可访问文件(共6个日志文件)
  3. 使用关键字过滤日志文件:
    • passwd
    • password
    • user
    • name
  4. 初步未发现有用凭证

2.2 Samba服务利用

  1. 扫描Samba共享文件夹,发现:
    • 一个可读写共享文件夹
    • 疑似功能性用户名(smbuser)
  2. 访问共享文件夹,下载与FTP不同的文件
  3. 在secure文件中发现一组用户凭据
    • 尝试SSH登录失败
    • 尝试Samba登录失败

2.3 文件分析发现关键信息

  1. 在sshd_config中发现:
    • SSH使用默认路径的私钥文件
  2. 在note.txt中发现提权提示:
    • "我出于安全原因移除了查找命令,但不想删除'getcap'。我认为没有人知道'getcap和capsh'"

2.4 Web服务探测

  1. 访问80端口HTTP服务,仅发现无用外链
  2. 目录爆破发现:
    • smbuser用户的SSH公钥/私钥路径
    • 公钥可读,私钥不可读
  3. 尝试用公钥推导私钥未成功

2.5 关键突破

  1. 发现Samba下载的文件中包含id_rsa(SSH默认私钥)
  2. 私钥被加密,使用John the Ripper提取hash并破解
  3. 成功获取私钥密码
  4. 使用smbuser用户名和私钥成功SSH登录

3. 提权阶段

3.1 初始立足点

  1. 发现传统提权方法受限(find命令不可用)
  2. 检查敏感文件:
    • /etc/shadow可读但密码破解失败
  3. 在家目录发现runme可执行文件

3.2 二进制文件分析

  1. 使用scp下载runme文件到本地分析
  2. checksec检查:
    • 64位程序
    • 无任何保护(NX, PIE, Canary等均未启用)
  3. IDA逆向分析:
    • main函数中存在危险的fgets输入
    • 程序逻辑会跳转到v5函数指针指向的函数
    • 函数表中存在flag函数,可读取bla用户目录下的user.txt

3.3 漏洞利用尝试

  1. 构造payload:
    • 40字节填充字符串(无\0)
    • 追加flag函数地址(0x4006cf)
  2. 攻击语句:
    python -c 'import sys; sys.stdout.write("A"*40 + "\xcf\x06\x40\x00\x00\x00\x00\x00")' | ./runme
    
  3. 利用未成功

3.4 替代提权方法

  1. 成功爆破出用户密码
  2. 切换用户后发现特权:
    • 能以root权限执行两个命令
  3. 使用GTFOBins查找capsh提权方法
  4. 成功提权

4. 关键技术与工具总结

4.1 信息搜集工具

  • nmap(端口扫描、服务识别、漏洞扫描)
  • smbclient(Samba服务探测)

4.2 渗透工具

  • ftp客户端(匿名登录测试)
  • John the Ripper(密码破解)
  • scp(文件传输)

4.3 二进制分析工具

  • checksec(安全机制检查)
  • IDA Pro(逆向分析)
  • Python(payload构造)

4.4 提权资源

  • GTFOBins(Linux特权执行利用参考)

5. 经验教训

  1. 文件全面检查:最初忽略了已下载的id_rsa文件,导致浪费时间
  2. 多角度思考:当一种攻击路径受阻时,及时寻找替代方案
  3. 信息关联:将不同服务中发现的信息关联起来(如Samba用户名与SSH登录)
  4. 注意提示:管理员留下的note.txt提供了重要提权线索

6. 防御建议

  1. 禁用匿名登录:FTP和Samba服务不应允许匿名访问
  2. 密钥管理:避免使用默认路径的SSH密钥,且应对私钥加密
  3. 最小权限原则:限制共享文件夹的访问权限
  4. 安全配置
    • 移除不必要的setuid/setgid程序
    • 限制capsh等危险命令的使用
  5. 日志管理:敏感日志信息应严格控制访问权限

通过本案例,可以学习到从信息搜集到提权的完整渗透测试流程,以及如何利用各种服务配置不当进行系统入侵。同时也强调了防御方应采取的安全措施。

渗透测试实战教学:从信息搜集到提权完整流程 1. 信息搜集阶段 1.1 主机发现与端口扫描 初始扫描 :使用nmap等工具进行主机发现和基本端口扫描 攻击向量优先级排序 : 共享文件系统(FTP/Samba等) Web系统(HTTP/HTTPS服务) 未知服务(非常见端口服务) SSH服务(作为最后手段) 1.2 详细服务扫描 FTP服务 :发现允许匿名登录,存在pub/log目录 Samba服务 (139/445端口):同样允许匿名访问 其他服务 :发现一些挂载与文件共享服务 1.3 漏洞扫描 使用nmap自带漏洞扫描功能,未发现可直接利用的漏洞 2. 渗透阶段 2.1 FTP匿名登录利用 登录FTP服务,发现pub/log目录 下载所有可访问文件(共6个日志文件) 使用关键字过滤日志文件: passwd password user name 初步未发现有用凭证 2.2 Samba服务利用 扫描Samba共享文件夹,发现: 一个可读写共享文件夹 疑似功能性用户名(smbuser) 访问共享文件夹,下载与FTP不同的文件 在secure文件中发现一组用户凭据 尝试SSH登录失败 尝试Samba登录失败 2.3 文件分析发现关键信息 在sshd_ config中发现: SSH使用默认路径的私钥文件 在note.txt中发现提权提示: "我出于安全原因移除了查找命令,但不想删除'getcap'。我认为没有人知道'getcap和capsh'" 2.4 Web服务探测 访问80端口HTTP服务,仅发现无用外链 目录爆破发现: smbuser用户的SSH公钥/私钥路径 公钥可读,私钥不可读 尝试用公钥推导私钥未成功 2.5 关键突破 发现Samba下载的文件中包含id_ rsa(SSH默认私钥) 私钥被加密,使用John the Ripper提取hash并破解 成功获取私钥密码 使用smbuser用户名和私钥成功SSH登录 3. 提权阶段 3.1 初始立足点 发现传统提权方法受限(find命令不可用) 检查敏感文件: /etc/shadow可读但密码破解失败 在家目录发现runme可执行文件 3.2 二进制文件分析 使用scp下载runme文件到本地分析 checksec检查: 64位程序 无任何保护(NX, PIE, Canary等均未启用) IDA逆向分析: main函数中存在危险的fgets输入 程序逻辑会跳转到v5函数指针指向的函数 函数表中存在flag函数,可读取bla用户目录下的user.txt 3.3 漏洞利用尝试 构造payload: 40字节填充字符串(无\0) 追加flag函数地址(0x4006cf) 攻击语句: 利用未成功 3.4 替代提权方法 成功爆破出用户密码 切换用户后发现特权: 能以root权限执行两个命令 使用GTFOBins查找capsh提权方法 成功提权 4. 关键技术与工具总结 4.1 信息搜集工具 nmap(端口扫描、服务识别、漏洞扫描) smbclient(Samba服务探测) 4.2 渗透工具 ftp客户端(匿名登录测试) John the Ripper(密码破解) scp(文件传输) 4.3 二进制分析工具 checksec(安全机制检查) IDA Pro(逆向分析) Python(payload构造) 4.4 提权资源 GTFOBins(Linux特权执行利用参考) 5. 经验教训 文件全面检查 :最初忽略了已下载的id_ rsa文件,导致浪费时间 多角度思考 :当一种攻击路径受阻时,及时寻找替代方案 信息关联 :将不同服务中发现的信息关联起来(如Samba用户名与SSH登录) 注意提示 :管理员留下的note.txt提供了重要提权线索 6. 防御建议 禁用匿名登录 :FTP和Samba服务不应允许匿名访问 密钥管理 :避免使用默认路径的SSH密钥,且应对私钥加密 最小权限原则 :限制共享文件夹的访问权限 安全配置 : 移除不必要的setuid/setgid程序 限制capsh等危险命令的使用 日志管理 :敏感日志信息应严格控制访问权限 通过本案例,可以学习到从信息搜集到提权的完整渗透测试流程,以及如何利用各种服务配置不当进行系统入侵。同时也强调了防御方应采取的安全措施。