软件开发培训班 >> 网络技术 >> 网络安全
PHP自动化白盒审计技术与实现 |
|
本文标签:白盒审计 PHP PHP自动化审计 0x03 初始化工作 在 实在的PHP审计中,遇到敏感函数的调用, 比方mysql_query,我们就会 不禁自主地去手动 综合第一个参数,看是不是可控 。事实上,众多CMS都会将一些数据库 查问的 步骤进行封装,使得调用容易且程序逻辑清楚, 比方封装为一个类MysqlDB 。这时,在审计中我们就不会搜索mysql_query 要害字了,而是去找 比方db->getOne这 品种的调用 。 那么问题来了,在自动化程序进行 综合的时候,如何获知db->getOne函数是个数据库的 拜访类 步骤呢? 这就需求在自动化 综合的初期就要对整个工程的全部类与定义的 步骤进行 征集,以便于程序在 综合的时候寻觅需求跟进的 步骤体 。 关于类信息和 步骤信息的 征集,应该作为框架初始化的一 部分 实现,存储在单例上下文中: ![]() 同时,需求 鉴别 综合的PHP文件是不是是真正 解决消费者 申请的文件,由于有些CMS中,一般会将封装好的类写入 径自的文件中, 比方将数据库操作类或者文件操作类封装到文件中 。关于这些文件,进行 传染 流传 综合是没有 意思的,所以在框架初始化的时候需求进行 鉴别,原理很 容易, 综合调用类型语句和定义类型语句的比例,依据阈值进行 推断, 舛误率很小 。 最终,对每个文件进行摘要操作,这一步的 目标是为了后续 综合时碰到require,include等语句时进行文件间 综合 使用 。重要收集变量的赋值、变量的编码、变量的净化信息 。 0x04 消费者函数 解决 常见的web 漏洞,一般都是由于惊险参数消费者可控招致的,这种 漏洞称之为污点类型 漏洞, 比方常见的SQLI,XSS等 。 PHP内置的一些函数 本身是惊险的, 比方echo可能会造成反射型XSS 。然而 实在代码中,没人会直接调用一些内置的 性能函数,而是进行再次封装,作为自定义的函数, 比方: 1234function myexec($cmd) { exec($cmd) ; } 在实现中,我们的 解决流程是: 利用初始化中猎取的上下文信息,定位到相应的 步骤代码段 综合这个代码片段,搜索到惊险函数(这里是exec) 定位惊险函数中的惊险参数(这里是cmd) 假如在 综合期间没有遇到净化信息, 注明该参数 可以进行传染,则映射到消费者函数myexec的第一个参数cmd,并将这个消费者自定义函数当做惊险函数 存放至上下文 构造中 递归返回,启动污点 综合过程 总结为一句话,我们便是跟入到相应的类
步骤、静态
步骤、函数中,从这些代码段中
查问是不是有惊险函数和惊险参数的调用,这些PHP内置的惊险函数和参数位置都是放在配置文件中的进行配置
实现的,假如这些函数和参数一旦被发现,且推断惊险参数并没有被过滤,则将该消费者自定义函数作为消费者自定义惊险函数 。一旦后续的
综合中发现调用这些函数,则马上启动污点
综合 。
|