웹호스팅

송상근 에반젤리스트

무단링크 방지 우회하기

 

무단링크 방지 기술은 나의 홈페이지에 있는 자료들을 허락없이 링크하거나 다운로드 하는것을 막기 위한 기술이다.

 

가장 알려진 링크방지 기술중에 하나인 HTTP Referer 를 통한 무단링크 방지 기술은 '무단링크 방지 방법' 를 클릭하면 문서 확인이 가능하다.

 

 

여기서는 HTTP Referer 로 무단링크 방지 설정을 한 서버의 파일을 가지고 오는 방법? 을 설명하고자 한다.

 

 

웹호스팅 서버에 이미지 파일을 하나 업로드 하고 아래와 같은 설정들을 진행하였다.

 

 

나의 사이트 iwinvhelper.iwinv.net (index.html) 을 통하지 않고서는 picture.jpg 라는 파일을 다운로드 하거나 볼수 없게끔 설정하였다.

 

[index.html] 파일

<img src="http://iwinvhelper.iwinv.net/media/picture.jpg">

 

[.htaccess] 파일 

SetEnvIF Referer "^http://(iwinvhelper.)?iwinv.net" permit

<FilesMatch ".(gif|png|bmp|jpg|jpeg|GIF|JPG|BMP|mp3|MP3|mp4|MP4|mpeg|MPEG|wav|WAV|asf|ASF|wmv|WMV|swf|SWF)$">

Order deny,allow

Deny from all

allow from env=permit

 

 

 

• 웹 브라우저 iwinvhelper.iwinv.net 을 입력하면 Referer 으로 입력된 값이 http://iwinvhelper.iwinv.net 이므로 정상적으로 이미지가 보인다.

nudankill1

 

 

• 웹 브라우저에 http://iwinvhelper.iwinv.net/picture.jpg 을 입력하면 정상적인 Referer 인 http://iwinvhelper.iwinv.net 을 통하지 않고 들어왔기 때문에 출력되지 않는다.

nudankill2

 

 

 

∗ 위와 같이 무단링크 방지 설정된 서버들의 이미지파일을 아래의 방법으로 우회하는 방법을 알아 본다.

 

 

 

 

iframe 사용하기


 

 

여기서 iwinvhelper1.iwinv.net 이라는 홈페이지 주인이 iwinvhelper.iwinv.net에 이미지를 도용하고 싶은데 아래와 같이 동일하게 이미지를 링크시켰다.

 

 

[iwinvhelper1.iwinv.net 의 index.html]

<img src="http://iwinvhelper.iwinv.net/media/picture.jpg">

 

 

 

• iwinvhelper1.iwinv.net 브라우저 화면 이미지가 보이지 않는다.

nudankill3

∗ 무단 방지 링크 설정이 되어 있으므로 정상적인 방법으로는 이미지 링크를 가지고 올 수 없다. 

 

 

 

[iwinvhelper1.iwinv.net 의 index.html] 을 아래와 같이 바꾸었다.

 

<iframe src="http://iwinvhelper.iwinv.net/index.html" width="1050" height="620"></iframe>

∗ 파일이 아닌 파일이 링크된 html 을 iframe 을 사용해서 호출한다.

 

 

 

∗ iframe 방식으로 웹 문서를 링크했을때 이미지가 정상적으로 보여진다. 위 iframe 을 응용하여 무단링크 방지된 이미지를 보여줄수 있으며 다운로드 또한 가능하다.

nudankill4

 

 

 

 

HTTP Referer 변조하기


 

 

 

여기서는 클라이언트의 HTTP Referer 를 변조하여 무단링크 설정된 이미지를 보거나 다운로드 하는 방법을 설명한다.

 

우선 무단링크 방지된 이미지쪽에서 설정한 HTTP Referer 가 무엇인지 알고 있다는 가정하에서 진행한다.

 

서버를 1대만 사용하는 경우는 설정한 HTTP Referer 값이 해당 서버 자기자신일 확률이 높으며 이미지가 표시되는 도메인이 Referer 로 설정된 경우가 많으므로 

무단 링크를 하려는 사람들은 충분히 Referer 를 예측 할 수 있다.

 

 

 

