摘要: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=TPFP

扫描报告解析

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相关推荐

  1. 01. Web漏洞靶场的搭建

    01. Web漏洞靶场的搭建 Web漏洞靶场的搭建(上) 什么是Web安全? 什么是Web Web是互联网的总称,全称为World Wide Web,缩写WWW,即全球广域网,也称为万维网,它是一种基 ...

  2. 掌握渗透测试,从Web漏洞靶场搭建开始

    摘要:漏洞靶场,不仅可以帮助我们锻炼渗透测试能力.可以帮助我们分析漏洞形成机理.更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果. 本文分享自华为云社区<Web漏洞 ...

  3. 吃透这套架构演化图,从零搭建Web网站也不难

    转载自 吃透这套架构演化图,从零搭建Web网站也不难 前言 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对 ...

  4. 在docker中搭建xss漏洞靶场

    使用docker搭建xss漏洞靶场(含常用靶场) 在Xshell中安装镜像 使用docker-compose部署容器 安装镜像(快速版) 安装docker-compose 进入安装包页面来部署容器 进 ...

  5. Docker基础学习笔记( 搭建web漏洞检测环境和容器中运行Django项目)

    目录 一.Docker技术的学习 1.1.docker安装(ubuntu16.04) 1.1.1.apt-get换国内清华源 1.1.2.安装最新版本的Docker 1.2.docker容器与镜像使用 ...

  6. 使用Docker如何搭建Web漏洞测试环境?

    本文和大家分享的是使用Docker搭建Web漏洞测试环境相关知识,希望对大家学习Docker有所帮助,一起来看看吧. 由于一直在做 Web 漏洞扫描器的开发, 那么就必然少不了 Web 的漏洞测试环境 ...

  7. CTF-合天WEB漏洞靶场

    WEB漏洞靶场 实验环境 测试内容 打开burp 开启代理 观察http响应头 Referer理解 X-Forwarded-For理解 Client-IP理解 实验环境 https://www.het ...

  8. 搭建webug漏洞靶场

    搭建webug漏洞靶场 下载还phpstudy后,进入到www目录下 将下载好的webug4.0的压缩包解压 然后启动phpstudy 本地访问漏洞地址,默认密码admin/admin登陆 点击登陆后 ...

  9. web接口响应时间标准_从零搭建Web应用(二)

    1 Java Web 本文将从最基础的HTTP协议开始讲起,介绍如何徒手搭建Web应用,内容如果比较多的话,后面会分成多篇逐步介绍. 2 皇冠上的明珠-Apache 不知道Apache的研发不是好的研 ...

最新文章

  1. nginx系列:nginx反向缓存代理详解
  2. windows开启smnp服务
  3. HTML字符实体(常用特殊字符)
  4. 餐饮外卖平台小程序 v1.0.1
  5. 4020-基于链地址法的散列表的插入(C++,附思路以及头插法,尾插法两种代码)
  6. c语言全面,最新版c语言经典习题100例(最全面).doc
  7. app账号退不出去_2021个人所得税退税时间是什么时候?还可以退吗?
  8. 易语言单窗口单ip软件源码_游戏搬砖怎样换IP防封?有几种处理方法?
  9. 8分之七怎么用计算机,如何用八屏电脑看盘
  10. 原生安卓X86 TV安装配置
  11. 蚂蚁金服 Service Mesh 大规模落地系列 - 网关篇
  12. 基于深度学习和自闭症脑成像数据库(ABIDE)识别自闭症谱系障碍
  13. Linux中make, make install命令分别是什么,用法?
  14. “包”治百病,BOS丰富的预付费资源包来了
  15. 申请清华大学计算机类的理由,青年人选择清华的七个理由
  16. document的用法
  17. 收藏夹导出至html,分享win7电脑中三种导出浏览器收藏夹地址方法
  18. 【单片机学习】独立按键的扩展应用
  19. 大数据hbase nosql数据库
  20. 大学计算机比赛保送,他是信息奥赛金牌得主,保送清华姚班!初中打游戏经常被老师抓...

热门文章

  1. 教程 | Hadoop集群搭建和简单应用
  2. Bootstrap禁用某个按钮组
  3. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题
  4. Git笔记(31) 重置揭密
  5. presto 使用 部署_部署PrestoDB on Cassandra
  6. 魔兽服务器联盟在线,《魔兽世界》怀旧服再开新服,部落联盟泾渭分明?
  7. jcr多久更新一次_拼多多商品价格竞争力星级有什么用?多久更新一次?
  8. 如何用while循环输出十行十列变色★☆
  9. 2. APIS官网剖析(博主推荐)
  10. 通过SectionIndexer实现微信通讯录