파일 업로드 취약점
이름 그대로 파일을 업로드하여 공격을 하는 방법 이를 통해 웹 셸 및 DoS공격이 가능하다.
파일 업로드의 기능에 용량제한 및 개수 제한이 없는 경우 다량의 고용량 데이터를 업로드하여 해당 서버의 Disk를 점유하도록 공격하게 된다면 가용성에 대한 공격 즉 DoS공격이 될 수 있다.
해당공격을 통해 웹 셸을 실행 할 수 있다면 Server Side 공격이 될 것이고 Client Side 소스를 업로드하고 다른 사용자가 해당 파일을 실행하게 한다면 Client Side 공격이 될 수 있다.
Pishing
login.php 파일이 없는 서버에 /phising/login.php 파일을 업로드 한 뒤 로그인을 시키면 사용자는 앞 도메인을 보고 정상적인 사이트로 인식할 수 있다.
Deface 공격
서버에 index.php가 있는경우 index.php를 업로드하여 새로운 index.php를 실행하도록 하는 공격방법이다.
XSS공격
정상적인 index.php가 있다고 한다면 해당 index.php를 다운로드 받고 index.php에 추가적으로 악성스크립트를 삽입 후 재 재업로드하여 공격 할 수 있다.
웹 셸
웹 셸(web shell)은 업로드 취약점을 통하여 시스템에 명령을 내릴 수 있는 코드를 말한다. web shell은 간단한 서버 스크립트 (jsp, php, asp...)로 만드는 방법이 널리 사용되며 이 스크립트들은 웹 서버의 취약점을 통해 업로드된다. 웹셸 설치 시 해커들은 보안 시스템을 피하여 별도의 인증 없이 시스템에 쉽게 접속 가능하다. - 위키백과-
즉 파일 업로드를 통해 해당 서버의 명령어를 입력 할 수 있는 공격 방법이다.
웹 셸을 동작 시켰다면 해당 권한은 해당 프로그램을 실행한 권한과 동일하다.
웹 셸은 서버의 구성에 따라 업로드할 파일이 다르다.
python을 사용하는 서버라면 .py의 코드를, java를 사용한다면 .jsp를, php라면 .php를 올리는 방식이 된다.
php웹셸 예시
<?php
echo system($_GET['cmd']);
?>
1. 웹 셸을 업로드 할 수 있어야한다.(php의 경우 확장자가 .php여야한다.)
2. 웹 셸은 업로드 한 파일을 WAS가 실행 시키기 때문에 경로를 알아야한다.
대응 방안
파일의 업로드 시점에 확장자와 파일의 크기 등을 확인하여 막는다.
확장자가 php라면 막는 식의 블랙리스트의 경우 대응하기 쉽지 않다.
Ex)
- .php -> pHp, php3
- .asp -> .cer .cdx .asa
- .php -> .php3 .html .htm
- .jsp -> .war, jspx, jsv, jsw
등 동작 가능한 확장자 를 모두 기입해야한다.
특정 확장자만 업로드가 가능하도록 화이트리스트 방식을 채택하는 것이 보다 간편하고 강력하다.
Ex)
이미지 업로드의 경우
png, jpg, jpeg, gif 만 업로드 가능하도록
'웹 해킹 코스 > 내용 정리' 카테고리의 다른 글
15주 File Upload, Download 취약점(LFI, RFI) (0) | 2024.02.15 |
---|---|
13주차 Dos 공격 및 CSRF의 대처방법 (0) | 2024.02.05 |
12주차 CSRF (0) | 2024.02.01 |
12주차 CSRF (1) | 2024.01.21 |
11차 HTML의 DOM 접근 (0) | 2024.01.15 |