目录
RCE漏洞作为漏洞中比较常见的一个,近年来在apache和python等等软件上都出现过巨大的bug,本篇文章对于RCE漏洞将会进行一个简单的介绍,关于什么是RCE,RCE的危害以及一些我们在寻找RCE漏洞时所需要的简单的一些基础知识的了解和预备,下一篇文章将会在靶场中对于这个漏洞的相关问题进行实操!
这边我引用了pikachu靶场中对于RCE的描述:
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口
比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。
总结一下就是由于程序中预留了执行代码或者命令的接口,并 且提供了给用户使用的界面,导致被黑客利用, 控制服务器。
通过这个执行代码,可以帮助我们管理网络设备的web管理界面和自动化运维系统等等。
1、获取服务器权限
2、获取敏感数据文件
3、写入恶意文件getshell
4、植入木马病毒勒索软件等
RCE既叫做远程代码执行(Remote Code Execute) 又叫做远程命令执行(Remote Command Execut)
所以与该漏洞相关的函数也有两种类型:
- 代码注入
- eval() 把字符串 code 作为PHP代码执行
- assert() 检查一个断言是否为 false
- preg_replace() 执行一个正则表达式的搜索和替换
- create_function() 创建一个匿名函数并且返回函数名称
- call_user_func()/call_user_func_array() 把第一个参数作为回调函数调用
- usort()/uasort() 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
- 命令注入/执行
- system() 执行外部程序,并且显示输出
- exec()/shell_exec() 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回
- pcntl_exec() 在当前进程空间执行指定程序
- passthru() 执行外部程序并且显示原始输出
- popen() 打开进程文件指针
- proc_open() 执行一个命令,并且打开用来输入/输出的文件指针
linux系统中的命令拼接符号也是我们在进行RCE漏洞探索是必须要使用到的操作:
- ;没有任何逻辑关系的连接符
- && 左边的命令执行成功,右边的才执行 cp 1.txt 2.txt && cat 2.txt
- | 上一条命令的输出,作为下一条命令参数 netstat -an|grep 3306
- || 左边的命令执行失败,右边的才执行 cat 3.txt || cat 2.txt
- & 任务后台执行,与nohup命令功能差不多 java -jar test.jar > log.txt &
这些是我们在处理RCE漏洞的一些预备知识,下一篇文章我们会进行靶场的实际操作!在实战中对这个漏洞有更深的了解!