(in)Segurança em Python

Propaganda
(in)Segurança em Python
J u l h o d e 2 015 (in)Segurança em Python
Por que e quando validar seus
dados?
Capítulo: Injeção de Comandos
de Sistema Operacional
uname –a; id; whoami
Problemas de Injeção de Dados
Injeção de Comandos de Sistema Operacional
As falhas de Injeção de Comandos de Sistema
Operacional ocorrem quando dados não confiavéis
são enviados para um interpretador como parte de
um comando.
Os dados forjados pelo atacante podem iludir o
interpretador para que este execute comandos
indesejados ou permita o acesso não autorizado à
dados/informações sensíveis. INJECTION
Injeção de Comandos
ip = request.form['ip']
ch = system("ping -c 1 %s" % ip)
print "%s" % (ch)
Injeção de Comandos
ip = request.form['ip']
ch = system("ping -c 1 %s" % ip)
print "%s" % (ch)
Injeção de Comandos
ip = request.form['ip']
ch = system("ping -c 1 %s" % ip)
print "%s" % (ch)
Python External Command Execution
Popen
Subprocess
Call
Check-output
OS
System
Pexpect
Spawn
Code Sample – Pingão I
Nenhuma validação
Code Sample – Pingão I
>> Code Sample – Pingão II
Validação JavaScript
Code Sample – Pingão II
>> Code Sample – Pingão III
Validação Positiva Fraca
Code Sample – Pingão III
>> Code Sample – Pingão IV
Validação Negativa Fraca
Code Sample – Pingão IV
>> Code Sample – Pingão V
Validação Positiva Forte
Code Sample – Pingão V
>> Python calls comparsion
subprocess
Popen
call
SF SF split
shlex
%s.f + sh %s.f + sh %s.f + %s.f +
127.0.0.1 127.0.0.1;id ;id |id 127.0.0.1&&id ||id $(id) `id` $(id) 2>&1 `id` 2>&1 check_output
os
system
%s.f +
pexpect
spawn
%s.f +
Python calls comparsion
subprocess
Popen
call
SF SF split
shlex
%s.f + sh %s.f + sh %s.f + %s.f +
127.0.0.1 127.0.0.1;id ;id |id 127.0.0.1&&id ||id $(id) `id` $(id) 2>&1 `id` 2>&1 -s 1 127.0.0.1 check_output
os
system
%s.f +
pexpect
spawn
%s.f +
LOD
Nilo
Rafael
João
(in)Segurança Python
J u l h o d e 2 015 
Download