前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络安全自学篇-PHP代码审计(一)

网络安全自学篇-PHP代码审计(一)

作者头像
字节脉搏实验室
发布2020-07-01 14:45:30
1.2K0
发布2020-07-01 14:45:30
举报
文章被收录于专栏:字节脉搏实验室

一个网络安全学习爱好者在学习过程中记录下的笔记。

相较与黑盒测试而言,代码审计(白盒测试)可以帮助我们更能了解web应用的框架和结构方便我们挖掘出黑盒测试中难以发觉的一些漏洞,总而言之就是对代码进行审计,并发现代码的vulnerability。

代码安全性分析

从输入、输出的验证,安全功能以及异常处理入手

环境搭建

采用Phpstorm+Phpstudy

相关链接:

http://www.xue51.com/soft/37849.html

https://www.xp.cn/

审计辅助

Notepad++、Seay源代码审计工具、RIPS、Fortify SCA

相关链接:

https://dl.pconline.com.cn/html_2/1/117/id=10699&pn=0.html

https://www.jb51.net/softs/199462.html

http://rips-scanner.sourceforge.net/

https://www.zdfans.com/html/48084.html

验证辅助

Burpsuite、hackbar、Proxy(代理工具)、Modheader等

架构认识

案例:

MVC架构

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:

Model(模型):是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。

View(视图):是应用程序中处理数据显示的部分,也就是=用户看到并与之交互的界面。

Controller(控制器):是应用程序中处理用户交互的部分,例如当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

MVC架构处理流程

接收请求->全局过滤->模块文件->Controller(函数内容)->Model(函数内容)->View(显示)

常见的PHP框架

ThinkPHP、Laravel 、Kohana、CodeIgniter、Yii等

审计方式

一、通读原文

函数集文件、配置文件、lib安全过滤文件、Index文件、主目录、模块目录、插件目录、上传目录、模板目录、数据目录、配置目录、配置文件、公共函数文件、安全过滤文件、数据库结构、入口文件等

二、 敏感关键字回溯参数

select、insert、eval、exec等等

三、查找可控变量

四、功能点定向审计

程序安装、文件上传、文件管理、登录验证、备份恢复、找回密码

安全配置详解

配置-语法

directive =value(指令=值)

foo = bar != FOO =bar

运算符

|、&、~、!

空值

foo = ;

foo = none;

foo = "none“;

安全模式

safe_mode= on(用来限制文档的存取、限制环境变量的存取,控制外部程序的执行,PHP5.4.0以上被移除)

safe_model_allowed_env_vars = string,限制环境变量的存取,即PHP程序能改变环境变量的前缀,当选项值为空时,PHP可以改变任何环境变量

safe_mode_exec_dir=“E:\Phpstudy\WWW”,控制外部程序的执行

disable_functions,禁用函数,禁止一些敏感函数,但不要禁止dl函数,攻击者可以利用dl()函数加载自定义的php扩展来突破disable_function

com.allow_dcom= false,com组件,PHP设置在安全模式下(safe_mode),仍旧允许攻击者使用COM()函数来创建系统组件来执行任意命令

register_globals= off,全局变量注册开关

magic_quotes_gpc= on,相当于addslashes

allow_url_include= off,包含远程文件,注意变量是否可控

allow_url_open= on,允许本地PHP文件通过调用URL重写来打开和关闭写权限

expose_php= off,防止通过http头部泄露的php版本信息

upload_tmp_dir = “E:\Phpstudy\WWW\temp\upload”,上传文件临时保存的目录

open_basedir= “E:\Phpstudy\WWW”,控制PHP脚本只能访问指定的目录

display_errors= on,网站发布后建议关闭

error_reporting= E_ALL & ~E_NOTICE,方便排错

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档