본문 바로가기

IT Security/HACKABLE

[Two Greedy] Web Scanning Using Nikto

가상으로 구축된 환경 외에 시도하는 것은 엄연히 불법입니다. 모든 책임은 개개인에게 있으니 조심해주세요

안녕하세요 Retain0입니다. 이번 시간에 해볼 것은 " Nikto "를 통해 Web Server 스캐닝 해보도록 하겠습니다. wpscan의 경우 스캐닝과 여러 계정들의 문자열 강도를 테스트할 수 있지만 Nikto의 경우 취약점을 스캐닝을 통해 잠재적 위협이 될만한 요소들을 사전에 대처할 수 있는 목적을 두고 있습니다.

Nikto는 6700개 이상의 잠재적으로 위험한 파일, CGI 을 탐지하고 1250개가 넘는 서버의 오래된 버전을 확인하며 270개 가 넘는 서버에서 버전별 문제를 검사할 수 있습니다. 또한 여러 색인 파일의 존재 및 HTTP 서버 옵션과 같은 서버 구성 항목을 확인하고 설치된 웹 서버 및 소프트웨어를 식별합니다.

※ Nikto는 보안점검을 위해 설계된 툴이다 보니 스캐닝을 했던 로그 기록은 남습니다.

※ CGI 란

  • " Common Gateway Interface "의 약자이며 서버 프로그램에서 다른 프로그램을 불러내고 그러한 처리 결과를 사용자에게 송신하는 방법입니다. 즉 서버 프로그램과 외부 프로그램과 연계법을 정한 것 예) 홈페이지 게시판, Q&A, 방명록, 메모장 

① Nikto

Nikto 실습 구성
사진 1 설치

apt-get install nikto

사진 1 kali에는 내장되어 있으며, 다른 Linux 환경에서 사용하려면 위의 명령어대로 설치해주시면 됩니다. 하단에 링크 참조하셔도 됩니다.

사진 2 nikto 실행 화면

사진 2 명령어 " nikto "를 입력하면 기본적으로 사용할 수 있는 옵션들이 나타납니다.

-config+ : 이 구성 파일 사용
-Display + : 디스플레이 출력 on/off
-dbcheck : 구문 에러에 대한 db 및 기타 키 파일 확인
-Help : 도움말
-host+ : 대상 호스트 / URL
-id+ : 사용할 호스트 인증
-list-plugins : 사용 가능한 모든 플러그인 목록
-output+ : 이 파일에 출력 결과 작성
-nossl : SSL 을 사용 x
-no404 : 404검사를 비활성화
-Plugins+ : 실행할 플러그인 목록(default: ALL)
-port+ : 사용할 포트(default: 80)
-root+ : 모든 요청에 루트 값을 추가( /directory)
-ssl : 포트에서 강제로 SSL 모드
-Tuning+ : 스캔 튜닝
-timeout+ : 요청 시간 초과(default 10 seconds)
-update : 업데이트
-Version : 플러그인, db 버전 출력
-vhost+ : 가상 호스트​

사진 3 Nikto 상세 옵션

nikto -Help

사진 3 명령어 " nikto -Help "를 입력하면 상세 옵션들을 확인하실 수 있습니다. 다양한 옵션들을 내포하고 있으니 한번 확인해보시길 바랍니다.

-Cgidirs+ : 스캔할 CGI 디렉터리를 지정 ( default all)
-config+ : 사용할 커피 그 파일
-Display+ : 결과를 어떤 식으로 출력할지
-evasion+ : URL 인코딩( 보안장비 우회 위함 )
-Format+ : 스캔 한 결과를 파일로 저장 or 어떤 형식으로 남길지 지정

nikto -h 대상주소 -C all
-h : 대상주소
-C : 스캔할 디렉토리 지정

사진 4 우선 대상 웹서버를테스트하기 전에 공격자 자신의 웹서버를 한번 테스트 먼저 해보도록 하겠습니다.

우선 서버를 활성화시켜야 하니 " service apache2 start "를 실행 준 후 명령어 " nikto -h 대상 웹서버 주소 -C all " 입력을 해주면 하단에 스캔 결과가 쭉 나오는 것을 확인하실 수 있습니다. 필자의 웹서버를 대상으로 스캐닝 해본 결과 " Directory Indexing "의 취약점이 도출된 것을 확인할 수 있습니다.

Directory Indexing " 이란

  • 해당 서버의 환경 설정 및 파일들을 애플리케이션 환경에서 파일을 열람, 다운로드할 수 있는 취약점을 뜻하며 공격자는 개인 정보 및 중요 정보 파일을 유출할 수도 있으며 이러한 구성들을 토대로 웹 시스템의 구조를 쉽게 파악할 수 있게 됩니다.

OSVDB "란 무엇인가?

  • " Open Sourced Vulnerability Database "의 약자로 보안의 취약점에 대해 정확하고 상세하게 표현하는 것의 목적을 두고 있습니다.

※2016년 04월에 OSVDB는 종료되었지만 각 버전의 위험을 측정하기 위해 계속 유지되고 있습니다. 그만큼 오래전부터 사용되어왔던 보인 툴이라고 보시면 되겠습니다.

사진 5 " Directory indexing " 출력 화면

자신의 웹서버에는 따로 넣어둔 게 없었으니 저것밖에 안 나오지만 실제 서비스 중인 웹 서버 대상으로 " Directory indexing " 취약점이 도출된다면 여러 폴더가 노출되었을 것이며 그 안에는 분명 사용자의 개인 정보, 이력서 같은 민감 자료들이 담겨 있었을 가능성이 높습니다.

사진 6 대상 wordpress

사진 6 이번엔 wordpress를 대상으로 스캐닝을 실시해보겠습니다.

사진 7 스캔 명령어

nikto -h 대상주소 -C all
-h : 대상주소
-C : 스캔할 디렉토리 지정

사진 7 wordpress를 대상으로 스캐닝 해본 결과 하단에 마찬가지로 OSVDB를 기반으로 여러 취약점과 버전들을 나타내줄 것입니다.

◆ Directory indexing 대응 방안

(1) Apache

-httpd.conf --> DocumentRoot --> options --> indexes( 폴더 목록들을 보여주는 지시자) 제거

(2) IIS

- 설정 --> 제어판 --> 관리 도구 --> 인터넷 서비스 관리자 --> 웹사이트 우 클릭 후 --> 홈 디렉터리 --> 디렉터리 검색 란을 체크 해제

Nikto install location : https://github.com/sullo/nikto

 


이번 시간은 여기까지만 해보도록 하겠습니다. nikto의 경우 오로지 보안점검 후 사전관리를 위해 사용되는 툴이다 보니 악의적인 용도로는 사용하기 힘든 툴입니다. 여기서 버 저기서 버 다 뒤지고 다니면 ISP 업체에서 연락 갈 수도 있습니다. 웹서버를 운영 중이신 분이 계신다면 한번 자가로 테스트해보시는 것도 괜찮을 것 같습니다. 다음 시간에 뵙겠습니다. 감사합니다