如果不谈扫描质量 , 只关注整体项目设计以及产品中使用到的猥琐技巧 , 那么其中最让我眼前一亮的当属 AWVS
接下来我将详细介绍一下我从 AWVS 中学习到的 PoC 分类 。
PoC 分类:
类型描述PerServer用于检测 Web Server 级别中存在的漏洞
比方说各种中间件 , Web 框架的漏洞PerFile用于检测某个文件中是否存在漏洞
比如对应文件的备份 , Bash RCE 等PerFolder用于检测某个目录中是否存在漏洞
比如敏感信息的泄漏 , 路径中的 SQL 注入等PerScheme用于检测某个参数中是否存在漏洞
比如 SQL 注入 , XSS 等PostCrawl在爬虫结束之后启动
直接使用爬虫的资源进行检测PostScan在扫描结束之后启动 , 用于检测二阶注入 , 存储 XSS等WebApps用于检测比较常用的 Web 应用的漏洞
大致的流程图如下:

文章插图
【编写自己的漏扫—Web漏洞扫描技巧篇】在获取到爬虫资产 , 对相关资产格式化之后 , 便下发到各个不同类型的 PoC 中进行检测 , 这样做的好处是分类明确 , 覆盖大多数检测阶段
也避免为了减少重复请求的下发而需要额外记录中间状态的行为 。
三.IASTAWVS 有个比较有趣的功能 AcuMonitor , 也就大家熟知的 dnslog、反连平台 。
在 2014 年看到 AWVS 的这个功能时 , 就建议 WooYun 出个类似的功能 , 也就是 cloudeye , tangscan 也就算是国内比较早使用这种技术的扫描器
当然后续又出现了各种类似 cloudeye 的项目 , 自然而然也出现了各种使用该技术的扫描器 。
不过今天我们不打算继续介绍 AcuMonitor , 而是介绍另外一个也很有趣的功能 AcuSensor 。
AcuSensor 就是 IAST , 只要稍微了解过 Web 漏洞扫描器的 , 都应该会知道 IAST 是干啥的 。
那为什么我要单独拎出来讲这个呢?
主要是因为 AcuSensor 的实现方式非常有趣 。
AcuSensor 提供了 JAVA、.NET、php 这三个语言版本 , 其中比较有趣的是 PHP 版本的实现 。
PHP 版本的 AcuSensor 使用方法是下载一个 acu_phpaspect.php 文件 , 然后通过 auto_prepend_file 加载这个文件
众所周知 , PHP 是不能改直接 hook PHP 内置函数的 , 那么单单依靠一个 PHP 脚本 , AcuSensor 是如何做到类似 IAST 功能的呢?
很简单 , 直接替换所有关键函数 。嗯 , 真的就那么简单 。
我们来详细介绍一下这个过程 , 在 acu_phpaspect.php 中:
- 获取用户实际请求的文件内容
- 检查一下有没有相关 cache , 如果有 cache 那么直接加载执行 cache , 然后结束
- 使用 token_get_all 获取所有 token
- 遍历每一个 token , 对自己感兴趣的函数或者语句使用自己定义的函数进行 wrap 并替换
- 将替换后的内容保存到 cache 中并使用 eval 执行
- __halt_compiler 中断编译
举个具体的例子:
<?php$link = NULL;$sql = "select * from user where user_id=".$_GET["id"];MySQLi_prepare($link, $sql);经过 acu_phpaspect.php 转换之后:
<?php$link = NULL;$sql = "select * from user where user_id=".$_GET[_AAS91("hello.php", 4, "$_GET", "id")];_AAS86("hello.php",6,"mysqli_prepare",Array($link, $sql));整个过程简单粗暴有效 , 这样做的优点在于:
- 实现简单 , 只需要编写 PHP 即可
- 安装简单 , 无需安装扩展 , 只需修改配置文件可以
- 兼容性强 , 比较容易兼容性各种环境 , 各种版本 PHP
如果有意向去做 IAST 或者想做类似我的 prvd 项目 ,
但又不太喜欢写 PHP 扩展 , 那么我强烈建议你完整的看一遍 PHP 版本 AcuSensor 的实现 ,
如果对自己实现的检测逻辑效率比较自信的话 , 甚至可以基于这个原理直接实现一个 PHP 版本的 RASP 项目 。
四.限速
在 Web 漏洞扫描器中 , 无论作为乙方的商业产品、甲方的自研产品 , 限速都是一个至关重要的功能 ,
推荐阅读
- 梦见自己的丑事所有人都知道了 梦到自己的丑事被发现
- 如何用 Go 快速编写出 HTTP REST API 服务?
- 淘宝如何修改店名 怎么给自己的淘宝店铺改名
- 梦到别人赌博自己观看拿自己的钱赌博 梦到别人赌博自己观看周公解梦
- 梦到蜈蚣咬自己的脚 梦到蜈蚣咬自己的手
- 如何挑选白油
- 周公解梦梦见店面搬迁 梦见自己的店搬位置了
- 选适合自己的茶 茶商教你如何购茶叶
- 爱迪生的发明都是自己的吗 你知道爱迪生为什么能发明很多东西了吗
- 购买别人的淘宝店铺怎么转成自己的 淘宝网店可以转让给别人吗?
