freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

你说没有Web服务就不会渗透了?
2022-04-09 16:43:17
所属地 河南省

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  lucy@192.168.26.130  -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权限。这是一台非常具有特色的靶机,感兴趣的师傅也可以下载到本地来玩一玩。

# 渗透测试 # 数据库安全 # 提权 # 信息搜集
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录