【web安全】——命令执行漏洞(RCE)详解
作者名: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(),反引号
四:命令拼接符号
如果问命令执行漏洞中一定要会的东西是什么,那一定是命令拼接符,因为恶意命令通常是拼接在正常命令后面,会用命令拼接符才是你利用命令执行漏洞的基础,这里也为大家准备了windows和linux常用的拼接符
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、严格控制传入变量,严禁使用魔法函数
今日份学习结束,网络安全将是我一生奋斗的方向,,谢谢大家的阅读,一起加油哇
【web安全】——命令执行漏洞(RCE)详解相关推荐
- web安全-命令执行漏洞
一.PHP常见的命令执行函数 1.system()函数 system()函数可以用来执行一个外部的应用程序,返回执行的结果的最后一行,且将执行结果回显到标准输出中 函数原型: system(strin ...
- struts2 框架 远程执行漏洞 解决方案详解
Struts2/XWork < 2.2.0远程执行任意代码漏洞 该漏洞是利用xwork(struts2的核心部件)可以动态构建执行方法的原理(xwork.MethodAccessor.denyM ...
- DVWA——命令执行漏洞学习
前言:命令执行和代码执行也是web安全中常见的一种漏洞,这次就先来学习一下命令执行漏洞. Command Execution 一.简介 由于开发人员在编写源代码时,没有对源代码中可执行的特殊函数入口做 ...
- 第30天-WEB 漏洞-RCE 代码及命令执行漏洞全解
在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞.同样 ...
- RCE代码及命令执行漏洞简解
在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用 代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代 码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏 洞 ...
- WEB漏洞—RCE 代码及命令执行漏洞
什么是RCE? 指的是远程命令/代码执行(remote command/code execute) 在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用代码或命令执行函数去处理.比如当应 ...
- 30.WEB漏洞-RCE代码及命令执行漏洞
30:WEB漏洞-RCE代码及命令执行漏洞 参考文章:https://www.cnblogs.com/zhengna/p/15775737.html 本文为博主学习复现笔记 文章目录 30:WEB漏洞 ...
- Web安全 RCE漏洞(命令执行漏洞的 测试和利用).
系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...
- 文件包含与命令执行漏洞详解
代码注入 远程文件包含漏洞 文件包含 了解什么是本地文件包含漏洞 了解本地文件包含漏洞所要用到的函数 掌握本地文件包含漏洞的利用方式 了解 PHP 语言中的封装协议 掌握本地文件包含漏洞的修复方法 什 ...
最新文章
- 一文看懂人脸识别技术发展脉络
- 在巴塞罗那,华为挥别昨日 | MWC 2019
- 树中数据间关系整理~节点关系及用途解析及常用术语整理
- 开发日记-20190629 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 6
- Leetcode 101.对称二叉树 (每日一题 20210709)
- Hadoop 停止hdfs和yarn的命令
- html知识笔记(二)——div、table、a标签
- 【牛客 - 82B】区间的连续段(贪心,建图,倍增)
- Photon服务器引擎入门
- Android使adb作为host运行在arm64平台
- Amlogic Linux系列(三) 视频解码分析
- 【前端_React】React小书
- 使用PHP+MYSQL搭建的一款直播电商源码和大家分享一下
- 华为交换机配置时区_华为交换机设置时间问题
- 测试身体脂肪指数软件,判断肥胖的5个标准,体脂率测试的3个方法
- 索尼a7m4和佳能r6哪个好
- VIL100数据集处理
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法
- 中兴通讯2015笔试应用题
- shell脚本中-eq、-ne、-gt、-ge、-lt、-le
热门文章
- wifi共享精灵2014.04.25.001已经更新,wifi热点中文名走起!
- 用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
- opporeno5支持鸿蒙系统吗,opporeno5pro支持5G吗-支持北斗导航吗
- 国际软件巨头“垂青”中国首个专业软件外包园
- matlab绘图实例-多线图
- PRN(20210426):GRAPH-BASED CONTINUAL LEARNING(ICLR2021)
- 用python写一个抽号
- 高通蓝牙ADK-- 48k的usb voice
- 使用java语言基础部分知识,做一个简易的2个数之间的关于算术运算符的计算。
- Python 抓取中国银行外汇牌价首页数据