1,500 views

PHP代码审计菜鸟笔记(一)

image

通过本地搭建 Damn Vulnerable Web Application (DVWA) 学习漏洞的利用和修复思路的时候,就感觉通过阅读 low、medium、high、impossible 的不同等级的存在漏洞缺陷的源代码,可以对漏洞的成因有代码层面的理解,也方便给修复建议的时候和研发进行代码层面的交流。

于是就想系统地学习和练习代码审计这块的知识,目前主要的学习资料就是《代码审计 企业级Web代码安全架构》这本书,PHP语言比较容易上手,环境搭建简单,搞Web的基本都会一点,而且PHP这门语言像腾讯、百度等都广泛运用到了Web上,还是很值得研究的。学习PHP的时候,除了网上的教程,我主要参考了《PHP和MySQL Web开发》这本书。

这里就把我学习的笔记整理成博客,感觉有输出才能更好地巩固学习效果

PHP代码审计菜鸟笔记系列

PHP代码审计菜鸟笔记(一):代码审计前的准备-本文

摘要:学习到这里,就可以开始搭建PHP代码审计的练习环境了,一种比较简单的方式就是在Windows下边安装好phpStudy,然后安装 Notepad++ 编辑器和 Seay源代码审计系统。


0x01 PHP代码审计参考资料搜索整理

在开始学习《代码审计 企业级Web代码安全架构》这本书前,也在 SecWiki 上搜索了PHP代码审计相关的文章,确实发现有一些很好的学习资源,包括一些练习案例和大伙分享的文章。

这里把一些PHP代码审计相关的通用资料整理如下,供参考:

1、一份《代码审计》的理解和总结
https://github.com/jiangsir404/Audit-Learning

附带推荐的练习题:
https://github.com/bowu678/php_bugs
https://github.com/CHYbeta/Code-Audit-Challenges

2、《高级PHP应用程序漏洞审核技术》-2010 黑哥出品
https://code.google.com/archive/p/pasc2at/wikis/SimplifiedChinese.wiki
如果要看目录的话,这里有份备份:
http://blog.sina.com.cn/s/blog_3dbab2840100lz4e.html

3、《PHP代码审计》-171218
https://mp.weixin.qq.com/s/ZaCSOB1R3nRCwMQd_xSbrQ

4、《PHP trick(代码审计关注点)》-180323
https://hacksec.xyz/2018/03/23/php-trick/

5、《PHP Trick 总结与探讨(一)》-161118
http://www.freebuf.com/articles/rookie/119969.html

6、《PHP代码安全杂谈》-180204
http://www.freebuf.com/articles/rookie/161474.html

7、一份《PHP代码审计》文档-130706
https://wenku.baidu.com/view/11c0625f69eae009581bece0.html

8、《攻击PHP框架》-160901
http://www.mottoin.com/88624.html

9、《PHP安全编码规范之安全配置篇》-160804
http://blog.topsec.com.cn/ad_lab/audit-defanse/

参考的资料太多,适当选取即可,还是回到我的学习主线《代码审计 企业级Web代码安全架构》 ,笔记也是跟着进度写的,也会有一些扩展。

0x02 PHP代码审计简介

1、代码审计定义

代码审计 是指对源代码进行检查,寻找代码中的bug,这里主要寻到可导致安全问题的bug
这是一项需要多方面技能的技术,包括对编程的掌握(能看懂代码的逻辑)、漏洞形成原理的理解、系统和中间件等的熟悉。

2、代码审计思路

1)逆向追踪
检查敏感函数的参数,然后回溯变量,判断变量是否可控并且没有经过严格过滤。
2)正向追踪
先找出哪些文件在接受外部传输的函数,然后跟踪变量传递的过程,观察是否有变量传入到高危函数里边,或者传递过程中是否有代码逻辑漏洞。这种正向追踪的方式,比逆向追踪挖掘得更全。
3)经验判断直接挖掘功能点漏洞
根据自身的经验判断该类应用通常在哪些功能中会出现漏洞,直接全篇阅读该功能代码。

3、PHP代码审计需要掌握好以下(其他语言类似)

1)PHP编程语言的特性和基础
2)Web前端编程基础
3)漏洞形成原理
4)代码审计思路
5)不同系统、中间件之间的特性差异。

0x02 PHP代码审计环境搭建

这里主要讲了用 phpStudy 快速搭建集成服务器环境(包括php解释器和MySQL数据库),Windows下的比较方便,Linux下的麻烦一些。

然后需要注意的就是PHP的一些配置参数的设置,会导致代码的执行效果不同。

觉个例子,比如GPC配置:

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
或者
magic_quotes_gpc = Off

这个参数,如果是On的话,服务器会对GET/POST/Cookie 提交过来的数据中的一些特殊字符做一些转义处理,防止因特殊字符处理不当导致的安全问题,比如SQL注入。

但是一些PHP原有的安全配置项,在高版本废弃了(如php5.4) get_magic_quotes_gpc ,网上搜索了下,说目的是把安全编码 交给用户自己来处理,从而避免了因gpc未设置,用户代码却依赖这个设置而带来的安全隐患。

