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

news2024/11/18 13:30:56

目录

    • 漏洞关键字:
    • 演示案例:
      • 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.coloradmin.cn/o/1294906.html

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

相关文章

守护安全,六氟化硫气体泄漏报警装置校准服务

在电力工业中&#xff0c;六氟化硫&#xff08;SF6&#xff09;气体是一种重要的介质&#xff0c;它用作封闭式中、高压开关的灭弧和绝缘气体。六氟化硫气体的卓越性能实现了装置经济化、低维护化的操作。与普通装置相比&#xff0c;可以节省最多90&#xff05;的空间。 六氟化…

Themis: Fast, Strong Order-Fairness in Byzantine Consensus

目录 笔记后续的研究方向摘要引言秩序井然 Themis: Fast, Strong Order-Fairness in Byzantine Consensus CCS 2023 笔记 后续的研究方向 摘要 我们介绍了Themis&#xff0c;这是一种将交易的公平排序引入&#xff08;许可的&#xff09;拜占庭共识协议的方案&#xff0c;最…

ubuntu系统下搭建本地物联网mqtt服务器的步骤

那么假如我们需要做一些终端设备&#xff0c;例如温湿度传感器、光照等物联网采集设备要接入呢&#xff1f;怎么样才能将数据报送到服务器呢&#xff1f; 以下内容基于我们ubuntu系统下的emqx成功启动的基础上。我们可以用浏览器键入控制板的地址&#xff0c;如果启动成功&…

python pyaudio显示音频波形图

python pyaudio显示音频波形图 代码如下&#xff1a; import numpy as np import matplotlib.pylab as plb import wave# 读取 wav wf wave.open("./output.wav", "rb")# 获取音频相关参数&#xff1a;声道数、量化位数、采样频率、采样帧数 nchannels,…

案例二:SQL Server数据库的备份和还原

1、备份类型。 在 SQL Server 中提供了三种常用的备份类型&#xff0c;分别是完整备份&#xff0e;差异备份和事务日志备份。 完整备份&#xff1a; 完整备份包括对整个数据库、部分事务日志、数据库结构和文件结构的备份。完整备份代表的是备份完成时刻的数据库。 完整备份是…

「Verilog学习笔记」格雷码计数器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule gray_counter(input clk,input rst_n,output reg [3:0] gray_out );reg [3:0] binary_cnt ; reg flag ; always (posedge clk or negedge r…

【高效开发工具系列】Mac删除启动台图标

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

IP地址如何用于流量管理?

随着互联网的普及和网络流量的不断增加&#xff0c;流量管理成为了网络运营中至关重要的一环。而IP地址作为互联网中的重要标识符&#xff0c;也可以被广泛应用于流量管理中。 IP地址是互联网协议&#xff08;IP&#xff09;中用于标识和定位网络设备的32位二进制地址。通过IP地…

Redis Reactor事件驱动模型源码

前置学习&#xff1a;Redis server启动源码-CSDN博客 Redis采用单线程Reactor模型 三个关键角色&#xff0c;即 reactor、acceptor、handler 三类处理事件&#xff0c;即连接事件、写事件、读事件。 建立连接&#xff08;Acceptor&#xff09;、监听accept、read、write事件…

使用高防IP防护有哪些优势

高防IP是针对互联网服务器在遭受大流量的DDoS攻击后导致服务不可用的情况下&#xff0c;推出的付费增值服务&#xff0c;用户可以通过配置高防IP&#xff0c;将攻击流量引流到高防IP&#xff0c;确保源站的稳定可靠。高防IP相当于搭建完转发的服务器。 高防IP有两种接入方式&a…

《Easy3d+Qt+VTK》学习

《Easy3dQtVTK》学习-1、编译与配置 一、编译二、配置注 一、编译 1、 资源下载&#xff1a;easy3d giuhub 2、解压缩 3、用qt打开CMakeLists.txt即可 4、点击项目&#xff0c;选择debug或者release&#xff0c;图中3处可自行选择&#xff0c;因为我的qt版本是6&#xff0c…

unity 2d 入门 飞翔小鸟 小鸟跳跃 碰撞停止挥动翅膀动画(十)

1、切换到动画器 点击make transition和exit关联起来 2、设置参数 勾选掉Has Exit Time 3、脚本给动画器传参 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Fly : MonoBehaviour {//获取小鸟&#xff08;刚体&#xff09;p…

云原生系列1

1、虚拟机集群环境准备 VirtualBox类似vmware的虚拟化软件&#xff0c;去官网https://www.virtualbox.org/下载最新版本免费的&#xff0c;VirtualBox中鼠标右ctrl加home跳出鼠标到wins中。 VirtualBox安装步骤 https://blog.csdn.net/rfc2544/article/details/131338906 cent…

【广州华锐互动】VR煤矿生产事故体验系统为矿工提供一个身临其境的安全实训环境

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐走进我们的生活&#xff0c;为我们带来了前所未有的沉浸式体验。在许多领域&#xff0c;如教育、医疗、娱乐等&#xff0c;VR技术都发挥着重要作用。然而&#xff0c;当这项技术被用于模拟煤矿坍…

angular状态管理方案(ngrx)

完全基于redux的ngrx方案&#xff0c;我们看看在angular中如何实现。通过一个简单的计数器例子梳理下整个流程 一 安装 &#xff1a;npm i ngrx/store 这里特别要注意一点&#xff1a;安装 ngrx/store的时候会出现和angular版本不一致的问题 所以检查一下angular/core的版本…

东北地理所最新Nature通讯文章

作为城市的重要组织部分&#xff0c;城市湿地在水源供给、增湿降温、雨洪调蓄等多个方面发挥着极其重要的作用&#xff0c;2024年国际湿地日主题定为“湿地与人类福祉”。在此背景下&#xff0c;中国科学院东北地理与农业生态研究所毛德华研究员等在12月5日出版的Nature发表题为…

CentOS系统装机流程

目录 1、进入装机页面 2、配置分区 3、设置语言 4、软件安装&#xff08;我这里选的是最小化安装&#xff0c;一般情况下应该选Server&#xff09; 5、时区配置 ​编辑 6、Root登录密码 7、开始装机&#xff0c;重启后装机完成 1、进入装机页面 2、配置分区 3、设置语言…

Java编程中通用的正则表达式(一)

正则表达式&#xff08;Regular Expression&#xff0c;简称RegEx&#xff09;&#xff0c;又称常规表示法、正则表示、正规表示式、规则表达式、常式、表达式等&#xff0c;是计算机科学中的一个概念。正则表达式是用于描述某种特定模式的字符序列&#xff0c;特别是用来匹配、…

【技巧】RAR压缩文件如何解压?

RAR是一种文件压缩与归档的专利文件格式&#xff0c;很多时候在工作中都会使用到。既然是压缩格式&#xff0c;我们就需要解压才能得到里面的文件&#xff0c;对于电脑小白来说&#xff0c;可能不知道如何解压RAR文件&#xff0c;下面小编来分享一下。 解压压缩文件&#xff0…

57、postgresql 查询流程

在这里&#xff0c;我们简要概述了查询必须经过的阶段才能获得结果。 必须建立从应用程序到 PostgreSQL 服务器的连接。应用程序将查询传输到服务器&#xff0c;并等待接收服务器发回的结果。 解析器阶段检查应用程序传输的查询语法是否正确&#xff0c;并创建查询树。 重写系…