Gennady kovshenin-wcrus2015-2

113
Взлом WordPress Строим, ломаем, латаем

Transcript of Gennady kovshenin-wcrus2015-2

Взлом WordPressСтроим, ломаем, латаем

Геннадий Ковшенинsoulseekah

http://codeseekah.com

“Зарегистрированный пользователь может совершить вход прямо на сайте (не через wp-admin)...”

wp_signon, wp_set_auth_cookie

SELECT * FROM wp_users WHEREuser_login = “” OR SLEEP(10); # “;

SELECT * FROM wp_users WHEREuser_login = “evil0ne” OR 1=1; # “;

SELECT * FROM wp_users WHEREuser_login = “evil0ne” OR 1=0; # “;

SELECT * FROM wp_users WHEREuser_login = “evil0ne”

AND SUBSTRING((SELECT user_pass FROM wp_usersWHERE user_login = "admin"),

1, 1) = "$"; #'; “

Схемы таблиц, данные, системные функции

$wpdb→prepare, get_user_byget_post, и т.д.

“Нужна регистрация на фронтэнде...”

extract( array( 'hello' => 1 ) );echo $hello; // 1

extract( array( 'a' => 1 ), null, 'b' );echo $a; // undefinedecho $b_a; // 1

“Хочу публичные странички – профили!”

document.cookie, jQuery(link).click(), location.href =, и многое другое

esc_attr, esc_html, …

http://codeseekah.com/2012/03/13/wordpress-escape-functions/

“У нас на сервере 1С в сетке выгрузка накладных, надо, чтобы на нашем сайте можно было их посмотреть и скачать...”

2

wp-config.php, другой исходный код

объекты в wp_posts + attachmentssanitize_file_name

current_user_can, check_admin_referrer (nonce), Settings API

https://codex.wordpress.org/Settings_API

“Завершить безопасную сделку по одному щелчку мыши...”

Заставить заказчика пройти по ссылке ?complete=1...напрямую, CSRF - iframe, src, или Location:

wp_create_nonce, wp_verify_nonce

https://codex.wordpress.org/WordPress_Nonces

“У каждого пользователя два внутренних счета – заказчика и фрилансера. Можно между ними перекидывать денежки без проблем.”

Транзакции, межпроцессорные замки,UPDATE WHERE, и т.д.

:(

;(

Пользовательский ввод

всегда считать опасным

https://codex.wordpress.org/Data_Validation

Изучать досконально WordPress API

Защитить любое действие 'nonce'ом

Бонусили

“ой забыл в ТЗ указать, а добавь еще это...”

wp_handle_upload