• 代码审计学习笔记


    0x01 PHP核心配置讲解

    PHP_INI_*常量的定义

    • PHP_INI_USER
      该配置可在用户的PHP脚本或window注册表设置
    • PHP_INI_PERDIR
      该配置可在php.ini .htaccess或httpd.conf中设置
    • PHP_INI _SYSTEM
      该配置可在php.ini 或httpd.conf中设置
    • PHP_INI _ALL
      该配置可在任何地方设置
    • PHP.INI ONLY
      该配置仅可在php.ini中设置

    register_globals(全局变量注册开关)

    • 设置为on的情况下,会直接把用户GET,POST等方式提交上来的参数设置为全局变量并初始化为参数对应的值,使得提交参数可以直接在脚本中使用
    • php版本小于等于4.2.3时设置为on,5.3.0被废弃,php版本5.4.0时移除该项

    allow_url_include(是否允许包含远程文件)

    • 当存在include($var)且$var可控时,可直接控制$var变量来执行php代码。此配置在php5.2.0后默认关闭。与之类似配置有allow_url_fopen,配置是否允许打开远程文件

    magic_quotes_gpc(魔术引号自动过滤)

    • 配置为on时,会自动在GET,POST,COOKIE变量中的 (单引号)’ 、(双引号)" 、(反斜杠) 、空字符(NULL)的前面加上反斜杠()
      但php5中的magic_quotes_gpc不会过滤$_SERVER变量,导致client-ip、referer一类漏洞能够利用(如XFF注入)
    • PHP5.3后不推荐使用,PHP5.4后被取消

    magic_quotes_runtime(魔术引号自动过滤)

    • 与前面一个函数相似,但区别是它只对从数据库或文件中获取的数据进行过滤,同样在PHP5,4后取消

    magic_quotes_sybase(魔术引号自动过滤)

    • 为on时,会覆盖magic_quotes_gpc的配置,与gpc配置类似,但此配置仅仅转义空字符和把单引号变成双引号,也在5.4版本移除

    safe_mode(安全模式)

    • 一种安全机制,php5.4后取消
    • 为on时
      • 所有文件操作函数(如unlink()、file()、include())等都受限制
      • 通过函数popen(),system()以及exec()等函数执行命令或程序会提示错误

    open_basedir PHP可访问目录

    • 用来限制php只能访问哪些目录,若需加载外部脚本,需把脚本路径加到open_basedir指令中,多个目录以分号分割,例如:open_basedir=/www/a/
    • 在<=php5.2.3时是PHP_INI _SYSTEM,大于时为PHP_INI _ALL

    disable_function(禁用函数)

    • 禁用一些敏感函数使用,配置范围是php.ini only

    display_errors和error_reporting错误显示

    • 第一个表示是否显示php脚本内部错误,为on时,还可配置指令error_reporting,这个选项用来配置错误显示的级别

    审计辅助工具

    代码编辑器
    • notepad++
    代码审计工具
    • Seay源代码审计系统(php)
    • Fortify SCA(收费的,但是支持最多编程语言的审计软件)
    • RIPS(php)
      ……
    • 除此之外的审计工具在小迪写的文章里总结的比较好
      https://t.zsxq.com/fMfuNJa

    审计思路

    1. 根据敏感关键词回溯参数传递过程
    2. 查找可控变量,正向追踪变量传递过程
    3. 寻找敏感功能点,通读功能点代码
    4. 直接通读全文代码
  • 相关阅读:
    用学习逃避成长,听新知缓解焦虑
    谈谈“人”和“技能”
    SpringMVC的工作原理
    Spring MVC 处理静态资源文件
    nrpe的安装设置
    Maatkit工具使用&lt;一&gt;之mysql主从数据校验工具
    phpcgi占用cpu100%的一次排障之旅
    nginx支持cgi
    如何查看服务器RAID卡信息的SHELL脚本和命令介绍
    Mysql的一次经典故障
  • 原文地址:https://www.cnblogs.com/yida223/p/12229320.html
Copyright © 2020-2023  润新知