【web安全】——命令执行漏洞(RCE)详解

2023-11-04

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:生活有很多味道 最甜和最苦都是你

我感觉自己网安的学习遇到了问题,会花很多时间去挖洞,但是只能挖到注入和XSS,还都是比较简单的那种(cnvd都不收的),但是我明明还学了很多其他的漏洞,难道是我没遇到吗?我想也许是经验的欠缺和对其他漏洞理解的不全面吧

很多人都说这个阶段需要沉定来积累经验靶场,漏洞复现和总结经验才是当前的中心任务,所以我也想好好捋一下其他类型的漏洞,同时也分享出来,希望也能帮到大家,今天的内容是命令执行漏洞

目录

一:简述命令执行漏洞

1.形成原因

2.漏洞分类

1、代码层过滤不严     

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

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

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

三:可能存在命令执行漏洞的函数(PHP)

1.利用系统函数实现命令执行的函数

 2.直接执行系统命令的代码函数

四:命令拼接符号

1.windows的系统命令拼接符 

2.linux的系统命令拼接符 

五:常用绕过防护的方法

1.通配符 

2.连接符

3.未初始化变量 

六:常见位置 

七:修复方案


一:简述命令执行漏洞

1.形成原因

应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数,并且开发人员对这个参数没有严格的过滤时就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

2.漏洞分类

1、代码层过滤不严     

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

system("/bin/program --arg $arg");

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

      比如:bash破壳漏洞(CVE-2014-6271)

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

    如wordPress中用来处理图片的imageMagick组件     

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

    ThinkPHP5.x的命令执行

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

 根据上面形成原因中我加粗的部分,想来大家应该也明白了利用命令执行漏洞的前提条件,就是三点

1.开发人员调用了能够执行系统命令的函数

2.这个函数的参数可控(即用户能够控制)

3.开发人员没有对该函数的参数进行过滤或过滤不严

 满足上面的条件,才能称之为漏洞执行命令,当然“过滤不严”的程度就需要根据你自己的绕过能力来自我评判了,绕过方式待会我们也会讲到一些

而这些        

三:可能存在命令执行漏洞的函数(PHP)

1.利用系统函数实现命令执行的函数

eval()、assert()、preg_replace()、call_user_func()

如果页面中存在以上这些函数并且对于用户的输入没有做严格的过滤,那么就可能造成远程命令执行漏洞,除此以外还有其他函数

ob_start()、unserialize()、creat_function() 、usort()、uasort()、uksort()、 array_filter()、 array_reduce()、 array_map()

 2.直接执行系统命令的代码函数

system(),exec(),shell_exec(),passthru(), pcntl_exec(), popen(), proc_open(),反引号

四:命令拼接符号

 如果问命令执行漏洞中一定要会的东西是什么,那一定是命令拼接符,因为恶意命令通常是拼接在正常命令后面,会用命令拼接符才是你利用命令执行漏洞的基础,这里也为大家准备了windowslinux常用的拼接符

1.windows的系统命令拼接符 

拼接符 示例 拼接符的详解
& A&B 无论A是false还是true,B都执行,即互不影响
&& A&&B 具有短路效果,A是false,B就不执行,有短路效果
| A|B 表示A命令语句的输出,作为B命令语句的输入执行。当A为false的时候将不会执行
|| A||B 表示A命令语句执行失败,然后才执行B命令语句

2.linux的系统命令拼接符 

linux的命令有点复杂,需要给出示例图部分同学才能理解,一共有5个,下面我们一个一个介绍

第一个是“&”:     ‘&’的作用是使命令在后台运行。只要在命令后面跟上一个空格和 ‘&’。你                                可以一口气 在后台运行多个命令。需要停止,就是kill -s  进程号,展示如                              下图

第二个是“;      就是分号,作用就是可以进行多条命令的无关联执行,每一条执行结果                                   互不影响,示例如下

第三个是“&&”:    这个没啥讲的,跟windows的用法和功能都一样,都是左边成功才执行                                   右边,这里就不给例子了

