MySQL File priv to SSRF/RCE

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

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 λ‚΄μ—μ„œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 κΈ°μˆ μ€ μ—¬λŸ¬ 쑰건이 μΆ©μ‘±λ˜λŠ” 경우 UDFλ₯Ό 톡해 λ„€νŠΈμ›Œν¬/HTTP μš”μ²­μ„ μ‹€ν–‰ν•  수 있게 ν•΄μ€λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” @@plugin_dir에 λŒ€ν•œ μ“°κΈ° μ ‘κ·Ό, file_privκ°€ Y둜 μ„€μ •, secure_file_privκ°€ λΉ„ν™œμ„±ν™”λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, lib_mysqludf_sys 라이브러리 λ˜λŠ” HTTP μš”μ²­μ„ κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” λ‹€λ₯Έ UDF 라이브러리λ₯Ό λ‘œλ“œν•˜μ—¬ SSRFλ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ„œλ²„λ‘œ μ „μ†‘λ˜μ–΄μ•Ό ν•˜λ©°, μ΄λŠ” 라이브러리의 λ‚΄μš©μ„ hex λ˜λŠ” base64둜 μΈμ½”λ”©ν•œ ν›„ μ μ ˆν•œ 디렉토리에 μž‘μ„±ν•˜μ—¬ 달성할 수 μžˆμŠ΅λ‹ˆλ‹€.

@@plugin_dirκ°€ μ“°κΈ° λΆˆκ°€λŠ₯ν•œ 경우 ν”„λ‘œμ„ΈμŠ€λŠ” 달라지며, 특히 MySQL 버전이 v5.0.67 이상인 경우 λŒ€μ²΄ 경둜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ ν”„λ‘œμ„ΈμŠ€μ˜ μžλ™ν™”λŠ” UDF μ£Όμž…μ„ μ§€μ›ν•˜λŠ” SQLMapκ³Ό 같은 도ꡬλ₯Ό 톡해 촉진될 수 있으며, λΈ”λΌμΈλ“œ SQL μ£Όμž…μ˜ 경우 좜λ ₯ λ¦¬λ””λ ‰μ…˜ λ˜λŠ” DNS μš”μ²­ λ°€λ°˜μž… κΈ°μˆ μ„ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°