LFI2RCE via phpinfo()
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요
실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요. 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
이 취약점을 악용하려면: LFI 취약점, phpinfo()가 표시되는 페이지, "file_uploads = on" 및 서버가 "/tmp" 디렉토리에 쓸 수 있어야 합니다.
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
튜토리얼 HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
익스플로잇을 수정해야 합니다 ( **=>**를 **=>**로 변경). 그렇게 하려면 다음을 수행할 수 있습니다:
You have to change also the payload at the beginning of the exploit (for a php-rev-shell for example), the REQ1 (this should point to the phpinfo page and should have the padding included, i.e.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), and LFIREQ (this should point to the LFI vulnerability, i.e.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Check the double "%" when exploiting null char)
PHP에서 업로드가 허용되면 파일을 업로드하려고 할 때, 이 파일은 서버가 요청 처리를 완료할 때까지 임시 디렉토리에 저장되며, 그 후 이 임시 파일은 삭제됩니다.
그런 다음, 웹 서버에서 LFI 취약점을 발견하면 생성된 임시 파일의 이름을 추측하고 삭제되기 전에 임시 파일에 접근하여 RCE를 악용할 수 있습니다.
Windows에서는 파일이 일반적으로 C:\Windows\temp\php에 저장됩니다.
Linux에서는 파일 이름이 무작위이며 /tmp에 위치합니다. 이름이 무작위이기 때문에 어딘가에서 임시 파일의 이름을 추출하고 삭제되기 전에 접근해야 합니다. 이는 "phpconfig()" 함수의 내용 내에서 변수 $_FILES의 값을 읽어 수행할 수 있습니다.
phpinfo()
PHP는 4096B의 버퍼를 사용하며, 버퍼가 가득 차면 클라이언트로 전송됩니다. 그런 다음 클라이언트는 많은 큰 요청을 보낼 수 있습니다 (큰 헤더를 사용하여) php 리버스 쉘을 업로드하고, phpinfo()의 첫 번째 부분이 반환될 때까지 기다린 후 (임시 파일의 이름이 있는 곳) LFI 취약점을 악용하여 php 서버가 파일을 삭제하기 전에 임시 파일에 접근하려고 시도합니다.
이름을 무작위로 추측하기 위한 Python 스크립트 (길이 = 6)
웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요
실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요. 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)