Open Source/BackTrack

[BackTrack5 R3] Apache-users

DarkSoul.Story 2013. 2. 4. 15:14
반응형



개요

 

Apache-users는 Perl로 작성되었으며, Apache의 UserDir 모듈을 통해 Apache 서버의 내부 사용자 이름(Username)을 알아내는 도구 입니다. Apache-users의 단점은 UserDir 모듈을 사용하지 않는다면, 어떤 결과도 얻을 수 없다는 점입니다.  

근래에는 UserDir 모듈이 불필요하며, 보안상 취약하다는 이유로 사용을 하지 않는 웹 서버들이 많습니다.

 

- Apache UserDir 모듈

 

Apache 서버의 내부 사용자들이 외부에 공개하고자 하는 html 문서를 저장하기 위한 용도로 사용되는 내부 사용자별 디렉터리를 말한다.  UserDir 모듈 사용방법은 아래와 같이 사용한다.

 

- UserDir 모듈 사용 방법 (Ubuntu 기준)

 

1. userdir.conf 편집

 

#/etc/apache2/mods-available/userdir.conf

 

<IfModule mod_userdir.c>

          UserDir public_html    // 사용자별 디렉터리 이름

          UserDir disabled root  // userdir 모듈 허용 / 거부 설정 

         

          <Directory /home/*/public_html> // 사용자별 디렉터리 위치

                  AllowOverride FileInfo AuthConfig Limit Indexes

                  Options Multiviews Indexes SymLinksIfOwnerMatch IncludesNoExec

                  <Limit GET POST OPTIONS>

                         Order allow,deny

                         Allow from all

                  </Limit>

                  <LimitExcept GET POST OPTIONS>

                         Order deny,allow

                         Deny from all

                  </LimitExcept>

              </Directory>

</IfModule>

 

위에서 살펴본 userdir.conf파일을 이용하여특정 사용자만 UserDir 디렉터리를 허용시키고자 할 때는 enabled을 사용하여아래와 같이 설정한다.

 

) UserDir disabled

    UserDir enabled user1 user2

 

대부분의 사용자는 허용하고 일부만 거부하고자 한다면 disabled을 이용하여아래와 같이 설정한다.

 

) UserDir enabled

    UserDir disabled user1 user2 

 

2. 링크 또는 복사

Userdir.conf 파일 설정이 완료되면, /etc/apache2/mods-acailable/안에 있는 userdir.cof

userdir.load 파일을 /etc/apache2/modes-enabled/으로 복사하거나 링크를 걸어 준다.

 

링크

#cd /etc/apache2/modes-enabled/

#ln -s /etc/apache2/mods-available/userdir.conf

#ln -s /etc/apache2/mods-available/userdir.load

 

복사

#cp /etc/apache2/modes-available/userdir.* /etc/apache2/modes-enabled/

 

3. 폴더 생성

 

2번 까지 모두 완료되었으면이제 Home 디렉터리에 존재하는 사용자 폴더 밑에 public_html 폴더를 생성 후 안에 *.html 을 생성 해준다

 

4. 모든 설정이 끝났다이제 apache 데몬을 재 시작한다.

#/etc/init.d/apache2 restart

 

- Userdir 접속 방법

브라우저에서 http://도메인/~사용자/ (http://ex.com/~user1/)

 


 


테스트 환경 

 운영 체제 (OS) : BackTrack5 R3 

 테스트 웹서버 : Ubuntu 12.04 LTS / Apache 2.2.22 (Ubuntu) / Mysql 14.14 Distrib 5.5.28


 

상세 분석

다음은 apache-users를 실행 했을 때 처음으로 보여주는 화면 이다.



 옵션

 

-h : 도메인 (최대 4개까지지정

-l : Brute Force (무차별 대입)에 사용될 Username(사용자 이름목록 파일 지정

-p : 웹 서비스 포트 지정

-s : SSL 적용 유무 : 1 = SSL 적용된 도메인 / 0 = SSL 적용되지 않은 도메인

-e : Http Code : 200 ok / 403 Forbidden / 404 : Not Found 등 지정

-t : 스레드(threads) 수 지정

 

사용하기에 앞서 apache-users의 소스코드를 살펴 보자.



apache-user 소스코드는 매우 간단하게 만들어져 있습니다. 사용자가 입력한 값들을 각각 대입하여 Brute Force (무차별 대입)에 사용될 Username(사용자 이름목록 파일에 존재하는 문자열을 모두 대입하여 끝날때 까지 루프를 돌며 확인 하고자 하는 도메인에 패킷을 보냅니다.

 

apache-sers는 기본적으로 약 8000개의 문자열이 저장되어있는 파일(names)을 제공하며, apache2.1.pl 과 같은 폴더에 존재합니다. (/pentest/enumeration/web/apache-users/)



-e 옵션을 적용하여 200과 403을 지정해준다. 지정해 준 이유는 해당 userdir을 사용하는 사용자가 존재하면 해당 페이지가 존재하여 http Response코드가 200 Ok가 되기 때문에 바로 확인이 가능 하다. 403 Forbidden 코드는 /home/사용자 계정 디렉토리/public_html 이 없어더라도 계정이 존재하고, 계정 디렉터리 권한이 700이면 403 Forbidden 코드를 반환하기 때문이다. (계정 디렉터리 권한이 700이 아니면 public_html이 없다고 판단한다.)

 

apache-users를 실행 하였을때, 와이어샤크를 통해 보내는 패킷을 확인 하면 아래와 같다.



apache-users가 모든 작업을 완료 하면, 아래와 같이 Execution time을 반환 한다.



여기서 가장 중요한 한가지!!! 결과 값을 보기위해서는 -e 옵션에서 지정한 Http Code 값이 http Response코드값과 같은 경우에만 출력해주기 때문에 꼭 알맞은 코드값을 지정해주어야 합니다. 그렇지 않은 경우는 그냥 Execution time만 출력해준다.

 

참고 URL 및 도서

http://httpd.apache.org/docs/current/en/mod/mod_userdir.html  

http://www.securiteam.com/unixfocus/5WP0C1F5FI.html 

반응형