欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

RIPS源码精读(一):逻辑流程及lib文件夹大致说明

来源:本站整理 作者:佚名 时间:2018-08-21 TAG: 我要投稿

很早就有深入分析学习一款源代码审计工具的想法,在查找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类加以实例化
tokenizer.php
仅定义了Tokenizer类,类中定义大量函数,其余文件中所用到的token信息均来源于此文件
index.php 分析
index.php是rips项目的入口文件,因此我放在了第一个分析。
代码构成主要是前端文件,功能方面主要将目标路径、扫描类型等参数发送至分析模块。
在index.php的112行附近,触发点击事件,进入main.php
main.php分析
main.php是整个rips代码分析的开始部分
配置文件引入:
    include('config/general.php');          // 主要为各种参数的初始设置
    include('config/sources.php');          // 可能从外部引入数据的函数或全局变量,如$_GET、file_get_contents()
    include('config/tokens.php');           // 将代码分割成许多个token,以便于词法分析
    include('config/securing.php');         // 根据函数的目的使用以及效果不同划分,如 htmlspecialchars 划入数组变量 $F_SECURING_XSS
    include('config/sinks.php');            // 敏感函数汇总,根据函数对应的功能不同进行更进一步的划分
    include('config/info.php');             // 对各种函数名添加对应注释,如sqlite_open()=>'using DBMS SQLite'
核心代码引入:
include('lib/constructer.php');         // 类信息
    include('lib/filer.php');               // 仅定义了一个函数,用以获取指定路径下所有文件
    include('lib/tokenizer.php');           // prepare and fix token list
    include('lib/analyzer.php');            // string analyzers
    include('lib/scanner.php');             // provides class for scan

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载