到平台信息
php版本及php.ini一些基本设置、OS信息、Web服务信息、数据库 应用
渗透测试中的代码审计
快速代码审计: A.补丁对比技术 B.业务功能与漏洞 C.相似性漏洞挖掘 D.基于白盒的fuzz E.
常用变量与函数 F.高级的代码审计
A 补丁对比技术
二进制补丁对比技术已经非常成熟[开始于2004年] ,也诞生了反二进 制对比的技术。 PHP应用程序补丁对比技术 *基于
源代码,对比起来更加直观明了 *目前还没有对应的反对比机制 *对比工具: 系统命令:fc、diff等 专业工具:Beyond Compare、UltraCompare等 *常见的安全补丁方式: 变量初始化:$str=‘’;、$arr=array();等 变量过滤: intval/int()、addslashes()、正则等 *对比的版本选择:选取临近的版本[避免一些非安全补丁的干扰]
一个实例
B 业务功能与漏洞
实现业务功能的同时引入安全风险。如: 上传功能 上传漏洞 数据存储与查询 sql注射漏洞 后台或者api接口 安全认证绕过 api 数据库备用 导出webshell 新的功能必
定带来新的安全隐患。 功能越强大说明漏洞几率越大。 我们在审计代码的同时应该熟悉应用程序的业务 功能。
C 相似性漏洞挖掘
天下武学同出少林[天大代码一把抄]
最经典的故事属于asp:动网的上传漏洞
每个程序员都有自己的代码风格习惯
不好的风格习惯,可能代码致命的安全漏洞,而且习惯很 难改变!
相同的功能带来同样的漏洞
如后台的功能和api接口实现相同的功能
寻找相似性漏洞
*通过补丁对比技术 *通过漏洞分析、总结漏洞类型
D 基于白盒的fuzz
由于变量在传递的过程里千变万化,跟踪来很费事费力,为了快速找到漏洞 我们可以在白盒的基础上通用一些fuzz的方法,开始找到漏洞。 我们可以在白盒的基础上通用一些fuzz的方法,开始找到漏洞。
一、变量的存储
1、对于文本文件:如配置文件、缓存文件、文本数据库文件。如: $headers{"X-Forwarded$headers{"X-Forwarded-For"} = "Test31425926"; 然后通过Findstr、grep等搜索特征字符Test31425926 然后通过Findstr、grep等
搜索特征字符Test31425926 D:\ D:\>Findstr /S /I /N /d:D:\phproot\bmb2007\bmb\ "Test31425926" *.php /d:D:\phproot\bmb2007\bmb\ D:\phproot\bmb2007\bmb\ D:\phproot\bmb2007\bmb\: datafile\ datafile\guest.php:2:查询 可以让数据库出错的字符就行 比如‘
D 基于白盒的fuzz
二、全局变量 主要是对于设置了regis