segurança em aplicações web myke hamada mykesh <at> gmail RejectConf SP’07 1 whoami ciência da computação segurança da informação ruby rails c# vbscript opensource microsoft ethical hacking RejectConf SP’07 2 agenda introdução ontem e hoje input validation security on ruby on rails ferramentas considerações finais conclusão referências RejectConf SP’07 sql injection xss csrf 3 introdução • web application é um alvo fácil • sql injection é uma tecnica bem documentada • muitos desenvolvedores de software não tem uma real definição do que é sql injection ou xss • não é objetivo desta apresentação mostrar técnicas de invasão, mas sim como previnir ataques RejectConf SP’07 4 ontem páginas estáticas poucas tecnologias outros alvos RejectConf SP’07 5 hoje sites dinâmicos muitas ferramentas novos vetores de ataque informação muito fácil baixo conhecimento RejectConf SP’07 6 hoje (cont) owasp top 10 RejectConf SP’07 7 input validation você valida de que lado? números devem números strings devem ser strings o dado que é recebido é válido? o formato do dado é válido? codificação / decodificação não esqueça de validar os dados de saída!!! RejectConf SP’07 8 security on ror “convenção sobre configuração” rails 1.2.5 (novembro/2007) componentes de validação model: sql injection view: xss controller: métodos (insecure object reference) e csrf RejectConf SP’07 9 security on ror (cont) evite: strip_tags strip_links sanitize RejectConf SP’07 alternativas: white_list html_escape validates_email_veracity_of validates_email_format_of redcloth safe_erb csrf_killer 10 sql injection o comando inserido na entrada é interpretado como parte do código o interpretador entende o código de entrada como um comando comando é executado pelo interpretador impacto: criar, ler, atualizar e excluir dados é possível alterar a aplicação/s.o. e fazer o bypass de todos os controles de firewall/ips RejectConf SP’07 11 model: sql injection Email.find_all "owner_id = 123 AND subject = '#{@params['subject']}'" "owner_id = 123 AND subject = '' OR 1 --''“ subject = @params['subject'] Email.find_all [ "owner_id = 123 AND subject = ?", subject ] RejectConf SP’07 12 cross site scripting? xss? css? activex / javascript / vbscript / html / flash / pdf web application recebe a informação (link) codifica a parte maliciosa do link o link altera a “cara” do site forum e guesbooks RejectConf SP’07 13 xss (cont) http://host:8987/?<script>alert('vulnerable to XSS');</script> account hijacking false advertising user settings cookie RejectConf SP’07 14 view: xss http://ror/controller/action?text=<script>alert(document.cookie)</script> <%= @params['text_xss'] %> <script>alert(‘document.cookie ’)</script> <%=h post.subject %> <%=h post.text %> RejectConf SP’07 15 csrf web browser carrega um site malicioso web browser envia solicitações http para um outro site tag IMG ou FORM / javascript impacto: acesso a conta bancária, envio de comentários, acesso a lista de e-mails, compras online RejectConf SP’07 16 csrf site darth vader 1 2 3 vítima RejectConf SP’07 4 site dory 17 controller: csrf cuidado com “controller/:action” use: hide_action <img src="http://rails/order/20/delete" /> solução: use o plugin csrf_killer RejectConf SP’07 18 ferramentas web inspect acunetix watchfire appscan n-stalker hacker safe RejectConf SP’07 metasploit framework nikto / wikto paros proxy web scarab w3af priamos nessus burp 19 considerações finais utilize filtros de validação root/sys/sa/admin/dba. nunca serão! negar acesso a s.p. e a ferramentas de admin chroot neles!!! cuidado com url parameter captcha auditar o código ids/ips hardening head, put, delete, trace RejectConf SP’07 20 conclusão desenvolver código seguro é fácil priorize áreas críticas do negócio treinamento least privilege web application firewall sql proxy faça muitos testes, mas defina um escopo coma tecnologia com farofa RejectConf SP’07 21 referências www.owasp.org manuals.rubyonrails.com/read/chapter/40 www.quarkruby.com/2007/9/20/ruby-on-rails-security-guide jeremiahgrossman.blogspot.com www.rorsecurity.info www.cgisecurity.com railsify.com/categories/security-production mysqlsecurity.com www.matasano.com/log www.webappsec.org ha.ckers.org/xss.html www.railslodge.com/plugins svn.techno-weenie.net/projects/plugins ferruh.mavituna.com/makale/sql-injection-cheatsheet www.foundstone.com/us/resources/proddesc/hacmecasino.htm RejectConf SP’07 22