>일반적인 문제 >웹 침투를 위해서는 어떤 기본 지식이 필요한가요?

웹 침투를 위해서는 어떤 기본 지식이 필요한가요?

青灯夜游
青灯夜游원래의
2020-07-24 13:18:585639검색

웹 침투를 위해서는 어떤 기본 지식이 필요한가요?

웹 침투에 대한 기본 지식

네트워크 기본

IP 프로토콜

IP 프로토콜은 OSI-RM의 세 번째 계층에서 정의됩니다.——네트워크 계층

IP 프로토콜 은 연결 없음 을 위한 것입니다. IP 네트워크의 노드 라우터는 각 IP 패킷 헤더의 IP 주소에 따라 주소가 지정됩니다. 이러한 방식으로 동일한 호스트가 보낸 동일한 메시지에 속하는 IP 패킷이 도달할 수 있습니다. 다른 경로를 통해 대상 호스트.

TCP/IP 프로토콜은 OSI 7계층 참조 모델을 완전히 준수하지 않습니다.

7계층은 낮은 것부터 높은 것까지:

1 물리 계층, 2 데이터 링크 계층, 3 네트워크 계층, 4 전송 계층, 5 세션 계층, 6 프리젠테이션 계층, 7 애플리케이션 계층입니다.

상위 레이어(즉, 레이어 7, 6, 5, 4)는 애플리케이션의 기능을 정의하고,

하위 3개 레이어(즉, 레이어 3, 2, 1)는 주로 엔드를 지향합니다- 네트워크를 통해 엔드 데이터가 흐릅니다.

TCP/IP 통신 프로토콜은 4계층 계층 구조를 채택합니다. 각 계층은 자체 요구 사항을 충족하기 위해 다음 계층에서 제공하는 네트워크를 호출합니다.

4 레이어는

애플리케이션 레이어, 전송 레이어, 상호 연결 네트워크 레이어, 네트워크 인터페이스 레이어입니다.

UDP 프로토콜

UDP는 OSI 참조 모델의 connectionless 전송 계층 프로토콜인 사용자 데이터그램 프로토콜입니다.

UDP에는 패킷 그룹화 , 조립 패킷 정렬이 불가능 이라는 단점이 있습니다. 즉, 메시지가 전송된 후에는 메시지가 안전하고 완전하게 도착했는지 알 수 없습니다.

TCP 프로토콜

TCP는 IETF의 RFC 793에 의해 정의된 연결 지향, 신뢰성, 바이트 스트림 기반 전송 계층 통신 프로토콜입니다.

애플리케이션 계층은 네트워크 간 전송을 위해 8비트 바이트로 표시되는 데이터 스트림을 TCP 계층으로 보낸 다음 TCP는 데이터 스트림을 적절한 길이의 메시지 세그먼트로 분할합니다(보통 연결되는 네트워크의 데이터 링크에 의해 영향을 받음). 컴퓨터가 연결되어 있음) 레이어의 최대 전송 단위(MTU) 제한).

그런 다음 TCP는 결과 패킷을 IP 계층으로 전달하고 IP 계층은 네트워크를 통해 수신 엔터티의 TCP 계층으로 패킷을 전송합니다. 패킷 손실이 발생하지 않도록 하기 위해 TCP는 각 패킷에 시퀀스 번호를 부여하는 동시에 수신 측으로 전송되는 패킷이 순서대로 수신되도록 보장합니다. 그런 다음 수신 엔터티는 성공적으로 수신된 패킷에 대해 해당

확인(ACK

)을 다시 보냅니다. 전송 엔터티가 합리적인 왕복 지연(RTT) 내에 확인을 받지 못하면 해당 데이터 패킷은 다음과 같습니다. 손실된 것으로 간주되며 재전송됩니다. TCP는 체크섬 기능을 사용하여 데이터에 오류가 있는지 확인합니다. 송신 중에 체크섬을 계산해야 합니다.

TCP three-way handshake와 four-way wave에 대한 간략한 설명

