Vulnhub打靶记录:pyexp
相关信息
kali:1.0.0.201/24
靶机:1.0.0.204/24
靶机介绍:pyexp: 1 ~ VulnHub(必须使用vmware运行该靶机)
靶机下载:https://download.vulnhub.com/pyexp/pyexpvm.zip
目标:2个 flag + root权限
难度:低
未提及的相关知识点,命令和代码等等可以查看我其他三个blog:
-
渗透相关知识补充 - CC-HL - 博客园 (cnblogs.com)
当然我也只是记录了我认为有必要的。
文字思路
全流程思路:
- 主机发现 端口扫描 信息搜集
- SSH密码爆破 Mysql密码爆破
- Mysql执行代码:了解
mysql的一下执行和读取文件的命令,以及mysql相关的配置文件位置 - 编写解密代码:识别出
fernet这个python机密库是关键 - SUDO权限漏洞 Python函数 本地提权
下意识的操作
- 密码爆破一定要尝试,任何可能爆破的地方都要尝试
主要的知识点
mysql渗透中的一些敏感函数:\!, load_file(), do_system()mysql渗透中的一些敏感配置文件:/etc/mysql/conf.d/,/etc/mysql/mysql.conf.dpython中的exec函数的功能就决定了它的危害程度
具体流程
信息搜集
-
发现主机,端口扫描,主机发现。这台靶机没有
80端口,基本就是从1337:ssh, 3306: mysql来进行测试。
-
对
mysql进行exp的搜索,虽然版本不符合exp利用的条件但是值得一试,虽然最后的结果是不成功的。
-
由于只有
ssh, mysql存在突破的可能,只有使用hydra分别对其进行密码爆破:-
mysql:破出:root:prettywomanhydra -l root -P rockyou.txt mysql:1.0.0.204
-
ssh:无法暴力出结果hydra -l root -P rockyou.txt ssh://1.0.0.204:1337
-
-
当进入靶机数据库中尝试
\!来使用系统命令是无法成功的,说明靶机进行了相关命令的防护。
-
通过各种敏感函数加载出
passwd文件发现lucy用户。-
用户也不存在公钥认证登陆的可能
-
配置读取失败
-
无法使用
do_system函数
-
lucy用户
-
-
通过对数据库内的数据读取发现
date : fernet这个数据库和表,cred明显是一个关于认证的加密内容,keyy为加密的salt。cred keyy gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys= UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0= 
突破边界
-
由于靶机上没有其他的明确提示和突破边界的方法,这个密文几乎就成了唯一的突破口令。但是在使用大量的解密工具和字典后都发现无法完成密码的爆破。直到看到这个数据库的名字
fernet,通过百度不难发现fernet为一个python的加解密库。
-
浏览他的官网:https://cryptography.io/en/latest/fernet/,再结合在
python交互模式中对各个变量对象的确认,Fernet大致的使用方法基本明确:key:也就是盐,为一个字节字符串对象f:为fernet利用key生成的一个特殊对象token:f对象加密后的密文,也为字节字符串对象f.decrypt(token):完成对token的解密
-
由于我们知道加解密方式,密文,
salt直接在python的交互模式中解密出密文为:lucy:wJ9`"Lemdv9[FEw-
-
通过
ssh成功的以lucy登陆靶机,获取第一个flag。
信息搜集/提权
-
可以看到靶机可以
sudo执行:/usr/bin/python2 /opt/exp.py这个脚本,通过阅读脚本和进行执行,可以发现一个非常危险的python函数:exec(会将我们传入的字符串按照python语句进行解析并执行)
-
所以再次打开这个脚本进行
print函数的验证,果不其然。接着就是键入一个常用的升级shell的Python代码就可完成提权,读取第二个flag完成打靶。

浙公网安备 33010602011771号