山东大学软件学院项目实训-创新实训-山大软院网
家电修理 2023-07-16 17:23www.caominkang.com电器维修
目录
- 前言
- 2、项目配置
- 3、编写XSS漏洞后端代码
- 3.1、反射型XSS
- 3.2、存储型XSS
- 3.3、修复后的安全代码
- 4、编写XSS漏洞前端代码
- 4.1、反射型XSS
- 4.2、存储型XSS
- 5、运行测试
- 5.1、反射型XSS漏洞测试
- 5.2、存储型XSS漏洞测试
- 5.3、修复后测试
前言
继上一篇博客,本篇博客记录下实际搭建XSS漏洞靶场环境。
2、项目配置
前端使用vue框架,后端使用springboot框架搭建
pom.xml
.apache.tomcat.embed tomcat-embed-jasperprovided javax.servlet jstl.mybatis.spring.boot mybatis-spring-boot-starter2.2.2 mysql mysql-connector-javaruntime .projectlombok lomboktrue .baomidou mybatis-plus-boot-starter3.5.1 .hutool hutool-all5.7.20 .auth0 java-jt3.10.3
vuevue.config.js
// 跨域配置 module.exports = { devServer: { //记住,别写错了devServer//设置本地默认端口 选填 port: 8080, proxy: { //设置代理,必须填 '/api': { //设置拦截器 拦截器格式 斜杠+拦截器名字,名字可以自己定 target: 'http://localhost:9090', //代理的目标地址 changeOrigin: true, //是否设置同源,输入是的 pathRerite: { //路径重写 '^/api': '' //选择忽略拦截器里面的内容 } } } } }
3、编写XSS漏洞后端代码
经过小组讨论,我们决定实现反射型XSS漏洞和存储型XSS漏洞两个基本漏洞的靶场,对于反射型XSS漏洞,其实现较为简单,仅需将用户从前端输入到后端的payload返回到前端渲染,不进行过滤,即可构造XSS漏洞靶场。对于存储型XSS,可以通过将用户输入的payload存储到数据库中,待其他用户访问取出,即可触发XSS漏洞,类似于评论的功能点易出现此类型漏洞。我们采用存储到cookie的方式来实现存储型XSS漏洞,其基本原理与存储到数据库类型相似。
3.1、反射型XSSpackage .sducsrp.csrp.controller.BUGcontroller; import .sducsrp.csrp.mon.Constants; import .sducsrp.csrp.mon.Result; import .springframeork.stereotype.Controller; import .springframeork.util.StringUtils; import .springframeork.eb.bind.annotation.; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; @RestController @RequestMapping("/xss") public class XssController { @PostMapping("/reflect") public @ResponseBody Result reflect(@RequestBody String xss) { System.out.println(xss+":ok1"); Result res=ne Result(Constants.CODE_200,null,xss); return res; }
3.2、存储型XSS
漏洞代码
@RequestMapping("/stored/store") public @ResponseBody Result store(@RequestBody String xss, HttpServletResponse response) { Cookie cookie = ne Cookie("xss", xss); response.addCookie(cookie); Result res=ne Result(Constants.CODE_200,null,"Set param into cookie,访问/stored/sho验证一下"); return res; }
验证代码
@RequestMapping("/stored/sho") public @ResponseBody Result sho(@CookieValue("xss") String xss) { System.out.println(xss); Result res=ne Result(Constants.CODE_200,null,xss); return res; }
3.3、修复后的安全代码
@RequestMapping("/safe") @ResponseBody public static String safe(String xss) { return encode(xss); } private static String encode(String origin) { origin = StringUtils.replace(origin, "&", "&"); origin = StringUtils.replace(origin, "<", "<"); origin = StringUtils.replace(origin, ">", ">"); origin = StringUtils.replace(origin, """, """); origin = StringUtils.replace(origin, "'", "'"); origin = StringUtils.replace(origin, "/", "/"); return origin; }
4、编写XSS漏洞前端代码
前端采用vue框架
4.1、反射型XSS反射型XSS 该页面存在反射型XSS漏洞,能否构造payload,使得页面出现弹窗?
submit
4.2、存储型XSS
存储型XSS 该页面存在存储型XSS漏洞,能否构造payload,使得页面出现弹窗?
submit
点击按钮访问/stored/sho
点击访问
5、运行测试 5.1、反射型XSS漏洞测试
进入反射型XSS
输入payload
发现弹窗,XSS漏洞验证成功。
5.2、存储型XSS漏洞测试
进入存储型XSS
输入payload
访问/stored/sho验证
出现弹窗,存储型XSS验证成功。
5.3、修复后测试
访问修复的代码http://localhost:8080/xss/safe
get请求
xss=
发现并没有将输入的内容解析,成功修复XSS漏洞代码。
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工