- 개요
Ruby On Rails는 웹 어플리케이션 프레임워크로 해당 서버에서 사용하는 Action View 모듈에서
발생할 수 있는 파일 컨텐츠 노출 취약점 입니다.
- 취약한 버전
모든 버전
- 취약점 설명 및 분석
Accept Header에 payload를 넣고 render file:을 호출하게 되면 대상 서버의 중요 파일을 렌더링
할 수 있습니다.
ActionView 모듈의 소스는 다음과 같습니다. 해당 소스에서 find_file을 호출하여 템플릿을 결정하게
됩니다.
Find_file 메소드는 다음과 같습니다.
그 다음 options를 생성하는 args_for_lookup 메소드는 다음과 같습니다.
Name : “file”, prefixes : Path(ex. home/burn6/~~~) , details : formats(payload) 로
설정되게 됩니다.
그 다음 @view_paths.find_file 함수가 호출되게 됩니다.
View는 어플리케이션의 외부에 존재하기 때문에 Outside_app는 true가 되고 find_all_anywhere
함수가 호출되게 됩니다.
그 다음 find_templates 함수가 호출되게 되며 옵션에 따라 렌더링 할 템플릿을 찾습니다.
그 다음 build_query 함수로 query가 만들어지고 File.expand_path(query, @path)가 실행된 후에
완성된 결과는 다음과 같습니다.
해당 취약성을 이용해서 payload 에 ../../../../../../../../etc/passwd{{ 를 넣어준다면 아래와 같은
query가 만들어지고 arbitrary file read attack이 발생됩니다.
페이지를 요청할 때 Accept Header에 위의 payload를 삽입하면 서버의 중요 파일이 노출됩니다.
해당 취약점에 대한 공격 시나리오는 다음과 같습니다.
- 위협요소
공격자에 의해 서버의 중요 파일이 탈취되어 정보 누출, 2차 공격의 위협이 존재합니다.
- 대응방안
1) Rails 최신 버전 업데이트