渗透测试第二阶段--Part9--远程代码执行渗透与防御

目录

一. 什么是远程代码执行?

远程代码执行-RCE

漏洞危害

实际漏洞

二. PHP RCE涉及函数

命令command注入

代码code注入

三. 靶场案例

Windows命令拼接符号

 Linux命令拼接符号

pikachu靶场案例

DVWA

四. CTF案例

CTFhub-Web-RCE-eval执行

CTFhub-Web-RCE-命令注入

CTFhub-Web-RCE-过滤cat

CTFhub-Web-RCE-过滤空格

CTFhub-Web-RCE-过滤目录分隔符

​编辑

CTFhub-Web-RCE-过滤运算符

五. 防御措施


一. 什么是远程代码执行?

远程代码执行-RCE

  • RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
  • 远程代码执行:Remote Code Execute

        同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
        因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。

  • 远程命令执行:Remote Command Execute

        一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。

        比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。

        一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。

        如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。

        现在很多的甲方企业都开始实施自动化运维,大量的系统操作会通过"自动化运维平台"进行操作。 在这种平台上往往会出现远程系统命令执行的漏洞,不信的话现在就可以找你们运维部的系统测试一下,会有意想不到的"收获"。

漏洞危害

  • 获取服务器权限
  • 获取敏感数据文件
  • 写入恶意文件getshell
  • 植入木马病毒勒索软件等

实际漏洞

  • CVE-2021-3177        Python RCE漏洞
  • CVE-2021-21972      VMWare RCE漏洞
  • CVE-2021-25646      Apache Druid RCE漏洞

  • CNVD-2020-46552        深信服EDR
  • CNVD-2021-30101        网康下一代防火墙

二. PHP RCE涉及函数

命令command注入

函数作用
system()执行外部程序,并且显示输出。
exec() / shell_exec()通过shell环境执行命令,并且将完整的输出以字符串的方式返回。
pcntl_eec()在当前进程空间执行指定程序。
passthru()执行外部程序并且显示原始输出。
popen()打开进程文件指针。
proc_open()执行一个命令,并且打开用来输入/输出的文件指针

代码code注入

函数作用
eval()把字符串code作为PHP代码执行。
assert()检查一个断言是否为false。
preg_replace()执行一个正则表达式的搜索和替换。
create_function()创建一个匿名函数并且返回函数名创。
call_user_func() / call_user_func_array()把第一个参数作为回调函数调用。
usort() / uasort()使用用户自定义的比较函数对数组中的值进行排序并保持索引关联。

三. 靶场案例

Windows命令拼接符号

符号含义示例
&&左边的命令执行成功,右边的才执行。ping 127.0.0.1 && echo 'hello'
&简单的拼接。ping 1111 & echo ’hello‘
|上一条命令的输出,作为下一条命令参数。

netstat -ano | findstr 3306

||左边的命令执行失败,右边的才执行。ping baidu.com || ping baidu.net

 Linux命令拼接符号

符号含义示例
没有任何逻辑关系的连接符
&&左边的命令执行成功,右边的才执行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 &

pikachu靶场案例

  • 127.0.0.1 & ipconfig

  • 127.0.0.1 & whoami

  • phpinfo();

  • system(ipconfig);

DVWA

  • Low

  • Medium

  • High

  • impossable

四. CTF案例

CTFhub-Web-RCE-eval执行

进行蚁剑连接,连接密码为cmd,发现为highlight_file,在根目录下找到flag

CTFhub-Web-RCE-命令注入

首先进行尝试127.0.0.1

然后输入127.0.0.1;cat 162832600664095.php 查看该php文件的内容

ctrl+U查询源代码,获得flag

CTFhub-Web-RCE-过滤cat

除了cat以外 我们还可以尝试less

CTFhub-Web-RCE-过滤空格

CTFhub-Web-RCE-过滤目录分隔符

127.0.0.1;cd flag_is_here;cat flag_14512394428704.php

CTFhub-Web-RCE-过滤运算符

五. 防御措施

  1. 开源框架,升级到最新版本
  2. 尽量不要使用命令执行的函数
  3. 如果必须使用,需要做白名单处理
  4. 用正则表达式对用户输入的内容进行处理
  5. 使用WAF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值