loading
본문으로 바로가기

아파치(apache)란?

세계에서 가장 많이 쓰는 웹 서버중 하나이며, 아파치 소프트웨어 제단에서 관리하는 HTTP 웹 서버 이다.

Apache는 Apache재단에서 만든 HTTP서버로 워낙 다양한 추가기능에, 구축이 쉽다는 이유 때문에 많이 쓰고 있습니다.

 

하지만 Apahce 자체만으로 엄청 무겁고, Squid와 함께 Slowloris 취약점이 발견되었기에, 보통 프로그래밍 능력이 능숙한 사람들이나, 대형사이트 운영자는 Nginx, IIS를 주로 쓰고있지만 대부분의 중소기업들은 무료이기 때문에 많이 쓰입니다.

 

프록시 남용공격(Apache Proxy Abuse)이란?


다른 웹 서버의 프록시 기능을 악용하는 것입니다. 프록시(proxy)는 '대리'라는 의미로, 직접 통신할 수 없는 두 점 사이에서 통신을 할 경우 중계역할을 수행하는 기능을 프록시 서버라고 합니다.

웹 서버 소프트웨어의 프록시 기능이 켜져있으면 이러한 공격에 악용될 수 있습니다.

 

위의 공격에 대표적인 두 방식이 발견됐습니다.

 

1. Payload

GET http://www.baidu.com/favicon.ico HTTP/1.1

다른 홈페이지의 URL을 GET 방식으로 접속하려는 방식

 

CONNECT www.google.se:443 HTTP/1.1
CONNECT smtp.example.com:25 5x1.0

CONNECT 메소드로 다른 누리집에 접근하려는 방식

 

Apache 웹서버는 프록시 기능을 제공합니다. 주로 외부에서는 접속할 수 없는 서버에 대해서 일부 기능만을 서비스대행하기 위해서 사용하는 것으로 보이지만, 프록시 설정을 하지 않게 되면 누구나 프록시 기능에 접속할 수 있게 됩니다.

 

공격자들은 이러한 ProxyAbuse 공격을 통해서 자신의 IP주소를 다른 IP인 것처럼 위장하게 됩니다.

 

CONNECT 메소드는 일반적으로 프록시를 통해 SSL요청터널로 만드는 데 사용됩니다. 그러나 이 경우 대상의 포트 25는 누군가가 우리의 HTTP프록시를 사용하여 메일(스팸)을 외국 사이트로 보내려고 한다는 것을 보여집니다.

 

IP주소 위장은 해킹 공격에서 자신의 IP주소를 숨기기 위한 방편이지만 최근에는 다른 방향에서 악용된다고 하며, "부정 광고 클릭"에 악용해서 수많은 IP주소에서 광고가 노출/클릭된 것으로 속여서 광고주로부터 돈을 뜯는 데 사용되는 경우도 있습니다.

 

※ 해결방안

1. Apache 최신버전 업그레이드를 진행한다.

 

2. 기본 가상 호스트를 설정하여 특별히 구성되지 않은 호스트에 대한 액세스를 거부하도록 Apache를 구성합니다. 

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName default.only
  <Location />
    Order allow,deny
    Deny from all
  </Location>
</VirtualHost>

<VirtualHost *:80>
  ServerName realhost1.example.com
  ServerAlias alias1.example.com alias2.example.com
  DocumentRoot /path/to/site1
</VirtualHost>

구성이 완료되면 다음과 같이 200이 아닌 403의 결과값을 받아 공격을 피할 수 있다.

 

GET http://www.example.com HTTP/1.1" 403 202

추가 자료

"GET http://www.baidu.com/favicon.ico HTTP/1.1" 200 1691 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
"GET http://www.baidu.com/favicon.ico HTTP/1.1" 200 1691 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"
"GET http://www.google.com/ HTTP/1.1" 302 170 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://webhack.dynu.net/ HTTP/1.1" 200 48565 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://www.google.com/?id=x&1=&gws_rd=ssl HTTP/1.1" 302 170 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://webhack.dynu.net/ HTTP/1.1" 200 49415 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://www.google.com/?id=x&1=&gws_rd=ssl HTTP/1.1" 302 170 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://www.google.com/?id=x&1=&gws_rd=ssl HTTP/1.1" 302 170 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://www.google.com/?id=x&1=&gws_rd=ssl HTTP/1.1" 302 170 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://webhack.dynu.net/ HTTP/1.1" 200 48565 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://www.google.com/?id=x&1=&gws_rd=ssl HTTP/1.1" 302 170 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://webhack.dynu.net/ HTTP/1.1" 200 48371 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
"GET http://archive.org/wayback/available?url=searchuk.org×tamp=19900101 HTTP/1.1" 404 477 "-" "python-requests/2.9.1"