52 代码审计-PHP项目类RCE及文件包含下载删除

目录

    • 漏洞关键字:
    • 演示案例:
      • xhcms-无框架-文件包含跨站-搜索或应用-include
      • earmusic-无框架-文件下载-搜索或应用功能-down等
      • zzzcms-无框架-文件删除RCE-搜索或应用-unlink、eval

漏洞关键字:

SQL注入:
select insert update mysql_query mysql等
文件上传:
$_FILES,type=“file”,上传,move_uploaded_file()等
xss跨站:
print print_r echo sprintf die var_dump var_export等
文件包含:
include include_once require require_once等
代码执行:
eval assert preg replace call user func call user func array等
命令执行:
system exec shell_exec ’ ’ passthru pcntl_exec popen proc_open
变量覆盖:
extract() parse_str() importrequestvariables () $$等
反序列化:
serialize() unserialize() _construct _destruct等
其他漏洞:
unlink() file_get_contents() show_source() file() fopen()等

#通用关键字:

$_GET$_POST$_REQUEST$_FILES$_SERVER

演示案例:

xhcms-无框架-文件包含跨站-搜索或应用-include

#通过应用及URL地址等分析可能存在xss及包含安全
抓包找到xss无过滤代码块及文件包含有后缀需绕过代码块

找跨站漏洞的话,第一个找输出函数,第二个是功能点;如果是在输出地方的话,那就找输出函数,如果是功能点,那就找变量和数据有相应输出的地方;网站留言板可以测试跨站漏洞,因为留言板存在接受数据,将数据进行留言板展示的,这个操作是满足跨站漏洞原理的

可以从功能点上分析,也可以从代码层面上搜索指令进行测试
在这里插入图片描述
在这里我们可以搜索一下全局相关的输出性函数
在这里插入图片描述
一般我们是找非admin的,因为后台一般是要我们登录才能进行操作,所以我们优先看非后台目录的地方
在这里插入图片描述
可以看到navs是从mysql执行的地方来的,而sql语句是已经写死了,也就是说数据库的数据是死的,我们不能控制它,所以navs是没作用的
在这里插入图片描述
echo是受pages、info两个变量控制的,info的值是写死的,也没什么作用;pages明显是从变量page接收过来的,用到了魔术引号addslashes对一些. / ' " 符号进行转义,我们跨站语句不会触发这些字符,所以这个地方可能存在跨站漏洞,文件是/files/contact.php
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们尝试访问文件看一下,文件对应存储路径地址和我们访问地址,如果采用mvc结构的话,与自己写的访问路由结构,对应不上就会出现访问失败
在这里插入图片描述
我们看一下files下的index首页
在这里插入图片描述
看一下根目录的index
在这里插入图片描述
应该要这样子访问
在这里插入图片描述
在后面加个参数page=1
在这里插入图片描述
在这里插入图片描述
对应的应该是这条语句
在这里插入图片描述
直接执行跨站语句,成功
在这里插入图片描述
从功能点,网站有联系,明显就是互动的地方,就存在数据的接收和数据显示的操作,这是符合跨站漏洞产生原理的

我们打开它的网站地址,找到他对应的文件,他的访问地址是contact和我们刚才搜索找到contact.php的文件名是一样的,再像我们刚才一样看代码

文件包含搜索关键字,因为我们从网站上看不到有类似文件包含的功能点
在这里插入图片描述
包含文件里面存在变量action,action又从变量file来,同样的这个地方使用转义来过滤,但是这个没有作用,因为他只是过滤一些注入的,像正常传输文件名是没有任何操作的
在这里插入图片描述
这个就是典型的限制后缀,他会自动加上.php干扰你
在这里插入图片描述
我们可以采取下面两种方式进行绕过
%00截断: 条件: magic_quotes_gpc = off php版本<5.3.4
filename=…/…/…/www.txt%00
长度截断:条件:windows,点号需要长于256;linux 长于4096
在这里插入图片描述
能绕过是漏洞,不能绕过也是漏洞,只是他的版本不符合,假如他上面没有.php,那就是典型的无限制文件包含漏洞

