SlideShare a Scribd company logo
Security
Ruins everything on the Internet since 1920*
About me
● Веселин Николов
● Automattic
● WP от 1.2
● PHP и MySQL от 3.0
About me
● Веселин Николов
● Automattic
● WP от 1.2
● PHP и MySQL от 3.0
● Опит с IRC*
Acid Burn
● Контролира
светофарите
● Притежава 686
90-те
● mIRC, @
● MSIE хакове
● DoS, ботнети
● Проксита,
шелове, IRC
сървъри
● Confidentiality
● Integrity
● Availability
Сигурност
● Превенция
● Идентификация
● Реакция
(^^ цитирам Тони Перез)
Сигурност
● Собствения ни хардуер – компютри, рутери
● Интернет връзката
● Сървърите, които ползваме
● Пароли за достъп, ключове
● Плъгини и теми
● Нашият код
● Meatware
Компоненти
● Собствения ни хардуер – компютри, рутери
● Интернет връзката
● Сървърите, които ползваме
● Пароли за достъп, ключове
● Плъгини и теми
● Нашият код
● Meatware
Компоненти
● Thunderstrike, USB, вируси и трояни
● Software Update, Antivirus
Хардуер
● MITM, хакнати рутери, Wi-Fi,
Poodle, http
● VPN, Proxy, Software Update
Интернет
● Legacy software
● Managed hosting, админи
Сървъри
Пароли...
Пароли...
Your password is
OK, as long as
it's 6 caracters
and ends with
123.
I recommend
qwe123 :D
● 30%+ от сайтовете съхраняват
паролите в явен вид*
http://plaintextoffenders.com/about/
● Phishing, Social Engineering, Brute
Force, MITM, keyloggers, human
errors, бази данни с пароли
Пароли...
Някой някъде има списък с пароли,
които сте ползвали.
Пароли...
'my secret password' ->
● phpass:
● $P$BXT7cDEtQXkAVarv7mh8WZux1euzwI/
md5:
● a7303f3eee5f3ff1942bfbb1797ea0af
Хешове
● Използвайте силни алгоритми за
хеширане на пароли (phpass е ок
засега)
● Много внимавайте като логвате или
дебъгвате $_POST, в който може да
се съдържат пароли.
Превенция
Password Manager
За съжаление не всички потребители ще опазят паролите
си.
Права на достъп
Права на достъп
2FA
● https://wordpress.org/plugins/two-fact
● 2FA на всичките ви пощи, социални
мрежи и тн.
Плъгини и теми
● Официалните хранилища
● Не ползвайте безплатни версии на
платени теми и плъгини
Code Review
● XSS
● CSRF
● Remote code execution
● SQL injection
● Privilege escalation
● Open redirects
Code Review
● XSS
● CSRF
● Remote code execution
● SQL injection
● Privilege escalation
● Open redirects
XSS
● Има известни филтри в модерните
браузъри, тества се по-трудно
XSS
mysite.com/?ref=">HI!, ASL PLS
XSS
XSS
● Late escaping:
● esc_url, esc_attr, esc_url,
esc_textarea, esc_url_raw, ...
За какво да внимаваме
● Непочистен output
● Погрешна употреба на функции
● Неправилна валидация
● Правописни грешки
XSS
Погрешна употреба на функции
<script>
var a = '<?php echo strip_tags( $a ) ?>';
XSS
Погрешна употреба на функции
<script>
var a = '<?php echo strip_tags( $a ) ?>';
$a = “'; alert(7) //”;
XSS
Погрешна употреба на функции
<?php echo json_encode( $a ); ?>
XSS
Погрешна употреба на функции
<?php echo json_encode( $a ); ?>
http://h43z.blogspot.com/2012/06/phps-jsonencode-and-xss.html
XSS
Употреба на esc_* без валидация:
<script src="<?php echo esc_url( $js ) ?>">
където
$js = 'http://evil-project.com/js';
XSS
Неправилна валидация
1. Проверка вместо cast
if ( intval( $myfield ) )
echo $myfield;
// $myfield = '1 <script...';
XSS
Неправилна валидация на ID-та
2. Липса на ^ и $ в regexp
if ( ! preg_match( '/[a-z0-9_-]/i', $myfield ) ) {
return 'You are trying to hack me!';
}
// $myfield = '<script ...'
XSS
Неправилна валидация на адреси
2. Липса на ^ и $ в RegExp
if ( preg_match ( '!https?://(www.)*good-
host.com/js/!i', $myjs)
http://dzver.com/bad.js?http://good-host.com/js/
if ( preg_match( '!^http://good-host.com!',
$myjs )
http://good-host.com.dzver.com/
XSS
Неправилна валидация на адреси
3. Точката в RegExp е wildcard.
if ( preg_match ( '!^https?://(www.)*good-host.com/js/!i',
$myjs) ...
// $myjs = http://wwwwgoodhost.com/js
XSS
Неправилна валидация на адреси
4. Позволен / в хост-а
if ( ! preg_match( '!^https?://[^.]+.whatever.com/.+$!i',
$url ) )
// $myjs = 'http://3254656436/or.whatever.com/evil.js'
// $myjs = '<script.../.whatever.com/'
Open Redirect
Всичко, което казахме за валидация
на адреси
wp_redirect();
wp_safe_redirect();
XSS
Правописни грешки:
echo esc_html( printf( __( "My name is
%s", $name ) ) );
CSRF
Позволяване на чужд сайт да имитира
дейност от името на потребителя ни
чрез последователни request-и
Solution:
nonces
CSRF
Позволяване на чужд сайт да имитира
дейност от името на потребителя ни
чрез последователни request-и
Solution:
nonces
http://codex.wordpress.org/Function_Reference/wp_create_nonce
Code Review
● XSS
● CSRF
● Remote code execution
● SQL injection
● Privilege escalation
● Open redirects
Remote Code Execution
Някои скорошни много лоши бъгове в
плъгини, води до пълна загуба на
контрол
Remote Code Execution
eval()
create_function()
assert()
`` (backticks)
system()
Извор на проблеми
extract()
parse_str()
Remote Code Execution
preg_match( '/.../e', $_GET )
/e позволява eval върху match
RFI, LFI
include( $_GET['action'] . '.php' );
XXE
<?php
$xml = simplexml_load_file( $uploaded_file );
?>
<h1><?php echo esc_html( $xml->title );
?></h1>
XXE
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE something
[<!ENTITY awesome SYSTEM
"file:///home/www/public_html/db-config.php"
>]
>
<something>
<title>&awesome;</title>
</something>
● https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Processing
XXE
libxml_disable_entity_loader(true)
Code Review
● XSS
● CSRF
● Remote code execution
● SQL injection
● Privilege escalation
● Open redirects
$wpdb->prepare
Всяка заявка, която не използва
prepare е потенциален таргет.
$wpdb->query( $wpdb-
>prepare( "DELETE FROM wp_users
WHERE user_id = %d", $id ) );
Code Review
● XSS
● CSRF
● Remote code execution
● SQL injection
● Privilege escalation
● Open redirects
Разни
● current_user_can – всеки път,
когато се налага
● switch_to_blog – в Multisite с
повишено внимание.
Възможни защити
● Ограничаване на папки за писане до
uploads
● Инсталиране на WordPress със SVN
● Диагонален преглед на изтеглените
теми и плъгини за curly code:
eval(base64_decode("09B2459...
Възможни защити
● define('DISALLOW_FILE_EDIT', true);
● Употреба на user/db само за този сайт
● http://codex.wordpress.org/Hardening_WordPress
Плъгини, които забелязват
● VaultPress
● Sucuri
● ?
Имате нужда от между 0 и 1
Response
● Трябва да имате backup винаги
● Трябва да имате логове, за да
разберете какво се е случило
Упс.
● http://codex.wordpress.org/FAQ_My_site_was_hacked
Stay calm and use version control.
Това беше
Питайте

More Related Content

ODP
Чести проблеми в сигурността на уеб проектите
ODP
Сигурност при разработката на WordPress разширения
PDF
Drupal security lecture
ODP
Php sec
ODP
Mozllla Labs presentation
PDF
Уроците от работата ми по WordPress.com - Веселин Николов
PDF
WordPress основи в сигурността
PDF
Security without obscurity
Чести проблеми в сигурността на уеб проектите
Сигурност при разработката на WordPress разширения
Drupal security lecture
Php sec
Mozllla Labs presentation
Уроците от работата ми по WordPress.com - Веселин Николов
WordPress основи в сигурността
Security without obscurity

Viewers also liked (20)

PPT
Shn Overview Updated 2009 06 P21 23
PDF
Shn, permaculture pilot, 2008 april, 21 30
PDF
Power point training the power of visuals
PPTX
Ddd part 2 modelling qiscus
PPT
Milieu
PPT
Shn Overview Updated 2009 06 P31 36
PPTX
Cypris Chat Introduction Presentation
PPT
HRPS DC Deck
DOC
Gr8 6 3 Str
PDF
India Ip &amp; It Laws News Letter May June 2011
PPT
Peter Keating Dec2008
PPT
Pansig2010 - Cypris Chat
PDF
Shn, permaculture pilot, 2008 april, 1 10
PPT
Ipr Indian Saga Of Wealth Creation
PDF
Veselin word camp-romania-2014
PPTX
More amazing photoshop tut
PPT
Shn Overview Updated 2009 06 P11 20
PPT
Fine Art And Editorial Photography By Jim Crotty
PDF
Git WorkFlow & Best Practice
PPT
Virtual World Integration Steps for EFL in Japan
Shn Overview Updated 2009 06 P21 23
Shn, permaculture pilot, 2008 april, 21 30
Power point training the power of visuals
Ddd part 2 modelling qiscus
Milieu
Shn Overview Updated 2009 06 P31 36
Cypris Chat Introduction Presentation
HRPS DC Deck
Gr8 6 3 Str
India Ip &amp; It Laws News Letter May June 2011
Peter Keating Dec2008
Pansig2010 - Cypris Chat
Shn, permaculture pilot, 2008 april, 1 10
Ipr Indian Saga Of Wealth Creation
Veselin word camp-romania-2014
More amazing photoshop tut
Shn Overview Updated 2009 06 P11 20
Fine Art And Editorial Photography By Jim Crotty
Git WorkFlow & Best Practice
Virtual World Integration Steps for EFL in Japan
Ad

Similar to WordPress Security (20)

PDF
5494 n nikolov_zashtita_ppt
PPT
Webloz2011
PDF
5494 n nikolov_zashtita
PPT
Web and WS based Embedded Systems
PDF
Penetration testing for dummies
PPT
Php sec
DOC
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
PPT
Bezopasnost i za6tita_na_web_prolojenia
PPTX
Php security
PPT
Защита и сигурност на Joomla! сайт - Joomla! Day 2013 Bulgaria
PDF
SEO курс, лекция 11 - От заявка до рендиране
PPT
Wordcamp2011
ODP
Drupal Security
PPTX
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
PPTX
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
PPTX
Курс по уеб програмиране (2015), занятие №1 - HTML
PDF
Криптография за уеб и мобилни разработчици
PPT
безопасност и защита на Web приложения
PPTX
PHP Security
PDF
JavaScript - езикът с много приложения
5494 n nikolov_zashtita_ppt
Webloz2011
5494 n nikolov_zashtita
Web and WS based Embedded Systems
Penetration testing for dummies
Php sec
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Bezopasnost i za6tita_na_web_prolojenia
Php security
Защита и сигурност на Joomla! сайт - Joomla! Day 2013 Bulgaria
SEO курс, лекция 11 - От заявка до рендиране
Wordcamp2011
Drupal Security
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №1 - HTML
Криптография за уеб и мобилни разработчици
безопасност и защита на Web приложения
PHP Security
JavaScript - езикът с много приложения
Ad

More from Veselin Nikolov (7)

PPTX
Leadership for Developers, WordCamp Norway
ODP
WordPress Security @ Vienna WordPress + Drupal Meetup
ODP
Lessons from my work on WordPress.com
ODP
Разширения
PPT
NoSQL бази от данни - възможности и приложение, дипломна защита
PPT
20 начина да си убиеш блога, без да се усетиш
PPT
Блоговете между двата блогкемпа във Велико Търново
Leadership for Developers, WordCamp Norway
WordPress Security @ Vienna WordPress + Drupal Meetup
Lessons from my work on WordPress.com
Разширения
NoSQL бази от данни - възможности и приложение, дипломна защита
20 начина да си убиеш блога, без да се усетиш
Блоговете между двата блогкемпа във Велико Търново

WordPress Security