常见的web中间件java框架漏洞总结
对近期的web中间件漏洞进行了解。因此我对常见的web中间件漏洞进行了收集以及整理。(本篇文章将持续更新)
文章目录
一、IIS
IIS6.x
IIS7.x
二、Apache
Apache HTTPD换行解析漏洞(CVE-2017-15715)
三、Nginx
Nginx 配置文件错误导致的解析漏洞
四、Tomcat
Tomcat任意文件写入(CVE-2017-12615)
Tomcat 远程代码执行( CVE-2019-0232)
log4j漏洞
shiro反序列化漏洞
struts2漏洞
一、IIS
IIS6.x
解析漏洞
原理:服务器默认不解析; 号及其后面的内容,相当于截断
*.asp;.jpg的文件会当成asp文件执行;/*.asp文件夹下的文件也会被当作asp脚本执行
另外,IIS6.x除了会将扩展名为.asp的文件解析为asp之外,还默认会将扩展名为.asa,.cdx,.cer解析为asp
修复建议:
1.限制上传的目录执行权限,不允许执行脚本
2.不允许新建文件夹
3.对上传的文件都进行重命名((时间戳+随机数+.jpg)
IIS7.x
解析漏洞
在Fast-CGI运行模式(phpinfo的server API可以看到是否开启)下,在任意文件(test.jpg)后面加上/.php,会将(test.jpg)文件 解析为php文件。
修复建议:
配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序
二、Apache
解析漏洞
Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别( 不在 mime.types文件内),则继续向左识别,直到识别到合法后缀才进行解析。
xxx.jpg.php.xxx会解析成php脚本执行
Apache HTTPD换行解析漏洞(CVE-2017-15715)
影响范围:2.4.0~2.4.29
此漏洞形成的根本原因在于$,正则表达式中$不仅匹配字符串结尾位置,也可以匹配\n或\r ,在解析PHP时,1.php\x0a将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
修复建议:
1.升级到最新版本
2.限制上传的目录执行权限,不允许执行脚本
3.对上传的文件都进行重命名((时间戳+随机数+.jpg)
三、Nginx
Nginx 配置文件错误导致的解析漏洞
对于任意文件名,在后面添加/xxx.php( xxx为任意字符)后,即可将文件作为php解析。
例:info.jpg后面加上/xxx.php,会将info.jpg以php解析。
修复建议:
1.配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序
2.如果需要使用到cgi.fix_pathinfo这个特性(例如:Wordpress),那么可以禁止上传目录的执行脚本权限。或将上传存储的内容与网站分离,即站库分离。
3.高版本PHP提供了security.limit_extensions这个配置参数,设置security.limit_extensions = .php
四、Tomcat
Tomcat任意文件写入(CVE-2017-12615)
漏洞本质是Tomcat配置文件/conf/web.xml 配置了可写( readonly=false),导致我们可以往服务器写文件
修复建议:
将readonly=true,默认为true。
Tomcat 远程代码执行( CVE-2019-0232)
影响范围:9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93
修复建议:
1.升级版本
2.关闭WEB-INF
log4j漏洞
log4j是apache开源项目,apache log4j2组件开启了日志记录功能后,凡是可以触发错误记录日志的地方,插入漏洞利用代码,即可利用成功。如果组件还包含其他系统的日志,有可能造成间接投毒。
主要原因是log4j在日志输出时,未对字符合法性进行限制,执行了jndi协议加载的恶意脚本,造成rce。
通过jndi协议访问远程服务,包含rmi,ldap,dns等协议调用,加载远程的恶意class,然后本地反序列化执行。
修复建议:
升级到最新的log4j
shiro反序列化漏洞
shiro<=1.2.4
shiro是一款常见的java框架,提供了RememberMe的功能。漏洞产生登陆时在记住我(remember me)的功能。
特征:返回包存在set-cookie=deleteMe
生成cookie:序列化 -> 使用密钥进行AES加密 -> Base64编码,最后返回客户端 remebreme Cookie
识别cookie:得到rememberMe的cookie值->Base64解码->使用密钥进行AES解密->反序列化
无论是否升级,密钥一旦泄露,就会导致反序列化漏洞。
修复建议:
不能使用网上的密钥,自己base64一个AES密钥,利用官方提供的方法生成。升级到1.2.4版本以上,使用动态密钥。
struts2漏洞
struts2是一款java web框架,页面一般以.action结尾。
处理 action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL语句,访问靠#号区分,使用(\u0023)能绕过#号过滤。
修复建议:
最简单是更新到最新版本
反序列化漏洞
原理:程序在进行反序列化的时,会自动调用例如__wakeup(),__destruct()等函数,如果传入函数的参数可以被用户控制的话,用户就可以输入一些恶意代码到函数中执行,从而导致反序列化漏洞。
phar文件反序列化(不需要反序列化函数)
phar文件本质上是一种压缩文件,会以序列化的形式存储用户自定义的meta-data。当受影响的文件操作函数调用phar文件时,会自动反序列化meta-data内的内容。(漏洞利用点)
利用:
1、phar上传到服务器(需要文件上传)
2、有可用的魔术方法
3、文件操作函数的参数可控
修复建议:
不要把用户的输入或者是用户可控的参数直接放进反序列化的操作中去。
在进入反序列化函数之前,对参数进行限制过滤。
常见的web中间件java框架漏洞总结相关推荐
- java 框架漏洞网站_在分层架构下寻找java web漏洞
web开发应用程序(网站),是目前应用最广泛的程序.但是开发者的水平参差不齐,导致了各种各样web漏洞的出现.本文站在分层架构的角度,分析一下如何在java web程序中找到可能出现的种种漏洞. 本文 ...
- java框架漏洞_Spring 框架漏洞集合
虽说是Spring框架漏洞,但以下包含并不仅Spring Framework,Spring Boot,还有Spring Cloud,Spring Data,Spring Security等. CVE- ...
- Java:2022年最流行的Web开发Java框架
在2022年,你可以看到Java仍然是世界上最流行的编程语言之一.Java不仅是最流行的计算机编程语言之一,它还是一个平台.平台是帮助创建和运行用任何编程语言编写的程序的环境.此外,已经设计了各种框架 ...
- Linux中常见的web中间件
一.Tomcat 适用于本地开发的小项目或个人开发项目,运行JSP页面和Servlet,tomcat更符合企业级环境tomcat比Apache的为HTML页面服务略逊一筹,处理静态页面能力不足. 1. ...
- 常见web中间件及其漏洞
目录 Web中间件 常见的Web中间件: Php中间件漏洞 Apache: Nginx: IIS漏洞 JAVA中间件漏洞 Tomcat: WebLogic: Web中间件 一类能够为一种或多种应用程序 ...
- 常见的Web应用中间件(基于Linux)
在整理常用的Web中间件时,我发现自己对于Web服务器.Web中间件和Web容器的概念容易混淆,所以在整理常见的Web应用中间件时,我想先区别一下Web服务器.Web中间件和Web容器. Web服务器 ...
- Java Web中间件
目录 中间件 常见的web中间件有哪些 Tomcat Weblogic Jboss Jetty Webshere Glasshfish 中间件 我们经常会看到中间件,但是,一直好奇的是,中间件到底是什 ...
- WEB | 文件上传漏洞
做了一道关于文件上传的webCTF题,就想着系统地把文件上传漏洞的知识点整理一下,方便日后查阅. 一.什么是文件上传? 文件上传包括了上传头像,上传相册,上传附件,添加新闻图片,自定义主题背景,新闻投 ...
- web服务器、Web中间件和Web容器的区别(转载)
目录 查看全文 http://www.taodudu.cc/news/show-4922474.html 相关文章: Web 中间件漏洞 WEB常见中间件漏洞原理 Java Web中间件 Web中间件 ...
最新文章
- 简约而不简单的Django新手图文教程
- 2019寒假纪中集训总结学期总结(流水账)
- ElasticSearch集群安装,Kibana安装,Logstash安装,Logstash-input-plugin-jdbc的配置使用
- require 动态加载_require,exports,module.exports和import,export,export default
- Spring Resource和ResourceLoader源码解析
- C语言丨求两个正整数的最大公约数
- 力扣5.8每日一题——状压dp
- 杭电OJ 11页2025//查找其中的最大字母,在该字母后面插入字符串“(max)”
- 英文word文件怎样全篇翻译成中文?
- 计算机代表数字的通用码是什么,数字信息在计算机中的表示及编码.ppt
- a-card标签中的文字不能垂直居中
- 华为发布海思麒麟950:神兽决斗跑分琅琊榜,麒麟压得过骁龙?---ESM
- Freemarker静态页面使用方法详解+指令
- Continued Fraction翻译
- java 加载gif_android使用giflib加载gif
- 分库分表:订单中心,多key业务如何进行数据库切分
- java 杰表_【汉王OCR和杰表sdk(web报表二次开发包,java语言) 2.8哪个好用】汉王OCR和杰表sdk(web报表二次开发包,java语言) 2.8对比-ZOL下载...
- android实现大文件断点上传
- 分享网页文章到微信时如何自定义缩略图、链接、标题和摘要
- 网络视频任你搜 — Google(谷歌)推出视频搜索
热门文章
- multiset upper_bound() 与 lower_bound()
- 计算机语言低下限高上限,2018年各地高考作文嘤酱不负责的胡乱哔哔
- 局域网内PC通过笔记本共享上网
- spring cloud hystirx熔断器
- Tensorflow基础4:run()函数
- 【C++进阶】第二十篇——map和set(map和set的用法+multimap+multiset+map和set代码实现)
- 帝企鹅变形记:腾讯发展的秘密
- Jenkins+GitHub报错hudson.plugins.git.GitException: Failed to fetch from GitHub 443
- 用PL/SQL Developer创建图书表
- win8计算机不显示视频图标,如何解决Win8.1桌面图标显示不正常的问题?