远程代码执行渗透与攻防(一)

news2024/11/18 4:49:51

目录

前言

远程代码执行:Remote Code Execute

远程命令执行:Remote Command Execute

为什么要远程执行代码?

漏洞危害 

近几年影响比较大的RCE漏洞

PHP RCE涉及函数 

代码code注入:

命令command注入 :

靶场案例 

 CTF案列

RCE防御 


前言

远程代码执行漏洞(RCE,也叫任意代码执行),是由用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致执行了服务器的命令。 RCE漏洞的造成方式有很多种,一旦可以执行任意命令,就可以执行任意操作,属于高危漏洞。

远程代码执行:Remote Code Execute

应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval(),eval可以将字符串当做函数执行)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。一般很难通过黑盒查找漏洞,大部分都是根据源代码判断代码执行漏洞。

远程命令执行:Remote Command Execute

命令执行直接调用操作系统命令。其原理是,在操作系统中,“&、|、||”都可以作为命令连接符使用,用户通过浏览器提交命令执行命令,由于服务端没有针对执行函数做过滤,将用户的输入作为系统的命令的参数拼接到命令行中,在没有过滤用户输入的情况下,造成命令执行漏洞。

为什么要远程执行代码?

漏洞危害 

 近几年影响比较大的RCE漏洞

PHP RCE涉及函数 

代码code注入

命令command注入 :

靶场案例 

在靶场案列演示之前,我们先来学习一些基础的知识:

Windows命令拼接符号:

Linux命令拼接符号:

接下来我们拿pikaqiu靶场来做演示:

我们再来看一下它的源代码,很简单就是调用了shell_exec执行用户输入的命令:

 我们输入一个127.0.0.1去ping一下:

得到了结果,并执行了响应。

 但如果我们在这条命令后面跟上了恶意的命令呢?由于服务端没有对恶意函数进行限制,会不会导致恶意代码执行呢?

 如图显示,ipconfig命令执行了。原本只有ping功能的服务,却应为没有对用户输入进行验证,导致了恶意命令的执行。

我们再来看一下第二种eval:

我们之前说过,代码执行漏洞就是因为后端使用了eval()这样的函数,导致将用户输入的字符串解析成了代码执行,我们这里输入 phpinfo();看看会发生什么?

 可以看到他将我们输入的字符串当作函数来执行了。

 CTF案列

我们打开CTFhub平台:

 

我们从最简单的eval执行开始:

我们启动靶场,打开环境:

看到出现如图下所示的场景:

我们这里可以分析一下他的代码,可以看到这里面有个eval函数,传参是cmd,那我们可以直接通过Webshell工具去连接他:

我们点击添加,然后双击url打开:

 然后显示如下:

 我们可以看到这里有个index.php文件,我们通过终端去看看:

 可以看到在根目录路径下有个flag_22263文件,我们打开它:

 然后看到了flag,点击提交他:

我们再来看下第二道题目:

出现如图下所示的界面:

我们来分析一下这串代码,首先判断用户输入存不存在,然后通过Get请求接受用户输入的ip,然后执行ping -c 用户输入的ip并赋值给$cmd参数,最后通过exec函数去执行。

我们这里输入ping 127.0.0.1来查看他的功能是否正常:

 因为这里是一个linux的操作系统,所以我们在127.0.0.1加上;号在跟上ls命令:

 然后我们发现了以下的文件:

 我们继续构造语句查看这个文件的内容:

发现什么都没有。

 我们继续在我们的语句后面添加上命令,进行一个base64的转码:

然后果然出现了内容,接下啦我们把这段base64的编码拿去解密:

得到:

然后提交flag:

 接下来我们来看第三题:

 老样子,我们打开靶场:

看到如下代码:

和上一管基本相似,但多了一个过滤cat命令。

这一步和上一关一样。

 回显:

 但这里因为cat命令被禁用了,我们只能另寻他路了。

其实这里考的就是我们查看文件的方式,Linux系统下查看文件的命令太多了,我就不一一列举了,这里直接 less跟上文件名:

 

 

