File upload vulnerabilities

2024. 1. 30. 18:05·웹해킹

[목차]

-What are file upload vulnerabilities?

-How do file upload vulnerabilities arise?

-Exploiting unrestricted file uploads to deploy a web shell

-Exploiting flawed validation of file uploads

-실습


-What are file upload vulnerabilities?

파일 업로드 취약점이란 웹서버가 유저들에게 충분한 이름,타임,콘텐츠,사이즈의 점검없이 파일 업로드를 허락할때 발생하는 취약점 입니다. 

이 취약점은 기본적인 이미지를 업로드 하는것만으로 잠재적인 위험이 있는 위험한 취약점 입니다.

심지어 원격으로 웹 코드를 실행시킬수 있는 server-side script 를 파일에 포함시킬수도 있습니다.

 

 

 

 

-How do file upload vulnerabilities arise?

일반적으로 허락된 파일확장자 파일을 올리게 할 수 있습니다.

그러나 실수로 어느 파일 유형을 블랙리스트에 올리는걸 실수할수도 있고 , Burp proxy 나 Repeater 같은 도구를 통하여 공격자가 쉽게 조작할 수 있는 속성을 통해 공격 할수도 있습니다.

(가령 파일 확장자를 image 나 png 파일만 가능하게 해놧는데 , repeater 를 통하여 이 확장자를 image라고 바꾼후 보내어 속이는 경우가 있을 수 있습니다.)

 

 

 

-Exploiting unrestricted file uploads to deploy a web shell

최악인 경우로는 웹사이트에 php,java,python 파일같은 server-side scripts를 업로드 하는것이 가능할 때 입니다.

이럴 경우 서버에 웹쉘을 업로드 할수 있게 되면 서버의 명령어 권한이 넘어갈 수가 있습니다.

 

※웹쉘(WebShell)? : web+shell 의 합성어로 , shell 은 시스템해킹에서 쓰이듯 사용자와 운영체제의 커널 간 인터페이스 역할을 하는 명령어 해석기 이다.

즉 이 웹쉘을 업로드하는것에 성공하면 웹에서 원하는 명령을 실행할 수 있다. 다시말해 '뚫린것'이다

출처 : https://blog.naver.com/crehacktive3/223228431886

 

 

*php 파일업로드가 가능할 시엔

<?php echo file_get_contents('/path/to/target/file'); ?> 라는 식의 코드를 넣어 원하는 경로의 파일을 볼수도있고,

<?php echo system($_GET['command']); ?> 일반적으론 이런 코드를 실행시켜 명령어를 실행시킨다.

 


 

 

-Exploiting flawed validation of file uploads

일반적으로 웹사이트는 파일 확장자를 검증하는 절차를 거치기 마련이다. 하지만 그렇다고 취약점이 사라지진 않는다.

 

만약 웹사이트가 파일 업로드에 대한 요청의 Content-Type 이 허락된 MIME type 인지 확인한다고 치자.

허락된 타입은 image/jpeg , image/png 이기 때문에 검증을 했더니 php 파일이여서 거부를 했다.

하지만 앞서 말했다시피 이런 내용은 Burp Repeater 와 같은 도구로 조작이 될 수 있다.

즉 php 파일에 대한 요청에서 Content-type 을 image/jpeg 로 바꿔주면 뚫리는것이다.

그래서 추가적인 유효성 검사가 따로 필요하다.

 

 


-실습

실습환경 : 이 사이트는 기본적으로 허락된 파일타입만 업로드 가능하되 그 외에 추가적인 검사는 하지않는다.

랩을 해결하기 위해선 , /home/carlos/secret 에 있는 내용을 제출해야한다.


 

 

일단 사이트의 계정홈페이지에 들어오니 내 프로필 사진을 업로드 할 수 있는 버튼이 있었다.

 


그래서 webshell.php 란 스크립트를 저렇게 작성해준후 업로드 해보았지만...

(참고로 php 파일은 php를 다운받은후 , 메모장에 작성후 확장자를 php 라고 해주시면 파일이 만들어집니다!)


 

당연히 Image/jepg 타입이 아니라서 막혔다.

그래서 Burp Suite 로 가서 POST 명령을 찾은 후 방금 보낸 요청을 Repeater 를 사용하여 수정하기로 했다.

 


 

 

이렇게 Content-Type 을 application/octet-stream -> image/jpeg로 바꾸어주었다.

그리곤 다시 요청을 보내주자

 

파일이 업로드 되었다는 창이 나오게 되었다.

이제 프로필 사진을 한번 봐보자.

 


 

 

 

프로필 사진이 이상한 사진아이콘으로 바뀌었다.

이 사진아이콘을 새창에서 열어보도록 하자.

 


 

파일이 잘 업로드 되어서 php 파일 안에있던 코드가 실행되어 무사히 secret 폴더에 있던 플래그를 가져온것을 볼수있다.

 

 


 

 

 

 

위에 코드를 제출하자 무사히 실습을 마칠수 있게되었다!

 

'웹해킹' 카테고리의 다른 글

XSS(Cross-site scripting)기법  (0) 2024.06.24
SQL Injection(SQLi)  (0) 2024.05.27
SSRF(Server-side request forgery)  (0) 2024.01.29
Authentication vulnerabilities  (1) 2024.01.26
Access control  (2) 2024.01.25
'웹해킹' 카테고리의 다른 글
  • XSS(Cross-site scripting)기법
  • SQL Injection(SQLi)
  • SSRF(Server-side request forgery)
  • Authentication vulnerabilities
무너박사
무너박사
IT 보안 블로그 입니다. 제가 작성하는 블로그가 누군가의 공부에 조금이라도 도움이 되길 바라며 작성하였습니다.
  • 무너박사
    무너박사의 연구일지
    무너박사
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • WEB 지식 (3)
      • 웹해킹 (13)
      • 웹개발(PHP-Mysql) (12)
      • 웹개발(JSP-Oracle) (2)
      • 워게임 문제풀이 (19)
        • Segfault (17)
        • Dreamhack (2)
      • SQL (3)
      • Python (2)
      • AI (1)
        • LLM(Large Language Model) (1)
      • Kail Linux (3)
      • 잡다한 지식 (2)
      • 모바일 앱개발(Kotlin-PHP-Mysql) (13)
      • 모바일 앱해킹(Android) (31)
        • Frida Lab (2)
        • Android DIVA (8)
        • Insecure Bank (20)
      • 안드로이드 위협 탐지 및 우회 (0)
        • 루팅 탐지 & 우회 (0)
        • 디버깅 탐지 & 우회 (0)
        • 에뮬레이터 탐지 & 우회 (0)
        • Frida 탐지 & 우회 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      인시큐어뱅크
      mobile diva
      워게임
      모바일 앱해킹
      insecure bank
      모바일 앱개발
      sql injection
      인시큐어 뱅크
      Kotlin
      칼리리눅스
      앱해킹
      해킹
      normaltic
      모의해킹
      취업반
      안드로이드 스튜디오
      취업반6기
      취업반 6기
      android diva
      XSS
      시스템해킹
      웹해킹
      Blind sql injection
      Android Studio
      MySQL
      모바일앱개발
      dom based xss
      php
      리패키징
      Koltin
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    무너박사
    File upload vulnerabilities
    상단으로

    티스토리툴바