본문 바로가기

보안

WSTG (web security testing guide) 정보수집 정리 PART1

반응형

Chapter 4 정리

개요

서론 및 목표 

- OWASP 웹 어플리케이션 보안 테스트 방법론 설명

- 식별된 보안 통제의 결함으로 인한 어플리케이션 취약점의 증거를 테스트 

 

Web Security Testing

컴퓨터 시스템이나 네트워크 보안을 평가하기 위한 방법이 security test

웹 어플리케이션의 보안만을 평가하는데 중점을 둔것이 Web Security Testing

어플리케이션의 약점, 기술적 결함, 취약점을 적극적으로 분석

 

취약점

취약점은 시스템의 설계, 구현, 운영 또는 관리상의 결함이나 약점

시스템의 보안 목표를 위협할 수 있는 요소가 이를 악용할 수 있음

 

위협

위협은 취약점을 악용하여 어플리케이션이 소유한 자산에 해를 입힐 수 있는 모든것을 의미

 

테스트

어플리케이션이 이해관계자의 보안 요구사항을 충족하는지 입증하는 행위


4.1 정보유출을 위한 검색엔진 탐색

검색엔진이 작동하기 위해서는 컴퓨터 프로그램(또는 로봇)이 웹의 데이터를 정기적으로 가져와야 합니다. (크롤링)

웹사이트가 robots.txt 라는 파일을 사용해 검색 엔진이 가져가지 않기를 원하는 페이지를 나열하면, 그 목록의 페이지는 무시됩니다.

테스터는 검색엔진을 이용하여 웹 사이트와 웹 어플리케이션에 대한 탐색을 할 수 있습니다.

검색엔진의 탐색 과정에는 '직접적 요소', '간접적 요소'가 있습니다.

  • 직접적 요소 : 인덱스와 캐시된 연관 콘텐츠를 검색하는 것
  • 간접적 요소: 포럼, 뉴스그룹, 입찰 웹사이트 등을 검색하여 민감한 설계 및 구성 정보를 학습하는 것

구글검색엔진 작동 원리

 

검색 엔진 로봇이 크롤링을 완료하면 태그 및 연관속성을 기반으로 웹 콘텐츠를 인덱싱하여 결과를 반환합니다.

robots.txt 파일을 관리하지 않았거나 HTML 메타 태그(콘텐츠 인덱싱 금지)를 사용하지 않았다면, 

인덱스에 웹사이트 소유자가 포함시키지 않으려는 웹 콘텐츠가 포함될 수 있습니다.

 

웹 콘텐츠 소유자는 robots.txt, HTM 메타태그, 인증,
그리고 검색엔진에서 제공하는 도구를 사용하여
이런 콘텐츠를 제거할 수 있습니다.

 

 

테스트 목표

어플리케이션, 시스템, 조직의 민감한 설계 및 구성 정보가 직접,간접적으로 노출된 내용을 식별합니다.

 

테스트 방법

검색엔진을 이용하여 민감정보를 검색합니다.

  •  네트워크 다이어그램 및 구성
  • 관리자 또는 직원의 보관된 게시물, 이메일
  • 로그인 절차, 사용자 이름 형식
  • 사용자 이름, 비밀번호 및 개인 키
  • 제 3자 또는 클라우드 서비스 구성 파일
  • 에러 메시지 내용 공개
  • 개발, 테스트, UAT(User Acceptance Testing) 및 스테이징 버전의 사이트

검색 엔진

다양한 검색엔진은 다양한 결과를 생성합니다.

  • Baidu : 중국에서 가장 인기있는 검색 엔진
  • Bing : 마이크로소프트가 소유한 검색엔진, 전세계에서 두번째로 인기있음, 고급 검색 키워드 지원
  • binsearch.ingo : 바이너리 유즈넷 뉴스그룹을 위한 검색 엔진
  • Common Crawl : 누구나 접근하고 분석할 수 있는 웹 크롤 데이터의 오픈 저장소
  • DuckDuckGo : 다양한 소스에서 결과를 모으는 프라이버스 중심의 검색엔진, 검색 구문을 지원
  • Google : 가장 인기있는 검색 엔진, 가장 관련성 높은 결과를 반환하기 위해 랭킹 시스템사용, 검색 연산자 지원
  • Internet Archive Wayback Machine: 인터넷 사이트 및 디지털 형태의 기타 문화 유물의 디지털 도서관을 구축하는 서비스
  • Startpage : 추적기와 로그를 통해 개인정보를 수집하지 않고 구글의 결과를 사용하는 검색엔진, 검색 연산자 지원
  • Shodan: 인터넷에 연결된 장치 및 서비스를 검색하는 서비스, 무료, 유료 구독을 통한 사용자 옵션 제공

DuckDuckGo, Startpage 는 추적기 사용하지 않거나 로그남기지 않아 사용자에게 프라이버시를 제공

 

검색 연산자

