20、Cereal

news2024/12/24 8:15:12

难度 高

目标 root 权限 + 2 Flag

使用VMware进行运行

信息收集

kali 192.168.152.56 靶机 192.168.152.65

第一次遇到这么快的端口扫描

可以看到存在ftp anoymous访问 同时还有大量的tcpwrapped状态,这个状态我还没见过

另外有个数据库和两个我网站服务,我第一次见开启了这么多服务的靶机

访问80端口默认的apache启动页面

访问44441页面就一个coming soon

尝试登录了匿名ftp,目录下有个pub但是里面也没有东西

kali 访问 ftp -a 192.168.152.65

先对web的目录进行一遍扫描

44441端口没有扫描出任何的东西,不过80端口扫描出了一个admin登录页面和一个blog登录页面和一个phpinfo

访问admin后尝试了几下弱口令没结果

访问blog发现功能点相对多一些,而且写着power by wordpress 不过和我看到的wordpress不太一样 ,不过当我 尝试登录发现在尝试解析一个域名

应该要绑定一下本地的hosts文件

cereal.ctf

绑定完发现真的是wordpress

wordpress有很多漏洞,不过目前多是一些插件导致的漏洞,不知道还存不存在,反正什么wpscan等一些漏扫都上完了没有扫出漏洞。。。

有了域名访问的内容好像多了一些,于是直接切换域名再扫一遍目录

发现扫出来了一些目录而且存在目标遍历

最后一个点mysql服务也尝试进行一些爆破,wordpress我没怎么打过这个站不知从何下手。

mysql的爆破也一直显示无法连接,可能没有开启外联

它这里唯一的可能就这个blog的有个search页面是自己写的可能会存在漏洞,同时说会从什么网站备份中恢复

这个search框试过了没有SQL注入

没思路了,wordpress我没有打过也没有啥经验不知道从何下手

突破边界

看了wp竟然需要继续子域名的挖掘,44441端口也有一个子域名进行访问。。。

子域名枚举

使用gobuster进行爆破

gobuster vhost -u http://cereal.ctf:44441 -w /usr/share/seclists/Discovery/DNS/fierce-hostlist.txt --append-domain --timeout 60s --random-agent -q

视频中的gobuster有点落后了现在需要加其他参数才扫的出来。。。

可以扫出一个

secure.cereal.ctf:44441

那么也写入hosts

添加后再次访问44441端口,发现有个ping的界面,遇到这种界面一般会存在rce

然后果断bp抓包查看,发现有两个参数

第一个参数解码,一眼php序列化后的字符串

于是先修改了一下ip参数,看到底是哪个参数中的ip是实际运行的变量,然后发现修改了ip参数并不会改变执行的结果,那么说明就是这个序列化的结果中的ip在实际控制着执行的结果

不过直接通过输入框尝试了一下命令发现都没有执行,尝试无回显在本地起个http用curl发现也没有回显

但是反序列化漏洞一般都是配合代码审计进行的,得知道具体的代码反序列化才可以去触发一些函数之类的行为才有意义

所以如果能拿到源码或许可以突破进行

前面就一直在提示说备份文件备份文件的,估计现在就想办法找这个备份文件了,拿目录扫描工具框框的扫

 

使用这个字典可以扫到一个back_en的文件,这个目录下面很可能就有备份文件

虽然直接访问这个文件夹是403的情况,但是403可能只是对当前文件夹的拦截,有些情况下直接访问到具体的文件是可以绕过的

换个字典

有一说一这么多字典该用哪个我是真的晕。。。

代码审计

将备份文件下载后

<?php

class pingTest {
    public $ipAddress = "127.0.0.1";
    public $isValid = False;
    public $output = "";

    function validate() {
        if (!$this->isValid) {
            if (filter_var($this->ipAddress, FILTER_VALIDATE_IP))
            {
                $this->isValid = True;
            }
        }
        $this->ping();

    }

    public function ping()
        {
        if ($this->isValid) {
            $this->output = shell_exec("ping -c 3 $this->ipAddress");   
        }
        }

}

if (isset($_POST['obj'])) {
    $pingTest = unserialize(urldecode($_POST['obj']));
} else {
    $pingTest = new pingTest;
}

$pingTest->validate();

可以看到代码还是很简单的,就一个类中自定义了两个函数,接收到的序列化字符串被反序列化后也会调用validate函数,如果没有接收到obj参数中的序列化字符串会默认新建一个类,并且类中默认ip就是127.0.0.1

看着应该是只要将参数isValid修改为True那么就不会进入validate函数的第一个if判断,可以直接进行ping()函数也就是直接进行命令执行

相比ctf的题目中反序列化这入门题都算不上。。。

只需要修改一些ipaddress和isValid参数绕过一下判断即可

O:8:"pingTest":3:{s:9:"ipAddress";s:12:"127.0.0.1;ls";s:7:"isValid";b:1;s:6:"output";s:0:"";}

