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.d
python
中的exec
函数的功能就决定了它的危害程度
具体流程
信息搜集
-
发现主机,端口扫描,主机发现。这台靶机没有
80
端口,基本就是从1337:ssh, 3306: mysql
来进行测试。 -
对
mysql
进行exp
的搜索,虽然版本不符合exp
利用的条件但是值得一试,虽然最后的结果是不成功的。 -
由于只有
ssh, mysql
存在突破的可能,只有使用hydra
分别对其进行密码爆破:-
mysql
:破出:root:prettywoman
hydra -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
完成打靶。