命令执行知识

一、代码执行原理

代码执行是指应用程序在调用⼀些能够将字符串转换为代码的函数时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞,使得用户能利用任意脚本代码(PHP)。

  • webshell含义
    webshell 就是以网页文件形式存在的一种命令/代码执行环境,也可以将其称做为一种网页后门。由于 webshell 其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。一句话木马、小马、大马都可以叫 webshell。
  • 代码执行函数

eval():是一个语言结构,把字符串按照PHP代码执行,该字符串必须是合法的PHP代码,且必须以分号结尾

<?php eval($_POST['hudou']);?>

assert():是一个函数,把字符串按照PHP代码执行
create_function():根据传递的参数创造一个匿名函数

$a=create_function(",$_POST['para']);$a();

二、命令执行原理

代码执行漏洞应用有时需要调用⼀些执行系统命令的函数,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。简单来说就是:”靠执行脚本代码调用操作系统命令“

命令执行函数:system()、exec()、shell_exec()、passthru()、popen()、porc_popen()

绕过disable_function():disable_function是写在php.ini配置文件中的禁用PHP中的危险函数

  • 利用LD_PRELOAD环境变量:是Linux系统的一个环境变量,它允许你定义在程序运行前优先加载的动态链接库。

三、命令执行防御

  1. 不执行外部命令
  2. 使用自定义函数或者函数库来代替外部命令的功能
  3. 使用escapeshellarg()、escapeshellcmd()函数来处理命令参数
  4. 禁用一些敏感字符,比如; && cat等连接符与常用命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值