终于是突破边界了,只能说找信息收集漏洞点真的是一件很折磨的事情

终于突破边界了直接反弹shell

输入的时候序列化字符串需要url编码一下

提权

得到shell后先升级一下

SHELL=/bin/bash script -q /dev/null

查看一下有哪些用户可以登录发现有个rocky需要关注

看一下目前有哪些进程

前面扫到的这些奇怪的端口果然是迷雾弹。。。

然后又查看了一下能否使用suid提权,没有看到常见的一些命令

然后今日rocky目录看一下有没有什么东西,拿到第一个flag

然后就没有发现什么有用的东西了

找一找3306的数据库结果发现启动的用户是mysql,只能看能不能在里面找点密码啥的了

wordpress源码中配置有数据的账号密码

newuser

VerySecureRandomPassword!

使用这个密码去登录ssh也没有登录成功

数据库登录进去发现了一个账号密码

在线解密没解密出来。。。

没啥思路了看一下wp

这里需要使用一个工具来监视进程,应该是这个程序执行的很快然后就结束了。

GitHub - DominicBreuker/pspy: Monitor linux processes without root permissions

这个工具可以在不需要root权限的情况下也可以监视进程的创建,可能会有计划任务在创建进程,但是root用户的计划任务又看不到,说不定有些任务执行完就秒没了不会有长时间的进程信息

等待了一段时间后出现了这个可疑的进程

在运行一个chown.sh

chown命令是用来修改所属用户和用户组的,这个脚本将这个html目录下的所有文件的所属用户和组修改。

比如我创建了一个文件

在等待一段时间后,计划任务自动执行脚本将这个文件的所属用户修改为了rocky

那么这里可以使用软连接的方式,在当前目录创建一个/etc/passwd文件如果将这个软连接的文件修改了所属组会将真实的passwd一并修改(我也是第一次知道软连接被修改了源文件也会被修改)

ln -sf /etc/passwd ./passwd

又是等到一段时间,这里不会修改这个软连接的显示需要直接查看/etc/passwd文件

可以看到所属组和用户都已经被修改

因为bash的问题vi无法正常的交互所以只能使用echo写入一个新的用户

echo "dreamer292::0:0:root:/root:/bin/bash" >> /etc/passwd (第二个分号后面有x就是需要密码登录,这里删除后等于创建了一个不需要密码的登录账号)

写入成功后直接su 新用户

拿下root权限和最后一个flag

后记

        非常注重信息收集的一关,前期的目录扫描和子域名爆破真的非常吃力,难以找到这个突破口,后续的突破轻松一些,不过最后的提权方式我也是第一次学习到这样的手法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.TensorBoard的使用(一)--add_scalar()

Tensorboard的使用&#xff08;一&#xff09; TensorBoard 是一个可视化工具&#xff0c;用于监控和调试深度学习模型的训练过程。 1.使用add_scalar()进行简单绘图 首先需要导入Tensorboard包 from torch.utils.tensorboard import SummaryWriter创建一个SummaryWriter类的…

深入理解SpringBoot(一)----SpringBoot的启动流程分析