여기서도 위와 동일하게 iwinvhelper.iwinv.net 도메인을 통하지 않으면 이미지를 볼 수 없게 설정하였다.

 

 

[iwinvhelper.iwinv.net 의 무단링크 방지 설정]

SetEnvIF Referer "^http://(iwinvhelper.)?iwinv.net" permit

<FilesMatch ".(gif|png|bmp|jpg|jpeg|GIF|JPG|BMP|mp3|MP3|mp4|MP4|mpeg|MPEG|wav|WAV|asf|ASF|wmv|WMV|swf|SWF)$">

Order deny,allow

Deny from all

allow from env=permit

 

 

 

• 브라우저에서 보면 iwinvhelper.iwinv.net 을 입력하면 이미지가 정상적으로 보인다.

nudankill5

 

 

 

• 하지만 이미지 파일을 바로 볼려고 하면 열리지 않는다 (http://iwinvhelper.iwinv.net/picture.jpg)

nudankill8

 

 

위와 같이 403 퍼미션 관련 응답코드를 응답받는다면 무단링크가 설정되어 있다고 볼 수 있으며 당연히 iwinvhelper.iwinv.net 에서는 이미지가 보였으니

Referer 설정은 iwinvhelper.iwinv.net 으로 설정되어 있을꺼라 예측 가능하다.

 

 

여기서는 크롬 브라우저에서 이미지 파일 주소 입력을 통해 바로 볼 수 있도록 우회해보겠다.

 

 

1. 크롬 브라우저 앱 스토어에서 referer 로 검색하고 아래 프로그램을 설치한다.

nudankill7

 

 

 

2. 프로그램을 설치하고 실행한 후 아래와 같이 입력하고 설정한다.

nudankill10

 

 

 

3. 새탭을 열어서 위 이미지 링크를 열어보면 정상적으로 이미지가 표시된다.

nudankill9

 

 

∗ HTTP Referer 를 통한 무단링크 방지를 설정하더라도 충분히 예측 가능하며 Referer 를 조작가능하므로 100% 이미지 노출을 막기는 어렵다.

 

 

 

 

PHP CURL 을 이용한 무단링크 방지 우회하기


 

 

다른 웹 서버에서도 무단링크 방지된 HTTP Referer 설정값을 알고 있으며 이미지 파일의 위치만 알고 있다면 무단 링크가 가능하다.

 

 

[무단링크 방지된 이미지 파일 가지고 오기 예제]

// 이미지 호출
$curl = curl_init () ;
curl_setopt ( $curl , CURLOPT_URL , 'http://iwinvhelper.iwinv.net/picture.jpg' ) ;
curl_setopt ( $curl , CURLOPT_TIMEOUT , 3 ) ;
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , TRUE ) ;
curl_setopt ( $curl , CURLOPT_REFERER , 'http://iwinvhelper1.iwinv.net/' ) ;
curl_setopt ( $curl , CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)' ) ;
curl_setopt ( $curl , CURLOPT_HTTPGET , 1 ) ;
$r = curl_exec ( $curl ) ;

// 이미지 출력
echo '<img src="data:image/jpg;base64,' . chunk_split ( base64_encode ( $r ) ) . '">' ;
?>

  

 

• 위 방법으로도 무난하게 이미지 파일을 가지고 올 수 있었다.

nudankill11

 

 

 

 

위 테스팅을 해 본 결과 HTTP Referer 를 이용한 무단링크 방지 설정은 마음만 먹는다면? 누구나 이미지를 가지고 올 수 있었으며

 

최근에는 Referer 를 통한 무단링크 방지 이외 세션인증, 워터마크, Apache 에서 전처리를 통해 파일을 직접 호출하는 등의 링크 방지 기술들이 많이 사용되고 있으니

 

중요하고 꼭 인증된 사용자에게만 컨텐츠를 제공하고자 한다면 기본적으로 Referer 링크 방지 이외 여러가지 링크방지 기술들을 같이 사용하기를 권고한다.

 

질문 및 제안하기

댓글 0

댓글 내역이 없습니다.

댓글 더 보기 첫 댓글 맨 위