'htaccess'에 해당되는 글 3건

반응형

문제에 접근하면 아래와 같이 업로드하는 로직이 있으며, 업로드 경로에 있는 flag.php 파일을 읽으면 된다고 한다.



가장 먼저 든 생각은 웹쉘을 올리는 것이였다.

그래서 일단 php 코드 실행이 가능한지 테스트하기 위해 간단하게 echo 문을 통해 php 파일을 올려보았다.


하지만 다음과 같이 <?php의 <가 제거되어 php 코드가 실행되지 않고 그냥 출력되었다.


여기서 나는 <?php 를 제외하고 php 코드를 실행할 수 있는 것이 있는데 결국 찾지 못하였다.

php.ini에서 short_open_tag를 이용하면 <?를 통해서도 실행이 가능하다고 하지만 이는 <를 이용하고 있기도 하고 수정 후 서버를 재시작해야 한다고 해서 해당 문제와는 관련이 없을거라 생각하였다.


계속 찾아보다가 업로드하는 디렉토리와 flag.php가 위치하는 경로가 일치하므로 디렉토리에서 실행과 관련된 설정을 하는 .htaccess와 관련이 있지 않을까 하여 알아보다가 php_flag engine off 라는 것을 알았다.


해당 옵션을 .htaccess에 설정할 경우 해당 디렉토리에서는 php 실행이 불가능하여, flag.php에 접근하게 되면 소스코드가 그대로 노출이 될 것이다.



위와 같이 .htaccess 파일을 업로드 후 flag.php에 접근하면 그대로 소스코드가 노출되며 그 안에 FLAG가 존재한다.




반응형

'Solve Problem > Webhacking.kr' 카테고리의 다른 글

webhacking.kr old-06 writeup  (0) 2020.04.21
webhacking.kr old-02 writeup  (0) 2020.04.21
webhacking.kr old-40 writeup  (1) 2020.04.14
webhacking.kr old-50 writeup  (0) 2020.04.14
webhacking.kr old-51 writeup  (0) 2020.04.14
블로그 이미지

rootable

,

HTTP 인증 우회

Hacking/Web 2019. 12. 16. 18:58
반응형

1. HTTP 인증 설정

 (1) /etc/apache2/apache2.conf 내 AllowOverride를 None에서 AuthConfig 수정

 (2) [htpasswd -cb .htpasswd (아이디) (패스워드)] 명령어를 통해 .htpasswd 파일 생성

 (3) .htaccess 파일에 아래와 같이 입력

AuthUserFile /var/www/html/.htpasswd

AuthName "Protected Area"

AuthType Basic


<Limit GET POST>

Require valid-user

</Limit>


2. HTTP 인증 우회

 - 설정을 완료할 경우 아래와 같이 해당 디렉토리 내의 파일에 접근할 경우 로그인을 진행해야 한다.


 - 하지만 아래와 같이 지정되어있는 메소드가 아닌 Method로 요청을 보내면 인증을 우회하여 접근 불가능한 페이지에 접근이 가능하다.


3. 대응방안

 - /etc/apache2/apache2.conf 내 AllowOverride를 AuthConfig에서 All로 변경 (이후 service apache2 reload)

 - .htaccess 파일 내 아래의 내용을 추가해준다. 그 결과 GET과 POST를 제외한 다른 메소드의 경우 접근이 제한되어 Forbidden이 된다.

...


<LimitExcept GET POST>

        Order Allow,Deny

        Deny from all

</LimitExcept>


...



※ 에러 체크

htaccess:  order not allowed here


만약 htaccess 설정하였는데 500 Internal Server Error가 뜰 경우는 apache2.conf의 AllowOverride가 수정되지 않았기 때문이다. All로 변경한 뒤 apache2 서비스를 reload해주어야 정상적으로 작동한다.


※ 참고

https://httpd.apache.org/docs/2.4/mod/overrides.html

반응형

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

open_basedir setting and bypass  (0) 2019.12.31
Sqlite Sql Injection Prevention  (0) 2019.12.30
데이터 평문전송 대응방안  (2) 2019.12.06
0.0.0.0 의 의미  (0) 2019.11.20
Mysql Special Comment  (0) 2019.11.20
블로그 이미지

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

,