웹마스터 팁

apache 1.3.x-2.0.48 의 원격 유저 검색 취약점을 이용한 exploit이 등장했습니다.

여러가지 방법으로 테스트해보다가 아래와 같은 특징을 발견하여서 알려드리고자 합니다.

이번 exploit은 mod_userdir.c를 이용하는 것으로 httpd -l 로 검색해서
mod_userdir.c 모듈이 있으면 이번 공격에 취약합니다.

이 exploit은 일정한 조건과 userlist.txt를 통해서 매치되는 apache서버의
내부 사용자들의 계정을 알아낼수 있습니다.

(이것은 해커에게 좀더 쉽게 공격 대상의 계정 정보를 취득하게 할뿐만 아니라 계정과
동일한 패스워드를 사용하는 사용자가 있다면 그사용자로 인해 root 권한 까지도 빼앗길 수
있는 exploit 입니다.)


하지만 이 exploit은 다음과 같은 특징이 없다면 원격 사용자를 검색해 내지 못합니다.



1. mod_userdir.c가 있을경우에 해당 계정의 디렉토리 밑에 public_html 이 있을 경우에 탐지된다.

=================================

UserDir public_html

-------> 만약 UserDir www 라면 계정밑에 www 디렉토리가 있다면 탐지된다.

[root@manpage hack]# ./m00 -t localhost -u userlist.txt -l usertest

[*] Apache 1.3.*-2.0.48 remote users disclosure exploit by m00 Security.

[*] Checking http server [localhost:80]...
Apache => yes
Vulnerable => yes
OS =>
[*] Searching for system accounts...
test => yes ( public_html이 있을때)
test1 =>
[*] Searching complete.
2 users checked
1 users found

[*] Searching for system accounts...
test => no (계정밑에 public_html이 없을때)
=================================


2. 계정 디렉토리의 밑에 public_html 이 없어도 계정 디렉토리의 권한이 700이면 탐지된다.

=================================
public_html이 없어도 계정이 존재한다면 http 쿼리를 해보면 403 이란 반환
값을 얻을수 있다.

소스에 보면 200, 403, 404 대해서 분류가 되어있는데 그것은 아래와 같이 값
을 얻었을 때 계정의 유무를 판단하기

위한 것이다.

다음은 http 쿼리시 남은 로그이다.

127.0.0.1 - - [18/Dec/2003:01:23:31 +0900] "HEAD /~test HTTP/1.1" 403 0
-> Forbidden
127.0.0.1 - - [18/Dec/2003:01:23:31 +0900] "HEAD /~test1 HTTP/1.1" 404 0
-> 페이지를 찾을수 없습니다.
127.0.0.1 - - [18/Dec/2003:01:30:54 +0900] "GET /~test/ HTTP/1.1" 200
345 -> 정상적인 동작시

[root@manpage hack]# ./m00 -t localhost -u userlist.txt -l usertest

[*] Apache 1.3.*-2.0.48 remote users disclosure exploit by m00 Security.

[*] Checking http server [localhost:80]...
Apache => yes
Vulnerable => yes
OS =>
[*] Searching for system accounts...
test => yes ( public_html이 없이 계정 디렉토리의 권한이 700 일때)
test1 =>
[*] Searching complete.
2 users checked
1 users found

[*] Searching for system accounts...
test => no (계정의 권한이 700이 아닌 다른것일때 public_html은 없다.)
=================================



3. 계정 디렉토리의 권한이 755 이고, public_html이 존재하면 계정과 패스워
드가 동일하다면 ftp접속가능 여부도 알수있다.

=================================
아래의 test는 디렉토리 권한이 755이고, public_html이 존재하고 계정(test)
과 패스워드(test) 가 동일할때의 결과이다.

[root@manpage hack]# ./m00 -t localhost -u userlist.txt -l usertest -b

[*] Apache 1.3.*-2.0.48 remote users disclosure exploit by m00 Security.

[*] Checking http server [localhost:80]...
Apache => yes
Vulnerable => yes
OS =>
[*] Searching for system accounts...
test => yes (test란 계정을 찾았고)
test1 =>
[*] Searching complete.
2 users checked
1 users found
[*] Attempting to log on ftp with login:login...
test:test => yes (ftp접속도 가능하다)
[*] Complete.
1 ftp accounts found
================================



