SlideShare une entreprise Scribd logo
1  sur  49
Чести проблеми в сигурността
      на уеб проектите

        Веселин Николов
            @dzver
За мен

   ●   Работя с компютри
   ●   Automattic
   ●   WordPress.com
Предистория
WordCamp Sofia
WordCamp Sofia
WordCamp Sofia
WordCamp Sofia
WordCamp Sofia




        - Хакнах си сайта
Сигурност
1. Пароли и хешове
2. XSS
3. XSRF
4. SQL Injection
Пароли
Пароли и хешове




          >30%
От сайтовете ползват пароли в
          явен вид.

http://readwrite.com/2009/12/16/rockyou_hacker_30_of_sites_store_plain_text_passwords
... и някой знае паролата ви.
Пароли и хешове
1. Пароли
Лоша идея: ...SET pass='$pass'
Лоша идея: md5( $pass )


Добра идея: crypt с добър алгоритъм,
случайна сол към всяка парола.
Пароли и хешове
Пароли и хешове
2. Нещо предвидимо + md5 без сол
md5( $user . $password );
Rainbow tables
Google attacks (Tonimir - @kisasondi)


3. md5 по нещо предвидимо
md5( $user_id )
Пароли и хешове
4. Забравени debugs
error_log( print_r( $_POST ) )
wp_mail( ..., ..., print_r( $_POST ) )
Таблици с дебъг информация
Той съхраняваше пароли в явен вид
Той ползва md5( $password );
XSS
XSS
  Име: <?php echo $_GET['name']; ?>


http://myproject.com/index.php?name
=<script>alert(1);</script>
XSS
XSS
●   Изпълняване на код от името на сайта
●   Кражба на login cookies
●   Кражба на лична информация
●   Deface, ако сте късметлии
XSS
<?php echo $name; ?>


vs


<?php echo esc_html( $name ); ?>
XSS
    В WordPress:
●   esc_html (~htmlspecialchars)
●   esc_url
●   esc_attr (~htmlspecialchars)
●   esc_js
XSS
Често срещани проблеми:
1. Непочистен output
2. Погрешна употреба на функции
3. Липса или неправилна валидация
4. Правописни грешки
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
Същото с валидация на URL – script src
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
Неправилна валидация на URL
3. Точката в RegExp е wildcard.

