구글 해킹 정의
- 구글 해킹(Google Hacking, Dorking)은 구글 검색 엔진을 사용하여 인터넷 상에 노출된 민감한 정보나 보안 취약점을 탐지하는 해킹 기술이다. 구글 해킹은 구글 검색의 고급 명령어(검색 연산자)를 활용해 웹에서 손쉽게 정보에 접근할 수 있게 해준다.
- 이 기법은 Johnny Long이 창시한 Google Hacking Database (GHDB)에 의해 대중화되었으며, 주로 보안 전문가들이 취약점을 테스트하거나 보안을 점검하는 용도로 사용된다. 그 외에도 사이버 공격자들이 이 기술을 악용할 수 있다.
구글 해킹 키워드 종류 및 사용 방법
- filetype:
- 특정 파일 형식을 검색하는 데 사용된다. 이를 통해 보안에 취약한 파일을 쉽게 찾을 수 있다.
- 예시:
- filetype:sql "password" → "password"라는 단어가 포함된 .sql 파일을 찾는다. 이는 일반적으로 데이터베이스 파일로, 보통 중요한 로그인 정보나 암호가 포함된 경우가 많다.
- filetype:xls "confidential" → "confidential"이라는 단어가 포함된 .xls(엑셀 파일) 파일을 찾는다. 보안 민감한 자료가 담겨 있을 수 있다.
- filetype:pdf "치킨" → "치킨"이라는 단어가 포함된 .pdf 파일을 찾는다. 음식 메뉴, 레시피, 마케팅 자료 등이 포함될 가능성이 있다.
- site:
- 특정 사이트나 도메인 내의 콘텐츠를 검색한다. 이 명령어는 사이트 전체 또는 특정 하위 도메인의 페이지를 대상으로 검색을 할 때 유용하다.
- 예시:
- site:example.com → example.com 도메인 내 모든 문서를 탐색한다.
- site:edu → 교육기관에 해당하는 .edu 도메인 내에서 정보를 검색한다. 이 명령어는 학교와 같은 신뢰할 수 있는 도메인 내의 민감한 데이터를 찾는 데 유용할 수 있다.
- site:naver.com → naver.com 도메인 내 모든 문서를 탐색한다. 블로그, 카페, 뉴스 등의 콘텐츠를 검색하는 데 유용하다.
- intitle:
- 페이지의 제목(title tag)에 특정 키워드가 포함된 페이지를 검색한다.
- 예시:
- intitle:"admin login" → "admin login"이라는 키워드가 페이지 제목에 포함된 페이지를 찾는다. 이 페이지는 관리자가 로그인하는 페이지로, 공격자에게는 매우 유용한 정보가 될 수 있다.
- intitle:"index of" → 서버의 디렉토리 목록을 노출하는 페이지를 찾을 수 있다. 이 페이지는 일반적으로 보안상 취약하다.
- intitle:"정보처리기사" → "정보처리기사"라는 키워드가 제목에 포함된 페이지를 찾는다. 정보처리기사 시험 정보, 기출문제, 학습 자료 등이 포함될 수 있다.
- inurl:
- URL에 특정 키워드가 포함된 페이지를 검색한다. 웹 애플리케이션에서 자주 사용하는 파라미터나 페이지의 URL 구조에서 취약점을 찾을 수 있다.(inurl을 사용하면 단순한 도메인 검색(site)을 넘어서 특정 경로, 관리자 페이지, 입력 파라미터가 포함된 취약한 URL을 직접 찾아낼 수 있다. )
- 예시:
- inurl:index.php?id= → index.php?id=라는 URL 파라미터를 포함한 페이지를 찾는다. 이는 SQL Injection 공격에 취약할 수 있다.
- inurl:admin → URL에 "admin"이라는 단어가 포함된 페이지를 찾는다. 관리 페이지가 노출되었을 가능성이 있다.
- inurl:admin login.php id=1 → URL에 "admin login.php id=1"이 포함된 페이지를 찾는다. 이는 로그인 페이지 및 특정 파라미터를 가진 관리자 페이지를 탐색하는 데 사용될 수 있다.
- intext:
- 페이지 본문에 특정 단어가 포함된 페이지를 검색한다.
- 예시:
- intext:"password" → 페이지 본문에 "password"라는 단어가 포함된 페이지를 찾는다. 이러한 페이지는 중요한 비밀번호나 인증 정보를 포함할 수 있다.
- intext:"confidential information" → "confidential information"이라는 단어가 포함된 페이지를 찾는다. 민감한 정보가 포함된 페이지를 쉽게 찾을 수 있다.
- intext:"갈비찜 재료" → 페이지 본문에 "갈비찜 재료"라는 단어가 포함된 페이지를 찾는다. 요리 레시피, 장보기 목록, 식자재 관련 문서 등이 검색될 가능성이 있다.
- 명령어 조합
- 여러 명령어를 조합하여 더 효과적인 검색을 할 수 있다.
- 예시:
- site:example.com filetype:pdf "confidential" → example.com 도메인 내에서 "confidential"이라는 단어를 포함한 PDF 파일을 찾는다. 이 파일은 중요한 문서일 수 있다.
- site:gov filetype:xls "sensitive data" → 정부 웹사이트에서 중요한 민감 데이터가 담긴 엑셀 파일을 찾는다.
구글 해킹으로 찾을 수 있는 주요 취약점
- 디렉토리 리스팅 (Directory Listing)
- 웹 서버에서 디렉토리 목록이 노출되면, 웹사이트의 파일 및 폴더 구조를 쉽게 파악할 수 있다. 이로 인해 중요한 파일이나 데이터가 유출될 위험이 크다.
-
예시: intitle:"index of" "passwords.txt"
→ 디렉토리 목록(Directory Listing)이 활성화된 웹 서버에서 "passwords.txt" 파일이 포함된 페이지를 찾는다.💡 설명:
- intitle:"index of" → 웹 서버가 디렉토리 목록을 노출할 때 자동으로 생성하는 "Index of /" 제목이 포함된 페이지를 찾음.
- "passwords.txt" → 해당 디렉토리에 "passwords.txt" 파일이 존재하는 경우 검색 결과에 노출됨.
- 결과적으로, 보안 설정이 제대로 되어 있지 않아 디렉토리 리스팅이 활성화된 서버에서 비밀번호 관련 파일을 찾을 가능성이 높음.
- 민감한 정보 노출
- 클라우드 스토리지나 서버에 저장된 민감한 정보가 외부에 노출되는 경우, 해커가 이를 악용할 수 있다.
- 예시:
- site:s3.amazonaws.com "confidential" → Amazon S3 클라우드 스토리지 내의 민감한 파일을 검색한다.
- inurl:/.git/ → Git 저장소가 웹에 노출되면 소스 코드와 인증 정보가 유출될 수 있다.
- 관리자 페이지 노출
- 관리자 페이지가 외부에 노출되면 악성 공격자가 무차별 대입 공격(Brute Force) 등을 통해 시스템에 접근할 수 있다.
- 예시:
- intitle:"admin login" → 관리자 로그인 페이지를 찾아낸다.
- inurl:admin → "admin"이라는 단어가 URL에 포함된 페이지를 찾는다.
- 이와 같은 페이지는 권한 상승을 시도하는 공격자에게 매우 유용한 타겟이 된다.
- 취약점 파라미터
- SQL Injection, Cross-Site Scripting(XSS), 백업 파일 노출 등의 취약점이 있는 페이지를 쉽게 찾을 수 있다.
- 예시:
- SQL Injection: inurl:index.php?id= → SQL Injection 공격에 취약할 수 있는 페이지를 찾는다.
- XSS: inurl:search?q=<script> → XSS 취약점이 있을 수 있는 페이지를 찾는다.
- 백업 파일: filetype:bak → 웹 서버에 백업 파일이 존재하는지 찾는다.
-
더보기
1. SQL Injection
inurl:index.php?id= → 데이터베이스 공격이 가능한 웹 페이지를 찾음
💡 설명:
- 일부 웹사이트는 index.php?id=1처럼 URL을 이용해 데이터베이스에서 정보를 불러옴.
- 보안이 취약하면 공격자가 id=1 대신 "id=1 OR 1=1" 같은 코드를 넣어 데이터를 무단으로 빼내거나 조작할 수 있음.
- inurl:index.php?id=는 이런 취약점이 있을 가능성이 높은 웹사이트를 찾는 검색어임.
2. XSS (Cross-Site Scripting)
inurl:search?q=<script> → 웹사이트에서 악성 스크립트가 실행될 수 있는지 찾음
💡 설명:
- 일부 웹사이트는 검색창 등에 입력한 값을 그대로 출력하는데, 보안이 허술하면 공격자가 검색창으로 심어둔 악성코드 (예시: <script>alert('해킹!')</script> ) 같은 악성 코드가 그대로 출력되어 사용자에게 실행될 수도 있음.
- inurl:search?q=<script>는 검색 기능이 있는 페이지에서 이런 취약점이 있는 사이트를 찾는 데 사용됨.
3. 백업 파일 노출
filetype:bak → 백업 파일이 노출된 웹 서버를 찾음
💡 설명:
- 개발자가 중요한 설정 파일을 백업할 때 .bak 확장자를 붙이는 경우가 있음.
- 파일이 웹 서버에 그대로 남아 있으면, 공격자가 이를 다운로드해 데이터베이스 비밀번호 같은 민감한 정보를 알아낼 수 있음.
- filetype:bak을 검색하면 이런 백업 파일이 인터넷에 노출된 사이트를 찾을 수 있음.
- IoT 및 장치 취약점
- 기본 사용자명과 비밀번호로 로그인할 수 있는 IoT 장치나 CCTV, DVR 장치들을 쉽게 찾을 수 있다.
- 예시:
- intitle:"DVR Login" inurl:login → DVR 장치의 로그인 페이지를 찾는다. 이러한 장치는 보통 기본 사용자명과 비밀번호를 그대로 사용하여 보안에 취약하다.
대처 방안
- 디렉토리 리스팅 비활성화: 웹 서버에서 디렉토리 목록을 표시하지 않도록 설정하여 보안 강화.
- 민감한 파일 비공개: 로그 파일, 설정 파일 등 중요한 파일을 외부에 공개되지 않도록 경로를 변경하거나 접근을 제한한다.
- Robots.txt 사용: 검색 엔진 크롤러가 민감한 정보를 탐색하지 못하도록 robots.txt 파일을 활용하여 제한한다.
- 관리자 페이지 보호: 관리자 페이지에 IP 제한을 두고, 2단계 인증을 도입하여 외부에서의 접근을 차단한다.
- 에러 메시지 마스킹: 서버 오류 메시지를 일반적인 메시지로 변경하여 상세한 시스템 정보를 외부에 노출하지 않도록 한다.
- 정기적인 보안 감사: 웹 애플리케이션 및 서버에 대한 취약점 스캔을 정기적으로 진행하여 잠재적인 보안 위험을 사전에 차단한다.