Three-way handshake

첫 번째 핸드셰이크:

서버와 통신하려면

클라이언트가 먼저 서버에 이를 알리고 전송해야 합니다. out a SYN=1인 연결 요청 신호, "서버측 형님, 통화하고 싶습니다." 두 번째 핸드셰이크:

서버가 클라이언트의 연결 요청

을 받으면 클라이언트에게 "이해합니다(ACK), 준비가 되었습니다. 이제 (SYN)"이라는 확인 메시지를 보냅니다. 세 번째 핸드셰이크:

클라이언트는 서버로부터 연결 확인 정보

를 받은 후 "좋아, 연결을 시작하자(ACK)"라고 정중하게 서버에 알려야 합니다. 이제 연결 설정 과정이 모두 끝났고, 다음 단계는 두 당사자 간에 하나씩 또는 동시에 정보를 전달하고 전송하는 과정입니다.

네 번 흔들기

첫 번째 물결: 두 당사자 간의 통신이 거의 끝났습니다.

이때 클라이언트도 종료되었으며

다음에는 통신 연결을 끊어야 하므로 서버에 알려주세요." I'm done(FIN )'이라고 현재는 연결 종료를 기다리는 상태입니다.

두 번째 물결: 서버는 클라이언트가 할 말이 없다는 것을 알고 있습니다. 이 시점에서 서버는 아직 클라이언트에게 할 말이 두 가지 있습니다, "말이 끝난 걸 압니다(ACK). 다시 한 번 당신에게 &*……%PY”라고 몇 마디 말해주세요.

세 번째 물결: 이제 클라이언트는 여전히 종료를 기다리고 있으며 서버는 말하기를 완료했습니다. 이제 연결을 끊기를 기다리는 상태이며 클라이언트에게 "나는 지금입니다." 됐어, 연결 끊자." FIN(FIN)".

네 번째 물결: 클라이언트는 서버가 말하기를 마쳤다는 것을 알고 서버에 알려야 합니다(ACK). 연결 및 연결 끊김을 위해서는 양쪽 당사자가 연결을 끊기 위해 닫기 작업을 눌러야 하고 클라이언트는 동시에 연결을 끊어야 하기 때문입니다. 방금 말씀드린 문장이 서버에 정확히 도달할 수 있을지 모르기 때문에 타이머를 정의해두세요(네트워크 불안정으로 인한 네트워크 문제나 기타 요인),

기본 시간은 둘의 최대 시간의 합으로 설정됩니다 기본적으로 서버는 자체 확인 정보를 수신했으며 이때 클라이언트는 자체 연결을 닫습니다. 서버는 클라이언트로부터 확인 알림을 받으면 즉시 서버의 연결을 닫습니다. 이 시점에서 양측 간의 모든 커뮤니케이션 과정이 종료됩니다.

여기서 다음과 같이 진술해야 합니다.

링크 연결을 끊는 사람은 반드시 클라이언트일 필요는 없습니다. 누구나 먼저 연결 끊기 명령을 시작할 수 있습니다. 또한 클라이언트와 서버 사이에 먼저 요청을 시작하는 사람이 정해져 있는 것은 아닙니다. 클라이언트입니다.

3방향 핸드셰이크 메커니즘을 사용하는 이유는 무엇인가요?

다음과 같은 비정상적인 상황을 가정해 보겠습니다.

클라이언트가 서버에 첫 번째 요청 메시지를 보냈으나 해당 메시지가 네트워크에서 삭제되지 않고 오랫동안 어딘가에서 차단되어 클라이언트가 수신한 경우 확인하지 않으면 메시지가 손실된 것으로 간주되어 메시지가 다시 전송됩니다. 이번에는 메시지가 서버에 성공적으로 도달합니다. 3방향 핸드셰이크를 사용하지 않는 경우 서버는 연결을 설정하기 위해 메시지를 확인하기만 하면 됩니다.