远程包含取决于php环境自身设置有没有开allow_include开关,如果是远程包含漏洞,那危害就比较大了

earmusic-无框架-文件下载-搜索或应用功能-down等

#通过应用分析或搜索判断可能存在文件下载操作
抓包分析下载地址找到对应代码块,文件下载地址由$file控制

$file从数据库查询语句得知,追踪那里可更新或更改此类数据尝试修改发现过滤,追踪过滤机制分析绕过,采用全路径地址绕过

这个站点类似访问QQ音乐官网的程序,他是注册账号之后,可以上传音乐作品
在这里插入图片描述
由于他主要是用来分享音乐,他这个上面肯定有相关文件的东西的,他是进行文件操作,有文件下载、文件删除,文件上传的安全问题
在这里插入图片描述
注册登录进去,看一下这个地方有那些功能,这个地方可以测试有没有文件上传漏洞
在这里插入图片描述
在这里插入图片描述
文件下载,通过看网站功能,就能分析到存在那些漏洞
在这里插入图片描述
我们拿到程序之后,你自己要去猜测程序存在那些漏洞,是根据程序自身源码,他的应用方向决定的,他的网站偏向社交,有数据的交互,就会产生注入、跨站多一点,像这个音乐的分享、播放,就是操作文件的,这里肯定是有文件上传、下载,这套程序比较偏向于找文件漏洞

通过搜索相关关键字,来搜索文件下载的函数,来找到对应的代码
根据网站给到的功能,我可以根据文件下载功能,把对应的数据包抓到,来找到对应的下载文件的参数和地址来分析到对应代码

我们要先确定下载地址链接,然后去寻找代码
在这里插入图片描述
这个就是典型的id值接收过来给到变量id
在这里插入图片描述

intval
在这里插入图片描述

SafeRequest自定义函数,操作类的东西,获取当前的魔术引号是否开启,定义数据接收方式
在这里插入图片描述
这个就是进行文件下载的数据包
在这里插入图片描述
只是判定音乐作品是否要付费
在这里插入图片描述
如果不需要付费,就设置cookie
在这里插入图片描述
用参数进行下载,下载的文件是变量file
在这里插入图片描述
in_audio对应文件的下载地址,这个值等于什么,就下载什么
在这里插入图片描述
in_audio是id值执行完的结果,这个值是写到数据库里面的,无法通过传参控制这个值

后台的文件需要后台登录才能操作,漏洞即使发现,也没有太大的意义

我们现在是看那个地方可以操作in_audio值,in_audio赋值给变量audio
在这里插入图片描述
在网站这边音频地址写1
在这里插入图片描述
抓包,我们可以看到文件名ajax.php,audio为1
在这里插入图片描述
我们找到ajax.php,发现audio的值给到变量audio,变量audio接收到值就是1
在这里插入图片描述
等于1之后,就赋值给in_audio
在这里插入图片描述
下面这边开始插入数据库
在这里插入图片描述
就会对应修改这个地方
在这里插入图片描述
比如我们下载1.php,把值给保存一下
在这里插入图片描述
在这里插入图片描述
然后看一下
在这里插入图片描述
刷新点击下载
在这里插入图片描述
如果要进行跨越下载,就…/1.php,但是我们发现这边有过滤
在这里插入图片描述
在这里插入图片描述
因为checkrename、unescape是过滤函数,unescape是过滤正则表达式
在这里插入图片描述
checkrename是./触发拦截机制,我们可以…\绕一下
在这里插入图片描述
把id值传输进去,因为你添加音乐地址的时候,数据就写到数据库里面去了,所以你通过id值取出音乐地址里面别人设置好的音频地址来进行下载

功能点或关键字分析可能存在漏洞
抓包或搜索关键字找到代码出处及对应文件
追踪过滤或接受的数据函数,寻找触发此函数或代码的地方进行触发测试

zzzcms-无框架-文件删除RCE-搜索或应用-unlink、eval

文件删除搜索关键宇unlink,对应函数del_file,查看调用此的地方
后台delfile函数调用,如何处罚delfile函数,受参数控制,进行测试
代码执行搜索关键字eval,对应配置模版解析文件,查看调用此地方判断后台可修改模版文件,前台触发模版文件,构造payload进行测试

