Web安全—远程命令/代码执行(RCE)

远程代码/命令执行(RCE)

提要:RCE(remote command/code execute)远程命令/代码执行,开发人员在开发相关命令调用功能时,没有对用户输入的数据进行过滤和验证等操作,导致攻击者输入的恶意字符被代入后端服务器执行,从而产生危害应用服务器的后果。
漏洞简介:
RCE属于服务端漏洞,可以归于"命令执行漏洞"这一分类中
远程命令执行漏洞:适用于前端给用户提供了一个ping或其他操作的界面,如果后端未对输入的字符做限制,那么用户便可以通过拼接其他参数来构造用户输入,实现命令注入漏洞的发生。
举例:
windows下"&"字符含义:其含义连接多个命令,连接命令都会被执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假
在这里插入图片描述
远程代码注入原理:因为Web应用功能需求的设计,后台有时候也需要把用户的输入作为代码的一部分执行,不管是使用了代码执行的函数,还是使用了不安全的反序列化等等,如果此时对用户的输入未作判断,那么将可能会造成代码执行漏洞。
举例:
在这里插入图片描述
在这里插入图片描述

命令执行常见PHP函数&防御:

PHP函数:
system():执行一个外部的应用程序的输入并显示输出的结果
exec():执行一个外部的应用程序,但是不显示输出的结果
shell_exec():执行shell命令并返回输出的结果的字符串
popen()
proc_open()
shell_exec()和exec()函数功能相同
命令执行漏洞防御:
1,用户输入进入后端命令执行的函数或方法之前,对参数进行过滤
2,禁止能执行系统命令的函数,可在php配置文件中设置disable_functions
3,参数使用单引号包裹,并在拼接前调用addslashes进行转义

代码执行PHP常用函数:

PHP函数:
eval():将字符串当作函数执行(需要传入一个完整的语句)
一句话木马就是利用的代码执行漏洞:

<?php @eval($_POST[x]);?>      @eval表示执行错误后不进行报错

代码执行漏洞防御:
1,用户输入不轻易接触eval函数,使用正则严格判断用户的输入格式是否合适
2,字符串使用单引号包裹,并在插入前进行addslashes()进行转义

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值