본문 바로가기

old/Cyber Security

파일 업로드 공격 치트시트

반응형

파일 업로드 우회 방법

NULL Byte Bypass

webshell.php%00.jpg

webshell.php%00.jpg 와 같이 중간에 NULL Byte를 넣어주게 되면,

NULL Byte는 문자열의 끝을 의미하므로 처리되는 파일명은 webshell.php가 되게된다.

HTML Encoding

잘 안되는 경우가 많은데 간단한 방법으로 webshell.ph%70 와 같이 HTML Encoding을

이용하는 방법이 있다.

PHP의 숨겨진 확장자명

PHP5는 안되고 PHP7에만 해당되는 내용이다.

PHP7에는 .php 이외에 추가로 인식하는 확장자가 여러개있다.

.php  .php3  .php4  .php5  .php7  .pht  .phtml  .htm  .html

JSP의 숨겨진 확장자명

.war

확장자 뒤에 .를 추가

업로드된 파일은 기본적으로 확장자 뒤의 .과 같은 기호를 무시한다. 하지만 업로드할때 체크하는 코드는 확장자만 인식할떄 사용할수 있다.

.php.. .php...

Content-type 을 수정해서 우회하는 방법.

파일을 처리할 때 HTTP는 파일의 종류에 따라 다른 Content-type을 사용한다.

jpg 는 image/jpg

png는 image/png

txt는 text/plain

php는 text/html 등

서버단에서 Content-type을 통해서 필터링할 경우 (text/html 차단)

프록시툴로 이 Content-type만 다른 것으로 수정해주는 것만으로도 우회가 가능하다.

Content-Disposition: form-data; name="file"; filename="webshell.php"
Content-Type: image/jpeg
반응형