연결이 설정되고 해제된 후 네트워크에서 보내고 차단한 첫 번째 메시지가 서버에 도달합니다. 서버는 클라이언트라고 생각하고 연결 요청을 다시 보냅니다(실제로 클라이언트 측에서는 연결이 이미 만료되었습니다). 클라이언트에게 또 다른 확인 메시지가 전송됩니다.

하지만 클라이언트는 요청 메시지를 보내지 않았다고 생각하여 서버가 보낸 확인을 무시했습니다. 서버는 새로운 연결이 설정된 것으로 생각하여 A가 데이터를 보낼 때까지 계속 기다리므로

낭비가 발생했습니다. 서버 자원의 손실을 초래하고 안전상의 위험을 초래할 수 있습니다.

따라서 3방향 핸드셰이크 메커니즘을 사용하면 서버가 확인을 보내고 클라이언트로부터 확인을 받지 못한 후에 연결이 설정되지 않았음을 알기 때문에 이러한 의미 없는 리소스 낭비가 발생하지 않습니다. 대기 중.

물어보세요. TCP/IP가 이 두 프로토콜을 참조하나요?

TCP/IP(전송 제어 프로토콜/인터넷 프로토콜)은 네트워크의 모든 통신 장치, 특히 한 호스트와 다른 호스트 간의 데이터 교환 형식 및 전달 방법을 규제하는 네트워크 통신 프로토콜입니다.

Sliding Window Protocol

Sliding Window Protocol은 TCP프로토콜의 응용으로 네트워크 데이터 전송 중 혼잡을 피하기 위해 흐름 제어에 사용됩니다.

이 프로토콜을 사용하면 발신자는 중지하고 승인을 기다리기 전에 여러 데이터 패킷을 보낼 수 있습니다. 패킷이 전송될 때마다 발신자가 확인을 위해 중지하고 기다릴 필요가 없기 때문에 이 프로토콜은 데이터 전송 속도를 높이고 네트워크 처리량을 증가할 수 있습니다.

HTTP

HTTP는

하이퍼텍스트 전송 프로토콜이며 인터넷에서 가장 널리 사용되는 네트워크 프로토콜입니다. 모든 WWW 파일은 이 표준을 준수해야 합니다.

일반적으로

HTTP 클라이언트는 서버의 지정된 포트(기본값은 포트 80)에 대한 TCP 연결을 설정하라는 요청을 시작합니다. HTTP서버는 해당 포트의 클라이언트에서 보낸 요청을 수신합니다. 요청을 수신하면 서버는 "HTTP/1.1 200 OK"와 같은 상태 줄과 본문이 요청된 파일, 오류 메시지 또는 다른 정보.

HTTPUDP 대신 TCP를 사용하는 이유는 웹페이지를 열려면 많은 양의 데이터를 전송해야 하는데, TCP 프로토콜은 전송 제어, 데이터 순서화, 오류 수정 기능을 제공하기 때문입니다.

HTTP 또는 HTTPS 프로토콜을 통해 요청된 리소스는 Uniform Resource Identifiers(또는 더 정확하게는 URL)로 식별됩니다.

HTTPS

HTTPS는 보안을 목표로 하는 Secure Socket Layer Hypertext Transfer Protocol, HTTP 채널, 간단히 말해서 HTTP의 보안 버전입니다.

Hypertext Transfer Protocol HTTP 프로토콜은 웹 브라우저와 웹 사이트 서버 간에 정보를 전송하는 데 사용됩니다. HTTP 프로토콜은 일반 텍스트로 콘텐츠를 전송하며 어떤 형태의 데이터 암호화도 제공하지 않습니다. 공격자가 웹 브라우저와 웹 사이트 서버 간의 전송 메시지를 가로채면 그 안에 있는 정보를 직접 읽을 수 있으므로 HTTP 프로토콜 신용 카드 번호, 비밀번호 등과 같은 일부 민감한 정보를 전송하는 데 적합하지 않습니다.

