Torna indietro   Serverplan Forum > Serverplan comunica > Vulnerabilità

Rispondi
 
LinkBack Strumenti discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 22-05-2007, 21.24.21
Administrator
Amministratore
 
Data registrazione: 12-09-2002
Messaggi: 3,420
serverplan ha disabilitato la reputazione
Predefinito Sql Injection in WordPress 2.1.3

[waraxe-2007-SA#050] - Sql Injection in WordPress 2.1.3
================================================== ==================

Author: Janek Vind "waraxe"
Date: 21. May 2007
Location: Estonia, Tartu
Web: http://www.waraxe.us/advisory-50.html


Target software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

Vulnerable: WordPress 2.1.3
Patched: WordPress 2.2

http://www.wordpress.org/


Vulnerabilities:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

1. critical sql injection in "admin-ajax.php"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~

Let's have look @ source code of "wp-admin/admin-ajax.php" ~ line 6:

------------------[source code]----------------------
define('DOING_AJAX', true);

check_ajax_referer();
if ( !is_user_logged_in() )
die('-1');
------------------[/source code]----------------------

Now let's take a peek at "check_ajax_referer()"

------------------[source code]----------------------
function check_ajax_referer() {
$cookie = explode('; ', urldecode(empty($_POST['cookie']) ?
$_GET['cookie'] : $_POST['cookie'])); // AJAX scripts must pass
cookie=document.cookie
foreach ( $cookie as $tasty ) {
if ( false !== strpos($tasty, USER_COOKIE) )
$user = substr(strstr($tasty, '='), 1);
if ( false !== strpos($tasty, PASS_COOKIE) )
$pass = substr(strstr($tasty, '='), 1);
}
if ( !wp_login( $user, $pass, true ) )
die('-1');
------------------[/source code]----------------------

We can see "urldecode()" in use ...
So by using "%2527" we can deliver single quotes to "wp_login()",
effectively bypassing php's "magic_quotes" feature!

Hmm, let's proceed further:


------------------[source code]----------------------
function wp_login($username, $password, $already_md5 = false) {
global $wpdb, $error;
...
$login = get_userdatabylogin($username);
------------------[/source code]----------------------


And finally:


------------------[source code]----------------------
function get_userdatabylogin($user_login) {
global $wpdb;
...
if ( !$user = $wpdb->get_row("SELECT * FROM $wpdb->users
WHERE user_login = '$user_login'") )
return false;
------------------[/source code]----------------------

So really there seems to be exist sql injection possibility.
Now it's time for some proof-of-concept fun

------------------[PoC test]-----------------------
http://localhost/wordpress.2.1.3/wp-...dmin-ajax.php?
cookie=wordpressuser_5a136e6377f39b00c76957953df94 5db%253dx%2527gotcha
;+wordpresspass_5a136e6377f39b00c76957953df945db%2 53dx
------------------[/PoC test]----------------------

... and if WordPress sql error feedback is enabled, then we can see
nice error message:

WordPress database 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 'gotcha'' at line 1]

SELECT * FROM wp_users WHERE user_login = 'x'gotcha'

Yeah, it works!! But before testing that PoC cookie suffix must be changed
to currently valid. Here is how it goes:

Example target is: http://localhost/wordpress.2.1.3/wp-...admin-ajax.php
Base url for WordPress installation is: http://localhost/wordpress.2.1.3
And suffix is:

md5('http://localhost/wordpress.2.1.3') = '5a136e6377f39b00c76957953df945db'

And final variable names:

wordpressuser_5a136e6377f39b00c76957953df945db
wordpresspass_5a136e6377f39b00c76957953df945db

One more time: for every target must be calculated specific suffix!

OK, now about exploiting ...

It seems that blind fishing is only method for this security hole.
There is exploit, I have written in php, which will retrieve from database
WordPress admin password md5 hash within few minutes.

Get it from here:

http://www.waraxe.us/ftopict-1776.html


//-----> See ya soon and have a nice day <-----//


How to fix:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

WordPress newest version 2.2 is immune against this sql injection.
So --> http://wordpress.org/download/ <-- update it NOW!


Greetings:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

Greets to LINUX, Heintz, slimjim100, shai-tan, y3dips, Sm0ke, Chb
and all other people who know me!

Special greets goes to Raido Kerna.

Tervitusi Torufoorumi rahvale!

Contact:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

come2waraxe@yahoo.com
Janek Vind "waraxe"

Homepage: http://www.waraxe.us/


Shameless advertise:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

Axing url for easy use - http://urlaxe.com/
All about sql injections - http://sqlaxe.com/

---------------------------------- [ EOF ] ------------------------------------
Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Attivato


Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Wordpress 2.5: inserimento galleria di immagini e Internal Server Error nef PHP 5 03-04-2008 01.29.56
Vbulletin 2.X sql injection serverplan Vulnerabilità 0 26-09-2006 19.32.54
WordPress 2.0.1 Multiple Vulnerabilities serverplan Vulnerabilità 0 28-02-2006 16.51.52
Aggiornare a wordpress 1.5.1.3 guru Vulnerabilità 0 06-07-2005 10.58.47
SQL injection in Php-Nuke 7.1.0 serverplan Vulnerabilità 0 09-02-2004 22.05.30


Tutti gli orari sono GMT +1. Adesso sono le 13.23.43.


Powered by vBulletin versione 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.1.0
Traduzione italiana : www.vbulletin.it