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://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdfμ—μ„œ ν™•μΈν•˜μ„Έμš”.

PHP 파일 μ—…λ‘œλ“œ

PHP 엔진이 RFC 1867에 따라 ν˜•μ‹ν™”λœ νŒŒμΌμ„ ν¬ν•¨ν•˜λŠ” POST μš”μ²­μ„ μˆ˜μ‹ ν•˜λ©΄, μ—…λ‘œλ“œλœ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ μž„μ‹œ νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŒŒμΌμ€ PHP μŠ€ν¬λ¦½νŠΈμ—μ„œ 파일 μ—…λ‘œλ“œ 처리λ₯Ό μœ„ν•΄ μ€‘μš”ν•©λ‹ˆλ‹€. 지속적인 μ €μž₯이 ν•„μš”ν•  경우, move_uploaded_file ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ μž„μ‹œ νŒŒμΌμ„ μ›ν•˜λŠ” μœ„μΉ˜λ‘œ 이동해야 ν•©λ‹ˆλ‹€. μ‹€ν–‰ ν›„, PHPλŠ” 남아 μžˆλŠ” μž„μ‹œ νŒŒμΌμ„ μžλ™μœΌλ‘œ μ‚­μ œν•©λ‹ˆλ‹€.

Note

λ³΄μ•ˆ κ²½κ³ : μž„μ‹œ 파일의 μœ„μΉ˜λ₯Ό μ•Œκ³  μžˆλŠ” κ³΅κ²©μžλŠ” 파일 μ—…λ‘œλ“œ 쀑에 νŒŒμΌμ— μ ‘κ·Όν•˜μ—¬ μ½”λ“œ 싀행을 μœ„ν•΄ 둜컬 파일 포함 취약점을 μ•…μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

무단 μ ‘κ·Όμ˜ 도전 κ³Όμ œλŠ” μž„μ‹œ 파일의 이름을 μ˜ˆμΈ‘ν•˜λŠ” κ²ƒμœΌλ‘œ, μ΄λŠ” μ˜λ„μ μœΌλ‘œ λ¬΄μž‘μœ„ν™”λ©λ‹ˆλ‹€.

Windows μ‹œμŠ€ν…œμ—μ„œμ˜ μ•…μš©

Windowsμ—μ„œ PHPλŠ” GetTempFileName ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μž„μ‹œ 파일 이름을 μƒμ„±ν•˜λ©°, <path>\<pre><uuuu>.TMP와 같은 νŒ¨ν„΄μ„ μƒμ„±ν•©λ‹ˆλ‹€. μ£Όλͺ©ν•  점은:

  • κΈ°λ³Έ κ²½λ‘œλŠ” 일반적으둜 C:\Windows\Tempμž…λ‹ˆλ‹€.
  • μ ‘λ‘μ‚¬λŠ” 보톡 β€œphpβ€œμž…λ‹ˆλ‹€.
  • <uuuu>λŠ” κ³ μœ ν•œ 16μ§„μˆ˜ 값을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ€‘μš”ν•œ 점은 ν•¨μˆ˜μ˜ μ œν•œμœΌλ‘œ 인해 ν•˜μœ„ 16λΉ„νŠΈλ§Œ μ‚¬μš©λ˜λ―€λ‘œ, μƒμˆ˜ κ²½λ‘œμ™€ 접두사λ₯Ό κ°€μ§„ μ΅œλŒ€ 65,535개의 고유 이름이 κ°€λŠ₯ν•˜μ—¬ 무차별 λŒ€μž…μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

κ²Œλ‹€κ°€, Windows μ‹œμŠ€ν…œμ—μ„œμ˜ μ•…μš© 과정은 κ°„μ†Œν™”λ©λ‹ˆλ‹€. FindFirstFile ν•¨μˆ˜μ˜ νŠΉμ΄μ„±μœΌλ‘œ 인해 둜컬 파일 포함(LFI) κ²½λ‘œμ—μ„œ μ™€μΌλ“œμΉ΄λ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μž„μ‹œ νŒŒμΌμ„ μ°ΎκΈ° μœ„ν•œ 포함 경둜λ₯Ό λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

http://site/vuln.php?inc=c:\windows\temp\php<<

νŠΉμ • μƒν™©μ—μ„œλŠ” 더 ꡬ체적인 마슀크(예: php1<< λ˜λŠ” phpA<<)κ°€ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 마슀크λ₯Ό μ²΄κ³„μ μœΌλ‘œ μ‹œλ„ν•˜μ—¬ μ—…λ‘œλ“œλœ μž„μ‹œ νŒŒμΌμ„ λ°œκ²¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

GNU/Linux μ‹œμŠ€ν…œμ—μ„œμ˜ μ•…μš©

GNU/Linux μ‹œμŠ€ν…œμ˜ 경우, μž„μ‹œ 파일 μ΄λ¦„μ˜ λ¬΄μž‘μœ„μ„±μ΄ κ°•λ ₯ν•˜μ—¬ 이름이 예츑 κ°€λŠ₯ν•˜μ§€ μ•ŠμœΌλ©° 무차별 λŒ€μž… 곡격에 μ·¨μ•½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μΆ”κ°€ μ„ΈλΆ€μ •λ³΄λŠ” 참쑰된 λ¬Έμ„œμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

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 μ§€μ›ν•˜κΈ°