0
点赞
收藏
分享

微信扫一扫

Web漏洞靶场搭建(OWASP Benchmark)

西特张 2022-10-13 阅读 188

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)_java_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应用。


举报

相关推荐

0 条评论