Transcript
Page 1: iMasters Intercon Dev WordPress - Segurança em WordPress

Segurança emWordPress

Erick Tedeschi

29/06/2013

Page 2: iMasters Intercon Dev WordPress - Segurança em WordPress

Sobre

- Dev PHP desde 2003- Segurança da Informação 2007- Foco em Desenvolvimento Seguro- Membro PHPSP- Motociclista

Page 3: iMasters Intercon Dev WordPress - Segurança em WordPress

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.

Page 4: iMasters Intercon Dev WordPress - Segurança em WordPress

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’!”

Page 5: iMasters Intercon Dev WordPress - Segurança em WordPress

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?!

Page 6: iMasters Intercon Dev WordPress - Segurança em WordPress

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’?

Page 7: iMasters Intercon Dev WordPress - Segurança em WordPress

WPScan \o/

Page 8: iMasters Intercon Dev WordPress - Segurança em WordPress

Principais focos de problemasPlugins Temas

S.O.

Apache /IIS / nginx

MySQL

Infra

Má administraçãoFalta de processos

Negligências

Desenvolvimento

Carência de “senioridade”RTFM

Teste (ñ deixe warnings passar)->DEBUG

Page 9: iMasters Intercon Dev WordPress - Segurança em WordPress

Principais faixabranquices vulnerabilidades encontradas em temas e plugins

Page 10: iMasters Intercon Dev WordPress - Segurança em WordPress

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).

Page 11: iMasters Intercon Dev WordPress - Segurança em WordPress

Full Path DisclosureG

oogl

e D

orks

!

Então é isso que o SEO faz!

Page 12: iMasters Intercon Dev WordPress - Segurança em WordPress

Full Path Disclosure

Dá para fazer plugin com uma linha (LOC)...... E vulnerabilidade também!

Page 13: iMasters Intercon Dev WordPress - Segurança em WordPress

Full Path Disclosure

Directory Listing

Page 14: iMasters Intercon Dev WordPress - Segurança em WordPress

... Falando em infra!

.htaccess do Akismet!-----------------------------------Order Deny,AllowDeny from all

<FilesMatch "^akismet\.(css|js)$">Allow from all

</FilesMatch>

#allow access to any image<FilesMatch "^(.+)\.(png|gif)$">

Allow from all</FilesMatch>

Page 15: iMasters Intercon Dev WordPress - Segurança em WordPress

Corrigindo o plugin de uma linha<?phpif (!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á!

Page 16: iMasters Intercon Dev WordPress - Segurança em WordPress

Caso recente de vulnerabilidades

Caso recente de um plugin que está ganhando evidência

Referência:http://www.osvdb.org/show/osvdb/93582http://www.waraxe.us/advisory-104.html

http://wordpress.org/extend/plugins/spider-event-calendar/

14 Vulns

Page 17: iMasters Intercon Dev WordPress - Segurança em WordPress

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)

Page 18: iMasters Intercon Dev WordPress - Segurança em WordPress

Nenhuma validação, “dereto” para o BD

XSS

Page 19: iMasters Intercon Dev WordPress - Segurança em WordPress

<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>

Page 20: iMasters Intercon Dev WordPress - Segurança em WordPress

Título salvo como:</td><td></td><td></td></table><h1><marquee>XSS rá</marquee></h1>

Page 21: iMasters Intercon Dev WordPress - Segurança em WordPress

XSS – Crossite Scripting

DOM Based XSS

Stored XSS

Reflected XSS

Page 22: iMasters Intercon Dev WordPress - Segurança em WordPress

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))

Page 23: iMasters Intercon Dev WordPress - Segurança em WordPress

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.

Page 24: iMasters Intercon Dev WordPress - Segurança em WordPress

Eu vou ficar te trollando via JavaScript e vc não vai nem saber!

hehehe

http://beefproject.com/

Page 25: iMasters Intercon Dev WordPress - Segurança em WordPress

SQL InjectionArmazenamento sem validação eficiente (somente title era input text)

Parâmetro de consulta sem escape/validação!

Page 26: iMasters Intercon Dev WordPress - Segurança em WordPress

SQL Injection

https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OWASP-DV-005)

Page 27: iMasters Intercon Dev WordPress - Segurança em WordPress

SQL Injection

http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks

Preparated Statements

Page 28: iMasters Intercon Dev WordPress - Segurança em WordPress

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

Page 29: iMasters Intercon Dev WordPress - Segurança em WordPress

Dicas rápidas- Valide dados antes de serem utilizados/processadosO 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

Page 30: iMasters Intercon Dev WordPress - Segurança em WordPress

Dicas rápidasBloquear User Enumeration no .htaccess

RewriteEngine onRewriteCond %{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 BasicAuthName “Area Restrita”AuthUserFile /path/arquivo/htpasswd #fora do DocumentRootRequire valid-user

Como criar arquivo de senha: $htpasswd –c htpasswdfile usernameObs.: Basic pois o admin já está com SSL

Ref: http://www.linux.org/article/view/-htaccess-password-protection-securing-a-folder-in-a-website

Page 31: iMasters Intercon Dev WordPress - Segurança em WordPress

Vocês

Véi, na boaJá 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

Page 32: iMasters Intercon Dev WordPress - Segurança em WordPress

Obrigado

• Erick Belluci Tedeschi• [email protected]• @ericktedeschi• http://slideshare.com/erickt86


Top Related