파일 업로드 취약점 공격
- 웹 서비스 첨부 파일, 환경 설정 미흡을 이용하여 악의적인 스크립트가 포함된 파일을 업로드 한 후에 웹 서버에 침투를 하는 공격
- 공격자는 서버 사이드 스크립트(PHP, JSP, .NET 등)을 이용하여 웹쉘(WebShell)을 제작
- 웹쉘(WebShell)은 원격에서 웹 서버를 제어하기 위한 목적으로 만들어졌으나, 지금은 웹쉘 = 악성코드라고 분류를 하여 안티 바이러스에서 탐지함
- 게시판 첨부 파일, 이력서 첨부 파일, 이미지 첨부 파일, 웹 채팅방 파일 공유 기능 등에서 발생
- 직접 만들어 사용할 수 있으나, https://github.com/tennc/webshell 같은 깃허브에서 쉽게 구할 수 있음
파일 업로드 취약점 공격의 목적
1. 웹 서버를 통해 데이터베이스의 정보를 획득
- 데이터베이스에 직접 공격을 할 수 없기 때문에, 웹 서버를 침투한 후 소스코드내 데이터베이스 연결 정보를 통해 개인 정보 쿼리(Query)
- 웹 서버를 통해 데이터베이스의 2차 공격 진행도 가능함
sql injection 과 다른점 : 웹에서 노출되는 정보들을 하나씩 가져오는 sql injection 과 달리 파일 업로드 취약점은 웹쉘을 통해 시스템에 아예 침투하고 난 뒤 원하는 데이터들을 마음껏 가져오는 것
2. 웹 서버를 시작으로 근접 네트워크 침투
- 데이터베이스에 직접 공격을 할 수 없기 때문에, 웹 서버를 침투한 후 내부 시스템의 정보 획득
- 내부 포탈 서버, 로그 서버 등 내부 시스템을 대상으로 포트포워딩(Port Forwarding), 터널링 기법을 통해 공격자와 직접 연결을 함
파일 업로드 취약점 대응 방안
1) 시큐어 코딩 - 소스코드 레벨 대응
- 첨부 파일 확장자 검증은 서버 사이드 스크립트에서 검증해야 함.
- 첨부파일 확장자 검증은 "블랙 리스트의 차단"이 아닌 "화이트 리스트의 허용"으로 해야 함
시큐어 코딩 - 소스코드 레벨 대응 (PHP)
<?php
$tmp_name = $_FILES['Filedata']['tmp_name'];
$filename = $_FILES['Filedata']['name'];
$filename_ext = strtolower(array_pop(explode('.',$filename)));
$allow_ext = array("jpg", "png", "hwp", "pptx", "docx", "xlsx", "pdf");
if(!in_array($filename_ext, $allow_ext)) {
echo "허용되지않는 확장자 파일입니다.";
exit;
}
// 파일 이름의 예: "../upload/20191109231417212120083.hwp"
$newPath = '../upload/'.date('YmdHis').mt_rand().'.'.$filename_ext;
@move_uploaded_file($tmp_name, $newPath);
?>
2) 시스템 보안 레벨
: 파일이 올라가는 서버의 경우 분리를 시켜서 관리를 하고, 모든 실행 권한을 뻬버리는게 좋다.
-> 비용적으로 부담이 됌.
- Apache 설정 파일인 httpd.conf에 해당 디렉토리에 대한 문서 타입을 컨트롤하기 위해 Directory 섹션의 AllowOverride 지시자에서 FileInfo 또는 All 추가
#httpd.conf 파일 내용
AccessFileName .htaccess
<Directory "/var/www/htdocs/upload/">
AllowOverride FileInfo
</Directory>
- 파일 업로드 디렉토리에 .htaccess 파일을 만들고 다음과 같이 AddType 지시자를 이용, 현재 서버에서 운영되는 Server Side Script 확장자를 text/html로 MIME Type을 재조정하여 업로드 된 Server Side Script가 실행되지 않도록 설정
#.htaccess파일 내용
<.htaccess>
<FilesMatch “\.(ph|inc|lib)”>
Order allow, deny
Deny from all
</FilesMatch>
AddType text/html .html .htm .php .php3 .php4 .phtml .phps .in .cgi .pl .shtml .jsp
3) 웹셀 차단 솔루션 - 지속적인 모니터링
'Hacking > Webhacking' 카테고리의 다른 글
[Webhacking] 파일 업로드 취약점 실습 (0) | 2021.04.22 |
---|---|
[Webhacking] XSS 취약점 실습 (0) | 2021.04.15 |
[Webhacking] XSS 취약점 공격 (0) | 2021.04.15 |
[Webhacking] Time based SQL Injection 실습 (0) | 2021.04.11 |
[Webhacking] Blind SQL Injection 실습 (0) | 2021.04.11 |