RIPS源码阅读记录(二)
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源码阅读记录(二)的更多相关文章
- Redis源码阅读(二)高可用设计——复制
Redis源码阅读(二)高可用设计-复制 复制的概念:Redis的复制简单理解就是一个Redis服务器从另一台Redis服务器复制所有的Redis数据库数据,能保持两台Redis服务器的数据库数据一致 ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
- 【原】AFNetworking源码阅读(二)
[原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...
- 【原】SDWebImage源码阅读(二)
[原]SDWebImage源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 解决上一篇遗留的坑 上一篇中对sd_setImageWithURL函数简单分析了一下,还 ...
- EventBus源码解析 源码阅读记录
EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...
- 【详解】ThreadPoolExecutor源码阅读(二)
系列目录 [详解]ThreadPoolExecutor源码阅读(一) [详解]ThreadPoolExecutor源码阅读(二) [详解]ThreadPoolExecutor源码阅读(三) AQS在W ...
- Caddy源码阅读(二)启动流程与 Event 事件通知
Caddy源码阅读(二)启动流程与 Event 事件通知 Preface Caddy 是 Go 语言构建的轻量配置化服务器.https://github.com/caddyserver/caddy C ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(二)
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 ...
- Rpc框架dubbo-client(v2.6.3) 源码阅读(二)
接上一篇 dubbo-server 之后,再来看一下 dubbo-client 是如何工作的. dubbo提供者服务示例, 其结构是这样的!dubbo://192.168.11.6:20880/com ...
随机推荐
- 自动生成和安装requirements.txt依赖
在查看别人的Python项目时,经常会看到一个requirements.txt文件,里面记录了当前程序的所有依赖包及其精确版本号.这个文件有点类似与Rails的Gemfile.其作用是用来在另一台PC ...
- android 调试的一些问题解决1
1.系统自带的机器跑起来太卡,我想用雷电模拟器来运行.可是打开后找不到设备怎么弄? 解决办法: 步骤1:>>>运行模拟器 步骤2:>>>win + r 打开cmd ...
- ASP.NET CORE之中间件-自定义异常中间件
参考资料:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1 1.一般A ...
- cropper.js 二次开发:截图并下载图片
cropper.js 是一个基于jquery的图片截取库. 参考:https://blog.csdn.net/weixin_38023551/article/details/78792400 我的代码 ...
- 通过jmeter读取csv的case来实现接口自动化
一.环境准备: 1.环境:jdk:1.8+,jmeter:4.2+, 2.csv: 按照以下这种方式编写case或者自定义其他的,准备好case 二.注意要点: 1.想实现数据参数化,可以直接csv中 ...
- Git别名和配置文件
目录 备注: 配置别名 配置文件 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文. 配置别名 如果,如果这么神器的Git版本控制系统,可以简 ...
- python的常用模块
一.random随机数模块 使用随机数模块需要导入随机数模块import random 1.random.random() 生成[0,1)之间的随机小数 2.random.randint(a,b) 生 ...
- Android实现QQ登录
https://www.jianshu.com/p/e59bc198e88f
- LQB2013A01高斯日记
诶,今天发生了点不是很开心的事.说实话挺影响心情的啊(谁遇见这种事不生气呢啊啊啊啊) 但是不能水更,还是得好好更新呀. 这个题居然直接用excel哈哈哈哈 那,,就这样吧!
- c++ string类型举例(递归预习的边界)
#include <iostream> #include <string> using namespace std; int main ( ) { string str; // ...