'file upload'에 해당되는 글 2건

반응형

mysql에서는 SQL Injection을 통해 파일 다운로드 취약점, 파일 업로드 취약점으로 나아갈 수 있는 방법이 있다. 이는 바로 load_file 구문과 into outfile 구문을 이용하는 것이다.

해당 구문을 이용한 취약점에 대해서는 구글링할 것을 추천하고 해당 포스팅에서는 SQL Injection 이후 해당 구문들을 사용할 수 있는지 확인하는 것에 포커스를 두었다.


1. SQL Injection을 통해 DB 정보 획득

 - user명 : select user();

 - version 정보 : select @@version;


만약 버전 5.1.17 이상이라면 file-priv 옵션이 존재하므로 load_file과 into outfile을 진행하기 위해서는 해당 옵션이 현재 user에 Y로 설정되어있는지 확인이 필요함.


- file-priv 옵션 : select user, file_priv from mysql.user;

만약 file_priv 값이 N으로 설정되어 있다면 load_file과 into outfile은 불가하다.



2. secure-file-priv

 - 현재 user에게 file-priv 옵션이 Y로 지정되어있다라도 secure-file-priv 옵션이 지정되어있으면 해당 디렉토리 이외에는 읽기/쓰기가 불가능하다.


ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement


만약 위와 같은 에러가 떴다면, 이는 secure-file-priv로 지정한 디렉토리 이외의 디렉토리에 존재하는 파일을 읽거나 쓰려고 했기 때문이다.


 - MYSQL 5.6.34 이후의 버전에서는 보안 문제로 인해 secure-file-priv 옵션이 지정되어 있지 않을 경우에도 위와 같은 에러문이 출력되며 load_file과 into outfile 구문을 사용할 수 없다.


 secure-file-priv 확인 방법

 * 명령어 :  SHOW VARIABLES LIKE 'secure_file%';

 * 옵션 설정 파일 예시

   - 리눅스 :  /etc/my.cnf  or /etc/mysql/my.cnf

   - 윈도우 : C:\ProgramData\MySQL\MySQL Server 5.6\my.ini


반응형

'Hacking > Web' 카테고리의 다른 글

Indirect SQL Injection  (0) 2019.08.11
Controller Location In Spring Framework  (0) 2019.07.29
[JAVA] AES256 decrypt Code  (0) 2019.04.25
[Websec.fr] level 8 Writeup  (0) 2019.04.11
[websec.fr] level 25 writeup with parse_url bug  (0) 2019.04.07
블로그 이미지

rootable

,
반응형

* 파일업로드 취약점 대응방안

1) 블랙리스트 필터링 : 전부 허용하고 리스트 목록만 차단

 - 우회 방법 : 확장자 대소문자 치환, PHP 기본 설정 확장자(아래 1.1 참고), htaccess 분산 설정 파일

2) 화이트리스트 필터링 : 전부 차단하고 리스트 목록만 허용

 - 우회 방법 : Multiple Extensions 취약점


1.1 PHP 기본 설정 확장자 

 : PHP는 버전별로 초기 설정에 "php" 외 다른 확장자가 등록되어 있다. 버전에 따라서 확장자 우회가 가능하거나 또는 운영자가 추가한 확장자 명을 알 수 있다면 웹쉘 업로드가 가능.

1.1.1 PHP 인터프리터 확장자 설정

 - 설정 파일 : php.conf 파일 

 ex) CentOS 5.5버전의 경우 = /etc/httpd/conf.d/php.conf

버전 

초기 설정된 확장자 

PHP 3.X 

.php, .php3, .phtm3 

PHP 4.X ~ 5.X 

.php 

PHP 7.X 

.php, .php3, .php4, .php5, .php7, .pht, .phtml 


1.1.2. "mod_mime" 모듈 이용

 : 아파치 웹 서비스는 파일의 미디어 유형 처리와 관련된 "mod_mime" 모듈의 확장자 처리 규칙을 악용하여 PHP 스크립트 파일로 인식 시킬 수 있는 문제점 존재

 * mod_mime 모듈 : 파일에 하나 이상의 확장자가 지정되어 있을 경우 국가 코드와 인코딩을 제외하고 메타 데이터에 미디어 타입에 매핑된 확장자가 하나 이상일 경우에 최우측에 있는 확장자로 인식

  ex) c99.php.kr => 아파치에서는 c99.kr.php로 처리

       c99.php.cmd 혹은 c99.php.rootable 등 "/etc/mime.types"와 "httpd.conf", "php.conf" 등에 정의가 없는 확장자는 제외하고 인식


 - 만약 서버에서 블랙리스팅이 아닌 화이트리스팅으로 확장자를 막고 있다면 ?

(참고 : http://coffeenix.net/board_print.php?bd_code=1671)


* 기본 설정된 확장자 외에 관리자가 추가 등록할 가능성이 있는 확장자

"htm" , "html" , "inc", "phtml", "bak"

* "httpd.conf"에 cgi-script에 다양한 CGI 인터프리터가 등록되어 있을 가능성이 있음

 - ".cgi" , "pl", ".pm" , "py" 등 해당 확장자가 등록되어 있다면 해당 언어로 웹쉘 업로드가 가능함.


1.2. htaccess 분산 설정 파일

- 아파치 분산 설정 파일인 ".htaccess"를 이용하여 우회 시도.

 - ".htaccess"를 이용하려면 "httpd.conf"에 "AllowOverride" 설정이 허용되어 있어야만 기능이 활성화되어 PHP 인터프리터에 임의의 확장자 지정이 가능

ex) .htaccess 코드

AddType application/x-httpd-php .cmd

 -> .cmd 확장자는 php로 실행이 됌.


2.1 Multiple Extensions 취약점

 : 다중 확장자 파일에서는 확장자 순서에 무관하게 메타 정보에 매핑되는 최우측의 확장자로 매핑됌.

ex) rootable.jpg.php.cmd => 매핑되는 확장자는 jpg와 php, 이 중 최우측에 있는 php로 확장자가 인식됌.


2.1.1. "AddType 지시자" 혹은 "AddHandler 지시자"

- 만약 php.conf 파일에서 AddType 지시자 혹은 AddHandler 지시자를 사용할 경우 파일명에 ".php" 확장자가 포함되어있다면 핸들러가 우선하여 PHP 스크립트로 매핑된다.

 ex) rootable.php.jpg의 경우 php와 jpg 모두 메타 정보에 매핑되어 있어 최우측의 jpg로 확장자가 결정되어야 할 것 같지만 php.conf 파일에 "AddType 지시자"나 "AddHandler" 지시자로 되어있다면 해당 파일은 php로 확장자가 결정됌.

 - 대응방안 : <FilesMatch> 블록을 이용하여 최우측의 확장자가 ".php"일 경우에만 PHP 스크립트로 처리하도록 설정

<FilesMatch \.php$>        //최우측의 확장자가 .php일 경우에만 적용

SetHandler application/x-httpd-php

</FilesMatch>


출처 : 웹 모의해킹 시나리오의 완성 WEB HACKING 서버 침투 기법 

반응형

'Hacking > Web' 카테고리의 다른 글

파일 다운로드 취약점 시 찾아볼 것  (0) 2017.12.04
SQL Injection 필터링 우회  (0) 2017.11.13
SQL Injection 관련  (0) 2017.06.29
XST에 대해 알아보자  (1) 2017.05.09
LFI&RFI  (0) 2017.03.08
블로그 이미지

rootable

,