[U-37] 웹서비스 상위 디렉터리 접근 금지(allowoverride)

2024. 12. 27. 14:57보안 컨설팅/기술적 취약점 점검

주요정보통신기반시설 기술적 취약점 분석·평가 방법 상세가이드

Unix 서버 > U-37(상) 3. 서비스관리 > 3.19 웹 서비스 상위 디렉터리 접근 금지

 

Unix 서버 >  U-37(상) 3. 서비스관리 > 3.19 웹 서비스 상위 디렉터리 접근 금지

 

가이드에 따르면

AllowOverride None으로 설정된 경우

AllowOverride ALL, AuthConfig 설정을 한 뒤 .htaccess 파일을 생성하라고 한다.

 

이 말은 AllowOverride None이면 취약이고 

AllowOverride ALL, AuthConfig 설정을 한 뒤 .htaccess 파일을 생성하면 양호라고 오해하기 쉽다.

 

그러나 판단기준에서 양호는 상위 디렉터리에 이동제한을 설정한 경우로 

'AllowOverride None'와 'AllowOverride ALL, AuthConfig 설정을 한 뒤 .htaccess 파일을 생성' 두 설정방법 모두 양호이다.

 

실제로 테스트를 해보았다.

 

테스트 환경은 도커 환경에서 수행했다.

 

기본적으로 Allowoverride None 설정이 되어있다.

또한 기본적으로 .htaccess설정이 존재하지만 파일은 존재하지 않는다.

경로: /etc/apache2/apache2.conf

AllowOverride 기본설정
.htaccess 기본설정

 

파일 구조는 아래와 같다.

/var/www/html 파일구조

 

1. AllowOverride None -> 상위디렉터리 이동 안되므로 양호

AllowOverride None
상위 디렉터리 이동 시도

현재 index.html에서 상위디렉터리의 test.html 파일 이동을 시도해보았다.Not Found 에러가 뜬다.

결론적으로 Allowoverride None시, 상위디렉터리 이동이 되지 않는다!!

 

2. AllowOverride All

테스트 이전에 .htaccess 파일을 설정해보겠다.

 

* .htaccess 파일 설정하기

/var/www/.htaccess

 

위와 같이 설정 후 bash 쉘에 아래 명령어를 입력한다.

```

htpasswd -c /var/www/passwords/.htpasswd admin

```

그러면 새로운 패스워드를 등록할 수 있도록 New Passoword가 나온다. 나는 똑같이 admin으로 입력했다.

아이디 : admin

비밀번호: admin

 

.htpasswd 파일이 생성된다.

 

.htaccess 파일

 

2-1) apache2.conf내 AllowOverride All, .htaccess 설정이 있으나 .htaccess 파일이 없을 시

AllowOverride All
.htaccess 설정
Alias 디렉티브

이 중에서도 만약 Alias디렉티브를 사용하거나 심볼링 링크를 사용하여 관리자 페이지 접속을 할 수 있도록 한다면 -> 취약

인증없이 /test 로 접속이 가능하다. 관리자 페이지라면 인증없이 관리자 페이지 접속이 가능해진다.

Alias디렉티브를 사용하지 않거나 심볼링 링크를 사용하지 않다면 접근이 불가하다. 기본적으로 상위디렉터리 제한을 한다. -> 양호

 

상위 디렉터리 이동 시도


Not Found 에러가 뜬다.

상위디렉터리 이동이 되지 않는다!!

 

2-2) apache2.conf내  AllowOverride All, .htaccess 설정이 있고 .htaccess 파일이 있을 시 -> 양호

AllowOverride All
.htaccess 설정

 

사용자 이름: admin

비밀번호: admin

접근이 허용된다.

만약, 관리자 페이지로 접근이 필요할 시 이러한 방법을 사용하면 된다.

그러나, apache2.conf파일에 아래와 같이 Alias 디렉티브를 사용하여 상위 디렉터리에 접근하여 하는 방법도 있거나 하위 디렉터리에 인증을 하도록 하는 방법도 있을 것이다.

Alias 디렉티브

 

2-3) apache2.conf내 AllowOverride All, .htaccess 설정이 없으나 .htaccess 파일이 있을 시 -> 취약

설정이 없기 떄문에 .htaccess 파일이 있는지 모른다. 취약

AllowOverride AuthConfig도 결과는 똑같았다.

2-4) apache2.conf내  AllowOverride All, .htaccess 설정이 없고 .htaccess 파일이 없을 시 -> 취약

당연 취약

AllowOverride AuthConfig도 결과는 똑같았다.

 

 

 

 

글이 복잡해졌다.

결론적으로 AllowOverride None 일 경우 양호하다.

AloowOverride All, AllowOverride Authconfig 일 경우 Alias 디렉티브와 심볼릭 링크 사용여부를 유심히 봐야하고

.htaccess가 제대로 설정되어 있는 지 확인해야한다.