教你从零搭建Web漏洞靶场OWASP Benchmark
摘要:Owasp benchmark 旨在评估安全测试工具的能力(准确率、覆盖度、扫描速度等等),量化安全测试工具的扫描能力,从而更好得比较各个安全工具优缺点。
本文分享自华为云社区《Web漏洞靶场搭建(OWASP Benchmark)》,作者:Xuuuu 。
渗透测试切记纸上谈兵,学习渗透测试知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及法律法规的,所以我们常常需要自己搭建一个漏洞靶场,避免直接对公网非授权目标进行测试。
漏洞靶场,不仅可以帮助我们锻炼渗透测试能力、可以帮助我们分析漏洞形成机理、更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果。
本次靶场选择 OWASP Benchmark | OWASP Foundation 靶场。Owasp benchmark 旨在评估安全测试工具的能力(准确率、覆盖度、扫描速度等等),量化安全测试工具的扫描能力,从而更好得比较各个安全工具优缺点。
测试用例
目前 v1.2 版本包含了近3000个漏洞,覆盖常见的SQL注入、命令注入、路径遍历、XSS,以及众多安全编码类的问题

每个漏洞包含多种漏洞场景,对于命令注入来说,可以校验测试工具在:
- 多种注入位置:param/data/form-data/json/mut/header/cookie/
- 多种调用场景:ProcessBuilder/RuntimeExec
- 不同拼接方式:可控变量作为独立的命令拼接、仅作为ls/echo 的参数
- 复杂业务流程: if/else/switch 导致无法进入漏洞位置(假漏洞场景)
等等场景下的表现。
评分标准
Benchmark 可以根据测试工具的扫描报告为测试工具进行评分。Benchmark靶场的所有漏洞信息储存在BenchmarkJava/expectedresults-1.2.csv at master · OWASP-Benchmark/BenchmarkJava ,此文件用于标识每个场景下的漏洞信息。Benchmark解析测试工具的扫描报告再与预期结果进行对比,从而为每个工具进行打分。
对于测试工具来说,我们期望他能够
- 发现所有的真正是问题的漏洞 即 True Positive,TP指数,检出率尽可能高
- 能够忽略所有非问题的漏洞 即False Positive,FP指数,误报率尽可能低
Benchmark 将以TP,FP为坐标轴绘制一张图,当点越靠近左上方时,认为测试功能能力更优。

