正好做到一题thinkphp框架漏洞,于是决定自己审计一番~,正好学学如何入门
代码审计两种方式1**.通读全文源码**2.功能点审计:根据漏洞对应发生函数进行功能行审计,常会用到逆向溯源数据流方法进行审计3.正向追踪数据流:根据用户输入参数->来到代码逻辑->最后审计代码逻辑缺陷->尝试构造payload4.逆向溯源数据流:字符串搜索指定操作函数_跟踪函数可控参数->审计代码逻辑缺陷->尝试构造payloadCMS可分为两大类单入口cms:不管访问哪个模块都使用同一个入口文件,常见的MVC框架采用这种模式多入口cms:每个模块都有一个入口文件(可以前端设置一个入口文件 index.php,后端创建一个入口文件admin.php,前后端的入口文件是独立的)。
代码审计思路接下来我们从三个层次开始我们的源码审计思路
1.确定要审计的源码是什么语言
2.确定该源码是单入口还是多入口
3.确定该语言的各种漏洞诞生的函数
PHP核心配置一个漏洞在不同环境造成的结果也是不一样的。
由于关于php.ini配置的内容过于多,这里推荐浏览官方文档 https://www.php.net/manual/zh/ini.php,我们在这里主要列下php.ini 主要使用的安全配置。
safe_mode = off用来限制文档的存取,限制环境变量的存取,控制外部程序的执行.PHP5.4.0移除。
限制环境变量存取safe_mode_allowed_env_vars = string指定php程序可以改变的环境变量的前缀,当这个选项的值为空时,那么php可以改变任何环境变量,如果 如:safe_mode_allowed_env_vars = PHP_,当这个选项的值为空时,那么php可以改变任何环境变量。
外部程序执行目录safe_mode_exec_dir = "/usr/local/bin"当安全模式被激活,safe_mode_exec_dir参数限制通过exec()函数执行的可执行文件到指定的目录。举例来说,如果你想限制在/usr/local/bin目录执行功能,你可以使用这个指令:
safe_mode_exec_dir = “/usr/local/bin”
禁用函数
disable_functions
为了更安全的运行PHP,可以用此指令来禁止一些敏感函数的使用,当你想用本指令禁止一些危险函数时,切记把dl()函数也加到禁止列表,攻击者可以利用dl()函数加载自定义的php扩展突破disable_functions.配置禁止函数时可以使用逗号分隔函数名。
COM组件com.allow_dcom = falsePHP设置在安全模式下(safe_mode),仍允许攻击者使用COM()函数来创建系统组件来还行任意命令,推荐关闭这个函数。 使用COM()函数需要在PHP.ini中配置extension=php_com_dotnet.dll,如果PHPversion