php安全没怎么看懂…对很多函数都不了解…嗯…主要可以分为三种漏洞:文件包含漏洞,变量覆盖漏洞,代码执行漏洞。
1.第一种文件包含漏洞主要包含require(),require_once(),include(),include_once()这四个引入文件的函数。这种漏洞又可分为本地文件包涵和远程文件包含。
能够打开并包涵(引入)本地文件的漏洞叫本地文件包含漏洞。改变文件的参数和使用截断(\0)达成攻击。本地文件包含漏洞能够读取敏感文件或者服务器端脚本源代码,形成威胁。为了防止攻击者访问任意文件,可以配置open_basedir的值或者使用枚举来防止。本地文件可以通过上传或伪协议等来执行php代码。
若allow_url_include=ON的时候,include和require可以加载远程代码,成为远程文件包含漏洞。截断符号可以使用?或者%00。
2.变量覆盖有很多不同的方法。全局变量覆盖发生在register_globaks=ON时,当注入变量覆盖全局变量时,可以成功控制全局变量的值。extract()覆盖,当导入符号的过程中与已存在变量产生冲突,默认覆盖,可以通过设置为EXTR_SKIP(跳过)保证不备覆盖。其余类似于extract()。
3.代码执行漏洞有两个关键条件:用户控制输入;存在执行代码的危险函数。危险函数执行代码,危险函数主要是eval(),popen(),assert(),system()等。如果文件写操作的内容用户可以控制,很容易造成文件写入执行代码。其他执行代码的方式还有文件包含,本地文件写入,preg_replace在\e模式下,回调函数执行等。
可以通过修改php.ini中一些安全相关的参数定制安全的php环境。
今天小葱特地来教我,感动max。要慢慢想想今天讲得有啥重要的是以前没有认真看的。要好好努力!嗯!