SlideShare uma empresa Scribd logo
1 de 32
29/06/2013
Sobre
- Dev PHP desde 2003
- Segurança da Informação 2007
- Foco em Desenvolvimento Seguro
- Membro PHPSP
- Motociclista
Mas, por que alguém me ‘atacaria’?
Muitos Page Views significa...
... que muita “gente” visita aqui!
(serious?)
Selia ótimo colocar um banner
maloto aqui para vender naiki!
(Chinês da galeria)
... Ou distribuir um malwarezinho!
Qualquer maldade que eu quiser
espalhar vai alcançar muita gente em
um curto espaço de tempo.
Mas, por que alguém me ‘atacaria’?
“Conteúdos que agradam alguns e
desagrada a muitos pode ‘encorajar’
um troll a fazer trollices.”
“ScriptKiddies – Cumprindo
ordens, ou simplesmente testando
um script que ‘hackeia as coisa
tudo’!”
Mas, por que alguém me ‘atacaria’?
Votações e Concursos Culturais são
ótimos para eles “desvirtuarem” os
resultados!
Já parou para pensar que alguém
pode ter raiva de você!? Ou não vai
com a sua cara?!
Ativos de interesse para Hackers
- Processamento (BotNet)
- Throughput de saída (DDoS)
- Distribuição de Trojan
- Pivoting
- Phishing
- Envio de Spam
- E se tiver algo de “valor”, levamos também!
hehe
Mas, por que alguém me ‘atacaria’?
WPScan o/
Principais focos de problemas
Plugins Temas
Infra
Má administração
Falta de processos
Negligências
Desenvolvimento
Carência de “senioridade”
RTFM
Teste (ñ deixe warnings
passar)->DEBUG
Full Path Disclosure
• Caracteriza-se por alguma merda falha de
programação que ocasione um Warning ou
Fatal Error no PHP (mensagem de Debug).
• Com isso o caminho (path) inteiro (full) do
arquivo de script dentro do servidor é
revelado (disclosure).
Full Path Disclosure
Então é isso que
o SEO faz!
Full Path Disclosure
Dá para fazer plugin com uma linha (LOC)...
... E vulnerabilidade também!
Full Path Disclosure
Directory Listing
... Falando em infra!
.htaccess do Akismet!
-----------------------------------
Order Deny,Allow
Deny from all
<FilesMatch "^akismet.(css|js)$">
Allow from all
</FilesMatch>
#allow access to any image
<FilesMatch "^(.+).(png|gif)$">
Allow from all
</FilesMatch>
Corrigindo o plugin de uma linha
<?php
if (!function_exists(‘add_action’)) {
die(‘<!-- mahhh oeeee -->’);
}
/* comments */
add_filter( ‘xmlrpc_enabled’, ‘__return_false’);
//?>
Com essa validação, caso o script seja chamado direto pelo browser. A função
“add_action” não terá sido definida e consequentemente o script irá parar, não
exibindo o erro/warning com o path do arquivo no servidor. Rá!
Caso recente de vulnerabilidades
Caso recente de um plugin que está ganhando evidência
Referência:
http://www.osvdb.org/show/osvdb/93582
http://www.waraxe.us/advisory-104.html
http://wordpress.org/extend/plugins/spider-event-calendar/
14
Vulns
XSS – Cross-site Scripting
• Ocorre quando um atacante consegue por
meio de uma falha, inserir código malicioso
para ser executado no browser do usuário
• https://www.owasp.org/index.php/Cross-
site_Scripting_(XSS)
Nenhuma validação, “dereto” para o BD
XSS
<a title="Manage Events" class="row-title"
href="admin.php?page=SpiderCalendar&task=show_manage_event
&calendar_id=<?php echo $rows[$i]->id; ?>"><?php echo $rows[$i]-
>title; ?></a>
Título salvo como:
</td><td></td><td></td></table><h1><marquee>XSS
rá</marquee></h1>
XSS – Crossite Scripting
DOM Based XSS
Stored XSS
Reflected XSS
XSS – Crossite Scripting
DOM Based XSS (https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OWASP-DV-003))
Stored XSS (https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OWASP-DV-002))
Reflected XSS (https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OWASP-DV-001))
XSS – Crossite Scripting
Blz, então dá para ficar fazendo
um monte de alert! Fantastic!
E eu já sei que o cookie deve ser
setado com as flags HTTPOnly e
SecureOnly.
Eu vou ficar te trollando via
JavaScript e vc não vai nem saber!
hehehe
http://beefproject.com/
SQL Injection
Armazenamento sem validação eficiente (somente title era input text)
Parâmetro de consulta sem escape/validação!
SQL Injection
https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OWASP-DV-005)
SQL Injection
http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks
Preparated Statements
Dicas rápidas
- Primeira coisa que um invasor vai tentar:
Editar um tema e/ou plugin e garantir a sua “volta”
define(‘DISALLOW_FILE_EDIT’, true); // wp-config.php
- Depois tentaria instalar um plugin/tema malicioso para “ampliar” seu privilégio.
Exemplo: ele invadiu por brute-force, ele pode instalar um plugin que contenha SQL Injection e
fazer dump da base.
Recomendação: Deixar o diretório /wp-content/(plugins|themes) como readonly.
- Desabilitar funções do PHP ‘perigosas’ e que de fato quase não são utilizadas.
disable_functions = system, exec, shell_exec, passthru, popen, pcntl_exec, show_source
- Remover todos os arquivos “readme.txt” de temas e plugins e garantir que não há “Directory
Listing (slide 12)
- Instalar um plugin “anti brute-force” que tenha política de senhas.
Sugestão: User Security Tools
- Forçar uso de SSL no login e admin do WordPRess:
http://codex.wordpress.org/Administration_Over_SSL
Dicas rápidas
- Valide dados antes de serem utilizados/processados
O WordPress possui uma série de funções prontas! Óia!
http://codex.wordpress.org/Data_Validation
- Se você ou a sua empresa “desenvolve seguro”, vocês tem um diferencial de mercado!
Referência de segurança em apps web: www.owasp.org
- Expert Mode: Utilize ferramentas para monitoração de possíveis ataques. Ex.: OSSEC-HIDS
Dicas rápidas
Bloquear User Enumeration no .htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} ^$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ http://site.com/ [L,R=301]
Proteger wp-admin com senha (.htaccess diretório wp-admin):
AuthType Basic
AuthName “Area Restrita”
AuthUserFile /path/arquivo/htpasswd #fora do DocumentRoot
Require valid-user
Como criar arquivo de senha: $htpasswd –c htpasswdfile username
Obs.: Basic pois o admin já está com SSL
Ref: http://www.linux.org/article/view/-htaccess-password-protection-securing-a-folder-in-a-website
Vocês
Véi, na boa
Já sabia
Conte-me
mais como
invade ‘as
coisa tudo'
Segunda o
chicote vai
estralar no
cliente
Eu falei q ñ
tinha o plugin
vulnerável...
Mas eu tenho
Vou
pesquisar
essas
paradas aí
Estou todo
atualizado
Obrigado
• Erick Belluci Tedeschi
• erick@oerick.com
• @ericktedeschi
• http://slideshare.com/erickt86