위에서도 몇가지 해결책을 알아보았고,

다음과 같은 방법을 통해서도 이번 exploit에 대한 탐지를 막을수 있습니다.

1. 가상호스팅을 이용합니다. (DocumentRoot를 public_html로 주지않고 다른
디렉토리로 주게되면, 탐지를 막을수 있다.)
권한은 700으로 주지 않는다. (물론 웹을 이용할것이므로 700으로 주지는 않
을것이라 생각됨)
---------------------------

ServerAdmin test@manpage.co.kr
DocumentRoot /home/zmnkh/
ServerName test.manpage.co.kr

-----------------------------

2. /etc/passwd 파일을 640등으로 주어 소유자와 그룹소유자만이 읽을수 있도
록 하면 탐지 자체가 되지 않습니다.
-----------------------------
/etc/passwd의 권한을 변경한뒤에 실행

[root@manpage hack]# ./m00 -t localhost -u userlist.txt -l usertest

[*] Apache 1.3.*-2.0.48 remote users disclosure exploit by m00 Security.

[*] Checking http server [localhost:80]...
Apache => yes
Vulnerable => no
[-] Exiting...
------------------------------

이때 /etc/passwd 파일을 640으로 해놓았을 경우 에러가 발생할 소지가 있으므로,
passwd를 읽어야 하는 일반 계정의 사용자들이 있을 경우에

/etc/group의 wheel 그룹에 등록하고,

chgrp wheel /etc/passwd 으로 /etc/passwd그룹을 변경하여 사용하면 무리없이
사용할수 있을 것입니다.


사용하기 편한 방법으로 exploit공격에 대비하시면 되겠습니다


출처 : CERTT 메일링(김훈)
제목 글쓴이 날짜
MySQL 설치 file 김 무건 2010.05.12
XE운영을 하려면 닷네임(dotname) 호스팅을 사용하시면 안됩니다 [7] nalireco 2010.05.11
XE 사용하기 - 동영상 강좌 [36] 선우(善友) 2010.05.05
공지글 1페이지에만 보이기 [1] 러키군 2010.04.29
특정 카테고리의 최근 이미지 출력 위젯 [3] file 앙띠2 2010.04.28
모듈 선택기 추가 안되는 에러 해결 : 모둘의 브라우저 제목에서 따옴표 '' 뺏더니 해결 [4] file refree 2010.04.27
레이아웃 적용 후 게시판 접근 제한 -> 게시판 board 모듈 재설치 해결 [1] refree 2010.04.24
게시판 스타일변경시 406에러 해결방법 우리랑 2010.04.21
XE 레이아웃 게시판이 3곳이라는 사실 아시나요? [3] serendip 2010.04.19
XE 속도를 개선하기 위한 4가지 방법 (수정 #3) [9] SMaker 2010.04.14
XE 일일이 메뉴출력하지 말고 XE함수들로 한번에 처리하세요! [1] 소렌트. 2010.04.11
[현원式] 개나 소나 하는 CSS - 레이아웃 만들기 / 기초지식 이해편 [3] 현원 2010.04.10
개인 웹서버의 완성 우분투 (서버이전완료) [1] 준타 2010.04.07
[게시판ex] 상단에 나오는 ''포인트'' 말풍선형태 배경이미지 및 PSD소스입니다. [3] file 빨간발 2010.04.04
XE 기본 카운터의 방문자 / 페이지뷰 출력하고 수정하기 [5] 대류 2010.04.03
트위터와 구글톸을 이용한 제로보드XE 새글 알리미 구축하기 [2] 하우하우 2010.04.03
Content 위젯 목록 가로로 정렬 하기 편법 [3] file teryboy 2010.04.01
속도향상에 관해(경험+의견) [3] 아고라 2010.03.31
홈페이지에 계정 사용량, DB 사용량, 현재 트래픽 출력하기 [7] file 대류 2010.03.29
카페24 웹호스팅에서 서브 도메인으로 접속 방법 [5] 데이스타 2010.03.28