스크립트를 활용하여 OPTIONS Method 취약점 확인 방법

오늘은 Options method 취약점을 확인하는 방법과 직접 만든 스크립트를 이용하여 여러 대 서버의 OPTIONS method 취약점을 찾는 방법을 알아보려 합니다.
우선 HTTP Method에 대해 알아 보고 넘어갑니다.

HTTP Method

GET, HEAD, OPTIONS, POST, PUT, DELETE, TRACE, CONNET 로 이루어집니다.

GET : 리소스 취득

URL(URI) 형식으로 로컬에서 웹서버 측 데이터를 요청할 때 쓰입니다. 

HEAD : 메시지 헤더(문서 정보) 취득

GET 과 비슷하지만 문서를 요청하는 것이 아니라 문서 정보를 요청합니다.
  – HTTP 응답 메시지에 본문(Body)이 없이 HTTP 헤더 정보만 보냄

POST : 내용 전송(파일 전송)

클라이언트에서 서버로 어떤 정보를 제출합니다 (파일 전송 기능, 업로드, 그 외 여러 정보)
  – 요청 데이터를 HTTP Body에 담아 웹서버로 전송

PUT  : 내용 갱신 위주 (파일 전송 가능)

POST처럼 정보를 전송하는 기능은 같지만, 갱신 위주
  – PUT은 클라이언트 측 구현에 관여하는 것이므로 통상보다 세밀한 POST를 더 많이 씀

DELETE : 파일 삭제

웹 리소스 제거

OPTIONS : 웹 서버가 제공하는 메소드를 요청

제공하고 있는 메소드의 옵션을 질의하는 것
  – ex) HTTP 헤더 항 목 중 ‘Allow : GET, POST, HEAD’ 처럼 보이게 됩니다.

TRACE : 수신 되는 경로

요청 리소스가 수신되는 경로를 보여줍니다.

CONNET

Proxy 서버와 같은 중간 서버 경우 웹브라우저는 “CONNET www.test.com:80 HTTP/1.0” 뒤에 일련의 HTTP 헤더 항목들과 빈줄(CREF)로써 프록시 서버에게 원하는 웹서버와의 중계 연결 요청합니다. 

OPTIONS Method 취약점

Target : http://domo.testfire.net (65.61.137.117) 

cmd 창에서 telent 65.61.137.117 80을 작성하고 Enter를 누릅니다.

telnet options 메소드 확인 방법
telnet options 메소드 확인 방법

하단 이미지와 같이 Allow : GET, HADE, POST, DELETE, OPTIONS 정보가 보입니다.

telent options 메소드 확인 결과
telent options 메소드 확인 방법

하나의 서버에 대해서는 tlenet을 이용하여 쉽게 할 수 있지만 여러 대를 관리 하는 입장에서는 어떻게 해야 할까요?
OPTIONS를 확인 할 수 있는 툴은 많지만 우리는 진단스크립트를 만들어서 진행해보려고 합니다.

여러 대 서버 OPTIONS method 취약점 점검 방법

스크립트를 만들기 위해서 아래의 순서대로 진행하면 됩니다.

1. OPTIONS START.bat 파일 만들기

메모장에 작성 후 OPTIONS START.bat 파일로 저장합니다.

@echo off
for /f "tokens=*delims=" %%i in (target.txt) do (
start telnet.exe %%i 80 -f create.txt
cscript script.vbs
echo. >> result.txt
echo %%i 80 >> result.txt
timeout /t 3
type create.txt >> result.txt
pause
)

2. script.vbs 파일 만들기

메모정에 작성 후 script.vbs 파일로 저장합니다.

set OBJECT=Wscript.CreateObject("WScript.shell")
WScript.sleep 50
OBJECT.Sendkeys "OPTIONS * HTTP/1.0{ENTER}"
WScript.Sleep 50
OBJECT.SendKeys "{ENTER}"
WScript.Sleep 50
OBJECT.Sendkeys ""

3. target.txt 파일을 하나 만들어서 점검할 IP 및 도메인을 작성합니다.

xxx.xxx.xx.xxx
xxx.xxx.xxx.xx
xx.xxx.xx.xxx

4. OPTIONS  START.bat 파일을 실행합니다.

OPTIONS START.bat
OPTIONS START.bat

싱행하면 아래의 이미지와 같이 나옵니다.
실행 후 커맨드 창이 두개가 뜨는 것을 볼 수 있습니다.
확인 후 Enter를 눌러주면 telnet으로 확인한 OPTIONS 메소드는 꺼지고 뒤에 있는 커맨드 창만 남습니다.

OPTIONS START.bat 실행 후
OPTIONS START.bat 실행 후

그리고 result.txt와 create.txt 파일이 생성되는 것을 볼 수 있습니다.
create.txt 파일은 options method를 확인하는 로그가 들어가는 파일이고 result.txt 파일은 create.txt에 있는 로그를 누적해주는 역할을 합니다.

result.txt, create.txt 파일 자동 생성
result.txt, create.txt 파일 자동 생성

5. powershell을 이용해 실시간 로그 확인하기

스크립트를 생성한 폴더에서 shift+마우스 오른쪽 키 누르면 “여기에 Power Shell 창 열기” 메뉴가 있습니다. 선택 후 다음과 같이 작성합니다.

Get-content "./result.txt" -Wait -Tail 100

실제 쌇이고 있는 로그를 볼 수 있습니다.

6. 커맨드창을 모니터링 하면서 아무 키나 누르면서 진행 합니다.

“0 초 기다리는 중, 계속하려면 아무 키나 누르십시오…
계속하려면 아무 키나 누르십시오…” 볼 수 있습니다. 아무 키나 누르면 target.txt 에 작성한 다음 대상 서버 점검을 시작합니다.

7. 점검이 끝나면 result.txt 파일 확인

결과 값이 누적되어 잘 생성된 것을 볼 수 있습니다.

result.txt 결과 파일 생성
result.txt 결과 파일 생성

마무리

저는 OPTIONS method 취약점 점검할 때 이렇게 하고 있습니다. nmap, 버퍼스위트 그 외 여러 좋은 Tool도 있지만, Window에서 기본으로 제공해주는 명령어를 통해서 스크립트를 짜서 한번 사용해보려고 만들어 보았습니다.

Leave a Comment