Web 漏洞训练平台

实验目的

  • 了解常见 Web 漏洞训练平台;
  • 了解 常见 Web 漏洞的基本原理;
  • 掌握 OWASP Top 10 及常见 Web 高危漏洞的漏洞检测、漏洞利用和漏洞修复方法;

实验环境

  • WebGoat / Juice shop
  • kali 2021.2

实验要求

  • 每个实验环境完成不少于 5 种不同漏洞类型的漏洞利用练习
  • (可选)使用不同于官方教程中的漏洞利用方法完成目标漏洞利用练习
  • (可选)最大化 漏洞利用效果实验
  • (可选)定位缺陷代码
  • (可选)尝试从源代码层面修复漏洞

WebGoat环境准备

  • 在kali上装docker建议看看这个,黄大的实验准备,免得像我一样因为课程之前下了其他版本的docker而死活搞不定compose up

    Linux谁都能参一脚搞得不同发行版之间的包乱糟糟的,以前都是听人吐槽,谁知道有天落自己头上了

  • 查看docker状态sudo systemctl status docker

  • 安装docker与docker-compose apt-get update && apt get install docker.io python3-pip pip3 install docker-compose

  • 新建工作目录并切换至工作目录mkdir workspace && cd workspace/

  • 开启docker服务 systemctl start docker

  • 下载课程所需漏洞练习环境 git clone https://github.com/c4pr1c3/ctf-games.git --recursive

  • 切换到相应目录下cd ctf-games/

  • 单独更新子模块 git submodule init && git submodule update

  • 启动 webgoat 系列服务 cd owasp/webgoat/ && docker-compose up -d

友情提示,之前要是像我一样是傻乎乎的不管啥版本号不版本的就随便乱装了docker,可以用sudo apt-get remove docker docker-engine docker.io卸载docker再重装……据我重装的信息显示,随便搞的和好好整的这两者之间差了150MB左右

再友情提示,别用阿里云的源 (¬_¬ ) 中科大或者清华的都行,不然你会在compose up的时候卡在3d725b7d6111这个包上死活下不了就是不停retry

  • 查看当前容器状态是否正常 docker ps,确保是healthy

http://127.0.0.1:8087/WebGoat/login for webgoat 7.1

http://127.0.0.1:8088/WebGoat/login for webgoat 8

sudo lsof -i 4 -P -n -L [| portcode_like_8080]查看当前端口占用情况[或特定端口占用情况]

关于firefox原生代理管理不能走到burpsuite上的问题,在后面会有讲解。谁知道搞个环境就花了我几个小时呢…真的是能踩的坑都踩完了


实验过程

WebGoat 8.0

General

HTTP Basics
  • 提示还是挺明显的,问题是这是POST还是GET报文以及magic number,F12查看报文,发现是POST,数字则直接在前端搜索一下magic就好了


​ 点击"Go!",提示你已经解决了这个问题

看到这里我直接PTSD,所以这就是一个没有积分榜的CTF平台是吗

Authentication Flaws

Secure Passwords
  • 这就是一个在线密码强度测试器,输一个足够复杂的密码就可以了

Cross-Site Scripting(XSS)

Cross Site Scripting
  1. 第二页题目翻译:打开一个新的标签页,试试看cookie一个域是不是一样的,你可以在新的标签页下,使用JavaScript:alert(document.cookie);替换地址栏中的内容

    • 回车后发现完全没有任何改变,说明是正确的,输入yes即可
  2. 第七页题目翻译:哪些字段更容易遭受攻击?

    • 信用卡处输入"<script>alert('It is your card')</script>"(注意带引号,否则不成功);而在3位访问码那里就没效果
  3. 第十页题目翻译:在start.mvc#lesson/ 的基础上找后续路径

    • 在前端源代码里面用route关键词一个个找,start.mvc#test

做到这我差不多回过味了,这个其实不是CTF,更像是一个教学平台,教你哪些地方的漏洞多容易被攻击

  1. 第十一页:通过上一题的路径获得函数的正确路径,也就是phoneHome函数并运行,通过F12获得代码的运行结果,输入输入框http://127.0.0.1:8088/WebGoat/start.mvc#test/%3Cscript%3Ewebgoat.customjs.phoneHome()

    • 结果是-620174399
  2. 第12页答题即可,不多赘述了