정규 검색 쿼리의 기능을 확장하고 보다 구체적인 결과를 얻을 수 있게 해주는 특별한 키워드나 구문

'operator:query' 형식

  • site: 주어진 도메인으로 검색을 제한
  • inurl: URL 에 키워드를 포함하는 결과만을 반환
  • intitle: 페이지 제목에 키워드를 포함하는 결과만 반환
  • intext, inbody : 페이지 본문에서 키워드 검색
  • filetype: 특정 파일 유형만 일치 시킴
  • cache: 이전에 인덱싱된 콘텐츠 검색, 인덱싱된 이후에 변경되었거나 더이상 사용할 수 없는 콘텐츠를 보는데 유용

구글 도킹

연산자를 연결하여 민감한 파일, 정보를 효과적으로 발견할 수 있는 기법을 구글 해킹 또는 도킹이라고 합니다.

도킹 데이터베이스는 특정 정보를 찾는데 도움이되는 유용한 자원입니다.

  • Footholds
  • Files containing usernames
  • Sensitive Directories
  • Web Server Detection
  • Vulnerable Files
  • Vulnerable Servers
  • Error Messages
  • Files containing juicy info
  • Files containing passwords
  • Sensitive Online Shopping Info
site:*.고객사.com intitle:"admin panel" OR intitle:"request password" intext:"email address"

이런 형식의 구글 도킹을 통해서 고객사 도메인의 admin panel 이나 request password , email address 를 필요로하는 웹을 찾을 수 있는데, 대부분은 관리자 포털 결과가 반환됩니다.


4.2 Fingerprint web server

웹서버의 핑거프린트는 대상이 실행중인 웹서버의 유형과 버전을 식별하는 작업입니다. 

자동화된 테스트 도구에 의해 수행되지만, 이러한 도구가 어떻게 식별하는지 원리와 유용성을 이해하는 것이 중요합니다.

어플케이션이 실행중인 웹서버의 유형을 정확하게 발견하는 것은 테스터가 해당 어플리케이션이 공격에 취약한지 여부를 판단할 수 있게 해줍니다.

특히나, 최신 보안 패치가 적용되지 않았을 경우, 소프트웨어를 실행하는 서버는 알려진 버전 특정 취약점에 취약할 수 있습니다.

 

테스트 목표

실행중인 웹서버의 버전, 유형을 결정하여 알려진 취약점의 발견

 

테스트 방법

웹서버 핑거프린트 방법에는 banner grabbing, 잘못된 요청에 대한 응답, 스캔을 수행하는 자동화 도구 사용 등이 있습니다.

웹서버로 부터 어떤 응답을 유도하려하고, 그 응답은 이미 알려진 응답 및 DB와 비교될 수 있으며 따라서 서버의 유형을 파악할 수 있습니다.

 

Banner Grabbing

웹서버에 http 요청을 보내고 그 응답 헤더를 검사하여 수행합니다.

telnet을 사용하여 http 요청을 보내거나 ssl 을 통해 요청하는 경우는 openssl을 사용하여 수행할 수 있습니다.

 

apache 서버 응답
nginx 서버 응답
lighthttpd 응답

위의 예에서는 서버유형, 버전이 명확하게 노출됩니다.

그러나 보안을 고려한 프로그램들은 서버 정보를 숨길수도 있습니다.

헤더에서 응답 정보 숨김

이러한 경우에는 서버 정보가 숨겨져 있기 때문에 헤더필드의 순서로 서버를 유추해볼 수 있습니다.

하지만, 수많은 웹서버들이 필드 순서를 공유하고있고, 필드는 수정되고 삭제될수 있으므로 이런 방법은 명확하지 않습니다.

Apache Nginx
Date
Server
Last-Modified
ETag
Accept-Ranges
Content-Length
Connection
Content-Type
Server
Date
Content-Type

 

잘못된 요청 보내기

웹서버는 에러응답이나 기본 에러페이지를 수정하지 않은 경우 식별될수 있습니다.

잘못된 형식이나 요청을 보내면 이런 페이지를 표시하게 할 수 있습니다.

 

자동화된 스캔 도구 활용

위에 시연된 내용 뿐 아니라 구체적인 서버 탐색도 수행하는 도구입니다. 

자동화된 도구는 수동 테스트보다 웹 서버로부터 응답을 훨씬 빠르게 비교할 수 있습니다.

많이 사용되는 스캔  툴입니다.

  • netcraft : 웹서버를 포함하여 웹사이트 정보를 스캔하는 온라인 도구
  • nikto : 오픈소스 command-line 스캐닝 도구
  • nmap: 오픈소스 command-line 도구, GUI인 zenmap 도 존재

4.3 정보유출을 위한 webserver metafile 확인

웹어플리케이션의 경로(path) , 기능에 대한 유출을 위해 다양한 메타데이터 파일을 테스트하는 방법에 대해 설명합니다.

