MySQL File priv to SSRF/RCE

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

이것은 https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/에서 MySQL/MariaDB/Percona 기술에 대한 요약입니다.

SQL 함수를 통한 서버 측 요청 위조 (SSRF)

SQL Out of Band 데이터 유출 탐색에서 LOAD_FILE() 함수는 네트워크 요청을 시작하는 데 일반적으로 사용됩니다. 그러나 이 함수는 작동하는 운영 체제와 데이터베이스의 시작 구성에 따라 제한됩니다.

secure_file_priv 전역 변수는 설정되지 않은 경우 /var/lib/mysql-files/로 기본 설정되어 지정된 디렉토리 이외의 파일 액세스를 제한합니다. 이 조정은 데이터베이스의 구성 파일이나 시작 매개변수를 수정해야 합니다.

secure_file_priv가 비활성화된 경우 (""), 필요한 파일과 file_priv 권한이 부여된 경우 지정된 디렉토리 외부의 파일을 읽을 수 있습니다. 그러나 이러한 함수가 네트워크 호출을 수행할 수 있는 능력은 운영 체제에 크게 의존합니다. Windows 시스템에서는 UNC 경로로의 네트워크 호출이 가능하며, 이는 UNC 명명 규칙을 이해하는 운영 체제로 인해 NTLMv2 해시의 유출로 이어질 수 있습니다.

이 SSRF 방법은 TCP 포트 445로 제한되며 포트 번호 수정을 허용하지 않지만, 전체 읽기 권한을 가진 공유에 액세스하거나 이전 연구에서 보여준 대로 해시를 도용하는 데 사용할 수 있습니다.

사용자 정의 함수 (UDF)를 통한 원격 코드 실행 (RCE)

MySQL 데이터베이스는 외부 라이브러리 파일에서 사용자 정의 함수 (UDF)의 사용을 제공합니다. 이러한 라이브러리가 특정 디렉토리 내에서 또는 시스템의 $PATH에서 액세스 가능한 경우 MySQL 내부에서 호출할 수 있습니다.

이 기술을 사용하면 @@plugin_dir에 쓰기 액세스, file_privY로 설정되고 secure_file_priv가 비활성화된 경우 UDF를 통해 네트워크/HTTP 요청을 실행할 수 있습니다.

예를 들어, lib_mysqludf_sys 라이브러리 또는 HTTP 요청을 가능하게 하는 다른 UDF 라이브러리를 로드하여 SSRF를 수행할 수 있습니다. 라이브러리는 서버로 전송되어 해당 디렉토리에 쓰여야 합니다. 이는 라이브러리의 내용을 16진수 또는 base64 인코딩하여 적절한 디렉토리에 쓰는 것으로 달성할 수 있습니다.

@@plugin_dir가 쓰기 가능하지 않은 경우 (특히 v5.0.67 이상의 MySQL 버전의 경우) 프로세스가 다릅니다. 이러한 경우에는 쓰기 가능한 대체 경로를 사용해야 합니다.

이러한 프로세스의 자동화는 SQLMap과 같은 도구를 사용하여 UDF 삽입을 지원하며, 블라인드 SQL 삽입의 경우 출력 리디렉션 또는 DNS 요청 스머글링 기술을 사용할 수 있습니다.

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

Last updated