首页 > 编程语言 >Web漏洞靶场搭建(OWASP Benchmark)

Web漏洞靶场搭建(OWASP Benchmark)

时间:2022-10-13 16:05:29浏览次数:74  
标签:Web tcr Benchmark OWASP 漏洞 测试工具 import

Benchmark)​

渗透测试切记纸上谈兵,学习渗透测试知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及法律法规的,所以我们常常需要自己搭建一个漏洞靶场,避免直接对公网非授权目标进行测试。
漏洞靶场,不仅可以帮助我们锻炼渗透测试能力、可以帮助我们分析漏洞形成机理、更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果​

本次靶场选择​

测试用例

目前​

Web漏洞靶场搭建(OWASP Benchmark)_测试工具


每个漏洞包含多种漏洞场景,对于命令注入来说,可以校验测试工具在:​

  • 多种注入位置: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解析测试工具的扫描报告再与预期结果进行对比,从而为每个工具进行打分。
对于测试工具来说,我们期望他能够​

  • 发现所有的真正是问题的漏洞即​
  • 能够忽略所有非问题的漏洞即False Positive,FP指数,误报率尽可能低,Benchmark 将以TP,FP为坐标轴绘制一张图,当点越靠近左上方时,认为测试功能能力更优。
  • Web漏洞靶场搭建(OWASP Benchmark)_渗透测试_02

  • 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应用。​


标签:Web,tcr,Benchmark,OWASP,漏洞,测试工具,import
From: https://blog.51cto.com/u_15805954/5753563

相关文章

  • 【Web技术】286- 自定义错误及扩展错误
    英文:IlyaKantor 译文:LeviDing​​https://zh.javascript.info/custom-errors​​当我们在进行开发的时候,通常需要属于我们自己的错误类来反映任务中可能出现的特殊情况。......
  • 浏览器滚动条css设置webkit-scrollbar样式方式
    样式代码示例body::-webkit-scrollbar{width:12px;height:12px;}body::-webkit-scrollbar:horizontal{border-top:1pxsolid#efefef;}......
  • ASP.NET 6 修改 WebRoot 路径
    问题最近的项目中需要修改WebRoot路径,按照老方法发现报异常,于是Google得知相关方法在ASP.NET6中有所修改。代码ASP.NET5publicstaticIHostBuilderCreateH......
  • WebAssembly01-- 在js中分配内存
    编译选项emccsum.cc-osum.js-sEXPORTED_FUNCTIONS=_malloc,_freesum.cc#include"util.h"#include<stdlib.h>#include<string.h>#include<malloc.h>EM_PORT_AP......
  • datax-web运行报错“/usr/bin/python: can't find '__main__' module in ''”
    vi/usr/local/datax-web/modules/datax-executor/bin/datax-executor.sh修改JAVA_OPTS=${JAVA_OPTS}"-Dserver.port="${SERVER_PORT}"-Ddata.path="${DATA_PATH}"-D......
  • WEB简介与HTTP入门
    一、Web简介1、什么是Web学习Web安全当然要简单的了解什么是Web,Web与生活息息相关,上个网站浏览新闻,看个视频等其中涉及到几个基本的点。从通信,会接触到URL,到协议,......
  • Java Web 06
    约束:非空约束:notnull保证列中所有数据不能有null值唯一约束:unique保证列中所有数据各不相同主键约束:primarykey主键是一行数据的唯一标识,要求非空且唯一检查约......
  • Javaweb实现后端的jdbc增删改查之查询
    首先jdbc就是Java提供给数据库的接口,jdbc通过sql语句实现对数据,数据库等的操作,今天学习了通过代码实现连接数据库和对一张表的查询。1.首选的在数据库(test)中新建一张表(tb_......
  • [转] webpack devtool 配置之 Source Map
    可以参考: https://www.cnblogs.com/vigourice/p/16188899.htmlmodule.exports={mode:'development',devtool:'nosources-source-map',    ......
  • stringboot 报错 org.springframework.boot.autoconfigure.web.WebMvcAutoConfigurati
    stringboot报错org.springframework.boot.autoconfigure.web.WebMvcAutoConfigurationjava.lang.IllegalArgumentException:Couldnotfindclass[org.springfr......