文件删除漏洞不是很常见,一般我们在黑盒测试很难探针到,因为他需要有特定的访问地址,特定的参数去触发文件类的删除,需要代码去辅助你,你才知道怎么去传参,但是黑盒里面,我们无法知道,没办法测试,得不到效果,所以一般文件删除漏洞,产生在白盒测试里面

利用这个漏洞主要是删除文件的一个安装文件叫install.lock,文件删除漏洞触发条件,我们要去触发删除文件的功能,这个参数怎么传递,才能删除文件,我们需要满足特定文件地址,特定参数值对应上才行,所以一般是代码原因

我们判定程序是否安装,就是判定install.lock文件是否存在,如果这个文件没有,程序就知道你是初次安装,可以访问对应的安装目录,他会提示你已经安装
重新安装的含意是把网站的自身程序重新自定义
在这里插入图片描述
查一下unlink函数,php里面文件删除的函数
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
我们打开程序看一下
在这里插入图片描述

这边unlink有删除文件操作,del_file函数要被调用

在这里插入图片描述
我们通过全局搜索发现del_file函数调用情况,我们优先是不看后台的,因为后台要登录操作,即使发现也不是很大的高危漏洞
在这里插入图片描述
is_write函数调用过,我们继续搜索
在这里插入图片描述
明显这里没有被调用过,他只是申明,这个可以忽略不计
在这里插入图片描述
我们搜handle_upload函数
在这里插入图片描述
被调用过的地方又是upload函数
在这里插入图片描述
我们就要搜upload函数又在那里被调用过,这个就很多了,我们先不看这个
在这里插入图片描述
他们是相辅相成的包含,他包含这个文件,这个文件又包含另一个文件
save.php调用del_file函数
在这里插入图片描述
我们全局跟踪delfile()函数,如果act的值等于delfile,就调用delfile函数,这个函数被调用del_file也会被调用,所以我们要想办法让act等于defile,可以跟踪一下act从那里来
在这里插入图片描述
在这里插入图片描述
我们先看一下getform函数,就是指向接收的方式
在这里插入图片描述
act就是等于get接收的值,我们定位safe_word()函数,就是保留东西不能带特殊符号
在这里插入图片描述
现在大概清楚了,我们访问文件,让act的值等于delfile,就会调用delfile函数,delfile函数就会删除文件,在删除文件执行的时候,需要满足if语句

在这里插入图片描述
我们定位一下arr_search(),他就是判定file_path,safe_path数组里面的值
在这里插入图片描述
safe_path在上面已经申明了
在这里插入图片描述
我们追踪file_path函数
在这里插入图片描述
file通过post传递一个path值,在通过file_path获取路径,获取路径之后,和safe_path进行对比,如果重复,就返回true,执行下面代码,就是说我们传递file_path值要带’uplpad’、‘template’、‘runtime’、‘backup’,因为你一旦带这几个值,就执行下面代码,如果没带就直接跳出循环
在这里插入图片描述
我们访问对应地址文件,传递参数
这里实验了漏洞,发现管理员权限登录后台,才可以删除文件,这个漏洞很鸡肋
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件删除的作用是一旦删除install.loc文件之后,你访问安装目录,会重新安装,这个漏洞相当于会造成系统重装的漏洞

搜索eval关键字,看有没有eval关键字形成代码执行漏洞,前面几个都是带关键字不是函数使用
在这里插入图片描述
在这里插入图片描述
这边包含$ifstr,一个个的追踪下去
在这里插入图片描述
在这里插入图片描述
preg_match_all
在这里插入图片描述
$pattern匹配规则,zcontent匹配对象,把zcontent按照pattern规则匹配,匹配出的结果给matches

谁控制了zcontent,就控制了matches,控制了matches,就控制了ifstr,相当于谁引用了parserIfLabel函数,zcontent就是控制的地方

