> For the complete documentation index, see [llms.txt](https://blog.s1rn3tz.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.s1rn3tz.ovh/pentest-web/analyse-statique/java.md).

# 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.                                                                                                                                                           |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-web/analyse-statique/java.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