这一部分可以参考PHP配置的官方文档,书里讲了一些和安全相关度比较高的配置。

1、php.ini 配置选项列表
http://php.net/manual/zh/ini.list.php

2、配置可被设定范围
http://php.net/manual/zh/configuration.changes.modes.php

0x03 审计辅助与漏洞验证工具

这一节主要讲了代码审计用到的工具,其实最常用的,就是Windows下边安装好phpStudy,然后安装 Notepad++ 编辑器和 Seay源代码审计系统。

因为作者的博客 www.cnseay.com 目前打不开了,书里提到的很多小工具由于没有官网或者很久不更新已经比较难搜索到,而且下载也容易遇到坑,比如我在找“灵者正则调试”这个小工具时,就从一个大的下载站直接下载了一个下载器流氓软件,一运行就开始在我的电脑上安装各种全家桶,安全软件也没拦截住,我当时就立即手工断网,折腾了一下午...

为了让大家少踩坑,我就把没找到官网然后下载的这些工具整理出来,方便大家下载,不过有官网的工具建议还是从官网下载,其他的来源我也不确定是不是完全安全。顺便也补充了我用过的书里没提到的一些工具,比如“文件搜索者SFileSearcher”、“正则测试RegexTester”。

下载链接

“PHP代码审计菜鸟笔记(一):代码审计前的准备”附件整理

其他提到的工具,按照书里的介绍,笔记如下:

1、代码编辑器

1)常用轻量级代码编辑器
Notepad++、Editplus、UltraEdit、PSPad、Vim、Gedit等,这些都是通用文本编辑器。

2)常用的完备性PHP开发软件
Zend Studio(和PHP一个公司)、PhpStorm、PhpDesigner、NetBeans

简要介绍

1)Notepad++
开源(GPL)、Windows、支持多种语言代码高亮。双窗口、显示字节数、文本操作、正则、插件等。

2)UltraEdit
Win、Linux、Mac都支持。
支持十六进制查看及编辑,可直接修改exe等文件。
支持打开大文件(超过4GB)。
配置脚本路径(如php.exe),可以直接执行代码。
文件对比:分析补丁修改位置。

3)ZendStudio
和PHP出自一个公司。
内置一个强大的PHP代码调试工具。代码提示功能强大。
支持6种以上语言。

2、代码审计工具

辅助我们做白盒测试,可以分为 安全性审计、代码规范性审计 等类型。
Seay源代码审计系统、Fortify SCA、RIPS、FingBugs、Codescan等。

简要介绍

1)Seay源代码审计系统
C#语言开发的的,针对PHP的代码审计,Windows下运行。
一键自动化白盒审计、代码调试、正则编码、自定义插件

2)Fortify SCA
很强大,支持很多语言,很贵。
五大主要分析引擎:数据流、控制流、语义、结构、配置

3)RIPS
http://rips-scanner.sourceforge.net/
一款基于PHP语言开发的针对PHP代码安全审计的软件。
450KB,最新版0.55,2017年6月已经更新。
使用简单,还能自动生成漏洞利用payload。

4)phpvulhunter
发现的一个3年前的开源项目,可是试试
https://github.com/OneSourceCat/phpvulhunter

3、漏洞验证辅助工具

数据包请求工具类、暴力枚举类、编码转换、加解密类、正则调试、SQL执行监控等。

1)Burpsuite
代理抓包、漏扫、暴力破解

2)浏览器扩展(有些插件已经不兼容新版浏览器了)
Firefox:Hackbar、Firebug、Live HTTP Headers(只能抓http包)、Modify(改请求的http header)等

Chrome:Http Headers、EditThisCookie、ModHeader等
IE:测试软件IEtester,可以切换IE浏览器内核版本而不同安装所有版本IE浏览器。

3)编码转换及加解密
Seay代码审计系统自带编码、
Burpsuite的Decoder功能、
超级加解密转换工具(国产):https://www.52pojie.cn/thread-98795-1-1.html

4)正则调试功能
Seay代码审计系统自带正则调试(支持实时解码调试)、
灵者正则调试

5)SQL执行监控工具
MySQL:通过配置,然后用Seay自带的。
SQL Server:自带的的性能监控 SQL Server Profiler 。

0x04 小结

第一篇笔记就是整理了PHP代码审计学习的一些学习资源、环境与工具等。

学到这就可以开始搭建PHP代码审计的练习环境了,一种比较简单的方式就是在Windows下边安装好phpStudy,然后安装 Notepad++ 编辑器和 Seay源代码审计系统

系列文章,未完待续...


转载请注明出处 :sosly 菜鸟笔记
https://sosly.me/index.php/2018/04/02/php_daimashenji1/

也欢迎关注微信公众号:sosly菜鸟笔记
sosly菜鸟笔记微信公众号

3 thoughts on “PHP代码审计菜鸟笔记(一)

发表评论

电子邮件地址不会被公开。 必填项已用*标注