这边写了public,说明这可能是一个对象的写法,就不是单纯的函数
在这里插入图片描述
查一下,谁调用ParserTemplate对象
在这里插入图片描述
ParserTemplate对象创建zcontent
在这里插入图片描述
zcontent来自user_tpl
在这里插入图片描述
在这里插入图片描述
修改模版文件会修改指定文件,漏洞存在模版文件,修改文件,把后门写进去
在这里插入图片描述
相当于修改about.html文件
在这里插入图片描述
在这里插入图片描述
后台模版文件修改之后,前端的html文件也会被修改,而代码执行是产生在模版里面

index.php首页文件就是zzz_client.php文件
在这里插入图片描述
而这个文件调用过ParserTemplate对象,那就是说前端和后端都能修改这个模版
在这里插入图片描述
我们通过后台修改代码,因为前端不能修改代码,让iffile去包含变量,达到规则,前端去访问,去解析它

他是一种程序上的设计,设计里面又不得不进行的操作,所导致的安全问题,他要让html代码执行出php的效果

http://192.168.0.102:91/?r=../../index.txt%00
http://192.168.0.102:94/admin/save.php?act=delfile
path=/upload/../install/install.lock

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

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

相关文章

【FreeRTOS】信号量——简介、常用API函数、注意事项、项目实现

在FreeRTOS中&#xff0c;信号量是一种非常重要的同步机制&#xff0c;用于实现任务间的互斥访问和同步操作。通过信号量&#xff0c;不同的任务可以安全地共享资源&#xff0c;避免竞争和冲突&#xff0c;从而确保系统的稳定性和可靠性。本篇博客将介绍FreeRTOS中信号量的基本…

使用Huggingface创建大语言模型RLHF训练流程的完整教程

ChatGPT已经成为家喻户晓的名字&#xff0c;而大语言模型在ChatGPT刺激下也得到了快速发展&#xff0c;这使得我们可以基于这些技术来改进我们的业务。 但是大语言模型像所有机器/深度学习模型一样&#xff0c;从数据中学习。因此也会有garbage in garbage out的规则。也就是说…

AUTOSAR CP Int-Watchdog简介

Int Watchdog 1 简介2 EB 中配置 TC39X3 Wdg 在代码中使用1 简介 内部看门狗驱动[sws_Wdg_00161]要访问内部看门狗硬件,对应的 Wdg 模块实例应该直接访问看门狗服务的硬件。提示:内部看门狗驱动程序是微控制器抽象层的一部分,它允许直接的硬件访问。注意:内部看门狗的日常服…

第21章总结 网络通信

21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java已经将网络程序所需要的元素封装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络知识&#xff0c;也可以编写出高质量的网络通信程序…

【评测脚本】机器信息评测(初版)

背景 QA的实际工作过程中,除了业务相关的测试外,也会涉及到一些评测相关的工作,甚至还要做多版本、多维度的评估分析。尤其是现在火热的大模型,相关的评测内容更是核心中的核心。当然本文的内容只是做一些初级的机器相关的评测信息,更多更广的评测需要更多时间的积累和总…

JVM的内存结构详解「重点篇」

一、JVM虚拟机数据区 虚拟机栈 1、 线程私有 2、 每个方法被执行的时候都会创建一个栈帧用于存储局部变量表&#xff0c;操作栈&#xff0c;动态链接&#xff0c;方法出口等信息。每一个方法被调用的过程就对应一个栈帧在虚拟机栈中从入栈到出栈的过程。 3、栈帧: 是用来存储…

安装mysql数据库

1.1下载APT存储库&#xff08;下载链接&#xff09; 1.2安装APT存储库&#xff08;注意好正确的路径&#xff09; 将下载的文件传输到linux服务器对应目录下后执行以下命令&#xff1a; sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb 选择mysql5.7 然后点击ok 然后执行 s…

应用架构——集群、分布式、微服务的概念及异同

一、什么是集群&#xff1f; 集群是指将多台服务器集中在一起&#xff0c; 每台服务器都实现相同的业务&#xff0c;做相同的事&#xff1b;但是每台服务器并不是缺 一不可&#xff0c;存在的主要作用是缓解并发能力和单点故障转移问题。 集群主要具有以下特征&#xff1a; …

JAVA使用POI向doc加入图片

