WEB应用程序代码审计
程序的两大根本:变量与函数
漏洞现成的条件:
A、可以控制的变量
【一切输入都是有害的】
B、变量到达有利用价值的函数[危险函数]
【一切进入函数的变量是有害的】
漏洞的利用效果取决于最终函数的功
能
变量进入什么样的函数就导致什么要的效果
PHP应用程序代码审计
为什么只是PHP?
A、跨平台、应用广泛、复杂
B、变量处理灵活[如变量覆盖、全局变量等
]
C、函数库巨大
[导致漏洞类型多,既有通用的又有特有的]
E、代码审计的思路是可以通用的
变量
预定义变量[常规外部提交的变量]
GPC$_ENV/SERVER/SESSION$HTTP_RAW_POST_DATA等
register_globals=on[未初始化的变量]
PHP»4.20默认为off
变量覆盖[未初始化及覆盖前定义的变量]
如:extract()、遍历初始化变量、parse_str()等
变量的传递与存储[中转的变量]
存储于数据库、文件[如配置、缓存文件等]
危险函数
文件包含包含漏洞
代码执行执行任意代码漏洞
命令执行执行任意命令漏洞
文件系统操作文件(目录)读写等漏洞
数据库操作SQL注射漏洞
数据显示XSS等客服端漏洞
……
什
什
么
么
样
样
的
的
函
函
数
数
导
导
致
致
什
什
么
么
样
样
的
的
漏
漏
洞
洞
!
!