Cross Site Scripting(stored)

还是注意看题,评论里有提示让我们用phoneHome函数,照图上输入<script>webgoat.customjs.phoneHome()</script>会评论一个空白的评论,这时F12查看返回的数据,就能获得正确的数据了,将得到的数据submit即可


WebGoat 7.1

General

HTTP Basic
  • 输入框输入guest点击GO!,发现输入框里的内容反序变成倒序的内容
  • 输入框内为tseug,再次点击GO!,成功

说实话不是很清楚这道题想干嘛

Access Control Flaws

Using an Access Control Matrix
  • 题目翻译:失败的基于角色的访问控制方案可能允许用户执行他/她所分配的角色不允许的访问,或者以某种方式允许权限升级到未授权的角色。
  • 多换俩人随便用public试试,框上方会有提示这人的身份是什么,看到Larry具有Account manager权限,试一试就行了

Stage 1:Bypass Business Layer Access Control
  • 题目翻译:作为普通员工“tom”,利用弱访问控制来使用“职员列表”页面中的“删除”功能。验证可以删除汤姆的个人资料。
  • 自己尝试哪个用户登录的时候能找到删除按钮,我自己试出来Jerry作为hr是可以的

  • 用burpsuite拦截下来操作,发现最重要的东西其实是这个删除简历操作标识action=DeleteProfile,drop这个操作,再以tom的身份登录,执行view的时候拦截操作,把最后一句换成action=DeleteProfiletom就能删掉自己了

Stage 3:Breaking Data LayerAccess Control
  • 题目翻译:作为普通员工“tom”,利用弱访问控制来查看其他员工的个人资料。
  • 还是用burpsuite对viewprofile操作按钮进行抓包分析可知通过修改employee_id值便可以实现对其他人简历的访问,我自己在以tom的身份登录之后,在返回员工列表的时候拦截操作,将id改成101就能得到通过的小绿标;尝试过不少次,发现权限确实只与id值有关,普通员工tom通过修改id值(比如经理moe的id值,101)可以越级访问hr,manager以及admin的简历。

Authentication Flaws

Password Strength
  • 在所给网站测试破解密码的时间,输入结果,但是吧,首先它给的网站太老了,会被引导跳转到另外一个网站去,所以这个结果就出了点问题,比如输入123456,它的反馈是"立刻",我哪知道立刻是多久啊……试着填了0进去,但是不对,其他的答案也是,我估计是因为webgoat 7.1构建的时间比较古早了,或者最近网站更新太勤快了,这题作废

Forgot Password
  • 直接看题目要求,说现在你的用户名是webgoat,最爱的颜色是红色,要找出另外一个用户的答案,直接暴力尝试,试到绿色的时候就成功了

Multi Level Login2
  • 题目翻译:已知Joe的身份(Joe有一个有效的webgoat金融账户),作为Jane登录。
  • 用Joe登录系统,填写完Tan#1之后,使用代理拦截HTTP请求,修改hidden_user的值为Jane再转发就可以了

Multi Level Login1
  • 题目翻译:用户名密码都知道了,第一个tan也知道,但是第一个tan被用过了,不管怎样想办法黑进去吧
  • Janetarzan登陆后,要求你输入的tan是第三个,但问题不大,就输入tan1的值15648,提交时用burpsuite拦截下来,将tan的次数换成1就可以了

Code Quality

Discover Clues in the HTML
  • 提示的很明显了,直接F12网页源代码搜一下sign就找到注释的用户名密码admin adminpw,提交就成功

到这里webgoat就差不多了,有时间再做吧……

Juice Shop

  • 切换到相应目录 cd workspace/ctf-games/owasp/juice-shop
  • 启动juice-shop系列服务 docker-compose up -d
  • 查看当前容器状态 docker ps

one star part

Score Board
  • 找到隐藏的计分板页面,点击网站的选项卡,注意观察url的格式变化,推测出score board访问的url后缀为score-board,直接http://127.0.0.1:3000/#/score-board完事,正式开始

