代码审计思路以及php配置
2021-03-27 13:28
2.要熟悉知道一些常用的php框架,如thinkphp、Yaf、doitphp等框架
3.审计的一般流程是:
获取目录-->全局过滤-->模块文件-->C函数内容-->M函数内容-->V显示
4.一般方法:
(1)通读全文法:函数集文件、配置文件、安全过滤文件、index文件 一般从index文件入手,优点:比较全面,能挖到漏洞几率大,缺点:耗时间
(2)敏感关键字回溯法:可以高效判断敏感的位置,和挖出想要的漏洞。但覆盖不到逻辑漏洞,以及不能了解程序功能
(3)功能点定向审计:根据程序功能来挖洞,比较简单、高效(推荐使用)
(4)一切皆有可能 一切输入都是有危害的(可以控制变量) 一切进入函数的变量都是有害的的(变量到达有利用价值的函数)
二、php配置
php.ini 主要是一个全局的配置文件,在php启动时一般只读取一次,也就是说当你修改过php.ini时要重启php才能生效。
user.ini 自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。作用:.htaccess是伪静态环境配置文件,用于lamp。
.user.ini是lnmp文件,里面放的是你网站的文件夹路径地址。目的是防止跨目录访问和文件跨目录读取.
1.配置的基本语法:
• 大小写敏感
•运算符:|、&、~、!
•空值表示法
foo= ;
foo=none;
foo="none "
2.基本配置——安全模式
•安全模式
php安全模式:safe_mode=on|off
启用safe_mode指令将对在共享环境中使用PHP时可能有危险的语言特性有所限制。可以将safe_mode是指为布尔值on来启用,或者设置为 off禁用。它会比较执行脚本UID(用户ID)和脚本尝试访问的文件的UID,以此作为限制机制的基础。如果UID相同,则执行脚本;否则,脚本失败。
•限制环境变量存取
safe_mode_allowed_env_vars = string
指定PHP程序可以改变的环境变量的前缀当这个选项的值为空时,那么php可以改变任何环境变量。如:
safe_mode_allowed_env_vars = PHP_当这个选项为空时那么php可以改变任何环境变量。
•外部程序执行目录
safe_mode_exce_dir="home/wwwroot"
•禁用函数
disable_funtion
为了更安全的运行PHP ,可以用此指令来禁止一些敏感函数的使用,当你想用本指令禁止一些危险函数时,切忌把d()函数也加到禁止列表,攻击者可以利用dI()函数加载自定义的php扩展来突破disable_function.配置禁用函数时可以使用逗号分隔函数名
•com组件
com_allow_dcom=false
PHP设置在安全模式下(safe_ mode) ,仍旧允许攻击者使用COM0函数来创建系统组件来执行任意命令。我推荐关闭这个函数来防止出现此漏洞
3.基本配置——变量控制
●全局变量注册开关
register_globals = off
php.ini的register globals选项的状认值预设为Off,在4.2版本之前是默认开启的,当register, _globals的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,这是对服务器来讲是非常不安全的所以我们不能让它注册为全局变量。
●register. globals=On时,服务端使用POST或者GET提交的变量,都将自动使用全局变量的值来接收值
●是否允许包含远程文件
allow_url_include = off
该配置为on的情况下,可以直接包含远程文件,若包含的变量为可控的情况下,可以直
接控制变量来执行PHP代码
●是否允许打开远程文件
allow_url_open = on
允许本地PHP文件通过调用URL重写来打开和关闭写权限,默认的封装协议提
供的ftp和http协议来访问文件。
●HTTP头部版本信息
expose_php = off
防止了通过http头部泄露的php版本信息
●文件上传临时目录
upload_tmp_dir =
上传文件临时保存的目录,如果不设置的话,则采用系统的临时目录
●用户可访问目录
open_basedir = E:\Local Test\WWW
能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问,不应
该访问的文件,-定程度 上限制了phpshell的危害
●内部错误选项
display_errors = on
表明显示PHP脚本的内部错误。网站发布后建议关闭PHP的错误回显。在调试的时
候通常把PHP错误显示打开
●错误报告级别
error_reporting.= E_ ALL & ~E_ NOTICE
这个设置的作用是将错误级别调到最高,显示所有问题,方便排错
这就是今天get的内容,好好come on!!
As my watch begins. 我从今天开始守望。