정보보안(구버전)/ bWAPP 2019. 2. 16. 13:11

웹 해킹 bWAPP - 65. A5 - Security Misconfiguration - Cross-Origin Resource Sharing(AJAX)

 

 

본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다. 

 

 

1. Security Misconfiguration

 

 - 잘못된 보안 구성
 - 서버/시스템/DB/네트워크 장비/웹 설정 요류로 인하여 발생하는 취약점이다.
 - Ex) 디렉토리 리스팅, 에러페이지, 웹페이지 주석, 웹서버 기본 설정, Adobe Flash 취약점, DoS/DDos 공격,

         특정 서비스에 대한 Reverse_TCP 공격, 로컬 권한 취약점, 백업/임시/robots 파일

 

 

 

2. AJAX(Asynchronous Javascript And XML)

 

 - 다른 도메인의 서버 URL을 호출하여 데이터를 가져올 수 있는 기능을 수행한다.

 - 사용자와 웹페이지와 자유롭게 상호작용 할 수 있는 기능을 수행한다.

 - 별도의 프로그램 없이 웹페이지를 다시 로딩할 필요 없이 내용, 메뉴 등을 제공한다.

 - 서버 처리를 대기하지 않고, 비동기 요청이 가능하다.


 

 

3. SOP(Same-Origin Policy)

 

 - 동일 출처 정책이라고 하며, 이는 자바스크립트(XMLHTTPRequest)로 다른 웹페이지에 접근시 동일 출처

   (프로토콜, 호스트 이름, 포트)의 페이지에만 접근이 가능한 기능이다.
 - 이를 통해서 동일 출처 관계에서만 AJAX 요청을 실시하게 된다.
 - 단, 외부 API 호출이 많이 사용되는 웹 같은 경우에는 SOP 정책으로 인해서 문제가 발생하기 때문에 CORS 정책을

   사용하여 다른 출처 관계에서도 호출이 가능하도록 해야 한다.
 

 

SOP(Same-Origin Policy)

 

 

 

4. CORS(Cross-Origin Resource Sharing)

 

 - 웹 페이지의 제한된 자원을 외부 도메인에서 요청을 허용해주는 기능을 수행한다.

 - 즉, 브라우저와 서버 간에 AJAX 요청/응답시 Cross-Origin 요청을 허용/거부할 것인지를 결정하는 동작을 수행한다.

 

 

 

5. Access-Control-Allow-Origin

 

 - Access-Control-Allow-Origin: *  <- 모든 도메인에 대해서 AJAX 요청에 대한 CORS를 허용한다.

 - Access-Control-Allow-Origin: 도메인  <- 특정 도메인에 대해서만 AJAX 요청에 대한 CORS를 허용한다.

 

 

 

6. Security Misconfiguration - Cross-Origin Resource Sharing(AJAX)

 

 - 이 시나리오는 'Access-Control-Allow-Origin: *'으로 되어있기 때문에 다른 출처에 대한 AJAX 요청이 가능한 여부를

   확인하는 내용이다. 

 

  

Ex1) Security Misconfiguration - Cross-Origin Resource Sharing(AJAX) 이해

 

 

보안 레벨 선택 및 시나리오 선택

 

 

 

악의적인 사이트의 AJAX 요청을 사용하여 Neo의 비밀 획득하라는 내용 확인 -> 'secret' 클릭

 

 

 

Neo의 비밀 확인

 

 

 

Intercept -> 'Intercept is on' 으로 변경 실시

 

 

'secret' 버튼 클릭

 

 

 

버프슈트 Intercept 내용 확인 -> 'Forward' 버튼 클릭

 

 

 

버프슈트 Intercept 응답 내용 확인

(Access-Control-Allow-Origin : * 확인)

 

 

 

'Intercept is on'를 클릭하여 off 실시

 

 

'Intercept is off' 확인

 

 

Neo의 비밀 확인

 

 

 

 

Ex2) 'sm_cors.php' 파일 내용 확인

 

bee@bee-box:/var/www/bWAPP$ ls -l sm_cors.php
-rw-rw-r-- 1 root www-data 5492 2014-11-02 23:52 sm_cors.php

bee@bee-box:/var/www/bWAPP$ vi sm_cors.php

~ 중간 생략 ~

 

switch($_COOKIE["security_level"])
{

 

    case "0" :

 

        $hero = "Neo";
        $file = "secret-cors-1.php";
        break;

 

    case "1" :

 

        $hero = "Wolverine";
        $file = "secret-cors-2.php";
        $hint = "HINT: the secret is only available to requests from intranet.itsecgames.com...";
        break;

 

    case "2" :

 

        $hero = "Johnny";
        $file = "secret-cors-3.php";
        $hint = "HINT: never trust local intranet zones!";
        break;

 

    default :
       
        $hero = "Neo";
         break;

 

}

 

:q!

 

 

bee@bee-box:/var/www/bWAPP$ vi secret-cors-1.php

~ 중간 생략 ~

 

header('Access-Control-Allow-Origin: *');

 

echo "Neo's secret: Oh why didn't I took that BLACK pill?";

 

?>

:q!     

 

 

bee@bee-box:/var/www/bWAPP$ vi secret-cors-2.php

~ 중간 생략 ~

 

if(isset($_SERVER["HTTP_ORIGIN"]) and $_SERVER["HTTP_ORIGIN"] == "http://intranet.itsecgames.com")
{

 

    header("Access-Control-Allow-Origin: http://intranet.itsecgames.com");

 

        echo "Wolverine's secret: What's a Magneto?";

 

}

 

else
{

 

    echo "This is just a normal page with no secrets :)";

 

}

 

?>
 

:q!

 

 

bee@bee-box:/var/www/bWAPP$ vi secret-cors-3.php

~ 중간 생략 ~

 

 

 

echo "Johnny's secret: I'm the Ghost Rider!";

 

?>
 

:q!

 

 

 

[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)

 

웹해킹 65. A5 - bWAPP Security Misconfiguration - Cross-Origin Resource Sharing(AJAX)   https://youtu.be/XVpxSPyhm-4

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q