# JAVA

## Identifier les entrées utilisateur

| Variable                                                                                      | Description                                                                        |
| --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| <p>getParameter </p><p>getParameterNames </p><p>getParameterValues </p><p>getParameterMap</p> | Contient les interactions avec les paramètres d'une requête                        |
| getQueryString                                                                                | Contient la chaîne de caractère de la requête entière                              |
| <p>getHeader</p><p>getHeaders </p><p>getHeaderNames</p>                                       | Contient les en-têtes entrées                                                      |
| <p>getRequestURI </p><p>getRequestURL</p>                                                     | Contient les url et uri entrées                                                    |
| getCookies                                                                                    | Contient les cookies entrées                                                       |
| getRequestedSessionId                                                                         | Contient les ID de session entrées                                                 |
| <p>getInputStream </p><p>getReader</p>                                                        | Contient les données brute d'une requête                                           |
| getMethod                                                                                     | Contient la méthode HTTP utilisée                                                  |
| getProtocol                                                                                   | Contient le protocole utilisé                                                      |
| getServerName                                                                                 | Contenu de l'en-tête "Host:"                                                       |
| <p>getRemoteUser </p><p>getUserPrincipal</p>                                                  | Si l'utilisateur est authentifié, cela contient les informations de l'utilisateur. |
| <p>setAttribute </p><p>putValue</p>                                                           | Utilisées pour stocker des données dans la session courante                        |
| <p>getAttribute</p><p>getValue </p><p>getAttributeNames </p><p>getValueNames</p>              | Utilisées pour demander des données stockées dans la session courante              |

## SQLi

* Statement
* CallableStatement
* PreparedStatement => Rarement vulnérable
* executeUpdate()
* execute()
* executeQuery()
* jdbc:

## Open redirect

* sendRedirect
* setStatus
* addHeader

## Path traversal

* filename
* getrealPath()
* getPathTranslated()

## LFI

* include()
* require()
* forward()

### JSP LFI

* <%@ include file="exemple.jsp" %>
* \<jsp:include page="exemple.jsp" />

{% hint style="info" %}
Les exemples ci-dessus ne sont pas vulnérables, cependant si le fichier peut être défini avec une entrée utilisateur, il est possible d'exploiter une LFI

Exemple:

\<jsp:include page='<%="browserActions/" + request.getParameter("\_actionPage") + ".jsp"%>'
{% endhint %}

## OS injection

* getruntime()
* exec()

## XSS

* \<c> => Pas d'escaping
* \<c:out> => escaping

## XXE

* SAXParserFactory&#x20;
* DOM4J&#x20;
* DocumentBuilderFactory&#x20;
* XMLInputFactory&#x20;
* TransformerFactory&#x20;
* javax.xml.validation.Validator&#x20;
* SchemaFactory&#x20;
* SAXTransformerFactory&#x20;
* XMLReader&#x20;
* SAXBuilder&#x20;
* SAXReader&#x20;
* javax.xml.bind.Unmarshaller&#x20;
* XPathExpression&#x20;
* DOMSource&#x20;
* StAXSource

## ELi

\<spr(ing)?:(message|theme|transform|eval|hasBindErrors|bind|nestedpath)\[^>]+${param

## Sockets

* java.net.Socket

## Fichiers d'interet

* WEB-INF/web.xml

## Paramètres intéressants

| Paramètre           | Utilité                                                                                                                                                                                                                                                                      |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| login-config        | <p>Informations d'authentification + méthode d'authentification (forms-based, Basic Auth, Client-Cert). <br><br>Si la méthode forms-based est utilisé, il est préférable d'utiliser l'action "j\_security\_check" ainsi que les paramètres "j\_username" et j\_password"</p> |
| security-constraint | Ce paramètre permet de restreindre des accès aux rôles définis dans "role-name".                                                                                                                                                                                             |
| session-config      | permet de configurer les paramètres de la session dont le timeout.                                                                                                                                                                                                           |
| error-page          | Permet de gérer les erreurs (code de status, type d'exception etc).                                                                                                                                                                                                          |
| init-param          | Contient des paramètres d'initialisation tels que "listings" qui doit être à false ou debug qui lui doit être à 0.                                                                                                                                                           |
