远程代码执行渗透与防御

远程代码执行渗透与防御

远程代码执行渗透与防御

  • 1.简介
  • 2.PHP RCE常见函数
  • 3.靶场练习
  • 4.防御姿势

1.简介

远程代码执行漏洞又叫命令注入漏洞

命令注入是一种攻击,其目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。 当应用程序将不安全的用户提供的数据(表单、cookie、HTTP 标头等)传递到系统 shell 时,这些类型的攻击就有可能发生了。 在这种攻击中,攻击者提供的操作系统命令通常以易受攻击的应用程序的权限执行。 通常,由于输入验证不足,它们是很可能发生的

漏洞危害

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

2.PHP RCE常见函数

命令command注入

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

代码code注入

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

3.靶场练习

皮卡丘 exec "ping"

ping一下百度网,正常回显:

在这里插入图片描述

查看源码,发现对输入没有处理之后我们还是一手拼接

baidu.com & ipconfig

命令执行成功!

在这里插入图片描述

皮卡丘 exec "eval"

exec"evel",更简单。随意输入字符,返回文字

eval(输入)也就是执行任何我们输入的数据,例如输入phpinfo();

在这里插入图片描述


4.防御姿势

  1. 开源框架,升级到最新版本
  2. 尽量不使用命令执行的函数
  3. 尽量使用白名单
  4. 用正则表达式对用户输入的内容进行充分处理
  5. 使用WAF
                       

点击阅读全文

上一篇 2023年 6月 13日 am11:07
下一篇 2023年 6月 14日 am12:56