中间件漏洞总结
什么是中间件中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。也就是说,关于中间件,我们可以理解为:是一类能够为一种或多种应用程序合作互通、资源
什么是中间件
中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。
也就是说,关于中间件,我们可以理解为:是一类能够为一种或多种应用程序合作互通、资源共享,同时还能够为该应用程序提供相关的服务的软件。(注意:中间件是一类软件的总称,不是单独的一个软件)
我们经常管web中间件叫做web服务器或者web容器
正常情况下一次web的访问顺序是:web浏览器---服务器(硬件)---web容器---web应用服务器---数据库服务器。
常用的中间件:
ISS、Apache、Nginx、Tomcat、shiro、WebLogic、Jboss、WebSphere等
各中间件漏洞总结:
ISS:
解析漏洞
ISS 6.x版本
基于文件名
该版本会默认把.asp;.jpg文件当成.asp文件来执行,原理是服务器默认不解析分号;后面的内容,相当于截断。
基于文件夹名
该版本.asp可以作为文件夹名且会默认将.asp/目录下的所有文件当成Asp文件解析。
该版本配置默认将.asa,.cdx,.cer解析为asp
ISS7.x版本
在fast-cgi运行模式下,在任意文件例如1.jpg后面加上/.php都会将该文件解析为php文件
PUT任意文件写入
在web服务扩展中开启WebDAV后,支持多种请求,配合写入权限可造成任意文件写入。
Apache
未知扩展名解析漏洞
Apache对后缀名的解析是从右往左进行的,当遇到未知的后缀名时,会从右往左继续寻找,直到找到合法后缀名从解析,如a.php.xxx会以php文件进行执行。
AddHandler导致的解析漏洞
当httpd-conf文件被添加
AddHandler application/x-httpd-php .php
这种情况下,只要文件名中包含.php的后缀,文件就会以php文件解析,.php可以不用是最后一个后缀,可利用这种特性构造文件名绕过上传白名单。
Httpd换行解析漏洞
影响版本:2.4.0-2.4.29
由于正则表达式不单匹配字符串的结尾位置,也可以匹配\n,\r,因此在解析php时,如1.php\x0A会被按php后缀解析,导致绕过一些服务器的安全策略。
Nginx
任意解析漏洞:
小皮面板(8.1.0.4、8.1.0.7)默认配置下存在任意文件解析漏洞:上传图片马,在图片马地址后面加/.php即可执行图片马。
此漏洞为Nginx配置所导致,与Nginx版本无关。
空字节任意代码执行漏洞:
影响版本:0.5.*,0.6.*,0.7<=0.7.65,0.8<=0.8.37
若目录下存在一个实际为php文件的a.jpg文件,可通过访问该文件,抓包,修改为a.jpg...php,在hex选项卡中将jpg后的.修改为00即可让文件依旧以php解析。该漏洞不受cgi.fix_pathinfo影响,当其为0时依旧解析。
文件名逻辑漏洞
影响版本:0.8.41-1.4.3/1.5.0-1.5.7
实现方法与上一个相类似,访问a.jpg,抓包修改为a.jpg...php,在hex选项卡中修改jpg后的两个点2e为20,00,即可以php文件解析,该漏洞不受cgi.fix_pathinfo影响,当其为0时依旧解析。
CRLF注入
这是一项由于配置不当所导致的漏洞。
Nginx文档有3个表示uri的变量:1.uri 2.document_uri 3.$request_uri
1,2表示解码以后的请求路径,不带参数,3表示的是完整的URI(没有编码)
Nginx会将1,2进行解码,导致传入%0a%0b即可引入换行符,导致CRLF注入漏洞
目录穿越
在配置Nginx别名时忘记加/,导致访问..可穿越至上级目录。
目录遍历
当配置文件中,autoindex值设置为on时,将产生目录遍历漏洞。
Tomcat
Tomcat任意文件写入(CVE-2017-12615)
环境:Tomcat/8.0.30
当配置文件/conf/web.xml配置了可写(readonly=false),即可往服务器写文件
Apache Tomcat远程代码执行(CVE-2019-0232)
影响范围:9.0.0.M1-9.0.17,8.5.0-8.5.39,7.0.0-7.0.93
影响系统:windows
启用了CGI Servlet(默认为关闭),enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)
由于JRE将命令行参数传递给Windows的方式存在错误,会导致CGI Servlet受到远程执行代码的攻击。
Tomcat+弱口令&&后台getshell漏洞
影响范围:Apache Tomcat 8
Shiro
反序列化漏洞
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
那么,Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也就十分的简单。
更多推荐
所有评论(0)