Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study

EDB-49375 본문

웹 보안/Exploit-db

EDB-49375

^_^? 2021. 1. 15. 16:18

1. 개요

EDB ID EDB-49375
분류 Unrestricted File Upload to RCE
대상 어플리케이션 Responsive E-Learning System 1.0
취약 코드 \elearning\admin\add_student.php
\elearning\admin\add_teacher.php
실행 환경 Apache 2.4.46 / PHP Version 7.4.9 / Windows 7 x64

 

 

1.1 대상 어플리케이션 설명

 

: E-Learning 시스템으로 구성되어있는 사이트이다.

 

 

  E-Learning 시스템의 사용자는 3가지로 분류할 수 있다.

     - Admin

     - Teacher

     - Student 

 

 

● home

 

(그림 1) Responsive E-Learning System 1.0 메인 화면

 

 

● Admin page

 

(그림 2) admin 페이지 메인화면

 

  관리자 홈페이지는

  학생 · 교사 추가,  강좌 · 부서 · 주제 추가 등의 기능을 제공한다.

  위 기능들 중 학생 · 교사 추가에서 파일을 업로드하는 기능이 있다.

 

 

(그림 3) /elearning/admin/student.php

 

 

(그림 4) /elearning/admin/teacher.php

 

 

1.2 공격 시나리오

 

 1. admin 페이지 접근 및 로그인

  

 2. Student 클릭하여 http://localhost/elearning/admin/student.php 로 이동

 

 3. Add Student 클릭 후 정보 입력, Image: 부분에서 웹 쉘업로드

 

 4. http://localhost/elearning/admin/uploads/ 로 이동하여 3에서 올린 웹 쉘 실행

 

 5. 시스템 명령 수행 후 결과 출력되는지 확인 

 

-> 5번까지 성공한다면 시스템 장악으로 인한 주요정보 탈취 및 변조 , 인접 서버에 대한 침입 시도 가능

 

 

add_teacher.php 또한 같은 취약점이 존재한다.

 

 

2. 상세 분석

 

2.1 발생원리

 

  - \elearning\admin\add_student.php 소스코드에서 

    업로드 되는 파일에 대한 확장자 검증이 이루어지지 않아 발생한다.

 

 

(그림 5) \elearning\admin\add_student.php

 

2.2 취약점 확인

    

 

    Add Student 클릭 후 정보 입력, Image에 webshell.php파일 업로드

 

(그림 6) Student 추가

 

Save를 눌러 저장하고

오류없이 저장이 되었다면 확장자가 jpg, png 등이 아닌 php인 파일임에도 불구하고 업로드 된 것이다.

 

 

(그림 7) 서버의 uploads폴더에 저장된 webshell파일

 

그리고

http://localhost/elearning/admin/uploads/ 로 이동하면 

 

(그림 8) /elearning/admin/uploads/ 

 

업로드 된 파일 목록에서 webshell.php를 확인할 수 있다.

 

 

 

webshell.php 클릭해 실행 후 시스템 명령어를 입력한다.

 

(그림 9) ipconfig 수행결과

 

올바르게 결과가 출력되었으며 다른 시스템 명령어들도 잘 수행 된다.

이로써 웹 서버 장악이 가능하다.

 

 

3. 대응 방안

 

\elearning\admin\add_student.php 소스코드에서

파일 업로드 부분을 아래와 같이 수정한다.

 

 

- image 파일 업로드 기능이므로 jpg, png, jpeg, gif 확장자 파일만 허용해야 한다.

 

- 특수문자 우회 공격을 막기 위해 % 와 ; 를 필터링한다.

 

  º 종단문자를 이용한 우회 공격: "%00" , "%ZZ", "%09", "%13"  

 

  º 세미콜론을 이용한 우회 공격

    : 세미콜론을 포함한 웹 페이지 요청 시 파싱 대상이 세미콜론 앞쪽만 인식해 발생하는 취약점

 

- 확장자 연장 우회 공격을 막기 위해 확장자 필터링을 ' . ' 를 기준으로 맨 마지막부터 해야 한다.

 

 

(그림 10) 수정 후 \elearning\admin\add_student.php

 

 

수정된 코드가 제대로 작동하는지 확인 결과

webshell2.php파일이 선택은 되지만 Save를 누르면

 

(그림 11) webshell2.php 업로드 시도

 

 

다음과 같이 alert창이 뜨고 webshell2.php는 저장되지 않는다.

 

(그림 12) 파일 업로드 실패 화면

 

 

 

4. 참고자료

- Exploit-DB

  www.exploit-db.com/exploits/49375

 

-Web shell

nowonbun.tistory.com/669

github.com/rinechran/Hws/blob/master/WebShell/exec.php

 

-KISA

주요정보통신기반시설_기술적_취약점_분석_평가_상세_가이드_2017.pdf  (667p-673p)  

 

 

'웹 보안 > Exploit-db' 카테고리의 다른 글

EDB-49420, 49428  (0) 2021.01.27
EDB-49431  (0) 2021.01.22
EDB-47583  (0) 2021.01.13
CVE-2020-25762  (0) 2021.01.06
EDB-ID-48822  (0) 2020.12.30