Author: tr1ple

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

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

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

1.file_scanning:

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

2.scan_functions:

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

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

客户端主要包括

a.xss

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

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

b.http 头部注入

c.会话固定漏洞

服务端主要包括:

a.代码执行

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

b.反射注入

c.文件读取

securing_file主要包括以下三种

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

f.命令执行相关

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

g.sql操作相关:

securing_function:

h.xpath注入

securing_functions

i.ldap注入

j.连接相关的函数

k.php对象注入:

l.其他一些高危函数

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

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

3.info_functions

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

4.source_functions

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

source点主要包括:

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

b.从文件中提取的输入

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

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

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

RIPS源码阅读记录(二)的更多相关文章

  1. Redis源码阅读(二)高可用设计——复制

    Redis源码阅读(二)高可用设计-复制 复制的概念:Redis的复制简单理解就是一个Redis服务器从另一台Redis服务器复制所有的Redis数据库数据,能保持两台Redis服务器的数据库数据一致 ...

  2. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  3. 【原】AFNetworking源码阅读(二)

    [原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...

  4. 【原】SDWebImage源码阅读(二)

    [原]SDWebImage源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 解决上一篇遗留的坑 上一篇中对sd_setImageWithURL函数简单分析了一下,还 ...

  5. EventBus源码解析 源码阅读记录

    EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...

  6. 【详解】ThreadPoolExecutor源码阅读(二)

    系列目录 [详解]ThreadPoolExecutor源码阅读(一) [详解]ThreadPoolExecutor源码阅读(二) [详解]ThreadPoolExecutor源码阅读(三) AQS在W ...

  7. Caddy源码阅读(二)启动流程与 Event 事件通知

    Caddy源码阅读(二)启动流程与 Event 事件通知 Preface Caddy 是 Go 语言构建的轻量配置化服务器.https://github.com/caddyserver/caddy C ...

  8. 【 js 基础 】【 源码学习 】backbone 源码阅读(二)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 ...

  9. Rpc框架dubbo-client(v2.6.3) 源码阅读(二)

    接上一篇 dubbo-server 之后,再来看一下 dubbo-client 是如何工作的. dubbo提供者服务示例, 其结构是这样的!dubbo://192.168.11.6:20880/com ...

随机推荐

  1. OSCP Learning Notes - Privilege Escalation

    Privilege Escalation Download the Basic-pentesting vitualmation from the following website: https:// ...

  2. 足球动图gif(二)

  3. 洛谷 P5350 序列 珂朵莉树

    题目描述 分析 操作一.二.三为珂朵莉树的基本操作,操作四.五.六稍作转化即可 不会珂朵莉树请移步至这里 求和操作 把每一段区间分别取出,暴力相加 ll qh(ll l,ll r){ it2=Spli ...

  4. css选择器大全

    1.元素选择器 这是最基本的CSS选择器,HTML文档中的元素本身就是一个选择器: p {line-height:1.5em; margin-bottom:1em;} //设置p元素行高1.5em,距 ...

  5. vector基本用法

    Vector作为STL容器中的一员,使用频率非常高,因此对其基本用法和实用技巧进行记录,便于后期查询使用. 基本用法 #include <iostream> #include <ve ...

  6. paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 ...

  7. pycharm控制台输出的日志全是红色的字体?

    问题:logging在pycharm控制台输出的日志的字体全是红色的,怎么办? 图片描述: 解决办法:设置 -> 搜索“Console” ->  结果:改完立马生效

  8. MacOS下ElasticSearch学习(第一天)

    ElasticSearch第一天 学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"elasticsearch&q ...

  9. numpy的random方法和常用数据类型

    NumPy 的常用数据类型 np.random 随机数模块

  10. Python for循环通过序列索引迭代

    Python for 循环通过序列索引迭代: 注:集合 和 字典 不可以通过索引进行获取元素,因为集合和字典都是无序的. 使用 len (参数) 方法可以获取到遍历对象的长度. 程序: strs = ...