Autor: Eduardo R. B. Marques, DCC/FCUP
Pré-requisito: verique se tem o Java Development Kit instalado (versão 1.8 ou superior), ex.
$ java -version
java version "1.8.0_181"
...
$ javac -version
javac 1.8.0_181
Pode verificar se tem o Maven instalado executando:
$ mvn --version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T17:29:23+00:00)
Maven home: /Users/edrdo/tools/apache-maven-3.2.5
...
Caso não tenha instalado obtenha um arquivo para a última release do Maven. Descomprima o ficheiro e onfigure a variável de ambiente PATH para incluir o subdirectório bin.
No directório JavaVulnerableLab encontra:
Os comandos descritos a seguir deverão ser executados a partir do directório raíz do projecto, aquele que contém o ficheiro pom.xml.
Use
mvn package
para compilar a aplicação. Os ficheiros gerados durante a compilação são depositados no sub-directório target.
Por sua vez, o comando
mvn clean
apaga todo o directório target.
Combinando os comandos:
mvn clean package
procederá a uma recompilação completa.
Pode iniciar a aplicação com o comando
mvn package exec:exec
podendo package ser omitido caso não queira recompilar a aplicação.
Aceda seguidamente a https://localhost:9443 no seu browser.
No início da execução, uma base de dados H2 será inicializada de fresco de acordo com as configurações expressas na servlet org.cysecurity.cspf.jvl.controller.Install (pasta src/main/java). Esta servlet pode ser re-invocada com https://localhost:9443/Install se quiser repôr o estado inicial da base de dados.
Para entrar no sistema na página de "login" poderá por exemplo usar as credenciais admin/admin ou victim/victim, entre outras definidas (ver código de performSetup() no código da servlet Install).
(Configure previamente o SonarQube; veja instruções abaixo.)
Execute
mvn package sonar:sonar
para correr os módulos de análise estática e submeter o resultado ao servidor SonarQube.
Há 3 opções para instalar e correr o Sonar
Container Docker local (recomendado)
Container na Google Cloud Platform
Pode-se ligar à instância SonarQube usando um tunel SSH
gcloud ... opções normais para ligação SSH ... -- -L 9000:localhost:9000
Pode também optar por descarregar e instalar o SonarQube Community Edition 7.9 no seu PC.
Actualize/instale plugins necessários, acedendo a Administration > MarketPlace.
Aceda de novo a Administration > MarketPlace e verifique que a instalação foi bem sucedida.
Instale o "perfil de qualidade" QSES acedendo a Quality Profiles.
Após importar o perfil QSES, verifique que ele aparece na secção Java e habilite esse perfil por omissão ("Set As Default").
Se a configuração tiver sido bem feita, a primeira análise do projecto (veja como executar o Maven acima neste documento) deverá revelar um total de 230 vulnerabilidades de segurança.
A configuração "default" do ZAP deverá servir para detectar as vulnerabilidades do trabalho com respeito
a XSS, vulnerabilidades de cookies e alguns casos de SQLi.
Caso queira no entanto customizar, a imagem abaixo ilustra a configuração mais agressiva para o ZAP.
Exemplo de uso (obter script):
python sqlmap.py -u https://localhost:9443/vulnerability/forumposts.jsp?postid=1 \
--cookie "JSESSIONID=node01f4klgxc5awnorvtqnjext6td0.node0; privilege=user; username=admin;" \
-b --current-db --current-user
Nota: para o exemplo acima deverá usar um valor para JSESSIONID correspondente a uma sessão activa. Pode por ex. obtê-lo via ZAP inspecionando cabeçalhos HTTP de interações com a JVL.