스파이더, 로봇, 크롤러에 의해 피해야할 디렉터리 목록도 Map Execution paths through application 에 의해 생성될 수 있습니다.

 

테스트 목표

  • 메타데이터 파일을 분석하여 숨겨진(hidden), 난독화된(obfuscated) 경로 및 기능성을 식별
  • 시스템을 더 잘 이해할 수 있는 다른 정보를 추출하고 매핑

테스트 방법

wget, curl 을 활용합니다.

ZAP, Burp suite 를 활용하여 리소스를 확인 가능

 

Robots

Web Spiders, robots, crawler 는 웹페이지를 검색한 다음 재귀적으로 하이퍼링크를 탐색하여 추가 웹 컨텐츠를 검색합니다.

이들의 허용된 행동은 웹 루트 디렉토리의 robots.txt 파일의 로봇 배제 프로토콜에의해 지정됩니다.

google 의 robots.txt

  • User-agent : 특정한 web spider , robot, crawler 를 나타냅니다.
  • disallow : web spider , robot, crawler 에게 금지된 리소스 지정합니다. 다만, web spider , robot, crawler 는 공유된 링크가 유효한지 확인하기 위해 disallow 구문을 의도적으로 무시할 수 있습니다.따라서 웹콘텐츠에 대한 접근, 저장, 제약을 위한 것으로 robots.txt 를 간주해선 안됩니다.

수 많은 검색엔진 봇이 존재하고 모두 로봇룰에 의해 크롤링하지는 않습니다. 

검색엔진의 봇은 사이트를 통해 이동하면서도 정보를 수집하기 때문에 페이지로 바로 접근한 경우 로봇룰에 무관하게 정보를 수집할 수 있습니다.

따라서 검색엔진의 크롤링을 완벽하게 막기 위해서는 META 태그에도 인덱스 여부를 설정하는 것이 가장 확실한 방법입니다.

 

META tags

meta 태그는 HTML 문서의 Head 에 위치해있으며, 웹사이트 전체에서 일관성이 있어야합니다.

이는  web spider , robot, crawler 의 시작점이 웹루트 이외의 문서에서 시작되지 않을 경우를 대비한 것입니다. (deep link)

robot 지시문은 특정 meta 태그를 사용하여 지정할 수 있습니다.

 

robot  META 태그

<META NAME="ROBOTS" ... > 항목이 없다면 '로봇 배재 프로토콜;은 기본적으로 INDEX, FOLLOW 를 따릅니다.

<meta name="robots" content="noindex, nofollow" />
  • noindex: 검색 결과에 이 페이지를 표시하지 않는다
  • nofollow : 이페이지의 링크를 따라가지 않는다.
  • noarchive : 검색 결과에 저장된 페이지 링크를 표시하지 않는다.
  • ALL(기본값) : 색인 생성이나 게재에 대한 제한이 없다, 기본 

noindex, nofollow 의 경우 자신의 사이트 중 일부 페이지가 구글 등 검색엔진에 노출되길 원치 않을 때 사용합니다.

조직은 종종 다양한 기술을 지원하기 위해 웹콘텐츠에 정보성 meta 태그를 포함합니다.

 

Sitemaps

사이트맵은 검색엔진에게 내 사이트 구조를 이해할 수 있도록 돕는 역할을 합니다.

단순한 경우 검색엔진이 구조를 파악하는데 문제가 없지만, 복잡한 구조라면 사이트맵을 게시하여 검색엔진이 구조를 쉽게 파악할 수 있도록 하는 것이 좋습니다.

검색 엔진은 이 파일을 사용하여 사이트를 더 똑똑하게 탐색할 수 있습니다.

테스터는 sitemap.xml 파일을 사용하여 사이트나 어플리케이션에 대해 더 자세히 알아볼 수 있습니다.

 

 

security.txt

웹사이트가 보안정책과 연락처 정보를 정의할 수 있도록 제안된 표준입니다.

보통 다음과 같은 정보가 포함됩니다.

  • 탐색, 분석에 포함할 추가 경로나 리소스 식별
  • 오픈 소스 인텔리전스 수집
  • 버그 바운티 등의 정보 수집
  • 사회공학

humans.txt

웹사이트를 구축하는 데 기여한 다양한 사람들에 대한 정보를 포함하는 텍스트 파일 형태입니다.

 

 

RFC(Request For Comment)
인터넷 개발에 필요한 기술, 연구 결과, 절차 등을 기술해 놓은 메모
거의 모든 인터넷 표준은 RFC로 문서화 되어 잇으며, 인터넷 개발에 관련된 기술을 연구하거나 알고 있는 사람은 누구나 RFC 문서를 작성할 수 있다.

 

 

참고 자료

https://www.exelient.co.kr/project/how-to-google-search-engine/

https://www.xn--hy1b43d247a.com/initial-recon/osint/google-dorking

 

 

 

 

반응형