代码审计-思路及工具
关于一些代码审计时的脆弱文件
函数集文件
通常命名中包含functions
或者common
等关键字
这些文件里面是一些公用函数,提供给其他文件统一调用,所以大多数文件都会在文件头包含到这类文件,寻找这类文件的技巧就是去打开index.php或者一些功能性的文件。
配置文件
通常命名中包含config
关键字
配置文件包括Web程序运行必须的功能性配置选项以及数据库等配置信息。从这类文件可以了解程序的部分功能,另外看这类文件的时候注意配置文件中的参数是用单引号还是双引号括起来,如果是双引号,则可能存在代码执行漏洞。例如:PHP中双引号引起的命令执行漏洞(Kuwebs代码审计 )
安全过滤文件
通常命名中有filter
、safe
、check
等关键字
安全过滤文件对做代码审计十分重要,这类文件主要是对SQL和XSS注入的参数进行过滤,还要文件路径和命令执行的参数。目前大多数程序都会在程序入口循环对所有参数使用addslashes()函数进行过滤。
入口文件
index.php
是一个程序入口文件
所以通常我们只要读一遍index.php就可以大致了解整个程序的架构、运行的顺序、包括到的文件、以及其中核心的文件位置。
审计过程
以骑士cms为例
首先
拿到到源码,首先寻找名称中有没有带api
、admin
、manage
、include
一类关键字的文件和文件夹,通常这类文件比较重要,其次再查看关键文件代码。
审计工具
PHP审计
针对PHP代码审计工具有Seay审计系统
和Rips审计系统
个人喜欢两个一起使用,
Seay审计系统误报非常多,但是扫描速度比较快
Rips审计系统审计很慢,但是准确率相对Seay更高一点。
JAVA审计
听说比较好用的有Fortify SCA
和Checkmarx
Links to tools
Rips-scanner
https://github.com/robocoder/rips-scanner
SeaySourceCodeCheck
https://github.com/euphrat1ca/SeaySourceCodeCheck
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库