TESTES DE SEGURANÇA FESTOCK 9 DE JUNHO DE 2011 VERSÃO 1.0
Índice Testes de segurança Medidas de segurança Manipulação do URL SQL Injection Observações Securtiy Task Checklist Recon and analysis Test handling of access Test handling of input Test application logic Assess application hosting Miscellaneous tests Referências 04 05 05 06 07 08 08 08 09 10 11 11 12
Testes de Segurança / Festock 04 Testes de segurança O crescimento da Internet é uma realidade global. Esta dispõe a todos os utilizadores oportunidades únicas de negócio contudo e tal como qualquer invenção humana, é usada por um ínfimo grupo de utilizadores que as usam para fins inlicitos. nomeadamente a obtenção de dados ou informações pessoais e privadas nas bases de dados ou áreas de acesso restrito dos mais diversos sites. Para fazer face a todas as inconveniências no que respeita à segurança da nossa plataforma web tomamos algumas medidas que consideramos fundamentais para proteger os dados a utlizadores sem previlégio de acesso a estes. Assim temos vindo a ter em conta e a testar algumas das vulnerabilidades web mais frequentes, como poderão ser falhas no código de PHP, SQL injection, aplicações no servidor com falhas de segurança ou num nível mais extremo a presença de alguma aplicação web de terceiros com falhas de segurança que poderão ter acesso aos ficheiros em plain text.
Testes de Segurança / Festock 05 Medidas de segurança Manipulação URL A passagem de parâmetros através do URL (GET) na nossa aplicação é verificada constantemente, uma vez que usamos permalinks e esta técnica força-nos a verificação constante de cada variável, contudo, existem paths em que esta verificação é feita tanto pelo script que lida com o permalinks como a nível da base de dados que tem como por função verificar se o utilizador, na parte da administração, está, por exemplo, a aceder a um filme dele. Ex: http://producao.festock.com/painel/filmes/ericsson%20the%20network%20society/apagar Assim todos os parâmetros passados pelo URL são constantemente passados pela nossa aplicação.
Testes de Segurança / Festock 06 SQL Injection Para nos proteger deste processo em que consiste em inserir códigos de SQL na aplicação, através de formulários, que possam quebrar o query normal da plataforma, implementamos as protecções disponíveis através do PHP Alem disso, temos, até este momento, dois utilizadores de MySQL diferentes, um destinado às leituras e outro às escritas, tentando assim aumentar a protecção referente às bases de dados.
Testes de Segurança / Festock 07 Observações Com os tipos de possíveis ataques, referenciados anteriormente, verificamos as versões das aplicações que o servidor corre (Apache, PHP, MySQL) e retiramos qualquer tipo de referencia à versão destes, no que diz respeito ao PHP a versão final não devolverá qualquer tipo de erro ao utilizador. Ao nível da identificação a consistência da password será posteriormente verificada por AJAX e PHP. O acesso a informação ou a páginas especiais (de administração) é sempre verificada tendo como por comparação o utilizador identificado no sistema e o dono dos dados a serem mostrados ou visualizados. As password dos utilizadores nunca serão guardadas em plaintext afim de garantir uma maior segurança, sendo a sua encriptação é feita através do MD5. Caso achemos pertinente, poderemos adoptar uma solução em que todas as comunicações relacionadas com o envio dos dados de login poderão estar assentes num ligação encriptada SSL. Muitas são as outras tarefas em falta para testar a segurança da nossa aplicação, contudo muita dela requer um estudo aprofundado destas técnicas afim de as poderemos efectuar.
Testes de Segurança / Festock 08 Securtiy Task Checklist Recon and analysis Map visible content Discover hidden & default content Test for debug parameters Identify data entry points Identify the technologies used Map the attack surface Test handling of access Authentication Test password quality rules Test for username enumeration Test resilience to password guessing Test any account recovery function Test any "remember me" function Test any impersonation function Test username uniqueness Check for unsafe distribution of credentials Test for fail-open conditions Test any multi-stage mechanisms
Testes de Segurança / Festock 09 Session handling Test tokens for meaning Test tokens for predictability Check for insecure transmission of tokens Check for disclosure of tokens in logs Check mapping of tokens to sessions Check session termination Check for session fixation Check for cross-site request forgery Check cookie scope Access controls Understand the access control requirements Test effectiveness of controls, using multiple accounts if possible Test for insecure access control methods (request parameters, Referer header, etc) Test handling of input Fuzz all request parameters Test for SQL injection Identify all reflected data Test for reflected XSS Test for HTTP header injection Test for arbitrary redirection Test for stored attacks Test for OS command injection
Testes de Segurança / Festock 10 Test for path traversal Test for script injection Test for file inclusion Test for SMTP injection Test for native software flaws (buffer overflow, integer bugs, format strings) Test for SOAP injection Test for LDAP injection Test for XPath injection Test application logic Identify the logic attack surface Test transmission of data via the client Test for reliance on client-side input validation Test any thick-client components (Java, ActiveX, Flash) Test multi-stage processes for logic flaws Test handling of incomplete input Test trust boundaries Test transaction logic
Testes de Segurança / Festock 11 Assess application hosting Test segregation in shared infrastructures Test segregation between ASP-hosted applications Test for web server vulnerabilities Default credentials Default content Dangerous HTTP methods Proxy functionality Virtual hosting mis-configuration Bugs in web server software Miscellaneous tests Check for DOM-based attacks Check for frame injection Check for local privacy vulnerabilities Persistent cookies Caching Sensitive data in URL parameters Forms with autocomplete enabled Follow up any information leakage Check for weak SSL ciphers
Testes de Segurança / Festock 12 Referências http://www.ibm.com/developerworks/web/library/wa-appsecurity/ http://www.ict-romulus.eu/web/wapiti/home http://www.websecurify.com/ http://websecuritytool.codeplex.com/ http://xss.codeplex.com/ http://labs.securitycompass.com/index.php/exploit-me/ http://www.acunetix.com/cross-site-scripting/scanner.htm https://www.mavitunasecurity.com/ http://portswigger.net/wahh/ http://sucuri.net/ http://www.softwaretestinghelp.com/
Testes de Segurança / Festock 13 45571 - Domingos Martins 46852 - Luís Jesus 46132 - Márcio Reis 47162 - Paulo Figueiredo