정보보안(구버전)/ 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";
case "1" :
$hero = "Wolverine";
case "2" :
$hero = "Johnny";
default :
}
: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