
CVE-2015-7547용 PoC 익스플로잇 서버
취약한 glibc 버전이 설치된 로컬 머신에서 테스트하려면:
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee /etc/resolv.conf
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee -a /etc/resolv.conf
user@localhost:/# sudo python3 attack-server.py 127.0.0.127
Starting UDP server on 127.0.0.127:53...
Starting TCP server on 127.0.0.127:53...
그런 다음, 다른 터미널 세션에서 아래 예제에 표시된 대로 공격을 실행하세요.
UDP 및 TCP를 통해 2048바이트가 넘는 응답을 보낼 수 있어야 합니다.
공격 순서:
UDP 응답, 2048바이트 초과, 유효한 헤더/질문, TC 플래그 설정 (버퍼 관리 오류 및 TCP 재시도 유발)
TCP 응답, 유효한 헤더/질문 (다음 응답이 스택 할당 버퍼에 저장되도록 강제)
TCP 응답, 2048바이트 초과 (스택 할당 버퍼 오버플로우)
예제:
user@localhost:/# curl http://attack1
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
UDP를 통해 2048바이트가 넘는 응답을 보낼 수 있어야 합니다.
공격 순서:
UDP 응답, 2048바이트 초과, 유효하지 않은 헤더 (버퍼 관리 오류 유발, 유효한 응답으로 간주되지 않음)
다음 요청 무시 (폴링 시간 초과로 인한 UDP 재시도 유발)
UDP 응답, 유효한 헤더/질문 (다음 응답이 스택 할당 버퍼에 저장되도록 강제)
UDP 응답, 2048바이트 초과 (스택 할당 버퍼 오버플로우)
예제:
user@localhost:/# curl http://attack2
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
UDP를 통해서는 1024바이트가 넘는 응답을, TCP를 통해서는 2048바이트가 넘는 응답을 보낼 수 있어야 합니다.
공격 순서:
UDP 응답, 1024바이트, 유효한 헤더/질문 (스택 할당 버퍼의 절반을 채움)
UDP 응답, 1024바이트 초과, 유효한 헤더/질문, TC 플래그 설정 (버퍼 관리 오류 및 TCP 재시도 유발)
TCP 응답, 유효한 헤더/질문 (다음 응답이 스택 할당 버퍼에 저장되도록 강제)
TCP 응답, 2048바이트 초과 (스택 할당 버퍼 오버플로우)
예제:
user@localhost:/# curl http://attack3
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
UDP를 통해 2048바이트가 넘는 응답을 보낼 수 있어야 합니다.
공격 순서:
UDP 응답, 2048바이트, 유효한 헤더/질문 (스택 할당 버퍼를 채움)
UDP 응답 (0바이트 소켓 수신으로 인한 버퍼 관리 오류 및 UDP 재시도 유발)
UDP 응답, 유효한 헤더/질문 (다음 응답이 스택 할당 버퍼에 저장되도록 강제)
UDP 응답, 2048바이트 초과 (스택 할당 버퍼 오버플로우)
예제:
user@localhost:/# curl http://attack4
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
TCP를 통해 2048바이트가 넘는 응답을 보낼 수 있어야 하며, /etc/resolv.conf에 최소 두 개의 네임서버 항목이 있어야 합니다.
공격 순서:
UDP 응답, 유효한 헤더/질문, TC 플래그 설정 (선택 사항, 초기 쿼리가 UDP인 경우 TCP 재시도 유발)
TCP 응답, 2048바이트 초과 (버퍼 관리 오류 유발)
TCP 응답, 비어 있음 (0바이트 소켓 수신으로 인한 TCP 재시도 유발)
TCP 응답, 유효한 헤더/질문 (다음 응답이 스택 할당 버퍼에 저장되도록 강제)
TCP 응답, 2048바이트 초과 (스택 할당 버퍼 오버플로우)
예제:
user@localhost:/# curl http://attack5
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)