홈페이지 취약점 분석 이야기 파일 지도 사진 깨알






>> 목록보이기
#웹취약점 분석도구 #curl #see URL #telnet #HTTP 헤더

웹취약점점검 도구로서의 cURL 사용법

curl 로고

cURL은 FTP, 고퍼(Gopher), HTTP, HTTPS, SCP, LDAP 등 다양한 통신규약을 지원하는 명령줄 방식의 데이타 전송 도구이다(cURL 공식 누리집 참조). "cURL"이라는 이름은 "URL을 보다"(see URL)라는 의미에서 영어발음을 차용하여 -- "see" -> 'c' -- 지었다고 한다. 웹취약점 분석중에는 서버응답 헤더 분석, 파일업로드 자동화 등에 활용할 수 있다.

칼리리눅스(Kali Linux) 운영체제에서는 다음과 같이 간단하게 설치할 수 있다.

apt-get install curl

가장 많이 사용되는 cURL 용례는 다음과 같다. cURL을 이용한 취약점 점검 대상은 메모지.com (http://www.memozee.com)으로 하였다.

서버의 HTTP 응답헤더 확인 (-I)

root@kali:~# curl -I http://www.memozee.com/
HTTP/1.1 200 OK
Date: Mon, 07 Nov 2016 07:29:34 GMT
Server: Apache
X-Powered-By: PHP/5.1.6
Connection: close
Content-Type: text/html

root@kali:~#

[ "-I" 옵션으로 서버응답 헤더 점검 가능]

서버가 허용하는 HTTP Method 목록 확인 (-v -X OPTIONS)

root@kali:~# curl -v -X OPTIONS http://www.memozee.com/icons/
*   Trying 222.237.78.13...
* Connected to www.memozee.com (222.237.78.13) port 80 (#0)
> OPTIONS /icons/ HTTP/1.1
> Host: www.memozee.com
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 07 Nov 2016 07:40:37 GMT
< Server: Apache
< Allow: GET,HEAD,POST,OPTIONS,TRACE
< Content-Length: 0
< Connection: close
< Content-Type: httpd/unix-directory
< 
* Closing connection 0
root@kali:~#

[ "-v -X OPTIONS"로 HTTP서버가 허용하는 메소드 확인 ]

Apache 웹서버에서는 /icons/, /cgi-bin/ 등의 디렉토리가 Alias로 지정되기 떄문에 기본 웹경로(DocumentRoot)와는 다른 결과를 보여주기도 한다. 또는 기본 웹경로에서는 OPTIONS, TRACE 등의 HTTP 메소드가 허용되지 않으나 이러한 디렉토리에서는 허용되기도 하므로 취약점 점검시에는 고려하여야 한다.

TRACE Method 점검 (-v -X TRACE)

root@kali:~# curl -v -X TRACE http://www.memozee.com
* Rebuilt URL to: http://www.memozee.com/
*   Trying 222.237.78.13...
* Connected to www.memozee.com (222.237.78.13) port 80 (#0)
> TRACE / HTTP/1.1
> Host: www.memozee.com
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 07 Nov 2016 08:16:43 GMT
< Server: Apache
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: message/http
< 
TRACE / HTTP/1.1
Host: www.memozee.com
User-Agent: curl/7.47.0
Accept: */*

* Closing connection 0
root@kali:~#

[ "-v -X TRACE"로 HTTP 요청헤더가 응답 내용에 출력되는 지 확인 ]

cURL이 없는 시스템의 대안 (telnet, nc)

MS 윈도우 등과 같이 cURL이 설치되어 있지 않은 경우에는 telnet, nc로 대체할 수도 있다. 다만, 이러한 경우에는 HTTP 규약을 이해하고 있어야 한다. 다음은 TRACE 메소드 허용여부를 텔넷으로 확인하는 사례이다.

root@kali:~# telnet www.memozee.com 80
Trying 222.237.78.13...
Connected to www.memozee.com.
Escape character is '^]'.
TRACE / HTTP/1.1
Host: www.memozee.com

HTTP/1.1 200 OK
Date: Mon, 07 Nov 2016 08:33:01 GMT
Server: Apache
Connection: close
Transfer-Encoding: chunked
Content-Type: message/http

2b
TRACE / HTTP/1.1
Host: www.memozee.com


0

Connection closed by foreign host.
root@kali:~#

[ telnet을 이용한 TRACE 메소드 점검 방법]

[처음 작성한 날: 2016.11.07]    [마지막으로 고친 날: 2016.11.11] 


< 이전 글 : 웹취약점 분석 도구로서의 THC Hydra (2016.11.07)

> 다음 글 : [웹해킹훈련장] CVE-2014-6271: Bash Shellshock 실습 설명서 (2016.11.04)


크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문