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.hqwc.cn/news/258622.html

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

相关文章

《opencv实用探索·十五》inRange二值化图像

opencv接口如下&#xff1a; void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);函数实现二值化功能&#xff0c;主要是将在两个阈值内的像素值设置为白色&#xff08;255&#xff09;&#xff0c;而不在阈值区间内的像素值设置为黑色&am…

C语言入门课程之课后习题之折半查找法

目录 1解题思路&#xff1a; 2代码所示&#xff1a; 3运行代码&#xff1a; 4习题不难&#xff0c;多刷题&#xff0c;练思路&#xff0c;最重要的不是学会了一道题&#xff0c;而是掌握其编程思想&#xff1b; 1解题思路&#xff1a; 折半查找法&#xff08;half-interval…

delphi/python 实现小红书xhs用户作品列表和图片/视频无水印解析

技术学习&#xff0c;请勿用与非法用途&#xff01;&#xff01;&#xff01; 成品图用户作品列表接口 /api/sns/web/v1/user_posted?num30&cursor&user_id642bf0850000000011022c4e&image_scenes http Get方式&#xff0c;请求头需要带上x-s x-t签名验证笔记明细…

前端:HTML+CSS+JavaScript实现轮播图2

前端&#xff1a;HTMLCSSJavaScript实现轮播图2 1. 和之前版本的区别2. 实现原理3. 针对上述的改进3. 参考代码 1. 和之前版本的区别 之前发布的那篇关于轮播图的文章在这&#xff1a;前端&#xff1a;HTMLCSSJavaScript实现轮播图&#xff0c;只能说存在问题吧&#xff01;比…

三防平板|手持终端PDA|8寸/10寸工业三防平板电脑主板方案定制

近年来&#xff0c;随着科技的快速发展&#xff0c;三防平板成为了各行各业中不可或缺的工具。三防平板采用IP67级别的防护设计&#xff0c;通过了多项测试标准&#xff0c;如国标和美标&#xff0c;具备防水、防摔、防尘、防撞、防震、防跌落以及防盐雾等多重防护功能。因此&a…

C++特性之多态

C作为面向对象的语言&#xff0c;三大特性之一多态在平时的编程中使用频率特别高。 本篇文章就来详细讲解一下多态。 什么是多态 不同的对象做相同的一件事会出现不同的状态&#xff0c;这就是多态。 举个列子&#xff1a;比如普通人买车票要全价购买&#xff0c;而军人只用半…

每天学习一点shell系列(2)—函数的参数传递

参考博客&#xff1a;shell 脚本-10函数_eno_zeng的博客-CSDN博客 $n 或 ${n} &#xff1a;函数内使用 $n 或 ${n} 访问对应的参数, 数字代表参数的前后顺序, $1 代表第一个参数, $2 代表第三个参数, $n 代表第n个参数&#xff1b;当n>10时&#xff0c;需要使用${n}来获取参…

苹果Vision Pro即将量产

据界面新闻消息&#xff0c;苹果公司将在今年12月正式量产第一代MR&#xff08;混合现实&#xff09;产品Vision Pro。苹果公司对Vision Pro寄予了厚望&#xff0c;预计首批备货40万台左右&#xff0c;2024年的销量目标是100万台&#xff0c;第三年达到1000万台。 苹果的供应…

Linux中的文件系统

本章主要介绍文件系统的管理 了解什么是文件系统对分区进行格式化的操作挂载分区查找文件 在Windows系统中&#xff0c;买了一块新的硬盘加到电脑后&#xff0c;需要对分区进行格式化才能使用&#xff0c;Linux系统中也是一样&#xff0c;首先我们需要了解什么是文件系统 1.…

python数据分析总结(pandas)

目录 前言 df导入数据 df基本增删改查 数据清洗 ​编辑 索引操作 数据统计 行列操作 ​编辑 df->types 数据格式化 ​编辑 日期数据处理 前言 此篇文章为个人python数据分析学习总结&#xff0c;总结内容大都为表格和结构图方式&#xff0c;仅供参考。 df导入数…

初识人工智能,一文读懂人工智能概论(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

【分享】我想上手机器学习

目录 前言 一、理解机器学习 1.1 机器学习的目的 1.2 机器学习的模型 1.3 机器学习的数据 二、学习机器学习要学什么 2.1 学习机器学习的核心内容 2.2 怎么选择模型 2.3 怎么获取训练数据 2.4 怎么训练模型 三、机器学习的门槛 3.1 机器学习的第一道门槛 3.2 机器…