[맛보기]파일 업로드 취약점
파일업로드
- 웹 쉘 제작
- r57shell
=> 시그니처 기반 백신탐지 우회 위해 간단히 base64로 인코딩되어있음
1 2 3 4 | <?php eval(base64_decode("DQplck 어쩌구 웹쉘~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") ?> |
- c99shell
=> r57shell을 더 발전시킨 웹 쉘
- 최근 eval($_POST['q']) 같은 코드에 'q' 파라미터에 웹 쉘과 명령어를 전송시키는 방법이 많이 사용
=> 대부분의 POST 메소드를 이용해 시스템 명령이나 코드를 실행하는데, 아파치의 로그 파일은 POST 전송 데이터를 기록하지 않기 때문
- PHP에서 웹쉘에 이용되는 함수 (지기접적으로 시스템 명령을 실행하는 함수)
- PHP코드 실행시키거나 callback을 사용하는 함수
eval, preg_replace(/e option) ...
- 파일 업로드 취약점 공격
- 게시판에 웹 쉘 파일을 업로드 후 해당 웹쉘을 요청하면 php코드 실행
- 많은 게시판들이 이미지를 업로드하면 해당 이미지 출력
=> 이미지 속성값을 이용해 업로드 경로 탐색 가능
속성 |
일반 프로토콜 : ~~~ 유형 : JPEG 이미지 주소 : http:// /board/data/image1.jpg 크기 : ???kb 픽셀 크기 : 273 x 183 픽셀 만든날짜 : 2017.xx.xx 수정한 날짜 : 2017.xx.xx |
=> /board/data/image1.jpg >> 웹쉘 요청으로 php 파일 실행
- 파일 업로드 우회기법
상당히 많은 기법이 있지만 이 절에서는 간단히 3가지 소개
- php.kr 우회기법
아파치의 AddLanguage 옵션에 의해 발생하는것으로, 파일명이 vuln.php.kr일 경우에도 php파일이 실행된다.
해당 취약점은 확장자가 php가 아니므로 필터링을 우회할 수 있다.
- htaccess 업로드 취약점
- 환경취약점
- 파일 업로드 방어기법
php, htm 등 php실행권한을 가진 확장자 필터링
- 1. "php_value engine off" 내용의 .htaccess 파일 업로드 폴더에 생성한다.
- 2. .htaccess 파일을 사용자가 업로드하지 못하도록 필터링한다.
- 3. 데이터베이스와 연동해 download.php?fileno=3 과 같은 방식으로 파일을 다운로드시켜 파일경로를 알 수 없게 하는 방법
등 다양한 방어기법 존재
- XSS (크로스 사이트 스크립팅)
- 쿠키공격 → 쿠키탈취 → 쿠키정보 등록
- 자바스크립트 이용 ('javascript:document.cookie="쿠키값") + F5
- DB 해킹
' or 1=1 # |
' or '1'='1 |
'' or 1=1 # |
" or "1"="1 |
' || 1=1# |
" || 1=1# |
... |
') or ('1'='1 |
SQL 삽입 자동화 프로그램
대표적 : pangolin, sql map, Havji
방어기법 : php의 경우 magic_quotes_gpc 라는 옵션이 존재
-> GPC는 GET, POST, COOKIE
해당 옵션은 GPC로 들어오는 ',",\, 널바이트가 존재하는 경우 해당 문장 앞에 역슬래쉬를 붙여준다.
(위 4문자 모두 문자열 처리, 그리고 작음따옴표나 큰 따옴표로 항상 감싸주도록 하자)
'Web & Network' 카테고리의 다른 글
[Web] StyleBot (0) | 2017.06.13 |
---|---|
[Web]코드편집기(아톰) (2) | 2017.06.12 |
HTML Reference(HTML 사전) (1) | 2017.06.12 |
[맛보기]구글해킹 (0) | 2017.03.28 |
[맛보기]웹해킹 맛보기 (0) | 2017.03.21 |