* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
**HackenProof é o lar de todas as recompensas por bugs de criptografia.**
**Seja recompensado sem atrasos**\
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
A injeção de XPATH é uma técnica de ataque usada para explorar aplicativos que constroem consultas XPath (XML Path Language) a partir de entradas fornecidas pelo usuário para consultar ou navegar em documentos XML.
| bookstore | Seleciona todos os nós com o nome "bookstore" |
| /bookstore | Seleciona o elemento raiz bookstore**Observação:** Se o caminho começar com uma barra ( / ), ele sempre representa um caminho absoluto para um elemento! |
| bookstore/book | Seleciona todos os elementos book que são filhos de bookstore |
| //book | Seleciona todos os elementos book não importa onde eles estejam no documento |
| bookstore//book | Seleciona todos os elementos book que são descendentes do elemento bookstore, não importa onde eles estejam sob o elemento bookstore |
| //@lang | Seleciona todos os atributos com o nome lang |
| /bookstore/book\[1] | <p>Seleciona o primeiro elemento book que é filho do elemento bookstore.<strong>Observação:</strong> No IE 5,6,7,8,9 o primeiro nó é[0], mas de acordo com a W3C, é [1]. Para resolver esse problema no IE, defina a SelectionLanguage como XPath:</p><p>Em JavaScript: xml.setProperty("SelectionLanguage","XPath");</p> |
| //title\[@lang] | Seleciona todos os elementos title que possuem um atributo chamado lang |
| //title\[@lang='en'] | Seleciona todos os elementos title que possuem um atributo "lang" com um valor de "en" |
| /bookstore/book\[price>35.00] | Seleciona todos os elementos book do elemento bookstore que possuem um elemento price com um valor maior que 35.00 |
| /bookstore/book\[price>35.00]/title | Seleciona todos os elementos title dos elementos book do elemento bookstore que possuem um elemento price com um valor maior que 35.00 |
As recompensas do HackenProof são lançadas apenas quando seus clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
XPath Injection is a technique used to exploit vulnerabilities in web applications that use XPath queries to retrieve data from XML databases. By injecting malicious XPath expressions into user input fields, an attacker can manipulate the query and gain unauthorized access to sensitive information.
To access the information, an attacker needs to identify a vulnerable input field that is used in an XPath query. This can typically be found in search forms, login pages, or any other functionality that involves querying XML data.
Once a vulnerable input field is identified, the attacker can start injecting malicious XPath expressions. These expressions are used to modify the original query and retrieve additional data that was not intended to be exposed.
For example, consider a search form that uses an XPath query to retrieve user information from an XML database. The query may look like this:
```
//users/user[name='John']
```
By injecting a malicious expression like `' or 1=1 or ''='`, the attacker can modify the query to retrieve all user information:
```
//users/user[name='John' or 1=1 or ''='']
```
This modified query will return all user information, regardless of the name specified in the search form.
To prevent XPath Injection attacks, it is important to properly validate and sanitize user input before using it in XPath queries. Input validation should include checking for special characters and ensuring that the input conforms to the expected format.
Additionally, using parameterized XPath queries can help mitigate XPath Injection attacks. Parameterized queries separate the query logic from the user input, making it harder for attackers to manipulate the query.
By understanding and implementing these security measures, web applications can protect against XPath Injection attacks and ensure the confidentiality of sensitive information.
XPath Injection is a technique used to exploit vulnerabilities in web applications that use XPath queries to retrieve data from XML databases. By manipulating the input parameters of the XPath query, an attacker can modify the query to retrieve sensitive information or perform unauthorized actions.
To identify and steal the schema using XPath Injection, follow these steps:
1.**Identify the vulnerable parameter**: Look for input fields or parameters in the web application that are used in XPath queries. These parameters are usually found in the URL, form inputs, or cookies.
2.**Determine the structure of the XPath query**: Analyze the XPath query structure used by the application to retrieve data. This will help you understand how the query is constructed and how to manipulate it.
3.**Inject malicious XPath code**: Craft a payload that includes malicious XPath code to modify the query and retrieve the schema. For example, you can use the `union` operator to combine the original query with a query that retrieves the schema.
4.**Observe the application's response**: Submit the payload and observe the application's response. If the response includes the schema or any other sensitive information, it means the injection was successful.
5.**Extract the stolen schema**: Extract the stolen schema from the application's response. This can be done by parsing the response and extracting the relevant information.
By following these steps, you can identify and steal the schema using XPath Injection. It is important to note that XPath Injection can have serious consequences, as it can lead to unauthorized access to sensitive data or even compromise the entire application. Therefore, it is crucial to perform these techniques only in a controlled and authorized environment, such as during a penetration test.
### **Bypassando OR em usuário e senha (mesmo valor em ambos)**
Quando um aplicativo web utiliza a técnica de XPath para consultar um banco de dados XML, é possível explorar uma vulnerabilidade conhecida como injeção de XPath. Essa vulnerabilidade ocorre quando um invasor consegue inserir código malicioso na consulta XPath, permitindo que ele manipule a lógica da consulta e obtenha acesso não autorizado a informações sensíveis.
Uma técnica comum de injeção de XPath é a utilização do operador OR para contornar a verificação de usuário e senha. Normalmente, a consulta XPath para autenticação de usuário e senha seria algo como:
```xml
/users/user[username='admin' and password='password']
```
No entanto, um invasor pode explorar a vulnerabilidade de injeção de XPath inserindo um valor que seja verdadeiro para ambos usuário e senha, como:
```xml
/users/user[username='admin' or '1'='1' and password='password' or '1'='1']
```
Nesse caso, a consulta XPath se torna verdadeira, pois a expressão `'1'='1'` sempre será verdadeira. Isso permite que o invasor acesse a conta de administrador sem a necessidade de fornecer um nome de usuário ou senha válidos.
Para evitar a injeção de XPath, é importante validar e sanitizar corretamente todas as entradas do usuário antes de utilizá-las em consultas XPath. Além disso, é recomendado utilizar técnicas de autenticação mais seguras, como a autenticação de dois fatores, para reduzir o impacto de uma possível exploração dessa vulnerabilidade.
A injeção de nulo é uma técnica comum usada para explorar vulnerabilidades em aplicativos da web que usam consultas XPath. Essa técnica envolve a manipulação de parâmetros de entrada para inserir uma sequência de caracteres nula na consulta XPath, o que pode levar a resultados inesperados ou até mesmo à execução de comandos maliciosos.
Para identificar uma vulnerabilidade de injeção de nulo, você precisa encontrar um ponto de entrada onde os dados do usuário são usados em uma consulta XPath. Isso geralmente ocorre em campos de pesquisa ou filtros de dados.
Uma vez identificado o ponto de entrada, você pode começar a testar a vulnerabilidade inserindo uma sequência de caracteres nula na entrada. Se a aplicação responder de maneira inesperada ou retornar resultados diferentes, é provável que haja uma vulnerabilidade de injeção de nulo.
Uma vez que você tenha identificado uma vulnerabilidade de injeção de nulo, pode começar a explorá-la para obter informações sensíveis ou executar comandos maliciosos.
Uma técnica comum é usar a função `substring()` para extrair partes específicas do resultado da consulta XPath. Por exemplo, você pode usar `substring(//user/password/text(), 1, 1)` para extrair o primeiro caractere da senha do usuário.
Outra técnica é usar a função `count()` para determinar o número de resultados retornados pela consulta XPath. Isso pode ser útil para explorar a estrutura do banco de dados subjacente.
#### **Prevenção de injeção de nulo**
Para prevenir a injeção de nulo, é importante validar e sanitizar todas as entradas do usuário antes de usá-las em consultas XPath. Isso pode ser feito através da implementação de filtros de entrada e do uso de funções de escape adequadas.
A injeção de nulo é uma técnica perigosa que pode ser usada para explorar vulnerabilidades em aplicativos da web que usam consultas XPath. Ao entender como essa técnica funciona e implementar medidas de prevenção adequadas, você pode proteger seus aplicativos contra ataques de injeção de nulo.
A injeção de XPath cega é uma técnica usada para explorar vulnerabilidades de injeção de XPath em um aplicativo da web. Com essa técnica, é possível obter o comprimento de um valor e extraí-lo por meio de comparações.
Para obter o comprimento de um valor, você pode usar a função `string-length()`. Por exemplo, a expressão XPath `string-length(/user/name)` retornará o comprimento do valor do elemento `<name>` dentro do elemento `<user>`.
Para extrair o valor por meio de comparações, você pode usar operadores de comparação, como `=`, `>`, `<`, `>=` e `<=`. Por exemplo, a expressão XPath `/user[name='admin']` retornará todos os elementos `<user>` que possuem um elemento `<name>` com o valor "admin".
Usando essas técnicas em conjunto, você pode realizar uma injeção de XPath cega para obter informações sensíveis do aplicativo da web alvo.
A injeção de XPath é uma técnica de ataque que permite que um invasor leia arquivos arbitrários no servidor. Essa técnica é possível quando um aplicativo web usa consultas XPath para extrair dados de um documento XML.
A injeção de XPath ocorre quando um invasor manipula os parâmetros de entrada do aplicativo web para inserir uma expressão XPath maliciosa. Essa expressão é então avaliada pelo servidor, permitindo que o invasor leia arquivos do sistema.
Neste exemplo, a função `get_user_data` recebe um nome de usuário como parâmetro e consulta um arquivo XML chamado `users.xml` usando XPath. No entanto, o código não valida ou sanitiza o parâmetro `username`, o que torna vulnerável a ataques de injeção de XPath.
Um invasor mal-intencionado pode explorar essa vulnerabilidade fornecendo um valor de entrada manipulado, como `' or 1=1 or username/text()='admin' or 'a'='a` para o parâmetro `username`. Isso fará com que a expressão XPath se torne verdadeira e retorne todos os dados do usuário, incluindo informações confidenciais.
Para prevenir a injeção de XPath, é importante validar e sanitizar todas as entradas do usuário antes de usá-las em consultas XPath. Isso pode ser feito por meio de técnicas como a utilização de consultas parametrizadas ou a remoção de caracteres especiais das entradas.
Além disso, é recomendável restringir as permissões de acesso aos arquivos do sistema, garantindo que o aplicativo web tenha apenas as permissões necessárias para ler os arquivos relevantes.
#### Conclusão
A injeção de XPath é uma vulnerabilidade comum em aplicativos web que usam consultas XPath para extrair dados de documentos XML. Ao validar e sanitizar as entradas do usuário e restringir as permissões de acesso aos arquivos do sistema, é possível prevenir com eficácia esse tipo de ataque.
Out-of-Band (OOB) é uma técnica de exploração usada em ataques de injeção XPath. Nesse tipo de ataque, o invasor injeta código malicioso em uma aplicação web que utiliza XPath para consultar um banco de dados XML. A injeção XPath ocorre quando o invasor manipula os parâmetros de entrada da consulta XPath para obter informações sensíveis ou executar comandos indesejados.
A exploração OOB é uma variação da injeção XPath que permite ao invasor extrair dados do servidor web por meio de solicitações HTTP externas. Isso é possível porque o servidor web pode ser configurado para fazer solicitações externas para recuperar dados de um recurso remoto, como um servidor DNS ou um servidor de arquivos.
Para explorar essa vulnerabilidade, o invasor injeta código XPath malicioso que faz com que o servidor web envie solicitações HTTP para um servidor controlado pelo invasor. O servidor controlado pelo invasor registra as solicitações recebidas e, assim, o invasor pode extrair informações sensíveis do servidor web.
- Injeção de código XPath malicioso que faz com que o servidor web envie solicitações DNS para um servidor controlado pelo invasor. O invasor pode registrar as solicitações DNS recebidas para obter informações sensíveis.
- Injeção de código XPath malicioso que faz com que o servidor web envie solicitações HTTP para um servidor controlado pelo invasor. O invasor pode registrar as solicitações HTTP recebidas para obter informações sensíveis.
- Injeção de código XPath malicioso que faz com que o servidor web envie solicitações de arquivo para um servidor controlado pelo invasor. O invasor pode registrar as solicitações de arquivo recebidas para obter informações sensíveis.
A exploração OOB é uma técnica avançada de injeção XPath que pode ser usada para obter informações sensíveis de um servidor web. É importante que os desenvolvedores de aplicativos web estejam cientes dessa vulnerabilidade e implementem medidas de segurança adequadas para proteger suas aplicações contra ataques de injeção XPath.
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).