常见的web中间件&java框架漏洞&总结

对近期的web中间件漏洞进行了解。因此我对常见的web中间件漏洞进行了收集以及整理。(本篇文章将持续更新)

一、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、文件操作函数的参数可控

修复建议:

不要把用户的输入或者是用户可控的参数直接放进反序列化的操作中去。
在进入反序列化函数之前,对参数进行限制过滤。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值