2017. 8. 1. 20:35ㆍWebHacking/Web
< 요청 헤더 Method에 따른 응답들 >
1> GET
[ GET Method Code ]
[ GET Method 실행화면 ]
GET방식으로 해당 페이지에 대한 정보를 요청한다
Message-Body에 해당 페이지의 소스코드가 담겨져서 응답이 왔다
2> OPTIONS
[ OPTIONS Method Code ]
[ OPTIONS Method 실행화면 ]
해당 웹 페이지에 사용할 수 있는 메서드들의 종류들을 알려줍니다
3> HEAD
[ HEAD Method Code ]
[ HEAD Method 실행화면 ]
GET메서드와 같지만 차이점은 메시지 바디가 없다는 것 뿐이다
< GET Flooding >
단순하게 GET방식의 요청을 무수히 많은 PC에서 보내면 타겟이 되는 PC는 과부화가 발생한다
[ GET Flooding Code ]
< Slowloris Attack >
[ Slowloris Code ]
헤더는 마지막 문장에 "\r\n"(CRLF) 을 넣음으로써 헤더의 끝을 알린다
헤더의 끝에 \r\n을 없애서 전송한다면 어떻게 될것인가?
서버는 헤더가 끝이 아니라고 인식하고 계속 헤더의 내용을 읽어드리려고 대기한다
이러한 요청을 무수히 많이 보내면 타겟 서버는 과부화가 발생한다
[ Slowloris 실행 ]
HTTP통신은 이전에 말했듯이 요청을 보내고 응답을 받으면 TCP통신을 자동으로 끊어지도록 동작한다
타겟 서버와 TCP통신이 끊어지지 않고 계속해서 ESTABLISHED상태임을 확인할 수 있다
[ Wireshark Capture ]
아래 파란색 상자로 체크해놓은 부분이 Slowloris Attack 부분이다
연결이 끊어지지 않고 서버는 계속해서 대기하고 있음을 확인할 수 있다
서버에서 설정한 TTL시간만큼 대기하므로 해당 시간에 도달하기 전에 헤더요청을 하나 더 보낸다
소스코드에서 time모듈을 사용해서 TTL 60초가 되기전에 59초마다 헤더요청을 보내도록 설계하였다
< Slow Read Attack >
[ SlowRead Code ]
헤더에서 데이터 바디 부분에 데이터가 있다면 해당 데이터의 타입과 길이를 명시해주어야 한다
여기서, 데이터의 길이를 99999999 만큼 큰 크기의 요청패킷을 보내면 어떻게 될까?
서버는 99999999만큼의 데이터를 하나씩 천천히 읽어들이고 연결을 계속 유지된다
이러한 패킷들을 무수히 많이 보내게 되면 타겟 서버는 과부하 상태에 빠지게 된다
[ SlowRead 실행 ]
타겟 서버와 TCP연결이 끊어지지 않고 ESTABLISHED상태를 유지하고 있다
서버는 99999999만큼의 데이터를 천천히 계속 읽어들인다
'WebHacking > Web' 카테고리의 다른 글
PHP배열(array생성자) 및 반복문(foreach) (0) | 2017.08.02 |
---|---|
가상머신에 PHP설치 / PHP출력문 / 변수 (0) | 2017.08.02 |
자바스크립트 DOC객체 메서드 / 사용법 (0) | 2017.08.02 |
웹 페이지에서 자바스크립트 실행하기 / Javascript 기본문법 / 반복문 / 조건문 (0) | 2017.08.02 |
아파치(Apache)서버 구축 / HTTP 통신 실습 (0) | 2017.07.21 |