HTTP 프로토콜의 이러한 단점을 해결하려면 다른 프로토콜을 사용해야 합니다: Secure Sockets Layer Hypertext Transfer Protocol HTTPS. 데이터 전송 보안을 위해 HTTPS는 HTTP에 SSL 프로토콜을 추가했습니다. SSL은 인증서를 사용하여 서버의 신원을 확인하고 브라우저와 서버 간의 통신을 암호화합니다.

HTTP 하이재킹

Https

전송 중 암호화만, HTTPS공개 키 암호화, 개인 키 복호화, 공개 키 개인 키는 비대칭 암호화 알고리즘에 의해 생성됩니다.

Https 하이재킹:

클라이언트가 서버에 요청을 보냅니다.

서버는 공개 키 CA인증서를 클라이언트에 반환합니다. 클라이언트가 공개 키 인증서를 받은 후 임의로 클라이언트에서 대칭 키를 생성합니다. which 대칭 키 모든 후속 데이터 트래픽 을 암호화하는 데 사용되며 대칭 키는 공개 키로 암호화 되어 서버로 전송됩니다. 개인 키가 있는 경우 서버가 이를 해독합니다. 공개 키에 해당합니다.

HTTPS와 HTTP의 주요 차이점은 다음 4가지입니다.

1. https 프로토콜에서는 인증서

ca를 신청해야 합니다. 일반적으로 무료 인증서가 거의 없으며 반드시 인증서를 신청해야 합니다. 수수료를 지불하십시오. 2. http는 하이퍼텍스트 전송 프로토콜이고, 정보는

일반 텍스트 전송

인 반면, https는 안전한 ssl암호화된 전송 프로토콜입니다. 3. http와 https는 전혀 다른 연결 방식을 사용하고, 다른 포트를 사용합니다.

전자는 80

이고 후자는 443입니다. 4. http 연결은 매우 간단하며

상태 비저장

입니다. HTTPS 프로토콜은 암호화된 전송 및 신원 인증을 수행할 수 있는 SSL+HTTP프로토콜으로 구축된 네트워크 프로토콜이며 보다 안전합니다. http 프로토콜. 참고:

상태 비저장(프로토콜에는 트랜잭션 처리를 위한 메모리가 없으며 인생은 처음 보는 것과 같습니다.):

클라이언트와 서버 간의 모든 통신은 독립적인 프로세스입니다

, 웹 애플리케이션은 클라이언트를 추적해야 합니다. 세션(다단계 통신), 쿠키를 사용하지 않는 애플리케이션, 클라이언트는 각 요청에 대해 다시 인증해야 함(비현실적), 세션은 사용자 인증 후 사용자 행동 추적을 추적하는 데 사용됩니다(사용자 경험은 향상되지만 공격 트래픽은 증가함)

DNS 도메인 이름 확인클라이언트가 IP 주소 또는 호스트 이름을 변환하기 위해 DNS 요청을 보냅니다. DNS 서버는

1.

DNS

서버의 캐시를 확인합니다. 요청한 주소나 이름, 즉 클라이언트에게 응답 메시지를 보냅니다2. 찾을 수 없으면 데이터베이스에서 검색하세요

. 요청한 주소나 이름이 있으면 응답 메시지를 보냅니다. 클라이언트

3 찾을 수 없는 경우 는 루트 도메인 DNS

서버로 요청을 보내고 루트 도메인에서 순차적으로

최상위 도메인을 검색 합니다. 2차 도메인, 2차 도메인부터 3차까지, 즉 해결하려는 주소나 이름을 찾을 때까지 클라이언트가 위치한 네트워크의 DNS 서버가 응답 메시지를 보낸다. 응답을 캐시에 저장한 다음 구문 분석 결과를 클라이언트에 보냅니다. 4. 찾을 수 없으면 오류 메시지를 반환합니다

자세한 내용은 PHP 중국어 웹사이트를 참조하세요.

!

위 내용은 웹 침투를 위해서는 어떤 기본 지식이 필요한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.