1、SpringApplication 对象实例化 SpringApplication 文件 public static ConfigurableApplicationContext run(Object[] sources, String[] args) {// 传递的source其实就是类Bootstrapreturn new SpringApplication(sources).run(args);// 实例化一个SpringApplication对象执…

CSS—4

1.定位 1.相对定位 2.绝对定位 3.固定定位 4.粘性定位 5.定位的特殊应用 2.布局-版心 3.布局-常用布局名词 4.布局-重置默认样式

【云原生监控】Prometheus监控系统

Prometheus监控系统 文章目录 Prometheus监控系统资源列表基础环境一、部署Prometheus服务1.1、解压1.2、配置systemctl启动1.3、监听端口1.4、访问Prometheus仪表盘 二、部署Node-Exporter2.1、解压2.2、配置systemctl启动2.3、监听端口2.4、访问node-exporter仪表盘 三、配置…

Java接口的艺术:探索接口特性与面向接口编程

在Java的世界里&#xff0c;接口&#xff08;Interface&#xff09;是一种强大的抽象机制&#xff0c;它定义了一组方法规范&#xff0c;但不实现这些方法。接口在Java编程中扮演着至关重要的角色&#xff0c;特别是在实现多态和面向接口编程&#xff08;Interface-Oriented Pr…

Linux进程状态进程优先级

目录 一、操作系统的进程状态 1.1运行状态 1.2阻塞状态 1.3挂起 二、Linux下具体的状态 三、进程的优先级 3.1基本概念 3.2查看进程优先级的命令 3.3修改进程优先级的命令 3.4其他概念 3.5并发 一、操作系统的进程状态 1.1运行状态 当一个进程准备就绪&#xff0c…

MouseArea元素

常用信号 onClicked&#xff0c;鼠标点击onPressed&#xff0c;鼠标按下onReleased&#xff0c;鼠标释放 import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseA…

redis基本数据结构-sorted set

1. sorted set的简单介绍 参考链接&#xff1a;https://mp.weixin.qq.com/s/srkd73bS2n3mjIADLVg72A Redis的Sorted Set&#xff08;有序集合&#xff09;是一种数据结构&#xff0c;它是一个不重复的字符串集合&#xff0c;每个元素都有一个对应的分数&#xff08;score&…

模板方法模式:设计模式中的骨架法则

模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 一&#xff0c;模板方法模式的…

C# HttpListener 实现的HTTP Sever浏览器文件下载

1. 前端页面请求 编写简单的test.html 文件&#xff0c;body体值配置a标签&#xff0c;其href 属性设置为文件下载请求的http接口要求的参数序列。 <!DOCTYPE html><html> <head><meta name"viewport" content"widthdevice-width" …

行业分析---自动驾驶行业的发展

1 背景 进入21世纪以来&#xff0c;自动驾驶行业有着飞速的发展&#xff0c;L2级别的自动驾驶技术也逐渐落地量产到寻常百姓家。不管是起步比较早的特斯拉&#xff0c;还是2015年以后国内的公司&#xff0c;都在逐渐发展自动驾驶技术&#xff0c;并量产给用户使用。 自动驾驶最…

COMDEL电源维修CLX2500康戴尔射频电源维修

美国COMDEL射频电源维修常见型号包括&#xff1a;CLX2750&#xff1b;CLX2500&#xff1b;CLX-600H&#xff1b;CX600AS&#xff1b;CX-5000S&#xff1b;CX-3500S&#xff1b;CX-2500S&#xff1b;CV500&#xff1b;CDX2000等。 Comdel成立于1966年&#xff0c;总部设在马萨诸…

Linux环境基础开发工具使用(gcc/g++与makefile)

1.Linux编译器-gcc/g使用 1. 背景知识 接下来的操作&#xff0c;我以gcc为例&#xff0c;因为两者选项都是通用的&#xff0c;所以也就相当于间接学习了 1.预处理&#xff08;进行宏替换) 2.编译&#xff08;生成汇编) 3.汇编&#xff08;生成机器可识别代码&#xff09;…

革新骨科金属螺丝:TPMS结构助力骨再生研究新突破AbMole

在骨科植入物领域&#xff0c;金属螺丝因其出色的机械强度和生物相容性&#xff0c;一直是骨折固定不可或缺的工具。然而&#xff0c;传统实心设计的金属螺丝常常面临应力遮挡和术后松动的问题&#xff0c;严重影响其长期固定效果。近期&#xff0c;一项由吉林大学第二医院骨科…

第T1周:Tensorflow实现mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标&#xff1a; 具体实现&#xff1a; &#xff08;一&#xff09;环境&#xff1a; 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框架&#xff1a…

Mixtral 8x7B:开源稀疏混合专家模型的新里程碑

人工智能咨询培训老师叶梓 转载标明出处 随着大模型规模的增大&#xff0c;计算成本和资源消耗也相应增加&#xff0c;这限制了它们的应用范围和效率。本论文介绍了一种新的稀疏混合专家模型&#xff08;SMoE&#xff09;——Mixtral 8x7B&#xff0c;它在保持较小计算成本的同…

【C++】c++ 11

目录 前言 列表初始化 std::initializer_list 右值引用和移动拷贝 左值和右值 左值引用和右值引用的区别 万能引用&#xff08;引用折叠&#xff09; 完美转发 默认成员函数控制 列表初始化 在C98中&#xff0c;标准允许使用花括号{}对数组或者结构体元素进行统一的列…

Gartner 成熟度曲线报告解读(一)| 2024中国IT基础设施使用趋势、影响中国IT使用的4大因素

近些年&#xff0c;面对数字化转型、信息化发展、政策监管与地缘政治等外部因素&#xff0c;以及降本增效的内部需求&#xff0c;不少中国企业在制定 IT 基础设施发展策略时遇到多重挑战。为帮助国内企业用户优化基础设施战略&#xff0c;Gartner 近日发布《中国 IT 基础设施技…

【HCIA-Datacom】华为VRP系统

| &#x1f449;个人主页&#xff1a;Reuuse 希望各位多多支持&#xff01;❀ | &#x1f449;往期博客&#xff1a;网络参考模型 | 最后如果对你们有帮助的话希望有一个大大的赞&#xff01; | ⭐你们的支持是我最大的动力&#xff01;⭐ | 目录 1. 华为VRP系统概述VRP概念设备…

Docker-compose:管理多个容器

Docker-Compose 是 Docker 公司推出的一个开源工具软件&#xff0c;可以管理多个 Docker 容器组成一个应用。用户需要定义一个 YAML 格式的配置文件 docker-compose.yml&#xff0c;写好多个容器之间的调用关系。然后&#xff0c;只要一个命令&#xff0c;就能同时启动/关闭这些…