第四个是“||” :      这个也跟windows一样,前面执行失败才执行后面

第五个是“()”:       如果想执行几个命令,则需要用命令分隔符分号隔开每个命令,并使用                                   圆括号()把所有命令组合起来,示例如下:

3.简述

常用的命令拼接符这里都涵盖完了,但是要注意的是,使用时不要局限于单个的,简单的用法,因为很多过滤参数的方式都是识别对应的拼接符,所以要思维变通,很多时候,大量拼接符层层嵌套往往会有出其不意的效果

比如上面这个圆括号的使用例子,意思就是当echo 1 执行成功后会执行后面的命令,把echo 1输出到 11.txt ,然后复制11.txt到根目录。 结合||和&&可以实现复杂的功能。

五:常用绕过防护的方法

上面就讲到了本文会提一些过滤方法,所以这里就讲一讲命令执行漏洞中常用的一些过滤方法,其实本质都是模糊匹配,下面给大家详细讲讲几种方法

1.通配符 

常见的通配符

符号

含义

匹配单个字符如果匹配多个字符,就需要多个?连用

*

*代表任意数量的字符

[ ]

代表一定有一个在括号内的字符(非任意字符)。例如 [abcd] 代表一定有一个字符, 可能是 a, b, c, d 这四个任何一个

使用示例

 一个常用的读取密码命令如下

cat /etc/passwd

使用了通配符之后,他就可能有很多种变化,比如这两种,而这些亲测都是可以使用

