很早就有深入剖析学习一款源代码审计东西的主意,在查找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]
| +-- *** yzer.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完好的代码剖析功用
*** yzer.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/ *** yzer.php'); // string *** yzers
include('lib/scanner.php'); // provides class for scan
[1] [2] [3] [4] [5] 黑客接单网
3、2019年5月23日③ attacker对辅助域控制器(SDC)执行printerbug.py脚本Windows Server 2003(已停止维护)https://support.microso...
2019年中旬,Talos安全团队在“MassMiner”挖矿活动(MassMiner是一个挖矿歹意软件宗族,经过很多不同的缝隙进行传达,还暴力进犯Microsoft SQL Server)中注意到一...
最近,在回忆一些网络反常的时分,咱们发现了Cold River,一个歹意运用DNS地道作为C&C通讯的进犯安排。现在,咱们现已能够解密受害者与进犯者的通讯流量,也发现了进犯中运用的杂乱钓饵文档...
3、2019年5月23日② 和攻击方式一相同,执行ntlmrelayx.py本,使用–delegate-access选项,delegate-access选项将中继计算机帐户(这里即辅助域控制器)的访问...
· 全球最大的虚拟钱银数字财物买卖所服务渠道官方Binance遭受垂钓进犯,很多使用过API量化买卖的用户发现自己在Binance的数字钱银账户被盗,账户持有的钱银未经赞同就被主动出售,出售取得的比特...
自2014年初次被发现至今,Emotet银行木马不断地开展。美国政府估量Emotet事情需求花费一个企业100万美元来修正。Emotet是一款广泛传达的歹意软件,并且其开发者也在不断地参加新的功用、传...