Benchmark最后得分参考约登指数给出,用以下公式计算分值,得分越靠近 11 表明测试工具能力越强。
Sensitivity+Specificity-1=TP+(1-FP)-1=TP-FPSensitivity+Specificity−1=TP+(1−FP)−1=TP−FP
扫描报告解析
Benchmark目前支持大部分主流测试工具,详见 OWASP Benchmark | OWASP Foundation 页面。
当评估测试工具时,可以自行扩展 OWASP-Benchmark/BenchmarkUtils: OWASP Benchmark Project Utilities - Provides scorecard generation and crawling tools for Benchmark style test suites. 中的 org.owasp.benchmarkutils.score.parsers.Reader 类
- 重写 parse方法:用于解析报告内容
- 重写canRead 方法:用于判断解析哪种报告文件
解析报告中的 url/cwe 等关键信息,实现自动打分。
Demo
package org.owasp.benchmark.score.parsers; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import java.io.File;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class SecScanReader extends Reader {
private static final String NUMBER_PATTERN = "BenchmarkTest(\\d+)";
private static Pattern pattern; public SecScanReader() {
pattern = Pattern.compile(NUMBER_PATTERN);
} public boolean canRead(ResultFile resultFile) {
return resultFile.filename().endsWith(".xml") && resultFile.xmlRootNodeName().equals("XXXXXX");
} public TestResults parse(File file) throws Exception {
TestResults tr = new TestResults("XXXXXX", true, TestResults.ToolType.DAST);
for (Object obj : issues) {
// .....
TestCaseResult tcr = new TestCaseResult();
tcr.setCategory("XSS");
tcr.setCWE(cweLookup(13));
tcr.setNumber(0001);
tr.put(tcr);
}
return tr;
} public static int cweLookup(String pluginId) {
switch (pluginId) {
default: return 0;
}
} }
生成评分报告
$ mvn validate -Pbenchmarkscore -Dexec.args="expectedresults-1.2.csv results"
部署运行
$ git clone https://github.com/OWASP-Benchmark/BenchmarkJava
$ cd benchmark
$ mvn compile (This compiles it)
$ runRemoteAccessibleBenchmark.sh/.bat - This compiles and runs it.
runRemoteAccessibleBenchmark 脚本用于开启可被远程访问的Benchmark Web应用。
Refernece
- OWASP Benchmark | OWASP Foundation
文末福利:华为云漏洞扫描服务VSS 基础版限时免费体验>>>
教你从零搭建Web漏洞靶场OWASP Benchmark的更多相关文章
- CTF丨从零开始搭建WEB Docker靶场
第十二届全国大学生信息安全竞赛即将开始,小伙伴们有报名参加的吗?大家在比赛前是否开始进行模拟演练了?今天,i春秋将与大家分享靶场搭建的相关内容,帮助大家更好的进行实操演练. 学习搭建Docker靶场之 ...
- Win7服务器搭建实例教程:教你Win7如何搭建Web服务器【转载】
原文地址:http://www.pc841.com/article/20140607-30534.html 局域网Web服务器的主要功能是实现资源共享,同时借助于局域网服务器访问页面可有效的实现信息的 ...
- Web漏洞总结: OWASP Top 10
本文原创,更多内容可以参考: Java 全栈知识体系.如需转载请说明原处. 开发安全 - OWASP Top 10 在学习安全需要总体了解安全趋势和常见的Web漏洞,首推了解OWASP,因为它代表着业 ...
- 从零搭建Web网站
前言 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对比较零碎,随时补充.俗话说得好,冰冻三尺非一日之寒,滴 ...
- 手把手教你从零搭建Python数据分析环境
由于最近再做推荐系统的特征处理,需要借助一些工具来筛选特征.最初使用了R,R的安装很简单,而且API也很容易使用,直接就能出图.后来,发现很多人在python和R之间做选择,所以我也在两个工具间摇摆不 ...
- 推荐一个Web漏洞靶场
https://github.com/zhuifengshaonianhanlu/pikachu 暂时先空着 安装好是这样的 博主先去玩了,回来再写博客,2333
- web渗透漏洞靶场收集
最近将自己遇到过或者知道的web靶场链接奉上 0X01 DVWA 推荐新手首选靶场,配置简单,需下载phpstudy和靶场文件包,简单部署之后即可访问. 包含了常见的web漏洞(php的),每个漏洞分 ...
- (未完)经典Web漏洞实战演练靶场笔记
记录下自己写的经典Web漏洞靶场的write up,包括了大部分的经典Web漏洞实战场景,做个笔记. 0x01 任意文件下载漏洞 if(!empty($_GET['filename'])){ $fil ...
- 手把手教你搭建WEB服务器和FTP服务器
注:本次教程的环境是在“Windows 10 PC中远程控制的Windows Server 2012 R2服务器”,你可以自己在自己电脑中安装虚拟机再安装Windows Server 2012 R2服 ...
- 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)
首先.在開始搭建MyEclipse的开发环境之前.还有三步工具的安装须要完毕,仅仅要在安装配置成功之后才干够进入以下的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官 ...
随机推荐
- 动态规划的状态设计 | bot 讲课の补题
sto james1badcreeper orz. 好厉害的题,但是怎么有人补了三天才补完呢? CF1810G The Maximum Prefix 线性 dp,怎么有 bot 说题目难度在 *240 ...
- 周藤 CSP-2023游记
Day -inf~Day -2 基本上是考试状态,每天我都是自己取随机题目做,不过也保证了落实量 每场模拟赛发挥基本上是不是特别稳定,考得好的时候AK了,考不好的时候只有300分,反正同届差不多第一吧 ...
- 谈谈流计算中的『Exactly Once』特性
本文翻译自 streaml.io 网站上的一篇博文:"Exactly once is NOT exactly the same" ,分析了流计算系统中常说的『Exactly Onc ...
- 推理(Inference)与预测(Prediction)
在机器学习的背景下,很多人似乎混淆了这两个术语.这篇文章将试图澄清我们所说的这两个词是什么意思,每一个词在哪里有用,以及它们是如何应用的.在这里,我将举几个例子来直观地理解两者之间的区别. 推理和预测 ...
- CSS 浮动和清除浮动方法总结
作者:WangMin 格言:努力做好自己喜欢的每一件事 什么是浮动 float? 标准流:盒子会各占整行位置.子盒子若是标准流,父盒子虽然没有高度,但是会撑开父盒子高度. 浮动:盒子浮了起来,不会占据 ...
- easyupload
打开界面就是一个文件上传 的界面 然后在bp试了很多种方法都没有成功,还是看了wp 这里需要利用到.use.ini那为什么不用.heaccess?好像这种方法被过滤了,当时我用的时候没有成功 这里的话 ...
- 01Java学习_概述
概述 目录 概述 三个阶段 概述 历史(了解) Java 重要特点 开发工具 Java 运行机制及运行过程 下载和安装 JDK 配置环境变量 java 快速入门 博客中的图片内容全部采用 github ...
- 随机森林(Random Forest)--- 转载
1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...
- 光学测量 PPG
参考来源:ADI官网技术文章.知乎(hxl695822705.KingPo-张超.深圳加1健康科技 ) 现状 PPG测量心率.血氧的技术距今发展快100年,影响心率.血氧测量准确度的因素主要有心率传感 ...
- C++ Qt开发:RadioButton单选框分组组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioB ...