[VIM] Verified TankLogger SQl inject by source inspection

Steven M. Christey coley at mitre.org
Fri Jan 13 18:38:02 EST 2006


re: http://evuln.com/vulns/26/description.html (CVE forthcoming)


By source inspection of TankLogger 2.4, I was able to verify the
livestock_id vector and found something related to tank_id.

********

first: researcher mentions general_functions.php but this doesn't seem
to be relevant, at least not to the vectors I examined.

second: researcher mentions showInfo.php but it doesn't have tank_id
in it at all.


1) getVar() in general_functions.php will perform an addslashes() on
   the value *only* if an optional second argument is true (default is
   false).

2) from showInfo.php:

  $livestock_id = getVar("livestock_id");
  if ($livestock_id != "") {
     $livestock = new Livestock($mysql_object, $livestock_id);

3) So, $livestock_id does NOT have an addslashes.

4) Livestock.php has the following:

    function Livestock($mysql_object, $livestock_id) {

      $query = "SELECT livestock_id, purchased_from, common_name, scientific_name, date_added, tank_id, pet_name, vendor_id,  
                DATE_FORMAT(date_added, '%M %D, %Y') AS ts FROM livestock WHERE livestock_id = '$livestock_id'";

5) Therefore since there's no addslashes, the code in #2 allows SQL
   injection.


**********

The researcher also mentions tank_id.  There was no mention of it in
general_functions.php or showInfo.php.  However, livestock.php uses a
tank_id that appears vulnerable to SQL injection in a manner similar
to livestock_id, i.e.:

- getVar without "true" second argument

- creation of Tank object with attacker-controlled tank_id

- Tank create method feeds tank_id directly into SQL query



More information about the VIM mailing list