Mais conteúdo relacionado

Mais procurados

Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
Blindando o site Joomla!
Blindando o site Joomla!Blindando o site Joomla!
Blindando o site Joomla!Júlio Coutinho
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTales Augusto
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Como Limpar Seu Site WordPress
Como Limpar Seu Site WordPressComo Limpar Seu Site WordPress
Como Limpar Seu Site WordPressSucuri
 
Segurança da informação para WordPress e WooCommerce
Segurança da informação para WordPress e WooCommerceSegurança da informação para WordPress e WooCommerce
Segurança da informação para WordPress e WooCommerceThauã Cícero Santos Silva
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFRafael Ponte
 
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo StangherlinDesenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo StangherlinTchelinux
 
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...Thiago Dieb
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)Bruno Pedro
 
Teste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebTeste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebMarcio Roberto de Souza Godoi
 
Segurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultadosSegurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultadosAlex Camargo
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Hacking em consoles webs de security appliances, h2hc-rev-2
Hacking em consoles webs de security appliances, h2hc-rev-2Hacking em consoles webs de security appliances, h2hc-rev-2
Hacking em consoles webs de security appliances, h2hc-rev-2William Costa
 

Mais procurados (18)

Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
Blindando o site Joomla!
Blindando o site Joomla!Blindando o site Joomla!
Blindando o site Joomla!
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPress
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Como Limpar Seu Site WordPress
Como Limpar Seu Site WordPressComo Limpar Seu Site WordPress
Como Limpar Seu Site WordPress
 
Segurança da informação para WordPress e WooCommerce
Segurança da informação para WordPress e WooCommerceSegurança da informação para WordPress e WooCommerce
Segurança da informação para WordPress e WooCommerce
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
 
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo StangherlinDesenvolvimento web seguro cookies - Rodolfo Stangherlin
Desenvolvimento web seguro cookies - Rodolfo Stangherlin
 
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
Palestra - PHPESTE 2015 - Hacker do bem, quebrando as principais dicas de des...
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)
 
Teste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebTeste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações Web
 
Segurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultadosSegurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultados
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Hacking em consoles webs de security appliances, h2hc-rev-2
Hacking em consoles webs de security appliances, h2hc-rev-2Hacking em consoles webs de security appliances, h2hc-rev-2
Hacking em consoles webs de security appliances, h2hc-rev-2
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 

