尴尬...最后的流程图部分,先知的markdown貌似并不支持解析
很早就有深入分析学习一款源代码审计工具的想法,在查找rips源码分析相关资料时,发现相关的学习分析资料较少,于是选择rips作为该系列文章的分析对象,因为没有最新版的rips的源码,因此选取的rips源码为已公开的版本。
因为我是第一次将具体的分析写下来,并且本身的技术能力问题,在某些场景下的用语或者技术细节描述可能存在偏差,请师傅们包涵。
引言
RIPS是一个源代码分析工具,它使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞
本篇内容
作为本系列文章的开始,只介绍rips的逻辑流程以及lib文件夹下各文件大致内容分析,不具体分析代码审计的细节,相关细节在之后的文章中分析
整体结构
RIPS工具的整体架构如下:
+-- CHANGELOG [file]
+-- config [dir]
| +-- general.php
| +-- help.php
| +-- info.php
| +-- securing.php
| +-- sinks.php
| +-- sources.php
| +-- tokens.php
+-- css [dir]
| +-- ayti.css
| +-- barf.css
| +-- code-dark.css
| +-- espresso.css
| +-- notepad++.css
| +-- phps.css
| +-- print.css
| +-- rips.css
| +-- rips.png
| +-- scanning.gif
| +-- term.css
| +-- twlight.css
+-- index.php [file]
+-- js [dir]
| +-- exploit.js
| +-- hotpatch.js
| +-- netron.js
| +-- script.js
+-- lib [dir]
| +-- analyzer.php
| +-- constructer.php
| +-- filer.php
| +-- printer.php
| +-- scanner.php
| +-- searcher.php
| +-- tokenizer.php
+-- LICENSE [file]
+-- main.php [file]
+-- README.md [file]
+-- windows [dir]
| +-- code.php
| +-- exploit.php
| +-- function.php
| +-- help.php
| +-- hotpatch.php
| +-- leakscan.php
config目录:放置各种配置信息
css目录:放置css样式文件
js目录:放置js代码文件
lib目录:rips的核心代码文件
window:rips的前端构成
lib文件夹说明
lib文件夹存放rips运行的核心文件,定义了大量函数以及类用以完成rips完整的代码分析功能
- analyzer.php
仅定义了
Analyzer
类,并在类中定义了三个函数,分别是get_tokens_value
,get_var_value
,getBraceEnd
,Analyzer
类主要用以根据token信息分析文件信息 - constructer.php
本文件定义了五个类,分别为
VarDeclare
、VulnBlock
、VulnTreeNode
、InfoTreeNode
、FunctionDeclare
,分别用以存储变量
、漏洞总干
、每个漏洞具体信息
、存储信息
、存储函数
- filer.php
仅定义了函数
read_recursiv
,用以遍历文件夹下的文件信息 - printer.php
定义大量函数,基本都是用于将分析得到的结果输出至前端页面
- scanner.php
仅定义了
scanner
类,类中包含大量方法,本文件为rips分析操作的核心文件,包括token处理、字段处理等功能 - searcher.php
仅定义了
searchFile
函数,主要用于根据token信息分析漏洞情况,并使用VulnTreeNode
类加以实例化