상세 컨텐츠

본문 제목

[웹 모의해킹] 디렉토리 인덱싱(디렉토리 리스팅) 보안취약점 점검 코드

[Tech] 정보보안/소소한 코드 몇 줄

by tech-dailylife 2021. 7. 29. 17:55

본문

반응형

일상이든 회사업무이든 반복적인 일을 하다보면은 간단한 코드 몇 줄로 개선해보고 싶어집니다.

그럴 때마다 하나씩 짧게나마 만든 코드를 가볍게 포스팅 하려고 합니다.^^

 

[작성배경]

이번에는 디렉토리 인덱싱(또는 디렉토리 리스팅) 보안취약점을 점검하는 코드를 포스팅합니다.

이 취약점은 디렉토리 경로까지만 입력했을 때, 디렉터리 리스트가 출력되는 취약점으로 쉽게 확인이 가능합니다.

참고로 구글 검색엔진에서 intitle:index of 라고 키워드를 사용하여 검색하면 이 취약점이 있는 여러 사이트 페이지가 나옵니다. 디렉터리 경로와 경로 내에 있는 파일들을 쉽게 확인할 수 있어, 파일이 유출되거나 시스템이 분석되기 쉬운 취약점이라고 할 수 있습니다.

실제 확인하는 방법은 step1)에 가깝습니다. 디렉터리 경로까지만 입력하여 주소표시줄에 호출하면 리스트가 나타나는지 확인하면 끝입니다. 사이트가 많을 경우 일일히 하기 번거롭기 때문에 코드로 자동화를 좀 시켜서 쓰면 유용할 것 같네요.  

 

 

[소스코드]

코드는 py파일에 작성하여 cmd에서 테스트했습니다. 마찬가지로 기본적으로 사용하는 requests 라이브러리와 브라우저를 조작하기 위한 selenium 라이브러리를 설치하셔야 합니다.

 

 

[상세설명]

주요한 프로그램의 동작 구성은 아래와 같이 작성되었습니다.

1. 점검 url을 텍스트 파일에서 읽어옵니다.

하나씩 불러와서 점검합니다. 텍스트 파일에는 URL 경로를 넣어두면 좋고요. URL 경로 깊이가 좀 긴 내용을 넣는 것이 좋을 것 같아요.

2. 입력된 url을 / 단위로 잘라가면서 상위 경로로 이동하며 한 번씩 요청을 보냅니다.

http://127.0.0.1:8001/dvwa/vulnerabilites/spli/  의 경우

http://127.0.0.1:8001/dvwa/vulnerabilites/spli/

http://127.0.0.1:8001/dvwa/vulnerabilites/

http://127.0.0.1:8001/dvwa/

http://127.0.0.1:8001/

까지 4번의 요청을 보냅니다.

 

3. 각 요청에 대한 응답 메시지에 index of가 나타나는지 확인합니다.

디렉터리 인덱싱의 취약 페이지 패턴인 index of를 검색합니다.

 

4. 필요한 점검 결과와 로그를 출력합니다.

콘솔에는 대상 URL에 대해 점검URL과 점검결과, 취약할 경우 증적파일 경로를 출력했습니다.

아래 warnning의 경우 ssl 관련 경고인데, verify를 false로 해서 에러가 아닌 경고만 나도록 했고요. 이 경고 문구가 거슬리기 때문에 txt 파일에서 확인하면 더 깔끔합니다.

텍스트 파일과 이미지 파일을 생성하여 결과를 쉽게 확인할 수 있게 만들었습니다.

먼저 텍스트 파일에는 콘솔에 출력한 내용을 그대로 저장해뒀습니다. 경고는 저장 안되니 더 깔끔하죠.

취약 또는 확인 필요한 경우의 점검 결과 생성된 이미지를 저장하고, 그 이미지를 웹에서 자동으로 열리게 해놓았습니다.

아래는 취약한 케이스로 디렉터리 인덱싱 취약점 화면을 볼 수 있습니다.

 

반응형

관련글 더보기

댓글 영역