很早就有深入剖析学习一款源代码审计东西的主意,在查找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] 黑客接单网
依据这几天的经历,一个站点可能有几个不同的上传点,我再找找看,说不定有能打破的。 Signed Applet Attack运用java自签名的程序进行垂钓进犯; ASP代码使用表单(form)完...
下图显示的是微软的漏洞修复情况,微软在termdd.sys的_IcaBindVirtualChannels和_IcaRebindVirtualChannels函数中的客户端连接请求部分添加了针对信道名...
遮住的部分是我的学号,成果我发现password发送的竟然不是我的生日,而是一串很长的字母数字串,所以我检查网页源码,发现里边有一段这样的的js句子:其间windows/beacon*是Cobalt...
已有公开渠道的Metasploit CVE-2019-0708漏洞利用模块发布,构成现实的蠕虫威胁。 关于CVE-2019-0708漏洞,有一个比较关键但非常重要的细节,该漏洞与远程桌面服务(Remo...
of the biggest sites in the world. - homepage:print ?crack.pl http://www.xxx.com/1.aspn?;; j5 j9 d9...
支撑 UnregisterHost unregister_host = 2;网络金融违法进一步对揭露陈述中高档要挟活动中命名的进犯举动称号、进犯者称号,并对同一布景来历进行归类处理后的计算状况如下,一...