HTTP 프로토콜
Hyper Text Transfer Protocol : 웹을 구현하기 위한 네트워크 프로토콜
HTTP 프로토콜의 특징
- 간단
- 확장이 가능
- Stateless
- Connectionless (클라이언트가 요청을 한 후 응답을 받으면 연결을 끊음)
- 세션(session)이 있음
- 신뢰할 수 있거나 메시지 손실이 없는 연결을 요구 (TCP/TLS)
- 수신자 측에 의해 요청이 초기화 되는 Client-Server 프로토콜
- 쿠키를 통해 흔적을 남겨 연결 유지
HTTP 통신
Client=>Server : TCP or TLS 통해 HTTP 요청 전송
Web Server : HTTP 요청 처리
Server=>Client : HTTP 응답, 결과 반환
HTTP 구조
- 메소드(Method): 서버에게 어떤 명령을 실행할 지 알려주는 역할
- 요청 URL: 완전한 URL과 상대적인 경로 둘 다 사용할 수 있다.
- 버전: 요청 메시지가 사용하고 있는 HTTP 버전을 표기
- 헤더: 추가적인 정보 전달
- 버전: 응답 메시지의 버전을 알려준다.
- 응답코드/응답 코드 텍스트: 요청이 성공된 것을 알려주거나, 에러의 종류를 알려준다.
- 응답 헤더: 추가적인 정보를 전달
HTTP 서버와 통신
이제 본격적인 실습 시작
requests cmd에서 다운 받고 와야한다.
이렇게!
가독성이 좋지 않지만 위 캡쳐에서 구현한 것은 다음과 같다.
1. GET 요청
2. GET 요청에 파라미터 같이 전달
3. POST 요청에 데이터 같이 전달
4. HTTP 요청에 헤더 추가
Fuzzing Web server
Fuzzing
비정상적인 데이터를 애플리케이션에 전달하여 에러를 유도하는 방법이다. 다양하고 잠재적 위협을 가진 입력 값을 보내 보안 취약점을 탐지할 수 있다.
Fuzzing으로 탐지할 수 있는 보안 취약점
- BOF
- Integer overflow
- Format string 취약점
- SQL injection
- XSS
- Filesystem attacks
- information leaking 취약점
HTTP 요청 중 value 값에 아주 큰 버퍼를 넣어 서버를 점검해보겠다.
Exploit 코드 분석
보다시피 실습 결과가 나오지 않았다. 구글링을 해봐도 해답을 못찾겠어서 우선 보류.
*모든 실습은 가상환경에서 진행되었다.
'파이썬 IT 해킹, 보안' 카테고리의 다른 글
포트 스캐너 개발 (0) | 2020.10.04 |
---|---|
백도어 개발 (0) | 2020.09.27 |
FTP 프로토콜 (0) | 2020.09.15 |