cat /?tc/?as?wd
cat /*tc/*as*wd

这里需要注意的也是一样,不要局限自己的思维,几种通配符也是可以搭配使用的

2.连接符

常见连接符

单双引号反斜杠 " " ‘ ’ 如:/'b'i'n'/'c'a't' /'e't'c'/'p'a's's'w'd 

使用示例

3.未初始化变量 

简介

未初始化的变量值都是null,例如a , a,a,b,在linux环境下输出都为null ,所以可以用未初始化变量加在一些命令的末尾,来绕过一些黑名单

使用示例

 cat$a /etc$a/passwd$a

六:常见位置 

 各种cms框架的命令执行漏洞是最多的,着重在这些地方找,除此之外就是插件位置,插件因为各种原因经常也需要执行系统命令,当然其他的地方也有,只是说这两个位置最多

七:修复方案

1、各种框架、插件等位置都有可能出现命令执行,升级到新版本,多打补丁

2、关注行业最新安全动态,一旦爆发命令执行漏洞,迅速修复,避免造成更大影响

3、少用框架/CMS

4、可以过滤一些符号从而减少一些危险

5、安全配置好php相关参数      

        通过Php配置文件里面有个disable_functions = 配置,这个禁止某些php函数, 服务器便是用这个来禁止php的执行命令函数。

        例如: disable_functions=system,passthru,shell_exec,exec,popen 便禁止了用这些函数来执行系统命令

6、升级中间件

7、严格控制传入变量,严禁使用魔法函数

今日份学习结束,网络安全将是我一生奋斗的方向,,谢谢大家的阅读,一起加油哇

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【web安全】——命令执行漏洞(RCE)详解 的相关文章

  • 适用于任何公司的网络安全架构

    1 第一等级 基础级 优势 可防范基本有针对性的攻击 使攻击者难以在网络上推进 将生产环境与企业环境进行基本隔离 劣势 默认的企业网络应被视为潜在受损 普通员工的工作站以及管理员的工作站可能受到潜在威胁 因为它们在生产网络中具有基本和管理员
  • The Planets:Venus

    靶场下载 The Planets Venus VulnHub 信息收集 arp scan l Interface eth0 type EN10MB MAC 00 0c 29 43 7c b1 IPv4 192 168 1 60 Starti
  • 【网络安全】Web缓存欺骗攻击原理及攻防实战

    Web缓存欺骗是一种新的攻击方式 危害范围可扩大至各种技术及框架 本文仅分享Web缓存攻击知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 文章目录 前言 攻击前提及原理 实例一 ChatGPT帐户接管漏洞 实例二 P
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • J2EE常见面试题(一)

    StringBuilder和StringBuffer的区别 String 字符串常量 不可变 使用字符串拼接时是不同的2个空间 StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加 StringBuilder
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 【网络安全】Facebook代码执行实现命令执行、敏感信息泄露

    部分网站开设编码练习 若安全配置不当 则代码执行将升级为操作系统命令注入 导致敏感信息泄露 本文仅分享命令执行相关知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 未经许可 不可转载 文章目录 信息泄露 扩大危害 信息
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • 小白入门黑客之渗透测试(超详细)基本流程(内附工具)

    经常会收到小伙伴们这样的私信 为什么我总是挖不到漏洞呢 渗透到底是什么样的流程呢 所以全网最详细的渗透测试流程来了 渗透测试其实就是通过一些手段来找到网站 APP 网络服务 软件 服务器等网络设备和应用的漏洞 告诉管理员有哪些漏洞 怎么填补
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【方法】如何把Excel“只读方式”变成可直接编辑?

    Excel在 只读方式 下 编辑后是无法直接保存原文件的 那如何可以直接编辑原文件呢 下面来一起看看看吧 如果Excel设置的是无密码的 只读方式 那在打开Excel后 会出现对话框 提示 是否以只读方式打开 如果想直接编辑文件 选择 否
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐

随机推荐

  • 如何在vue项目中引入字体图标

    第一步 进入阿里图标库 选择自己需要的图标 第二步 选择之后不要点击下载 点击加入购物车 第三步 点击右上角的购物车 然后点击添加至项目可以新建项目名称 第四步 然后点击红字复制代码 注 画红框的是引用字体图标时的名字 点击画框的地方 在新
  • Qt设计师的简单使用(ui设计界面的简单使用)

    文章目录 一 界面的基本介绍 二 添加控件 2 1 添加控件 2 2 设置控件属性 三 布局器的使用 3 1 布局器介绍 3 2 简单布局 3 3 复杂布局 3 4 带分裂器的布局 四 拓展 4 1 添加模块窗口 4 2 转到槽的使用 4
  • M3U8视频AES解密播放

    在网站上看到一些有意思的视频想要下载下来的时候 发现没有找不到mp4格式的地址 因为该网站视频播放是HLS HTTP Live Streaming 技术 HLS是Apple公司研发的流媒体传输技术 包括一个m3u8的索引文件 多个ts分片文
  • MySql锁机制(全网最全、最详细、最清晰)

    1 MySql锁机制 锁机制的作用 解决因为资源共享 而造成的并发问题 没有锁机制时 例如一号用户和二号用户都要去买同一件商品 假如这件商品是一件衣服 一号用户手速稍微快了一些 于是就先买到了这件衣服 但是因为没有 锁机制 于是就造成了二号
  • 【笔试强训选择题】Day28.习题(错题)解析

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 笔试强训选择题 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 Day28习题 错题 解析 总结 前言 一 Day19习题 错题 解析 1 解析
  • ES高可用及集群管理

    ES高可用及集群管理 Elasticsearch 是一个分布式 高扩展 高实时 RESTful 风格的搜索与数据分析引擎 服务可用性 允许有节点停止服务 数据可用性 部分节点丢失 不会丢失数据 水平扩展 集群容错 一 分片 1 什么是分片及
  • Unity Blend Tree动画的混合,认识Blend Tree

    我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree 如下 那么我们看下新创建的Blend Tree和State有什么区别 唯一的区别就是Montion指向的类型变成了Blend Tr
  • 启动测试(建立索引库,映射,用分页结果集的方法把当前的页面的商品数据拿到后,再用do,while方法把当前商品页面转换给goods列表,再把结果导入索引库)

    我们要去实现对上一次内容的测试 上一次内容大概就是讲了怎么样去完成Goods查询页面的编写 下面的测试当中需要把上次做完的东西导入索引库当中对索引库进行增删改查 然而就会用到下面的方法 一个是Template方法 导入索引库 一个是Repo
  • python调用摄像头

    import cv2 模块称作cv2 python需要用到opencv python模块 可在命令行模式输入 pip install opencv python i https pypi douban com simple capture
  • AI建模

    三维重建是将客观世界中的物体在虚拟空间表达出来 在大众视野中 物品三维重建最直观的应用当属虚拟仿真和VR AR导航 其实在学科专业领域 三维重建已经更早地应用在高精地图 测绘系统 城市规划等领域 科技发展的终极方向应当是普适性 结合现代信息
  • Git的下载及使用

    一 Git的下载 1 下载Git 打开Git官网进行下载Git git scm com 直接点击Download for Windows进入Git版本页面 在此页面根据自己电脑的操作系统选择相应的Git版本 2 安装程序 下载完成之后双击g
  • 炒冷饭,springboot自定义logo详解

    初学springboot的朋友 是不是经常能看到项目启动时日志打印的springboot图标logo 有没有人想让他长成自己的样子 现在我就告诉你 如果不想显示logo 你可以在配置文件中增加如下配置 spring main banner
  • 64位操作系统不能安装64位虚拟机的解决办法

    很多人都遇到过这样的情况把 就是自己的电脑CPU明明是64的 为什么安装64的虚拟机却不能安装 安装时出现如下错误 但是在真实机上安装却没有问题 这是为什么呢 这是因为你电脑的硬件虚拟化没有开启 据说host系统是64位的 guest系统才
  • 1.错误处理org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core。是什么原因造成

    解决方法 tomcat 8 5 启用项目时提示 无法在web xml或使用此应用程序部署的jar文件中解析绝对uri http java sun com jsp jstl core 项目需要扫描Tld文件 修改一下tomcat 配置conf
  • retrofit应用详解与源码解析--奇技淫巧

    本文出自门心叼龙的博客 属于原创类容 未经允许 不得转载 本专栏的同步视频教程已经发布到CSDN学院 https edu csdn net course detail 30408 文章目录 请求超时设置 日志拦截器的设置 网络的缓存设置 自
  • linux shell中\w \s \d \b ^ $等常用匹配用法

    正则表达式 w s d b 用法 匹配除换行符以外的任意字符 w 匹配字母或数字或下划线 s 匹配任意的空白符 d 匹配数字 等价于 0 9 D 匹配非数字字符 b 匹配单词的开始或结束 匹配字符串的开始 匹配字符串的结束 其中 A Z 表
  • running beyond physical memory limits. Current usage: 2.0 GB of 2 GB physical memory used; 2.6 GB of

    昨天使用hadoop跑五一的数据 发现报错 Container pid 47660 containerID container 1453101066555 4130018 01 000067 is running beyond physic
  • starUML教程-用例图/类图

    用例图 也称为用户模型图 是从软件需求分析到最终实现的第一步 它是从客户的角度来描述系统功能 它包含3个基本组件 1 参与者 与系统打交道的人或使用该系统的人 2 用例 表示该系统的某项完整功能 3 关系 定义用例之间的关系 泛化关系 扩展
  • 蓝桥杯每日一题(12):猜年龄(小明)(python)

    Topic 来道简单的 小明带两个妹妹参加元宵灯会 别人问她们多大了 她们调皮地说 我们俩的年龄之积是年龄之和的6倍 小明又补充说 她们可不是双胞胎 年龄差肯定也不超过8岁啊 请你写出 小明的较小的妹妹的年龄 Solution 填空题以快为
  • 【web安全】——命令执行漏洞(RCE)详解

    作者名 Demo不是emo 主页面链接 主页传送门创作初心 舞台再大 你不上台 永远是观众 没人会关心你努不努力 摔的痛不痛 他们只会看你最后站在什么位置 然后羡慕或鄙夷座右铭 不要让时代的悲哀成为你的悲哀专研方向 网络安全 数据结构 每日