Web漏洞靶场搭建(OWASP Benchmark)

benchmark)渗透测试切记纸上谈兵,学习渗透测试知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及法律法规的,所以我们常常需要自己搭建一个漏洞靶场,避免直接对公网非授权目标进行测试。
漏洞靶场,不仅可以帮助我们锻炼渗透测试能力、可以帮助我们分析漏洞形成机理、更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果
本次靶场选择 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-fp*sensitivity*+*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 等关键信息,实现自动打分。
demopackage 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应用。


MIT推出首个「会翻跟斗」的四足机器人,灵活性媲美体操运动员
提升ADI测量工程的堆栈挑战
苹果A17仍难超过自家M1芯片吗?
搭建做数字货币交易所平台系统开发
跑步耳机哪款好用,最好的跑步耳机骨传导式分享!
Web漏洞靶场搭建(OWASP Benchmark)
STM32裸机编程的基础知识(1)
红外光学雨量传感器的场景应用
用电炉丝制作低压电热褥,Electric mattress
Nreal发力全球市场,注册开发者已超3500个
农田环境监测系统作用
网龙华渔教育VR产品运用到教育和职业培训
RetNet架构和Transformer架构对比分析
Google Cloud 推出 TPU v5p 和 AI Hypercomputer: 支持下一代 AI 工作负载
怎样进行离心机的选购
高通放弃收购NXP,面临强大挑战
使用LoRaWAN网关快速建立本地LoRaWAN网络
INTEL展示激动人心的VR、4K视频和游戏体验
基于AT89C52单片机的语音录放系统实现
智能电力运维无人化的值守方式发生了什么变化