본문 바로가기

보안지식/주통기반

[주통기반] 공격 시나리오 정리(디렉터리 인덱싱, 정보 누출)

안녕하세요 이번에는 8번,9번인 디렉터리 인덱싱, 정보 누출 취약점에 대해 설명 하겠습니다.

 

매우 간단하게 발견 가능한 취약점이고 빠르게 고칠 수 있는 취약점입니다.

 

 

-디렉터리 인덱싱

 

웹 페이지에 php문이 아닌 디렉터리 링크로 들어가면 디렉터리 인덱싱 페이지가 보이는 경우 입니다.

 

예시로 ctf.segfaulthub.com/study/login.php 이 아닌

 

ctf.segfaulthub.com/study/ 이렇게 디렉터리로 들어가면 

 

이렇게 해당 폴더 안에 있는 파일 들의 보입니다

 

이러면 단점이 서버에 있는 디렉터리에 무슨 파일이 있는지 확인이 가능합니다.

게다가 저 파일을 클릭하면 그 파일을 실행 한다는 거여서 저희가 악의 적인 php문을 올린 뒤 디렉터리 인덱싱 통해 

파일을 실행 시켜서 공격이 가능합니다.

 

더군다나 서버에 백업 파일을 넣어두는 경우가 많습니다. 그 백업 파일의 내용을 엿볼 수도 있겠죠.

 

물론 php 코드는 서버 측 코드여서 이 취약점 통해 확인이 불가능 하지만 서버 내에 어느 파일이 있고 실행이 가능하다는

매우 위험한 취약점입니다.

 

 

 

-대응 방법

 

웹 서버 환경 설정에 디렉터리 인덱싱 기능 제거 가능합니다!

 

만약 아파치를 이용하는 경우 httpd.conf 파일 안에 documentRoot 항목의 Options에서 Indexes 제거하면 됩니다.

혹은 apache2.conf에 있습니다.

 

저는 서버 설정파일 이름이 apache2.conf입니다. 그래서 /etc/apache2 디렉터리에 있는 apache2.conf을 수정하겠습니다.

 

 

그리고 document 란을 찾습니다.

 

여깄네요!

 

밑에 /var/www/ 에 있는 Indexes을 지우겠습니다.

 

그리고 저장 후 나가기

 

그런 다음 아파치 재실행 하고 다시 봐보겠습니다.

 

제거 하기 전

 

제거한 후

 

 

이렇게 막을 수 있습니다.

 

 

 

-정보 누출

 

정보 누출 취약점은 말 그대로 정보가 누출 되는 취약점입니다. 흔히 프록시 툴로 데이터를 보는데 사용자의 전화번호까지 보여준다던가 주석 처리 된 곳에 아이디와 비밀번호가 적혀 있다던가.

 

주석 처리한 곳에 파일 명이나 위치가 적혀 있다던가, 비밀번호 적는데 ***** 이렇게 안 나오고 평문이 작성된 다던가.. 등

이러한 것들이 정보 누출입니다.

 

그런데 정보 누출은 아파치 서버 정보도 볼 수 있으면 취약점에 해당됩니다!

 

예를 들어 볼게요

 

403 페이지

 

방금 보신 403페이지에 아파치 2.4.57 버젼을 사용 중이다. 라고 보이죠? 이것도 정보 누출입니다.

왜냐하면 CVE라는 취약점 코드 때문에 그렇습니다.

 

CVE는 취약점을 모은 코드라고 보시면 됩니다. 각 서버 버젼마다 CVE 코드가 있죠.

그래서 항상 업데이트를 하라고 하는게 이 이유입니다.

 

CVE가 있다는 이야기는 취약점이 있다는 이야기이기 때문이에요.

 

https://mynameisarke.tistory.com/88

 

pentest - 서비스 분석하기

안녕하세요! 저번 포스팅 정보 수집에 이어서 다음 절차인 서비스 분석을 하겠습니다. 서비스 분석 절차에는 취약점을 찾는 겁니다. 저희가 저번 정보 분석 때 어느 서비스 인지 어느 포트 번호

mynameisarke.tistory.com

여기에 CVE에 대한 정보가 있어요! 참고만 하세요

 

어쨌든 이러한 서버 버젼도 보이는 것도 정보 누출 취약점에 해당 됩니다.

 

서버가 잘 연결 된 경우(200 페이지)에도 있구요 또한 302페이지 404 페이지 400페이지 501페이지에도 서버 버젼 노출이 있을 수 있습니다.

 

그 것들을 저희가 다 찾아서 알려줘야만 합니다.

 

200페이지 같은 경우는 그냥 프록시 툴 통해 들어가시면 볼 수 있습니다.

 

서버 버젼 보이시죠?

 

302 페이지는 이동할 때 쓰이는 페이지 입니다. 마찬가지로 프록시 툴 통해 확인 가능합니다.

 

400 페이지는 일부러 저희가 이상한 데이터를 보내보면 됩니다.

 

이렇게요

 

그리고 404페이지는 없는 페이지 들어가면 나오구요

 

501페이지는 서버 내에서 처리 할 수 없는 데이터를 받을 때 발생합니다.

그럼 그렇게 유도를 하면 됩니다.

 

이렇게요

 

TT라는 이상한 방식으로 보내고 이상한 페이지로 보내는 경우 서버 측에서 501페이지를 보여줄 확률이 큽니다.

 

 

 

-대응방법

 

당연히 주석에다가 중요한 정보를 작성하면 안되구요. 비밀번호 같은 경우 남들이 못 보게 ****이렇게 보이게 설정을 하면 됩니다.

 

그런데 저렇게 서버 버젼 노출 같은 경우는 아파치 설정 파일에 들어가서 에러 발생시 Redirect 설정하면 됩니다.

아니면 가상호스트에 <VirtualHost></VirtualHost> 사이에 설정 하면 됩니다.

 

저는 설정 파일에 Redirect 설정하겠습니다.

 

이 것처럼 하면 되겠죠

 

이렇게

만약 에러페이지 500 501 404 400이 나오면 간단하게 Error 메시지 보이게 했습니다.

다른 에러페이지 403,402 등등 전부 일일이 설정하시는게 좋아요! 지금은 간단하게 4개만 했습니다

 

그리고 아파치 재실행 하고 확인해보면

 

이렇게

 

서버 버젼 노출이 안되죠.

 

하지만 프록시 툴로 보면 서버 토큰(서버 버젼)이 보일 수 있어요

 

 

이것도 설정 파일에 들어가서 안 보이게 설정 가능합니다.

 

ServerTokens Prod

ServerSignature Off

 

맨 밑에 두줄 추가 하면 됩니다.

그리고 아파치 재실행 하고 나서 다시 프록시 툴로 보면

 

 

이렇게 아파치의 정보가 안 보이게 됩니다.

.

.

.

.

이렇게 해서 오늘은 2개의 취약점을 알아보았습니다. 감사합니다