Vulnerability Analysis Using Google Hacking
2024. 2. 10. 21:13ㆍCERT
목차
- 정의
- Log files
- Vulnerable web servers
- Open FTP servers
- ENV files
- SSH private keys
- Email lists
- Live cameras
- Zoom videos
- SQL dumps
- WordPress Admin
- Apache2
- phpMyAdmin
- JIRA/Kibana
- cPanel password reset
- Government documents
- 대응 방안
- 한계 및 보안점
- 출처
정의
- 웹 사이트가 사용하는 구성과 컴퓨터 코드에 보안 구멍을 찾기 위해 Google 검색 및 기타 Google 응용 프로그램을 사용하는 컴퓨터 해킹 기술이다.
- 공격자는 개인정보 등 손쉽게 취약점을 찾을 수 있다.
- 구글해킹의 구글봇이 수집하는 데이터를 구글 서버에 캐시 상태로 저장하기 때문에, 해당 사이트가 삭제되어도 오랜 시간이 지나기 전엔 검색결과에 노출되기 때문에 이전 페이지가 그대로 노출 될 수 있으며, 이 데이터를 모으면 손쉽게 취약점을 찾을 수 있다.
Log files
- 로그 파일은 웹사이트에서 민감한 정보를 찾을 수 있는 방법을 보여주는 완벽한 예이다. 오류 로그, 액세스 로그 및 기타 유형의 애플리케이션 로그는 웹사이트의 공개 HTTP 공간 내에서 발견되는 경우가 많습니다. 이는 공격자가 실행 중인 PHP 버전은 물론 CMS 또는 프레임워크의 중요한 시스템 경로를 찾는 데 도움이 될 수 있다.
- 두 개의 Google 연산자인 allintext와 filetype을 결합할 수 있으며, 예를 들면 다음과 같다.
- allintext:username filetype:log
- 그러면 모든 *.log 파일에 사용자 이름이 포함된 많은 결과가 표시된다.
- 다음 결과에서 중요한 정보가 포함된 데이터베이스 서버의 SQL 오류 로그를 보여주는 특정 웹사이트를 발견하였다.
- MyBB Error
- SQL Error: 1062 - Duplicate entry 'XXX' for key 'username'
- Query: INSERT INTO XXX (`username`,`password`,`salt`,`loginkey`,`email`,`postnum`,`avatar`,`avatartype`,`usergroup`,`additionalgroups`,`displaygroup`,`usertitle`,`regdate`,`lastactive`,`lastvisit`,`website`,`icq`,`aim`,`yahoo`,`msn`,`birthday`,`signature`,`allownotices`,`hideemail`,`subscriptionmethod`,`receivepms`,`receivefrombuddy`,`pmnotice`,`pmnotify`,`showsigs`,`showavatars`,`showquickreply`,`showredirect`,`tpp`,`ppp`,`invisible`,`style`,`timezone`,`dstcorrection`,`threadmode`,`daysprune`,`dateformat`,`timeformat`,`regip`,`longregip`,`language`,`showcodebuttons`,`away`,`awaydate`,`returndate`,`awayreason`,`notepad`,`referrer`,`referrals`,`buddylist`,`ignorelist`,`pmfolders`,`warningpoints`,`moderateposts`,`moderationtime`,`suspendposting`,`suspensiontime`,`coppauser`,`classicpostbit`,`usernotes`)
- VALUES ('XXX','XXX','XXX','XXX','XXX','0','','','5','','0','','1389074395','1389074395','1389074395','','0','','','','','','1','1','0','1','0','1','1','1','1','1','1','0','0','0','0','5.5','2','linear','0','','','XXX','-655077638','','1','0','0','0','','','0','0','','','','0','0','0','0','0','0','0','')
- 이 Google 해킹 사례는 현재 데이터베이스 이름, 사용자 로그인, 비밀번호 및 이메일 값을 원래 값에서 "XXX"로 대체됐다.
Vulnerable web servers
- 다음 Google Dok을 사용하면 웹사이트 URL에 "/proc/self/cwd/"를 직접 추가할 수 있는 취약한 서버를 탐지할 수 있다.
- inurl:/proc/self/cwd( '/proc/self/cwd': 현재 실행중인 프로세스의 디렉토리 표시하는 명령어)
- 그림 1에서 볼 수 있듯이 취약한 서버에서 노출된 디렉토리를 확인할 수 있다.
Open FTP servers
- Google은 HTTP 기반 서버의 인덱스를 노출시킬 뿐만 아니라 공개 FTP 서버의 인덱스도 노출시킨다.
- intitle:"index of" inurl:ftp
- 그림 2을 보면, FTP 공간이 열려 있는 중요한 정부 서버를 발견된 것을 볼 수 있다. 이는 의도적인 것일 가능성이 있지만 보안 문제일 수도 있다.
ENV files
- .env 파일은 널리 사용되는 웹 개발 프레임워크에서 로컬 및 온라인 개발 환경에 대한 일반 변수 및 구성을 선언하는 데 사용되는 파일이다.
- 권장되는 방법 중 하나는 이러한 .env 파일을 공개적으로 액세스할 수 없는 위치로 이동하는 것이다. 그러나 그림 3을 보면, 이에 대해 신경 쓰지 않고 기본 공개 웹 사이트 디렉토리에 .env 파일을 삽입하는 개발자들이 많이 있다.
- 이는 보안상 매우 신중해야할 작업이여서 수행 방법을 보여주지 않는 대신 결과만 그림 3에 공개하겠다.
- 암호화되지 않은 사용자 이름, 비밀번호 및 IP가 검색 결과에 직접 노출된다는 것을 알 수 있다. 데이터베이스 로그인 세부 정보를 얻기 위해 링크를 클릭할 필요조차 없을 만큼 심각한 취약점 중 하나이다.
SSH private keys
- SSH 개인 키는 SSH 프로토콜에서 암호화된 데이터를 복호화하는데 사용된다. 일반 보안 규칙에 따라 개인 키는 원격 SSH 서버에 액세스하는 데 사용되는 시스템에 항상 남아 있어야 하며 누구와도 공유해서는 안된다.
- Google dork를 사용하면 Google이 색인화한 SSH 개인 키를 찾을 수 있다.
- intitle:index.of id_rsa -id_rsa.pub
- PUTTY SSH 클라이언트와 함께 Windows 운영 체제를 사용하고 있다면 Google 엔진이 항상 SSH 연결의 사용자 이름을 기록한다는 점을 기억해야한다. 또 다른 간단한 dork를 사용하여 PUTTY 로그에서 SSH 사용자 이름을 가져올 수 있다.
- filetype:log username putty
- 예상되는 결과는 그림 4와 같다.
Email lists
- Google Dorks를 사용하여 이메일 목록을 찾는 것은 매우 쉽다. 다음 예에서는 많은 이메일 주소가 포함될 수 있는 Excel 파일을 가져와 보도록 하겠다.
- site:.edu filetype:xls inurl:"email.xls"
- Google Dorks의 진정한 힘은 사용할 수 있는 무제한 조합에서 비롯된다는 점을 기억해야한다. 스패머도 이 트릭을 알고 있으며 이를 악용하여 스팸 이메일 목록을 만들고 늘리고 있다.
Live cameras
- Google Hacking은 개인 IP 라이브 카메라뿐만 아니라 인터넷상의 연결되어 있는 IP 카메라까지도 볼 수 있는 가능성을 가진다.
- inurl:top.htm inurl:currenttime
- WebcamXP 기반 전송을 찾기 위한 dork: intitle:"webcamXP 5"
- 일반 라이브 카메라를 찾기 위한 dork: inurl:"lvappl.htm"
- 세계 어느 곳이든 실시간으로 시청할 수 있는 라이브 카메라 장치가 많이 있다. IP 제한 없이 교육, 정부, 심지어 군사용 카메라까지 찾을 수 있다.
- 창의력을 발휘한다면 이 카메라에 대해 화이트햇 침투 테스트를 수행할 수도 있다. 전체 관리자 패널을 원격으로 제어하고 원하는 대로 카메라를 재구성할 수 있는 공격이 발생할 수도 있다.
Zoom videos
- '줌 폭탄'은 2020년 초기 온라인 회의를 방해하는 인기 있는 수단이 되었다. 이후 회사는 Zoom 회의를 찾거나 중단하는 것을 막기위해 몇 가지 제한 사항을 적용했지만 URL이 공유되는 한 계속해서 Zoom 회의를 찾을 수 있게된다.
- inurl:zoom.us/j and intext:scheduled for
- 이것의 유일한 단점은 Google이 웹사이트를 인데스화하는 속도이다. 사이트의 색인이 생성될 때쯤에는 Zoom 회의가 이미 끝났을 수도 있다.
SQL dumps
- 잘못 구성된 데이터베이스는 노출된 데이터를 찾는 한 가지 방법이다. 또 다른 방법은 서버에 저장되어 있고 도메인/IP를 통해 액세스할 수 있는 SQL 덤프를 찾는 것이다.
- 때때로 이러한 덤프는 웹 서버에 백업을 저장하는 사이트 관리자가 사용하는 잘못된 백업 메커니즘을 통해 사이트에 나타난다. 압축된 해당 파일을 찾으려면 다음을 사용한다.
- "index of" "database.sql.zip"
- 데이터 유출 가능성이 노출되지 않도록 스크린샷을 생략했다.
WordPress Admin
- 난독화를 거치지 않는 웹사이트들은 dork를 사용하면 WP 관리자 로그인 페이지가 쉽게 노출되는 것을 옆을 보면, 확인할 수 있다.
- intitle:"Index of" wp-admin
Apache2
- 이는 위에서 언급한 "취약한 웹 서버"에 포함되는 얘기지만 다음과 같은 이유로 Apache2에 대해 얘기를 하자면,
- LAMP(Linux, Apache, MySQL, PHP)는 호스팅된 앱/웹사이트에 널리 사용되는 스택이다.
- 이러한 Apache 서버는 잘못 구성/잊어버렸거나 설정 단계에서 봇넷의 훌륭한 표적이 될 수 있다.
- 다음 dork를 사용하면 해당 취약점에 노출된 사이트들을 찾을 수 있다.
- intitle:"Apache2 Ubuntu Default Page: It works"
phpMyAdmin
- LAMP 서버에서 위험하며, 자주 발견되는 또 다른 도구는 phpMyAdmin 소프트웨어이다. phpMyAdmin은 웹을 통한 MySQL 관리에 사용되어 서버 속 데이터를 손상시킬 수 있다. 사용할 dork는 다음과 같다.
- "Index of" inurl:phpmyadmin
JIRA/Kibana
- Google dorks는 (JIRA 또는 Kibana를 통해) 중요한 기업 데이터를 호스팅하는 웹 애플리케이션을 찾는 데에도 사용할 수 있다.
- inurl:Dashboard.jspa intext:"Atlassian Jira Project Management Software"
- inurl:app/kibana intext:Loading Kibana
- JIRA 인스턴스를 찾는 더 쉬운 방법은 하위 도메인과 해당 하위 도메인의 애플리케이션을 식별할 수 있는 SurfaceBrowser™와 같은 도구를 사용하는 것이다(JIRA 외에도 많은 다른 애플리케이션이 있다.)
cPanel password reset
- 정찰의 첫 번째 단계로 사용할 수 있는 또 다른 멍청한 방법은 cPanel을 호스팅한 다음 암호 재설정의 다양한 약점을 이용하여 cPanel을 장악하는 것이다(여기에서 호스팅되는 모든 웹사이트와 함께). 이 목적을 위한 dork는 다음과 같습니다.
- inurl:_cpanel/forgotpwd
Government documents
- 민감한 정부 문서는 인터넷에 가장 늦게 노출되어야 하지만 dorks에서는 아래와 같이 찾기가 그리 어렵지 않게 찾을 수 있다.
- allintitle: restricted filetype:doc site:gov
대응 방안
로봇 배제 표준(robots.txt)이나 페이지의 메타 태그를 활용해 구글봇이 특정 페이지를 크롤링하지 못하도록 설정하거나, 민감 데이터에 대한 접근 제한을 철저히 해야 한다.
robots.txt란
- 웹사이트 운영자가 검색 엔진의 크롤러(예: 구글봇)에게 어떤 페이지를 크롤링하거나 크롤링하지 말아야 하는지 알려주는 규칙을 설정하는 방법이다.
- 쉽게 말해, "우리 집에 들어와도 되는 방과 들어오면 안 되는 방을 알려주는 안내문" 같은 역할을 한다.
- 파일 위치: 웹사이트의 최상단 디렉토리에 robots.txt라는 파일을 만들어 저장한다.
예: https://www.example.com/robots.txt - 작동 방식: 크롤러가 웹사이트를 방문하면 제일 먼저 이 파일을 확인해서 자신이 크롤링해도 되는 페이지와 하면 안 되는 페이지를 판단한다.
- 파일 위치: 웹사이트의 최상단 디렉토리에 robots.txt라는 파일을 만들어 저장한다.
한계와 주의점
- 보안 도구가 아님: robots.txt는 단지 검색 엔진 크롤러에게 요청(Request)을 전달하는 역할을 할 뿐, 강제로 막지는 못한다.
- 악의적인 사용자는 여전히 차단된 페이지를 직접 접근할 수 있다.
- 민감 정보 저장 금지: 비밀번호나 중요한 데이터는 robots.txt에 포함하지 않는 것이 중요합니다.
출처
- https://securitytrails.com/blog/google-hacking-techniques#content-google-dork-examples
- https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80_%ED%95%B4%ED%82%B9
- https://www.cloudflare.com/ko-kr/learning/bots/what-is-robots-txt/
- https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl=ko
- https://developer.mozilla.org/en-US/docs/Glossary/Robots.txt
'CERT' 카테고리의 다른 글
Vulnerability Analysis 2 (0) | 2024.03.30 |
---|---|
Vulnerability Analysis 1 (2) | 2024.03.26 |
Shodan (0) | 2024.03.09 |
Google Hacking (0) | 2024.02.03 |
What is CERT? (2) | 2024.01.21 |