RIPS源码阅读记录(二)

Author: tr1ple

RIPS源码阅读记录(二)插图

这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file

RIPS源码阅读记录(二)插图(1)

 取出的文件路径将和tokens数组结合,每一个文件都为一个包含require+文件名的token数组

RIPS源码阅读记录(二)插图(2)

接着回到main.php中,此时调用scanner的parse开始解析,这里的一个设计点问题就是要扫描漏洞,此时已经需要准备好的有哪些东西

1.file_scanning:

 RIPS源码阅读记录(二)插图(3)

这里实际上就代表的是将要进行扫描的文件,在这里实际上是对每个待扫描的php文件都将调用parse进行解析,files就是前端指定的目录位置,勾选subdirs就包括其子目录的php文件

RIPS源码阅读记录(二)插图(4)

2.scan_functions:

 RIPS源码阅读记录(二)插图(5)

 扫描的结果显示级别是根据前端verbosity来进行选择,扫描函数是根据vuln type来选择

RIPS源码阅读记录(二)插图(6)

主要分为两个大类,客户端攻击和服务端

RIPS源码阅读记录(二)插图(7)

客户端主要包括

a.xss

主要是以下函数在输出时可能存在xss,其中每种函数都对应一个数组,0代表跟踪该函数所有参数,1代表跟踪第一个,2代表第2个,

RIPS源码阅读记录(二)插图(8)

其中securing_xss为一些过滤函数,包括把字符转为实体,将左右尖括号、单双引号、&转为html实体,所以这种防御并不是百分百有效的

RIPS源码阅读记录(二)插图(9)

b.http 头部注入

RIPS源码阅读记录(二)插图(10)

c.会话固定漏洞

RIPS源码阅读记录(二)插图(11)

服务端主要包括:

a.代码执行

RIPS源码阅读记录(二)插图(12)

 这里的securing_preg主要针对php5.x的e修饰符导致的代码执行,preg_quote将对正则进行转义

 RIPS源码阅读记录(二)插图(13)

 b.反射注入

RIPS源码阅读记录(二)插图(14)

 c.文件读取

RIPS源码阅读记录(二)插图(15)

securing_file主要包括以下三种

 RIPS源码阅读记录(二)插图(16)

d.文件系统操作相关和e文件包含相关也都是用的相同的securing_file

  RIPS源码阅读记录(二)插图(17)

 f.命令执行相关

RIPS源码阅读记录(二)插图(18)

 securing_function主要关注两个命令转义函数

 RIPS源码阅读记录(二)插图(19)

  g.sql操作相关:

RIPS源码阅读记录(二)插图(20)

  securing_function:

RIPS源码阅读记录(二)插图(21)

 h.xpath注入

RIPS源码阅读记录(二)插图(22)

securing_functions

RIPS源码阅读记录(二)插图(23)

  i.ldap注入

 RIPS源码阅读记录(二)插图(24)

  RIPS源码阅读记录(二)插图(25)

  j.连接相关的函数

RIPS源码阅读记录(二)插图(26)

 k.php对象注入:

RIPS源码阅读记录(二)插图(27)

 l.其他一些高危函数

 RIPS源码阅读记录(二)插图(28)

因此以上一共是3种客户端+12种服务端=15种预配置的漏扫类型,但是这些漏洞并没有完全涵盖比如csrf、ssrf、xxe以及无法检测一些越权漏洞等逻辑漏洞,以及反序列化也不一定是unserialize,可能是phar反序列化

上面预先配置的这些函数也是作者对php的函数都做了相关的调查,建立在对php语言与漏洞本身的理解基础上(白盒对基础的要求还是高)

3.info_functions

info类中主要包括一些辅助审计的函数检测,比如出现phpinfo,将对应phpinfo detected,以及不同数据库用到的函数如果出现,则代表当前应用使用了哪些数据库

 RIPS源码阅读记录(二)插图(29)

4.source_functions

RIPS源码阅读记录(二)插图(30)

待扫描的函数初始化后,将初始化source点

 RIPS源码阅读记录(二)插图(31)

source点主要包括:

a.otherinput 包括http头部一些信息,超全局数组变量等操作函数

RIPS源码阅读记录(二)插图(32)

b.从文件中提取的输入

RIPS源码阅读记录(二)插图(33)

c.从数据库中提取的输入

RIPS源码阅读记录(二)插图(34)

这些输入点全部都定义在source.php,其中还包括userinput,http server相关的一些参数,不过这两类输入在初始化时并未加入source_functions数组

 RIPS源码阅读记录(二)插图(35)

 info中还包含了常用的一些pop链构造需要的一些gadget方法

 RIPS源码阅读记录(二)插图(36)

 

 

 

本站资源均源自网络,若涉及您的版权、知识产权或其他利益,请附上版权证明邮件告知。收到您的邮件后,我们将在72小时内删除。
若下载资源地址错误或链接跳转错误请联系站长。站长q:770044133。

» RIPS源码阅读记录(二)

发表评论

免登录下载网,提供全网最优质的资源集合!