JAVA使用POI向doc加入图片 前言 刚来一个需求需要导出一个word文档&#xff0c;文档内是系统某个界面的各种数据图表&#xff0c;以图片的方式插入后导出。一番查阅资料于是乎着手开始编写简化demo,有关参考poi的文档查阅 Apache POI Word(docx) 入门示例教程 网上大多数是XXX…

el-table-column 添加 class类

正常添加class 发现没有效果 class"customClass" 发现并没有添加上去 看了一下官网发现 class-name 可以实现 第一步: :class-name"customClass" 第二步 : customClass: custom-column-class, 然后就发现可以了

Qt简介、工程文件分离、创建Qt工程、Qt的帮助文档

QT 简介 core&#xff1a;核心模块&#xff0c;非图形的接口类&#xff0c;为其它模块提供支持 gui&#xff1a;图形用户接口&#xff0c;qt5之前 widgets&#xff1a;图形界面相关的类模块 qt5之后的 database&#xff1a;数据库模块 network&#xff1a;网络模块 QT 特性 开…

IntelliJ IDEA使用Eval Reset

文章目录 IntelliJ IDEA使用Eval Reset说明具体操作 IntelliJ IDEA使用Eval Reset 说明 操作系统&#xff1a;windows10 版本&#xff1a;2020.1 IntelliJ IDEA安装可查看&#xff1a;安装教程 具体操作 添加&#xff0c;输入网址 https://plugins.zhile.io然后搜索“IDE E…

IntelliJ IDEA安装

文章目录 IntelliJ IDEA安装说明下载执行安装 IntelliJ IDEA安装 说明 操作系统&#xff1a;windows10 版本&#xff1a;2020.1 下载 官网地址 执行安装

奇点云2023数智科技大会来了,“双12”直播见!

企业数字化进程深入的同时&#xff0c;也在越来越多的新问题中“越陷越深”&#xff1a; 数据暴涨&#xff0c;作业量和分析维度不同以往&#xff0c;即便加了机器&#xff0c;仍然一查就崩&#xff1b; 终于搞定新增渠道数据的OneID融合&#xff0c;又出现几个渠道要变更&…

自动定量包装机市场研究: 2023年行业发展潜力分析

中国包装机械业取得了快速发展&#xff0c;但也出现了一些低水平重复建设现象。据有关资料显示&#xff0c;与工业发达国家相比&#xff0c;中国食品和包装机械产品品种缺乏25%-30%&#xff0c;技术水平落后15-25年。我国包装专用设备制造行业规模以上企业有319家&#xff0c;主…

Vue3实现一个拾色器功能

​ <template><div class"color"><button v-if"hasEyeDrop" click"nativePick">点击取色</button><input v-else type"color" input"nativePick" v-model"selectedColor" /><p&…

Markdown从入门到精通

Markdown从入门到精通 文章目录 Markdown从入门到精通前言一、Markdown是什么二、Markdown优点三、Markdown的基本语法3.1 标题3.2 字体3.3 换行3.4 引用3.5 链接3.6 图片3.7 列表3.8 分割线3.9 删除线3.10 下划线3.11 代码块3.12 表格3.13 脚注3.14 特殊符号 四、Markdown的高…

2024黑龙江省职业院校技能大赛信息安全管理与评估样题第二三阶段

2024黑龙江省职业院校技能大赛暨国赛选拔赛 "信息安全管理与评估"样题 *第二阶段竞赛项目试题* 本文件为信息安全管理与评估项目竞赛-第二阶段试题&#xff0c;第二阶段内容包括&#xff1a;网络安全事件响应、数字取证调查和应用程序安全。 极安云科专注技能竞赛…

openharmony 开发环境搭建和系统应用编译傻瓜教程

一、DevEco Studio 安装 当前下载版本有两个&#xff0c;由于低版本配置会有各种问题&#xff0c;我选择高版本安装 低版本下载链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 高版本下载链接 OpenAtom OpenHarmony 解压后安装 双击安装 安装配置 二、创建测…

IntelliJ IDEA的下载安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;它具有许多优势&#xff0c;适用于各种开发过程。本文将介绍 IDEA 的主要优势&#xff0c;并提供详细的安装配置步骤。 介绍 IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;之所以被广泛使用&#xff0c;…