一、初识代码审计
1、漏洞产生的原理
可控变量、功能函数
2、漏洞原理衍生的思路
3、指定漏洞挖掘及随机挖掘
指定漏洞挖掘:寻找指定漏洞关键字(函数,变量)
随机挖掘:可控变量(接受方式关键字)
4、相关工具及环境需求
遍历文件查找软件(审计系统,闪电搜索,光速搜索)
二、关于SQL注入漏洞常规挖掘分析
关键字搜索
提交方式:get、post、cookie、request等
数据库:select、union、insert等
数据库监控
常见SQL注入中涉及的安全函数:
mysql_real_escape_string()
addslashes()
htmlentities()
htmlspecialchars()
strip_tags()
md5()
sha1()
intval()
三、实例某CMS注入漏洞挖掘
第一种:关键字查找挖掘
第二种:利用监控逐一分析
四、PHP核心配置详解
安全模式:safe_mode = off
限制环境变量存取:safe_mode_allowed_env_vars = string
外部程序执行目录:safe_mode_exec_dir = "E:\WWW"
禁用函数:disable_functions
com组件:com.allow_dcom = false ; 使用com()需要在php.ini配置extension = php_com_dotnet.dll
全局变量注册开关:register_globals = off
魔术引号自动过滤:magic_quotes_gpc = on ;本特性已在PHP5.4被移除
是否允许包含远程文件:allow_url_include = off
是否允许打开远程文件:allow_url_open = on
HTTP头部是否显示PHP版本信息:expose_php = off
文件上传临时目录:upload_tmp_dir =
用户可访问目录:open_basedir = E:\WWW
是否显示错误:display_errors = on
错误报告级别:error_reporting = E_ALL & ~E_NOTICE
五、PHP代码调试之Xdebug的配置
指定Xdebug扩展文件的绝对路径:zend_extension = "E:\Test\php\php-5.4.45\ext\php_xdebug.dll"
启用性能检测分析:xdebug.profiler_enable = on
启用代码自动跟踪:xdebug.auto_trace = on
允许收集传递给函数的参数变量:xdebug.collect_params = on
允许收集函数调用的返回值:xdebug.collect_return = on
指定堆栈跟踪文件的存放目录:xdebug.trace_output_dir = "E:\Test\tmp\xdebug"
指定性能分析文件的存放目录:xdebug.profiler_output_dir = "E:Test\tmp\xdebug"
连接和监听主机和端口的调试客户端:xdebug.remote_enable = on
启用调试器协议dbgp:xdebug.remote_handler = dbgp
客户端主机:xdebug.remote_host = localhost
客户端端口:xdebug.remote_port = 9000
指定DBGp调试器处理程序:xdebug.idekey = PHPSTORM
六、PHP审计涉及的超全局变量
全局变量:global $a;
超全局变量:$GLOBALS、$_SERVER、$_POST、$_GET、$_REQUEST、$_FILES、$_ENV、$_COOKIE、$_SESSION
七、PHP代码审计之代码执行漏洞
eval 和 assert函数、回调函数、动态函数、preg_replace函数。
八、PHP代码审计之命令执行漏洞
system、exec、passthru、shell_exec函数
九、PHP代码审计之任意文件读取及删除漏洞
fopen file_get_contents、fread、fgets、fgetss、file、fpassthru、parse_ini_file、readfile
十、PHP代码审计之变量覆盖漏洞
$$、extract()、import_request_variables()、parse_str()
十 一、PHP代码审计之伪协议
file://协议 用于访问本地系统文件:allow_url_fopen:off/on allow_url_include:off/on
php://filter 读取源代码并进行base64编码输出
php://input 可以访问请求的原始数据的只读流