悄悄看了一眼网上大佬的解决方案,据说可以从源码中找到score-board的路径,但是我没找到

Confidential Document
  • about us页面发现一个鬼迷鬼眼的链接,直接点击是不行的,因为你会真的跳转到他们"无聊的法律说明"去;用F12审查元素,发现文件存储路径ftp/,访问该路径,就可以发现并下载acquisitions.md机密文件

注意/ftp这个路径,后面要考(bushi

Bully Chatbot
  • 真的是题如其名,不断发送coupon code霸凌它(指chatbot)以此获得优惠券

多一句嘴,太有意思了hhhhhh

Bonus Payload
  • 在搜索框输入题目所给的代码即可
<iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/771984076&color=%23ff5500&auto_play=true&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true"></iframe>
DOM XSS
  • 跟上面那题相似,直接在搜索框粘贴给的代码

two star part

Admin Section
  • 要我们绕过登陆验证,以管理员身份登陆商店,而且说比计分板藏得更深,那就还是查源代码的套路,关键词admin,确实找到了相关的路径,但是你直接输入是不行的,会显示你没有权限,那应该就是SQL注入的套路了

  • 在用户名一栏敲个’,密码随便,发现抛出了一个异常,居然还给了我一个引发错误的奖励,也就是一星的Error Handling

  • 用burpsuit抓取一下服务器的返回,在proxy栏下的http history里面分析后端的报错信息。分析可知在用户名处输入万用金句' or 1=1 --即可使后端的SQL表达式变为"SELECT * FROM Users WHERE email = '' or 1 =1 -- AND password = ...

Five-Star Feedback
  • 删除顾客的五星评价,前提是已经登陆了administration账户
  • administration页面(也就是上图)第一个五星评价旁边点一下垃圾桶标志即可成功删除,属于是顺道拿分了,就不多做截图了
Zero Stars
  • 尝试提交零星评价,但是点进customer feedback发现最低允许提交的评价为1星
  • 用burpsuite拦截一下评分操作,把rating改成0就行了


Weird Crypto
  • 让你在页面内提交一个不安全的密码算法,这给我整不会了,还是在评论的那一个页面,随便输一个sha-1试一试,不行,换个des,也不行,反正试了不少个,最后试了一个md5成功了

Forgotten Developer Backup && Forgotten Sales Backup
  • 要求访问http://127.0.0.1:3000/ftp/路径下不被允许文件格式的备份文件coupons_2013.md.bakpackage.json.bak,通过加入后缀%2500.md%2500暴力截断后缀名,绕过限制。

Easter Egg
  • 要你找到他们藏起来的复活节彩蛋
  • 通过上一个实验发现在/ftp下有一个eastere.gg的不知名文件,盲猜和复活节有关系,通过%2500,得到一段加密字符串: L2d1ci9xcmlmL25lci9mYi9zaGFhbC9ndXJsL3V2cS9uYS9ybmZncmUvcnR0L2p2Z3V2YS9ndXIvcm5mZ3JlL3J0dA== 那看到双等号肯定就是base64了嘛

  • 解码得到: /gur/qrif/ner/fb/shaal/gurl/uvq/na/rnfgre/rtt/jvguva/gur/rnfgre/rtt 但是直接访问是错的,上网搜了一下题解得知需用ROT13解密,最后得到解码的地址:/the/devs/are/so/funny/they/hid/an/easter/egg/within/the/easter/egg

遇到的问题

  • 在参照视频使用burpsuite时特别要注意,直接用firefox的原生代理服务配置是不行的,burpsuite中不会出现有关webgoat的相关记录,原因不明,解决方法是安装插件,例如foxyproxy

  • 当然还有第二个解决办法,来自一篇博客,通过修改firefox的设置来关闭忽略本地地址代理的设置

就写到这吧……要是哪天心血来潮再说

参考链接

安装docker遇到问题时或许有用

还不换kali源?

往届作业

历史最全 WebGoat 8.0 通关攻略

国外博主的Juice shop做题博客

Web 漏洞训练平台学习笔记(webgoat juice shop)相关推荐

  1. frustum pointnets训练代码学习笔记——kitti_object.py

    frustum pointnets训练代码学习笔记--kitti_object.py 本文记录了博主学习frustum pointnets过程中遇到的2D和3D数据库显示程序.为了画出输出结果,博主希 ...

  2. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

  3. 国产WEB漏洞测试平台——MST

    国产WEB漏洞测试平台--MST Mst是一款Python2.7编写的小漏洞利用平台,可运行在windows | Backtrack | maxosx 等系统,专注于web漏洞的测试和各种利用插件的编 ...

  4. 云平台学习笔记(三)-实践

    一.实验目的 本实验目的: 1.熟练克隆虚拟机: 2.熟练配置域名解析 3.学会配置 Chrony: 4.学会安装 OpenStack 基础框架: 5.学会安装 Mariadb 数据库 6.熟练为虚拟 ...

  5. 迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项

    前面一直用T5UID3平台的屏幕开发,但是吐槽下<DWIN C Compiler 1>编译器bug太多,项目能不能做好,全靠运气:售后说T5L平台支持keil开发,我感觉挺好,于是从新学习 ...

  6. 各种Web漏洞测试平台

    为什么80%的码农都做不了架构师?>>>    Sqli Lab ​支持报错注入.二次注入.盲注.Update注入.Insert注入.Http头部注入.二次注入练习等.支持GET和P ...

  7. web漏洞“小迪安全课堂笔记”SQL注入

    文章目录 前言 SQL注入是什么? 注入原理 数据库结构 mysql数据库 参数类型 请求方法 如何判断注入点? 判断注入 1.信息收集 2.数据注入 3.高权限注入 魔术引号开关 跨库注入 获取所有 ...

  8. Web缓存中毒(web cache poisoning)学习笔记

    笔者burpsuite的在线安全学院的web cache poisoning学习笔记.限于本人水平,笔记质量不是很高,假如有看到的大佬轻喷,很多地方是Google翻译的. 首先推荐篇翻译的文章,方便理 ...

  9. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  10. 自研分布式web漏洞扫描平台WDScanner

    WDScanner 为了能在漏洞爆发后快速形成漏洞检测能力,同时能对网站或主机进行全面快速的安全检测,Tide安全团队(www.tidesec.net)开发了一套简单易用的分布式web漏洞检测系统WD ...

最新文章

  1. 电子商务中遇到组合搜索的问题
  2. vba 在光标插入文字_VBA学习入门方法!Office Excel教程 Excel入门 Excel技巧 Excel学习!...
  3. 和可被 K 整除的子数组
  4. 推荐系统算法_CUCS | 推荐系统算法简介Matrix Factorization(矩阵分解)
  5. Nokia Lumia(WP7.5) 新手入门的摸索
  6. 快速排序及快速选择问题
  7. 最全的芯片封装技术详细介绍(珍藏版)
  8. swfobject2.2
  9. error: binding reference of type int to const int discards qualifiers
  10. 微信网页版扫码登录原理
  11. 腾讯云云通信TLS后台API在mac上JAVA DEMO搭建
  12. 山西大学计算机学院的导师,王文剑(计算机与信息技术学院)老师 - 山西大学 - 院校大全...
  13. 64位系统究竟牛逼在哪里?
  14. 进公司两个月了还没上手项目_27个“经验证且易于上手”的赚钱在线业务创意
  15. android 模拟手指点击,『Android Tip』-- 模拟手势操作
  16. LintCode 数字组合 题解
  17. 【C操作符】详解操作符
  18. Linux NFS网络文件系统
  19. python读写大文件excel_python 读写 Excel文件
  20. 提醒事项 android,每日提醒 Pro-提醒事项、时间管理待办清单

热门文章

  1. 数据库系统管理(选择 记录)
  2. xy苹果助手未受信任_苹果ios企业签名后App无法安装?如何解决?
  3. 华为主题引擎怎么下载_华为搜索引擎app
  4. 金蝶K3添加触发器实现-生产领料单打印即时库存
  5. 08:判断一个数能否同时被3和5整除
  6. Go语言的strings包字符串处理二之字符串操作函数
  7. SpringCloud Alibaba微服务实战一 基础环境准备
  8. ssh-keygen命令使用
  9. 015-lissajous server
  10. 靠这个方法,我终于月入3万!