Semelhante a iMasters Intercon Dev WordPress - Segurança em WordPress

Erick Belluci Tedeschi - Segurança em WordPress
Erick Belluci Tedeschi - Segurança em WordPressErick Belluci Tedeschi - Segurança em WordPress
Erick Belluci Tedeschi - Segurança em WordPressiMasters
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Thiago Dieb
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBErick Belluci Tedeschi
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
 
Segurança em Aplicações Web
Segurança em Aplicações WebSegurança em Aplicações Web
Segurança em Aplicações WebCassio Ramos
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portaisFelipe Perin
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Seminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL InjectionSeminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL InjectionDavi Rodrigues
 
Front-end ENGINEER
Front-end ENGINEERFront-end ENGINEER
Front-end ENGINEERIvan Banov
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressLeo Baiano
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesCaelum
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPressGuga Alves
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-endertdc-globalcode
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 

Semelhante a iMasters Intercon Dev WordPress - Segurança em WordPress (20)

Erick Belluci Tedeschi - Segurança em WordPress
Erick Belluci Tedeschi - Segurança em WordPressErick Belluci Tedeschi - Segurança em WordPress
Erick Belluci Tedeschi - Segurança em WordPress
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
Segurança em Aplicações Web
Segurança em Aplicações WebSegurança em Aplicações Web
Segurança em Aplicações Web
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Seminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL InjectionSeminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL Injection
 
Front-end ENGINEER
Front-end ENGINEERFront-end ENGINEER
Front-end ENGINEER
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPress
 
Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio Lopes
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPress
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-ender
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 

Mais de Erick Belluci Tedeschi

Applying Security Controls on REST APIs
Applying Security Controls on REST APIsApplying Security Controls on REST APIs
Applying Security Controls on REST APIsErick Belluci Tedeschi
 
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)Erick Belluci Tedeschi
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLErick Belluci Tedeschi
 

Mais de Erick Belluci Tedeschi (6)

Applying Security Controls on REST APIs
Applying Security Controls on REST APIsApplying Security Controls on REST APIs
Applying Security Controls on REST APIs
 
7Masters - Two Step Verification
7Masters - Two Step Verification7Masters - Two Step Verification
7Masters - Two Step Verification
 
"Hacking+PHP"
"Hacking+PHP""Hacking+PHP"
"Hacking+PHP"
 
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
 
Desenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECLDesenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECL
 