得到以下数据:

老规矩,拿去解密:

 然后得到了这么一串数据:

提交:

 我们接下来看第四关:

它这里过滤了空格。

老方法 :

这一题主要考的就是我们Liunx里有哪些可以替换空格的操作符号:

得到这么一串数据:

解密:

第五关:

 

 

出现了跟之前不同的东西,这应该是个文件夹,而不是跟之前一样是一个文件。

我们通过ls命令去列出这个文件夹的内容:

 

 发现里面有一个flag。

这一题考的就是过滤目录分割符:

这里我们先 cd 到目录下,然后跟上;号,接着cat命令 去查看这个文件:

 

然后我们直接右键查看网页源代码:

提交flag。

第六关:

像上面提到的这些运算符全部都被过滤了。但唯独没有过滤;号。

 

 cat命令查看文件:

右键查看网页源码:

第七关:

我们发现好多东西都被过滤了。

这一题由于;符号被过滤了,所以我们在url一栏中后面添加上%0a来进行绕过:

我们本来应该构造如下语句的:127.0.0.1%0acd flag_is_here%0als 进入这个目录,查看文件,但由于空格和flag都被过滤了,我们之前提到过空格可以用${IFS}来替代,flag这里我们可以运用通配符来替代。

然后应该构造如下语句的:127.0.0.1%0acd${IFS}f***_is_here%0alsmore${IFS}f***_20021218031292.php来进行绕过:

右键查看源码:

RCE防御 

1、尽量不要使用命令执行的函数
2、如果必须使用,需要做白名单处理
3、用正则表达式对用户输入的内容进行处理
4、使用WAF

 

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

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

相关文章

Word控件Spire.Doc 【评论】教程(4):C#、VB.NET如何在Word的评论中插入图片

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

认真学习MySQL中锁机制(二)

接上文认真学习MySQL中锁机制(一)我们继续学习MySQL中的锁机制。 【5】按加锁的方式划分:显示锁、隐式锁 ① 隐式锁 一个事务在执行insert操作时,如果即将插入的间隙已经被其他事务加了gap锁,那么本次insert操作会阻…

分类算法KNN的python实现

