오늘은 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를 누릅니다.
하단 이미지와 같이 Allow : GET, HADE, POST, DELETE, 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 파일을 실행합니다.
싱행하면 아래의 이미지와 같이 나옵니다.
실행 후 커맨드 창이 두개가 뜨는 것을 볼 수 있습니다.
확인 후 Enter를 눌러주면 telnet으로 확인한 OPTIONS 메소드는 꺼지고 뒤에 있는 커맨드 창만 남습니다.
그리고 result.txt와 create.txt 파일이 생성되는 것을 볼 수 있습니다.
create.txt 파일은 options method를 확인하는 로그가 들어가는 파일이고 result.txt 파일은 create.txt에 있는 로그를 누적해주는 역할을 합니다.
5. powershell을 이용해 실시간 로그 확인하기
스크립트를 생성한 폴더에서 shift+마우스 오른쪽 키 누르면 “여기에 Power Shell 창 열기” 메뉴가 있습니다. 선택 후 다음과 같이 작성합니다.
Get-content "./result.txt" -Wait -Tail 100
실제 쌇이고 있는 로그를 볼 수 있습니다.
6. 커맨드창을 모니터링 하면서 아무 키나 누르면서 진행 합니다.
“0 초 기다리는 중, 계속하려면 아무 키나 누르십시오…
계속하려면 아무 키나 누르십시오…” 볼 수 있습니다. 아무 키나 누르면 target.txt 에 작성한 다음 대상 서버 점검을 시작합니다.
7. 점검이 끝나면 result.txt 파일 확인
결과 값이 누적되어 잘 생성된 것을 볼 수 있습니다.
마무리
저는 OPTIONS method 취약점 점검할 때 이렇게 하고 있습니다. nmap, 버퍼스위트 그 외 여러 좋은 Tool도 있지만, Window에서 기본으로 제공해주는 명령어를 통해서 스크립트를 짜서 한번 사용해보려고 만들어 보았습니다.