1. 容器布置
docker进行布置
1.下载容器
docker pull webgoat/webgoat-8.0
2.查看
docker images
3.运行
docker run -p 8080:8080 -t webgoat/webgoat-8.0
4.查看
ip:8080/WebGoat/login
5.其他命令
#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
#启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
2.进行打靶
2.1 Path traversal
页面如下:
需要将图片上传到显示的位置。
2.1.1进行打靶
使用burp进行抓包并放包,点击update更新的时候抓包,进行修改路径就可以了。
攻击成功。
2.1.2代码审计
根据抓包头文件找到代码的位置,使用IDEA打开文件夹。
POST /WebGoat/PathTraversal/profile-upload
根据头文件找到jar包,解压jar包,再根据上面找到class文件,找到源代码。
public org.owasp.webgoat.assignments.AttackResult uploadFileHandler(@org.springframework.web.bind.annotation.RequestParam("uploadedFile") org.springframework.web.multipart.MultipartFile file, @org.springframework.web.bind.annotation.RequestParam(value = "fullName", required = false) java.lang.String fullName) { /* compiled code */ }
说明,接收uploadedFile和fullName这两个值,接收后赋值给file和fullName,然后进行执行
2.1.3打靶
重写....//
2.2.4代码审计
代码中有fullName.replace()将../转化为空了。可以使用重写绕过。
2.2 Authentication Bypasses
2.2.1打靶
将序号改为不存在的值,键名键值双重null
2.2.2审计
burp抓包找到相应源码位置,IDEA找到jar包,添加为库
发现问题,如果都接收为null,那么就可以通过