
Server Side Request Forgery (SSRF)를 통한 Atlassian Jira XSS 공격.
SSRF & XSS
https://jira.you.com//plugins/servlet/oauth/users/icon-uri?consumerUri=http://www.google.co.uk
Atlassian OAuth Plugin의 IconUriServlet은 버전 1.3.0부터 1.9.12 이전까지, 그리고 버전 2.0.0부터 2.0.4 이전까지의 버전에서 원격 공격자가 서버 측 요청 위조(SSRF)를 통해 내부 네트워크 리소스에 접근하거나 XSS 공격을 수행할 수 있도록 허용합니다.
Atlassian Jira에 따르면 다음 버전이 취약합니다:
서버 측 요청 위조(SSRF) 공격에서 공격자는 서버의 기능을 남용하여 내부 리소스를 읽거나 업데이트할 수 있습니다. 공격자는 서버에서 실행되는 코드가 읽거나 데이터를 제출할 URL을 제공하거나 수정할 수 있으며, URL을 신중하게 선택함으로써 공격자는 AWS 메타데이터와 같은 서버 구성을 읽거나, http 기반 데이터베이스와 같은 내부 서비스에 연결하거나, 노출되지 않아야 하는 내부 서비스에 POST 요청을 수행할 수 있습니다.
대상 애플리케이션에는 URL에서 데이터를 가져오거나, URL에 데이터를 게시하거나, 조작될 수 있는 URL에서 데이터를 읽는 기능이 있을 수 있습니다. 공격자는 완전히 다른 URL을 제공하거나 URL 구성 방식을 조작(경로 탐색 등)하여 이 기능에 대한 호출을 수정합니다. 조작된 요청이 서버로 전송되면 서버 측 코드는 조작된 URL을 선택하고 해당 URL에서 데이터를 읽으려고 시도합니다. 공격자는 대상 URL을 선택함으로써 인터넷에 직접 노출되지 않은 서비스에서 데이터를 읽을 수 있습니다:
Cloud server meta-data - AWS와 같은 클라우드 서비스는 http://169.254.169.254/latest/meta-data/ 에서 REST 인터페이스를 제공하며, 여기서 중요한 구성 및 인증 키를 추출할 수 있습니다.
Database HTTP interfaces - MongoDB와 같은 NoSQL 데이터베이스는 HTTP 포트에서 REST 인터페이스를 제공합니다. Docker and Kubetnetes - 내부 포트가 노출된 경우 공격자는 포드 및 컨테이너를 생성/삭제하고 다른 비밀을 검색할 수 있습니다.
데이터베이스가 내부에서만 사용 가능할 것으로 예상되는 경우 인증이 비활성화되어 있을 수 있으며 공격자가 데이터를 추출할 수 있습니다. 내부 REST 인터페이스
파일 - 공격자는 file:// URI를 사용하여 파일을 읽을 수 있습니다. 공격자는 또한 이 기능을 사용하여 신뢰할 수 있는 소스에서만 데이터를 읽을 것으로 예상되는 코드에 신뢰할 수 없는 데이터를 가져와 입력 검증을 우회할 수 있습니다.