沈阳网站建设推广平台wordpress婚礼主题公园
远程代码执行渗透与防御
- 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.防御姿势
- 开源框架,升级到最新版本
 - 尽量不使用命令执行的函数
 - 尽量使用白名单
 - 用正则表达式对用户输入的内容进行充分处理
 - 使用WAF
 
