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
Download

1 RejectConf SP`07