iMasters Intercon Dev WordPress - Segurança em WordPress

  • 2. Sobre - Dev PHP desde 2003 - Segurança da Informação 2007 - Foco em Desenvolvimento Seguro - Membro PHPSP - Motociclista
  • 3. Mas, por que alguém me ‘atacaria’? Muitos Page Views significa... ... que muita “gente” visita aqui! (serious?) Selia ótimo colocar um banner maloto aqui para vender naiki! (Chinês da galeria) ... Ou distribuir um malwarezinho! Qualquer maldade que eu quiser espalhar vai alcançar muita gente em um curto espaço de tempo.
  • 4. Mas, por que alguém me ‘atacaria’? “Conteúdos que agradam alguns e desagrada a muitos pode ‘encorajar’ um troll a fazer trollices.” “ScriptKiddies – Cumprindo ordens, ou simplesmente testando um script que ‘hackeia as coisa tudo’!”
  • 5. Mas, por que alguém me ‘atacaria’? Votações e Concursos Culturais são ótimos para eles “desvirtuarem” os resultados! Já parou para pensar que alguém pode ter raiva de você!? Ou não vai com a sua cara?!
  • 6. Ativos de interesse para Hackers - Processamento (BotNet) - Throughput de saída (DDoS) - Distribuição de Trojan - Pivoting - Phishing - Envio de Spam - E se tiver algo de “valor”, levamos também! hehe Mas, por que alguém me ‘atacaria’?
  • 8. Principais focos de problemas Plugins Temas Infra Má administração Falta de processos Negligências Desenvolvimento Carência de “senioridade” RTFM Teste (ñ deixe warnings passar)->DEBUG
  • 9.
  • 10. Full Path Disclosure • Caracteriza-se por alguma merda falha de programação que ocasione um Warning ou Fatal Error no PHP (mensagem de Debug). • Com isso o caminho (path) inteiro (full) do arquivo de script dentro do servidor é revelado (disclosure).
  • 11. Full Path Disclosure Então é isso que o SEO faz!
  • 12. Full Path Disclosure Dá para fazer plugin com uma linha (LOC)... ... E vulnerabilidade também!
  • 14. ... Falando em infra! .htaccess do Akismet! ----------------------------------- Order Deny,Allow Deny from all <FilesMatch "^akismet.(css|js)$"> Allow from all </FilesMatch> #allow access to any image <FilesMatch "^(.+).(png|gif)$"> Allow from all </FilesMatch>
  • 15. Corrigindo o plugin de uma linha <?php if (!function_exists(‘add_action’)) { die(‘<!-- mahhh oeeee -->’); } /* comments */ add_filter( ‘xmlrpc_enabled’, ‘__return_false’); //?> Com essa validação, caso o script seja chamado direto pelo browser. A função “add_action” não terá sido definida e consequentemente o script irá parar, não exibindo o erro/warning com o path do arquivo no servidor. Rá!
  • 16. Caso recente de vulnerabilidades Caso recente de um plugin que está ganhando evidência Referência: http://www.osvdb.org/show/osvdb/93582 http://www.waraxe.us/advisory-104.html http://wordpress.org/extend/plugins/spider-event-calendar/ 14 Vulns
  • 17. XSS – Cross-site Scripting • Ocorre quando um atacante consegue por meio de uma falha, inserir código malicioso para ser executado no browser do usuário • https://www.owasp.org/index.php/Cross- site_Scripting_(XSS)
  • 19. <a title="Manage Events" class="row-title" href="admin.php?page=SpiderCalendar&task=show_manage_event &calendar_id=<?php echo $rows[$i]->id; ?>"><?php echo $rows[$i]- >title; ?></a>
  • 21. XSS – Crossite Scripting DOM Based XSS Stored XSS Reflected XSS
  • 22. XSS – Crossite Scripting DOM Based XSS (https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OWASP-DV-003)) Stored XSS (https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OWASP-DV-002)) Reflected XSS (https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OWASP-DV-001))
  • 23. XSS – Crossite Scripting Blz, então dá para ficar fazendo um monte de alert! Fantastic! E eu já sei que o cookie deve ser setado com as flags HTTPOnly e SecureOnly.
  • 24. Eu vou ficar te trollando via JavaScript e vc não vai nem saber! hehehe http://beefproject.com/
  • 25. SQL Injection Armazenamento sem validação eficiente (somente title era input text) Parâmetro de consulta sem escape/validação!
  • 28. Dicas rápidas - Primeira coisa que um invasor vai tentar: Editar um tema e/ou plugin e garantir a sua “volta” define(‘DISALLOW_FILE_EDIT’, true); // wp-config.php - Depois tentaria instalar um plugin/tema malicioso para “ampliar” seu privilégio. Exemplo: ele invadiu por brute-force, ele pode instalar um plugin que contenha SQL Injection e fazer dump da base. Recomendação: Deixar o diretório /wp-content/(plugins|themes) como readonly. - Desabilitar funções do PHP ‘perigosas’ e que de fato quase não são utilizadas. disable_functions = system, exec, shell_exec, passthru, popen, pcntl_exec, show_source - Remover todos os arquivos “readme.txt” de temas e plugins e garantir que não há “Directory Listing (slide 12) - Instalar um plugin “anti brute-force” que tenha política de senhas. Sugestão: User Security Tools - Forçar uso de SSL no login e admin do WordPRess: http://codex.wordpress.org/Administration_Over_SSL
  • 29. Dicas rápidas - Valide dados antes de serem utilizados/processados O WordPress possui uma série de funções prontas! Óia! http://codex.wordpress.org/Data_Validation - Se você ou a sua empresa “desenvolve seguro”, vocês tem um diferencial de mercado! Referência de segurança em apps web: www.owasp.org - Expert Mode: Utilize ferramentas para monitoração de possíveis ataques. Ex.: OSSEC-HIDS
  • 30. Dicas rápidas Bloquear User Enumeration no .htaccess RewriteEngine on RewriteCond %{REQUEST_URI} ^$ RewriteCond %{QUERY_STRING} ^/?author=([0-9]*) RewriteRule ^(.*)$ http://site.com/ [L,R=301] Proteger wp-admin com senha (.htaccess diretório wp-admin): AuthType Basic AuthName “Area Restrita” AuthUserFile /path/arquivo/htpasswd #fora do DocumentRoot Require valid-user Como criar arquivo de senha: $htpasswd –c htpasswdfile username Obs.: Basic pois o admin já está com SSL Ref: http://www.linux.org/article/view/-htaccess-password-protection-securing-a-folder-in-a-website
  • 31. Vocês Véi, na boa Já sabia Conte-me mais como invade ‘as coisa tudo' Segunda o chicote vai estralar no cliente Eu falei q ñ tinha o plugin vulnerável... Mas eu tenho Vou pesquisar essas paradas aí Estou todo atualizado
  • 32. Obrigado • Erick Belluci Tedeschi • erick@oerick.com • @ericktedeschi • http://slideshare.com/erickt86