일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- web security academy
- 스마트컨트랙트
- splunk db connect
- 오블완
- 블록체인
- metacode
- ELB
- 보안 그룹
- 메타코드
- 정처기 필기
- AWS SSM
- metacodem
- web shell
- amazon s3 트리거
- aws lambda
- File Upload
- AWS CLI
- web3
- 티스토리챌린지
- 탈중앙화
- 정보처리기사
- Session Manager
- systems manager
- 스마트 컨트랙트
- web3 보안
- aws 트리거
- Path Traversal
- 정처기필기
- 메타코드M
- 정처기
- Today
- Total
min8282
[모의해킹] 웹 애플리케이션 정보 수집 방법 본문
정보 수집은 모의해킹의 가장 중요한 초기 단계로, 공격자가 대상 시스템의 구조와 특성을 파악하는 정찰 과정입니다. 이 글에서는 실제 도구와 기법을 통해 웹 모의해킹 시 정보 수집 단계에 대해서 정리해 보겠습니다.
1. 웹 취약점 스캐닝
칼리 리눅스에 기본으로 설치도어 있는 웹 스캐닝 프로그램 중에 nikto라는 프로그램이 있습니다. nikto를 이용하면 간단한 명령으로 중요한 정보를 쉽게 수집할 수 있습니다. 먼저 실습용 가상 머신(bWAPP 서비스)의 IP 주소를 입력하여 실행해 보겠습니다.
전체 출력 결과는 다음과 같습니다.
┌──(kali㉿kali)-[~]
└─$ nikto -host 192.168.183.130
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 192.168.183.130
+ Target Hostname: 192.168.183.130
+ Target Port: 80
+ Start Time: 2025-03-05 11:19:24 (GMT-5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.8 (Ubuntu) DAV/2 mod_fastcgi/2.4.6 PHP/5.2.4-2ubuntu5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g
+ /: Server may leak inodes via ETags, header found with file /, inode: 838422, size: 588, mtime: Sun Nov 2 13:20:24 2014. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /crossdomain.xml contains a full wildcard entry. See: http://jeremiahgrossman.blogspot.com/2008/05/crossdomainxml-invites-cross-site.html
+ Apache/2.2.8 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ mod_ssl/2.2.8 appears to be outdated (current is at least 2.9.6) (may depend on server version).
+ OpenSSL/0.9.8g appears to be outdated (current is at least 3.0.7). OpenSSL 1.1.1s is current for the 1.x branch and will be supported until Nov 11 2023.
+ PHP/5.2.4-2ubuntu5 appears to be outdated (current is at least 8.1.5), PHP 7.4.28 for the 7.4 branch.
+ /index: Uncommon header 'tcn' found, with contents: list.
+ /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.bak, index.html. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275
+ mod_ssl/2.2.8 OpenSSL/0.9.8g - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell.
+ PHP/5.2 - PHP 3/4/5 and 7.0 are End of Life products without support.
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE .
+ /: HTTP TRACE method is active which suggests the host is vulnerable to XST. See: https://owasp.org/www-community/attacks/Cross_Site_Tracing
+ /server-status: This reveals Apache information. Comment out appropriate line in the Apache conf file or restrict access to allowed sources. See: OSVDB-561
+ /phpmyadmin/changelog.php: Retrieved x-powered-by header: PHP/5.2.4-2ubuntu5.
+ /phpmyadmin/changelog.php: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ /icons/: Directory indexing found.
+ /README: README file found.
+ /INSTALL.txt: Default file found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /gm/: Cookie PHPSESSID created without the httponly flag. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
+ /gm/: This might be interesting: potential country code (Gambia).
+ /phpmyadmin/: phpMyAdmin directory found.
+ /phpmyadmin/Documentation.html: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ 8101 requests: 0 error(s) and 26 item(s) reported on remote host
+ End Time: 2025-03-05 11:19:41 (GMT-5) (17 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
출력된 결과를 통해 다음과 같은 정보들을 얻을 수 있었습니다.
- 서버 헤더 및 PHP, 아파치, mod_ssl 등의 버전이 오래됨
- 허용된 메소드 목록 정보
- /icons/, /images/ 경로에서 디렉터리 인덱싱 발견
- phpMyAdmin 디렉터리 발견
이와 같은 과정에서 수집된 정보는 시스템의 보안 상태를 파악하는 데 중요한 단서가 됩니다. 특히 오래된 버전의 소프트웨어는 주의 깊게 살펴봐야 합니다. 이러한 소프트웨어들은 공개된 취약점들을 가지고 있어 공격자들이 쉽게 침투할 수 있는 통로가 될 수 있습니다. 예를 들어, 최신 보안 패치가 적용되지 않은 오래된 프로그램은 이미 알려진 보안 약점들로 인해 해킹에 취약할 수 있습니다.
2. 디렉터리 인덱싱
디렉터리 인덱싱(directory indexing) 취약점은 웹 서버의 잘못된 설정으로 웹 서버 디렉터리의 파일들이 노출되는 취약점입니다. 이 취약점은 디렉터리 리스팅이라고 부르기도 합니다. 디렉터리의 목록을 출력해 주는 것은 원래 웹 서버가 지원하는 기능입니다.
웹 서버에서 특정 디렉터리를 요청할 때, 일반적으로 index.html, index.cgi, index.php 등의 기본 파일이 존재하면 해당 파일을 브라우저에 표시합니다. 하지만 이러한 기본 파일들이 없을 경우, 심각한 보안 위험이 발생할 수 있습니다. 바로 디렉터리의 전체 파일 목록이 웹 브라우저에 그대로 노출된다는 점입니다.
이를 '디렉터리 인덱싱'이라고 하며, 웹 서버 보안에서 중요한 취약점으로 간주됩니다. 관리자가 이 설정에 주의를 기울이지 않으면 중요한 문서나 민감한 파일들이 의도치 않게 외부에 공개될 수 있습니다. 특히 아파치 같은 웹 서버는 초기 설치 시 기본적으로 디렉터리 인덱싱 기능을 활성화하므로, 관리자는 반드시 이 설정을 신중히 검토해야 합니다.
앞서 수행한 nikto 스캔 결과에서 위 그림과 같은 디렉터리 인덱싱 취약점이 발견되었으며, 해당 디렉터리에 접속하면 파일 목록이 그대로 노출되는 것을 확인할 수 있습니다. 이와 같은 이미지 디렉터리나 아이콘 디렉터리의 파일 목록이 출력되는 것은 크게 문제가 되지 않습니다.
bWAPP/documents/ 경로에 접속해 보면 해당 디렉터리에 있는 각족 문서 파일들이 노출되어 있습니다. 직접 파일 다운로드가 가능하기 때문에, 중요한 문서 파일이 노출되면 큰 문제가 될 수 있습니다.
3. 웹 애플리케이션 매핑
웹 애플리케이션 매핑은 모의해킹의 초기 단계에서 매우 중요한 정보 수집 과정입니다. 마치 탐험가가 새로운 영역의 지도를 그리듯이, 해당 웹 애플리케이션의 구조와 동작 방식을 체계적으로 파악하는 작업입니다.
이 과정에서는 웹 사이트의 다양한 메뉴와 링크를 탐색하면서 각 URL과 파라미터의 특성을 분석합니다. 웹 애플리케이션의 기능과 구조를 상세히 이해함으로써, 잠재적인 보안 취약점이나 공격 지점을 식별할 수 있습니다.
쉽게 말해, 웹 애플리케이션 매핑은 공격자의 관점에서 웹 사이트의 "약한 고리"를 찾아내는 정보 수집 단계라고 볼 수 있습니다. 이를 통해 후속 보안 테스트나 모의해킹 공격을 위한 기초 정보를 확보하게 됩니다.
웹 애플리케이션 매핑을 위해 버프 스위트의 사이트 맵 기능을 활용하는 과정을 설명하겠습니다.
bWAPP과 DVWA와 같은 취약한 웹 애플리케이션에 접속하여 여러 메뉴를 탐색하는 동안, 버프 스위트의 사이트 맵 기능은 매우 유용한 정보를 제공합니다. 이 기능은 웹 애플리케이션의 URL과 파라미터를 트리 형태로 시각화하여 보여줍니다.
사이트 맵에서 선명한 검정색 글씨는 사용자가 직접 브라우저를 통해 요청한 URL을 나타내고, 흐린 회색 글씨는 버프 스위트가 응답 메시지에 포함된 링크를 자동으로 분석하여 발견한 URL을 보여줍니다. 이러한 방식으로 화면에 직접 표시되지 않은 URL들도 자동으로 탐지되어 웹 애플리케이션의 구조를 더욱 상세하게 파악할 수 있습니다.
4. 크롤링(Crawling)과 DirBurster
크롤링을 이용하면 웹 애플리케이션 매핑 과정을 자동으로 수행할 수 있습니다. 크롤링은 웹 페이지의 링크를 분석하여 웹 페이지를 찾아내는 과정으로 웹 사이트의 콘텐츠를 자동으로 수집하고 분석하는 프로세스입니다. 마치 웹 사이트의 구조를 체계적으로 탐색하는 것과 같습니다. 이 과정을 통해 웹 사이트의 숨겨진 페이지, 디렉터리, 링크 등을 발견할 수 있습니다.
Dirbuster는 웹 서버의 숨겨진 디렉터리와 파일을 찾아내는 도구입니다. 미리 준비된 디렉터리와 파일 목록을 사용하여 웹 서버의 구조를 탐색합니다. 이 도구는 웹 애플리케이션 매핑 과정에서 중요한 정보 수집 도구로 활용됩니다.
dirbuster를 사용하면 일반적으로 공개되지 않은 관리자 페이지, 백업 파일, 설정 파일 등을 발견할 수 있습니다. 이러한 파일들은 때로는 중요한 보안 취약점을 노출할 수 있어 모의해킹 과정에서 매우 유용한 도구입니다.
5. robots.txt
구글, 네이버와 같은 주요 검색 엔진은 웹 로봇(크롤러)을 통해 웹사이트의 정보를 수집합니다. 웹 로봇 역시 크롤러의 일종입니다. 웹사이트 운영자는 robots.txt 파일을 웹사이트의 가장 상위 디렉터리에 위치시켜, 웹 로봇에게 해당 웹사이트의 정보 수집을 허용하거나 불허하는 명령을 내릴 수 있습니다.
bWAPP의 robots.txt 파일은 /bWAPP/robots.txt 경로에 위치해 있습니다.
웹사이트 운영자는 robots.txt 파일 내의 user-agent 키워드를 이용하여 지정된 user-agent 요청 헤더를 전송하는 특정 로봇에게 명령을 내릴 수 있습니다. 이 키워드 값으로 * 특수문자를 지정하면 모든 로봇들에게 명령을 내릴 수 있습니다. disallow 키워드는 설정된 경로(하위 디렉터리 포함)에 대한 수집을 차단하겠다는 명령입니다. 반대로 수집을 허용할 때에는 allow 키워드를 사용합니다.
즉, bWAPP의 robots.txt 파일의 전체 내용은 다음과 같습니다.
- GoodBot 로봇의 수집을 허용한다.
- BadBot 로봇을 대상으로는 모든 페이지에 대한 수집을 불허한다.
- /admin/, /documents/, /images/, /passwords/ 디렉터리에 대한 수집은 모든 로봇을 불허한다.
중요한 점은 robots.txt의 규칙을 따를지 여부는 전적으로 웹 로봇에 달려 있다는 것입니다. 합법적인 검색 엔진 로봇은 일반적으로 이 규칙을 준수하지만, 웹 모의해킹 시 robots.txt 파일의 내용을 확인하여 경로에 대한 정보를 수집하거나 악의적인 로봇은 오히려 차단된 디렉터리를 타겟팅하는 경우가 있습니다.
6. 정보 수집 대응 방법
불필요한 정보 노출 삭제
반드시 필요한 경우가 아니라면, 서버 헤더에 제공되는 정보를 삭제하여 전송하는 것이 좋습니다. 예를 들어, 웹 서버의 상세 버전 정보, 개발 환경 관련 파일, 주석 처리된 소스코드 등을 제거해야 합니다. 또한 에러 메시지에 시스템 내부 정보가 포함되지 않도록 주의해야 합니다. 개발자 도구나 디버그 모드의 정보 출력을 운영 환경에서는 완전히 차단하는 것이 보안에 도움이 됩니다.
스캐너/크롤러 차단
스캐너나 크롤러와 같은 자동화된 프로그램으로부터 완전하게 방어하는 것은 불가능합니다. 하지만 적절한 로깅과 모니터링을 통해 어느 정도 공격 시도를 탐지하고 차단할 수 있습니다. 또한 캡차(CAPTCHA)나 토큰 기반 접근 제어를 통해 자동화된 크롤링을 방지할 수 있습니다. 이 밖에도 침임 탐지 시스템(IDS)/침입 방지 시스템(IPS)나 웹 방화벽 등의 보안 장비를 사용해서도 자동화된 공격을 탐지하고 차단할 수 있습니다.
디렉터리 인덱싱 설정 제거
디렉터리 인덱싱은 웹 서버의 설정을 변경하여 대응할 수 있습니다. 아파치의 경우 Indexes 옵션 설정을 통해 디렉터리 목록 노출을 방지할 수 있습니다.
이러한 대응 방법들은 웹 애플리케이션의 정보 노출을 최소화하고, 잠재적인 보안 위협을 줄이는 데 도움을 줍니다.
'Security > Application' 카테고리의 다른 글
Metasploitable2 - FTP 취약점 공격 (vsftpd 2.3.4, CVE-2011-2523) (0) | 2025.02.25 |
---|---|
BeEF 활용 악성코드 공격(2) (0) | 2025.02.18 |
BeEF 활용 악성코드 공격(1) (0) | 2025.02.18 |