O documento discute tópicos relacionados à segurança de aplicações web, incluindo injeção de código, ameaças como SQL injection e XSS, e oportunidades para desenvolvedores melhorarem a segurança nas aplicações.
IHDR Image Header
This chunk must appear FIRST. Its
contents are:
Width: 4 bytes
Height: 4 bytes
[…]
Width and height give the image
dimensions in pixels. They are 4-byte
integers. Zero is an invalid value.
The maximum for each is (2^31)-1 in
order to accommodate languages which
have difficulty with unsigned 4-byte
values.
A essência doproblema
1. Não se pode confiar em dados recebidos de
terceiros
2. Não se deve confiar em dados recuperados
da memória secundária
3. Política e funcionalidade não devem ser
fortemente acopladas
SQL Injection
• Ataqueem que um formulário é preenchido
com informações que interferem no fluxo de
execução de consultas
• Frequentemente aplicado em etapas de login
– Geralmente, a seção de um sistema web onde há
maior preocupação com segurança
15.
Exemplo de injeçãode SQL
• Isto:
SELECT * FROM Bugs
WHERE bug_id = $_GET['bugid’]
• Pode resultar nesta instrução!
SELECT * FROM Bugs
WHERE bug_id = 1234 OR TRUE
16.
Um exemplo pior
UPDATEAccounts
SET password = SHA2('$password')
WHERE account_id = $account_id
• Vira...
UPDATE Accounts
SET password = SHA2(...)
WHERE account_id = 1234 OR TRUE
17.
Directory traversal
• Tipode ataque que faz com que uma aplicação
web acesse um arquivo não-desejado
• Mais uma vez, ocorre quanto não se trata
adequadamente parâmetros de entrada
• Se um dos parâmetros indica um nome de
arquivo, é possível manipulá-lo para que aponte
para arquivos arbitrários no sistema do servidor
18.
Exemplo básico
• Suponhaum script que suporte isto:
http://www.xxx.com/members/seepic.cgi?arq=0
01.jpg
<?
...
/* le imagem a ser exibida */
$base = “/amadoras/”
$hdl = fopen($base.$_GET['arq'], “r”);
$imagem = fread($hdl, filesize($hdl));
print $imagem;
fclose($hdl);
?>
19.
Outras possibilidades
• http://www.xxx.com/members/seepic.cgi?arq
=../../../../../../../../../../etc/passwd
Alguns ataques usam caminhos codificados.
Uma possibilidade é utilizar parâmetros com
codificação de URL:
seepic.cgi?arq=%2e%2e%2f... → (../)
seepic.cgi?arq=%2e%2e%5c... → (..)
20.
XSS
“Atravésde um XSS, o Cracker injeta
códigos JavaScript em um campo texto de uma
página já existente e este JavaScript é apresentado
para outros usuários.”
-- Wikipédia
• Quase lá!
– XSS pode ser reflexivo ou armazenado