if ( preg_match ( '!^https?://(www.)*good-host.com/js/!i',
$myjs) ...
// $myjs = http://wwwwgoodhost.com/js
XSS
Неправилна валидация на URL
4. Позволен / в хост-а

if ( ! preg_match( '!^https?://[^.]+.whatever.com/.+$!i',
$url ) )
// $myjs = 'http://3254656436/or.whatever.com/evil.js'
// $myjs = '<script.../.whatever.com/'
XSS
Бонус - printf вместо sprintf / погрешен ред

echo htmlspecialchars( printf( $name ) )
XSS
Безопасно ли е това:

<script>
    var a = '<?php echo $_POST['a']; ?>'
</script>



                       ?
XSS + XSRF
Не е.

<form action=”http://good-host.com”>
  <input name=a value=”'; alert(7)//”>
</form>
<script>
  document.forms[0].submit()
</script>
XSRF
<img   src=”http://dzver.com/admin/?action=delete_user&id=17”>
Защита от XSRF
XSRF
Nonces - cryptographic number used only once


В WordPress:

$nonce= wp_create_nonce( 'my-nonce' );
$url = “...&nonce=$nonce”


if ( ! wp_verify_nonce( $nonce, 'my-nonce' ) )
   wp_redirect()
XSRF
Понякога трябва да си имплементирате
nonces сами

generate_nonce( $id ) {
    if ( empty( $_SESSION['nonces'][$id] ) )
       $_SESSION['nonces'][$id] = md5( salt .
       mktime() );
}
verify_nonce( $id, $nonce ) {
    return !empty( $_SESSION['nonces'][$id] ) &&
       $nonce == $_SESSION['nonces'][$id]
}
Eval, Extract и прочие
    Специфики за PHP програмисти
●   eval( “something_clever( {$_GET['a']}” )
●   extract( $_GET['a'] )
●   create_function( “return 7 == $_GET['a']” )
●   ``, system, assert, include, preg_replace
●   Много други.

    http://stackoverflow.com/questions/3115559/exploitable-php-functions
Пример
$sql = sprintf( “UPDATE users SET password
= '%s' WHERE user_id = %d”,
    $_POST['password'],
    $_SESSION['user_id'] );


mysql_query( $sql );
SQL Injection




        PREPARE
В WordPress имаме $wpdb->prepare
●
Защита
●   Не вярвайте на юзърски инпут
●   HTTPS
Защита
Въпроси?

Contenu connexe

En vedette

Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08camkh12
 
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentCulture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentEmily Robson
 
Introduction Apache Solr & PHP
Introduction Apache Solr & PHPIntroduction Apache Solr & PHP
Introduction Apache Solr & PHPHiraq Citra M
 
Nimda Worm
Nimda WormNimda Worm
Nimda WormGoaway96
 
More amazing photoshop tut
More amazing photoshop tutMore amazing photoshop tut
More amazing photoshop tutShdwClaw
 
Bracebridge’s Convergence: The 4th Pillar
Bracebridge’s Convergence:  The 4th PillarBracebridge’s Convergence:  The 4th Pillar
Bracebridge’s Convergence: The 4th PillarEmily Robson
 
Law Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaLaw Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaVijay Dalmia
 
Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing krasis
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupVeselin Nikolov
 
Determining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative SectorDetermining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative SectorEmily Robson
 
Ipr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationIpr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationVijay Dalmia
 
Amazing number3
Amazing number3Amazing number3
Amazing number3ShdwClaw
 
PowerPoint Training - The power of visuals
PowerPoint Training - The power of visualsPowerPoint Training - The power of visuals
PowerPoint Training - The power of visualsLinda Mkhize-Manashe
 
Ip It Laws Newsletter October 2010 Vaish Associates India
Ip It Laws Newsletter October 2010 Vaish Associates IndiaIp It Laws Newsletter October 2010 Vaish Associates India
Ip It Laws Newsletter October 2010 Vaish Associates IndiaVijay Dalmia
 
Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30joaovox
 
Guide for de mystifying law of trade mark litigation in India-2014
Guide for de mystifying law of trade mark litigation in India-2014Guide for de mystifying law of trade mark litigation in India-2014
Guide for de mystifying law of trade mark litigation in India-2014Vijay Dalmia
 

En vedette (18)

Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08
 
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentCulture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
 
Doug Altman 15 Jan09 V4
Doug Altman 15 Jan09 V4Doug Altman 15 Jan09 V4
Doug Altman 15 Jan09 V4
 
Introduction Apache Solr & PHP
Introduction Apache Solr & PHPIntroduction Apache Solr & PHP
Introduction Apache Solr & PHP
 
Nimda Worm
Nimda WormNimda Worm
Nimda Worm
 
More amazing photoshop tut
More amazing photoshop tutMore amazing photoshop tut
More amazing photoshop tut
 
Bracebridge’s Convergence: The 4th Pillar
Bracebridge’s Convergence:  The 4th PillarBracebridge’s Convergence:  The 4th Pillar
Bracebridge’s Convergence: The 4th Pillar
 
Law Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaLaw Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay Dalmia
 
Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal Meetup
 
Milieu
MilieuMilieu
Milieu
 
Determining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative SectorDetermining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative Sector
 
Ipr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationIpr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth Creation
 
Amazing number3
Amazing number3Amazing number3
Amazing number3
 
PowerPoint Training - The power of visuals
PowerPoint Training - The power of visualsPowerPoint Training - The power of visuals
PowerPoint Training - The power of visuals
 
Ip It Laws Newsletter October 2010 Vaish Associates India
Ip It Laws Newsletter October 2010 Vaish Associates IndiaIp It Laws Newsletter October 2010 Vaish Associates India
Ip It Laws Newsletter October 2010 Vaish Associates India
 
Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30Shn, permaculture pilot, 2008 april, 21 30
Shn, permaculture pilot, 2008 april, 21 30
 
Guide for de mystifying law of trade mark litigation in India-2014
Guide for de mystifying law of trade mark litigation in India-2014Guide for de mystifying law of trade mark litigation in India-2014
Guide for de mystifying law of trade mark litigation in India-2014
 

Similaire à Чести проблеми в сигурността на уеб проектите

Similaire à Чести проблеми в сигурността на уеб проектите (8)

5494 n nikolov_zashtita
5494 n nikolov_zashtita5494 n nikolov_zashtita
5494 n nikolov_zashtita
 
5494 n nikolov_zashtita_ppt
5494 n nikolov_zashtita_ppt5494 n nikolov_zashtita_ppt
5494 n nikolov_zashtita_ppt
 
Anti SQLi
Anti SQLiAnti SQLi
Anti SQLi
 
JavaScipt and AJAX Programming
JavaScipt and AJAX ProgrammingJavaScipt and AJAX Programming
JavaScipt and AJAX Programming
 
Web Programming with JavaScript and Ajax
Web Programming with JavaScript and AjaxWeb Programming with JavaScript and Ajax
Web Programming with JavaScript and Ajax
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BG
 
B7 t7 arrays
B7 t7 arraysB7 t7 arrays
B7 t7 arrays
 
B7 t7 arrays
B7 t7 arraysB7 t7 arrays
B7 t7 arrays
 

Plus de Veselin Nikolov

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayVeselin Nikolov
 
Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.comVeselin Nikolov
 
Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin Nikolov
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаVeselin Nikolov
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетишVeselin Nikolov
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоVeselin Nikolov
 

Plus de Veselin Nikolov (7)

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp Norway
 
Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.com
 
Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin word camp-romania-2014
Veselin word camp-romania-2014
 
Разширения
РазширенияРазширения
Разширения
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защита
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико Търново
 

Чести проблеми в сигурността на уеб проектите