SlideShare a Scribd company logo
1 of 113
Download to read offline
Взлом WordPress
Строим, ломаем, латаем
Геннадий Ковшенин
soulseekah
http://codeseekah.com
“Зарегистрированный пользователь
может совершить вход прямо на
сайте (не через wp-admin)...”
wp_signon, wp_set_auth_cookie
SELECT * FROM wp_users WHERE
user_login = “” OR SLEEP(10); # “;
SELECT * FROM wp_users WHERE
user_login = “evil0ne” OR 1=1; # “;
SELECT * FROM wp_users WHERE
user_login = “evil0ne” OR 1=0; # “;
SELECT * FROM wp_users WHERE
user_login = “evil0ne”
AND SUBSTRING((
SELECT user_pass FROM wp_users
WHERE user_login = "admin"),
1, 1) = "$"; #'; “
Схемы таблиц, данные, системные
функции
$wpdb→prepare, get_user_by
get_post, и т.д.
“Нужна регистрация на фронтэнде...”
extract( array( 'hello' => 1 ) );
echo $hello; // 1
extract( array( 'a' => 1 ), null, 'b' );
echo $a; // undefined
echo $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 + attachments
sanitize_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
Gennady kovshenin-wcrus2015-2

More Related Content

What's hot

тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложенийZestranec
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Paul Klimov
 
WordPress auto-install: просто о сложном
WordPress auto-install: просто о сложномWordPress auto-install: просто о сложном
WordPress auto-install: просто о сложномVladimir Samoletov
 
Тестирование игр: фан или тяжелый труд?
Тестирование игр: фан или тяжелый труд?Тестирование игр: фан или тяжелый труд?
Тестирование игр: фан или тяжелый труд?guest316854
 
Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Yandex
 
А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!SQALab
 
Тестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложенийТестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложенийSQALab
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Глеб Тарасов
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressRuslan Begaliev
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
 
Top 10 problems supporting Magento customers
Top 10 problems supporting Magento customersTop 10 problems supporting Magento customers
Top 10 problems supporting Magento customersaheadWorks
 
работа сайта
работа сайтаработа сайта
работа сайтаRinald Latupov
 
"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15
"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15
"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15MoscowJS
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииPaul Klimov
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5Technopark
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 

What's hot (18)

тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2
 
WordPress auto-install: просто о сложном
WordPress auto-install: просто о сложномWordPress auto-install: просто о сложном
WordPress auto-install: просто о сложном
 
Тестирование игр: фан или тяжелый труд?
Тестирование игр: фан или тяжелый труд?Тестирование игр: фан или тяжелый труд?
Тестирование игр: фан или тяжелый труд?
 
Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"
 
А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!
 
Тестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложенийТестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложений
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать жить
 
Top 10 problems supporting Magento customers
Top 10 problems supporting Magento customersTop 10 problems supporting Magento customers
Top 10 problems supporting Magento customers
 
работа сайта
работа сайтаработа сайта
работа сайта
 
"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15
"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15
"Jaggery.js — сладкие корпоративные решения", Александр Новиков, MoscowJS 15
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 

Gennady kovshenin-wcrus2015-2