웹마스터 팁

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 메일링(김훈)
제목 글쓴이 날짜
플래시 swf파일 배경 투명하게 하기 ~~~ [8] kim's 2004.05.09
허접 팁....레이어로 플래시 뺨치는 홈페이지 만들기 -추가- [17] file 남규성 2004.05.05
자동 스크롤 메뉴 (끄기 기능, 무한 스크롤 X) [6] ☺심심 2004.05.02
홈페이지 빠르게하는 [로딩속도를 높히는 10가지방법] [20] kim's 2004.04.29
[tip]간단한 반투명 필터 적용법 [2] 드래군 2004.04.21
제로보드에서 손쉽게 복사하는 소스 (아래보다 더 편함..) [2] Danggn™ 2004.04.17
(For 초보)폼안에 내용을 자동선택+자동복사해줍니다. [6] 쉬드 2004.04.10
모든 스킨에서 중국어 간체 볼 수 있도록 해주는 법... [6] 학몽 2004.03.09
스타일 시트파일을 만들기 .. [4] 박종익 2004.03.07
서브 메뉴 나타났다가 사라지게 하는 방법. 그동안의 노가다는 이젠 끝! [22] file CoolUnit 2004.03.01
간단하게, 색깔있는 밑줄 긋기. [4] naughtykidd 2004.02.27
몇 가지 팁..( 좀 깁니다.. 어느 정도 안다고 생각하시는 분들, 추천 ) [3] naughtykidd 2004.02.26
스타일시트를 이용한 텍스트박스 스타일 제어(밑줄,점선) [8] 01CODE.com 2004.02.26
전송버튼의 테두리를 없애 BoA요 >_< [7] 플로렐라 2004.02.14
nzeo처럼 배너누르면 배너다는법 나오게하기! [6] Rollrang 2004.02.05
옅은 그레이 쓸때 붉은빛 들어가는경우 [10] 김영호 2004.01.29
마우스 오버시 서브메뉴 나타나게 하는방법 입니다 [12] 키드 2004.01.26
그림위에 마우스를 올렸을때 그림저장 버튼 안나타나게 하기... [17] file PHASE 2004.01.19
자동으로 새로고침되게 하기 [5] 권대건 2004.01.05
스크롤바 색상을 아름답게. [17] file 해리포터포에버 2003.12.16