WEB代码审计与渗透测试:寻找变量与危险函数

需积分: 17 21 下载量 140 浏览量 更新于2024-07-14 收藏 2.36MB PPT 举报
本文主要探讨了渗透测试中的代码审计,特别是针对WEB应用程序的代码审计,强调了代码审计在防御和攻击两种不同目的下的要求。同时,重点介绍了PHP应用程序中的代码审计,包括变量与函数的关系、漏洞形成的条件以及如何追踪变量和识别危险函数。 在渗透测试中,代码审计的目标因甲方和乙方的不同而有所区别。甲方的审计侧重于防御,旨在发现并修复更多的安全漏洞,而乙方的审计则以进攻为目标,寻找可利用的漏洞并追求效率和最大化的利用效果。 WEB代码审计的关键在于理解和分析程序中的变量与函数。漏洞的形成需要两个条件:一是存在可以控制的变量,因为"一切输入都是有害的";二是这些变量进入具有潜在危险的函数,即"一切进入函数的变量是有害的"。漏洞的利用效果取决于最终被调用的函数功能。 对于PHP代码审计,选择PHP作为重点的原因在于其跨平台性、广泛应用、复杂性、变量处理灵活性和庞大的函数库,这些因素导致了多种类型的漏洞。在PHP中,预定义变量、未初始化的变量(与`register_globals`配置有关)、变量覆盖(如`extract()`和`parse_str()`)以及变量的传递与存储都可能成为审计的重点。此外,特定的危险函数如文件包含、代码执行、命令执行、文件系统操作、数据库操作和数据显示等,都可能引发各种类型的漏洞,如包含漏洞、执行任意代码漏洞、命令执行漏洞、文件读写漏洞、SQL注入和XSS漏洞。 代码审计的本质是寻找对应变量与函数的关联。这涉及到正向和逆向跟踪变量,从变量找到函数,或者从函数反向追踪到变量。在变量的传递过程中,可能会经过多次函数处理,形成复杂的立体过程,这可能导致二次漏洞的出现。二次漏洞是指利用一个现有漏洞创造新的漏洞,使攻击者能够达到原本无法达到的目标。 在进行代码审计时,审计人员应深入理解变量如何在程序中流动,哪些函数处理这些变量,以及如何识别和防止潜在的危险。通过对变量和函数的深入分析,可以有效地发现和修复安全问题,提升软件的安全性。