作者:刘凡 KNN算法介绍 KNN算法是有监督学习中的分类算法,它是一种非参的,惰性的算法模型。非参的意思并不是说这个算法不需要参数,而是意味着这个模型不会对数据做出任何的假设,与之相对的是线性回归(我…

隐语任务调度

隐语目前暂定支持的设备列表: 一 PYU 数据所有者是SecretFlow中的PYU设备,明文并成为PYU Objects一个PYU object(明文)可以被转化为秘密分享,被叫做SPU Object。Python函数可以被发送至SPU设备执行,背后是…

人工智能:图像数字化相关的知识介绍

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

只从 2022 年算起,谷歌就向社会输送了至少 26 位高端 AI 人才。

2022 年,人工智能在 AIGC、AI for science 等领域持续发展,一些工作也在知识型模型方面做出了探索。除了这些研究成果,我们还会发现这一年人工智能从业者的工作情况也有比较大的变化。 例如,Meta 等大型科技公司进行了大规模的裁…

【 shell 编程 】第1篇 变量

变量 文章目录变量一、前言二、变量1.变量的类型2.变量的运算一、前言 1.什么是 shell 简介: SHELL是UNIX系统的用户与操作系统之间的一种接口。它既是UNIX系统的命令解释程序,又是一种高级的命令程序设计语言。 作为命令解释程序,SHELL接收…

Windows/Mac/Ubuntu环境下安装Dokcer

前提概要: 注意:安装虚拟环境的步骤我放到另外一个文章里面啦,有需要的可以看看哦 Docker介绍:1、Docker 并⾮是⼀个通⽤的容器⼯具,它依赖于已存在并运⾏的 Linux 内核环境。2、Docker 实质上是在已经运⾏的 Linux 下…

智慧养老系统(社区+居家+机构养老)

智慧养老是一个新的养老模式,信息化医疗服务,不仅能够提高养老产业的质量,提高养老成本降低,而且能够提高老人的身体健康,提高养老人的老年生活质量。 智慧养老系统解决方案提供完整的机构养老系统、社区养老系统&…

在项目中使用——newFixedThreadPool线程池

newFixedThreadPool线程池前言newFixedThreadPool的介绍使用newFixedThreadPool的步骤实例化一个固定线程大小线程池创建一个用于启动新线程的类使用submit提交线程最后关闭关闭线程池CountDownLatch配合线程池使用构造CountDownLatch计数器减一使调用该方法的线程处于等待状态…

推荐 12 月 yyds 的开源项目

本期推荐开源项目目录:1. 面向 API 的低代码平台2. 京东抢购自动下单助手3. 开发人员使用的低代码平台4. 好用又强大的开源建站工具5. OCR 图片转文字识别软件6. 互联网仍有记忆01面向 API 的低代码平台APITable 一个面向 API 的低代码平台,用于构建协作…

推荐系统从入门到入门(2)——简单推荐系统构建(无框架、Tensorflow)

本系列博客总结了不同框架、不同算法、不同界面的推荐系统,完整阅读需要大量时间(又臭又长),建议根据目录选择需要的内容查看,欢迎讨论与指出问题。 系列文章梗概 本次大作业主要是以电影推荐系统为例,介绍…

GIC V3 V4 逻辑组件

GIC V3 & V4 逻辑组件1 GIC V3逻辑组件2 GIC 各组件的介绍2.1 Distributor2.2 Interrupt translation service, ITS2.3 Redistributor2.4 CPU interface1 GIC V3逻辑组件 The GICv3 architecture consists of a set of logical components: • A Distributor.• A Redist…

C++ 实现Manacher算法

前言 Manacher算法是一种回文串查找算法,专门用于处理查找字符串中的回文子串操作。虽然这个算法本身只是用于查找回文子串,但是它的查找思想还是非常值得学习的。由于Manacher算法是基于暴力解法优化而来的,所以在阅读正式的算法之前&#…

arthes—线上debug好帮手

arthes简介 以下是arthes官网原文: 通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂…

粒子滤波原理和MATLAB代码实现

理论基础1: (a) Prediction Use the transition equation to propagate the particles: (b) Update Use the measurement equation to obtain measurements of the propagated particles and their standard deviations: (in the case of our program, ym is obt…

如何在 Manjaro Linux 上安装 ONLYOFFICE 桌面编辑器

ONLYOFFICE 桌面编辑器是一款免费开源办公套件,其中包括适用于文本文档、电子表格与演示文稿的离线编辑器。同时,您还可将应用程序连接至云端(ONLYOFFICE、Nextcloud 等)以便在线开展文档协作。该应用的源代码已根据 AGPL v.3.0 许…

业务中台10讲2.0合辑(推荐收藏)

目录V3.0迭代内容: 增加最近更新的中台系列文章至本目录;根据最新热点修订并调整部分未更新内容方向;为各文章标注《中台产品经理宝典》书中原文出处;本目录使用方法: 本目录推文为中台内容系列中的业务中台子类新原…

华润微功放CS3850EO,2×40W D 类音频功率放大电路,替换:智浦芯CS8673,TI的TAS5780、TAS5754,国产功放

1、概述 CS3850EO 是一款典型输出功率为 40W 立体声的 D 类音频功率放大电路,适用于拉杆音箱、高级桌面音响等场合。 特点 ● 工作电压范围:8V~26V ● 典型输出功率:30W2 20V、8Ω、THD10% 40W2 18V、4Ω、THD10% 50W2 26.5V、8Ω、…

你以为Shell只是命令行?读懂这篇文,给你的工作赋能

可以使用adb tcpip 端口在Android设备上启动一个指定的端口,然后使用adb connect Android设备ip:端口远程连接Android设备。 uiautomator 是一个 java 库,包含用于创建自定义功能UI测试的API,以及用于自动执行和运行测试的执行引擎。使用uiau…