웹 공부

URI/URL

insetto:) 2023. 10. 12. 22:46
반응형

URI/URL

URL개념

  • URI(Uniform Resource Identifier)는 자원의 위치뿐만 아니라 자원에 대한 고유 식별자로서 URL 의미를 포함한다.

URI개념

  • URL(Uniform Resouce Locator)은 자원이 실제로 존재하는 위치를 가리킨다.

URL과 URI의 예시

  • htpp://example.co.kr/index 이 예시는 example.co.kr에서 index라는 경로를 나타내고 있다. 서버에서는 해당 라우팅에 대한 알맞은 자원을 전송해줄 것이며 이는 자원의 실제 위치이므로 URL이다.
  • htpp://example.co.kr/user/107 이 예시는 example.co.kr에서 107의 ID값을 가지고있는 자원을 식별하고있다. 따라서, http://example.co.kr/user/ 까지는 자원의 실제 위치이기 때문에 URI임과 동시에 URL이며 끝의 /107 부분은 식별자이므로 URL을 포함한 URI라고 볼 수 있다.
  • htpp://example.co.kr/user?id=107 이 예시도 마찬가지로 http://example.co.kr/user 까지는 자원의 실제 위치를 나타내기 때문에 URL이라고 할 수 있으며, 뒤의 퀴리스트링 식별자(?id=107)을 포함하여 URI라고 볼 수 있다.

URL Encoding

  • URL로 시용할 수 없는 (특수문자, 예약문자 등)을 사용할 수 있도록 인코딩 하는 것
  • 인코딩 된 문자는 triplet(트리플렛, 3개의 한 묶음)으로 인코딩
  • 인코딩된 문자는 %로 시작하고 그 뒤의 두 숫자는 16진수 숫자로 표현

URL Encoding 사용 이유

  • HTTP GET 요청에서 퀴리스트링에 한글 또는 ASCII에 정의되지 않은 문자가 포함되는 경우
  • URL은 ASCII문자열을 이용해서만 전달할 수 있음
  • alphanumeric character, underscores를 제외하고 URL 내의 모든 문자는 의도치 않게 변형될 수 있으므로 인코딩

Host Split Attack

  • IDN(Internationalized Domain Name)을 먼저 알아야 하는데 IDN은 아스키코드가 아닌 다른 문자를 포함하는 도메인을 의미한다.
    • 한국어 역시 아스키코드가 아니므로 IDN이다.
  • IDN은 단지 우리에게 표시될때만 사용되고 실제 통신을 할 때에는 dns query, 그 후의 HTTP 통신등을 위해서 결국 아스키코드로 변환된다.
  • 아스키코드로 변환하는 방법은 1. Normalization 2. Punycoding
    • Punycoding은 지정된 규칙에 따라서 아스키코드가 아닌 문자열들을 아스키문자열로 치환하며, 치환된 문자열은 xn-- 으로 시작하는 접두어를 가진다.
    • 예를들어 루비야.kr은 xn--2s2b21ho6g.kr와 동일한 도메인이다.
  • punycode는 2순위, 1순위에는 Normalization라는 동작이있다.

  • Normalization은 Punycoding과 달리 유니코드를 기반으로 여러 비슷한 모양의 문자를 경우의 수를 줄여서 하나로 인식을 시키는 것 같다.

  • 유니코드는 각각의 나라 마다 언어가 다르고 모양도 다르기 때문에 경우의 수를 위와 같이 줄여 준다.
  • 다른 하나의 예로 https://evil.c℀.example.com 에 접속을 하면 브라우저에서 Normalization을 수행 하면 URL은**https://evil.ca/c.example.com** 이 된다.
  • 패치가 완료 되었다고 해도 Normalization은 버그가 아닌 정상적인 행동이기 때문에 해당 취약점이 어디서 터질지 알 수 없음
  • 대부분 필터링을 할 때 Normalization 하기 이전에 검사를 하기 때문에 Normalization을 수행한 이후에 검사를 하지 않아서 더욱 심각하다.

  • 먼저 공격자 입장에서 인증 서버로 https://evil.c%.office.com 보내면 서버에서는 hostname의 맨뒤가 “.office.com”라고 인식을해 Authorization Code를 보내는데 보내는 곳이 evil.ca로 보내게 된다.
  • 결국 Redirect는 https://evil.c%.office.com가 되지만 브라우저로 보내지는 URL은 https://evil.ca.office.com가 된다. 위와 같은 방식으로 OAuth 타겟으로 해서 Steal Tokens를 하는 것
반응형

'웹 공부' 카테고리의 다른 글

SQL Injection 기법들  (0) 2023.10.12
DB&DBMS&SQL  (0) 2023.10.12
Domain/DNS & Robots.txt  (0) 2023.10.12
File Upload/Download 취약점  (0) 2023.10.01
Path Traversal  (0) 2023.10.01