사이버보안공부 (22) 썸네일형 리스트형 Prototype Pollution? Prototype Pollution 객체 오염 프로토타입 오염(Prototype Pollution)은 JavaScript와 같은 언어에서 발생할 수 있는 보안 취약점 중 하나이다. 이 취약점은 프로토타입이라는 객체의 기본 속성을 악용하여 객체의 프로퍼티를 비정상적으로 변경하는 공격을 나타낸다. JavaScript에서는 모든 객체가 프로토타입(Prototype)이라는 속성을 가지고 있다. 프로토타입은 해당 객체를 생성한 원본 객체로, 원본 객체의 프로퍼티와 메서드를 상속받아 사용할 수 있도록 한다. 프로토타입은 객체 지향 프로그래밍에서 상속 개념을 구현하는데 사용된다. 프로토타입 오염은 이러한 프로토타입 체인이 공격자에 의해 조작되어 발생한다. 일반적으로는 사용자 입력 또는 외부에서 받은 데이터를 통해 발.. SQL Injection? SQL Injection Injection? 인젝션은 주입이라는 뜻을 가진 영단어로, 인젝션 공격은 이용자의 입력 값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점이다. SQL Injection? 사용자가 로그인을 하기 위해 “id가 guest이고 password가 password인 계정으로 로그인한다”라는 요청을 보내면 DBMS에서는 이에 해당하는 정보를 찾고 로그인의 성공여부를 결정한다. 하지만 단지 “admin으로 로그인한다.”라는 요청을 보내면 DBMS는 비밀번호 일치 여부를 검사하지 않고, 아이디가 admin인 계정을 조회 후 사용자에게 값을 반환한다. 이와 같이 DBMS에서 사용하는 질의 구문인 SQL를 입력 값에 삽입하는 공격을 SQL Injection이라고.. NOP sled 공격기법에 대해 알아보자 NOP SLED What is NOP? 먼저 NOP이란 “No Operation”의 약어로 프로그램의 실행에는 아무런 영향을 주지 않는 명령어이다. 프로그램 작동 중에 이 NOP 명령어를 만난다면 해당 명령어를 수행하지 않고 다음 인스트럭션으로 넘어가게 된다. NOP sled? NOP sled는 프로그램이 실행 중 NOP명령어를 만났을 때의 성질을 이용한 것으로 의도적으로 NOP명령어를 사용하여 프로그램의 실행의 흐름을 넘어가게 만드는 것이다. 주로 버퍼오버플로우 공격을 할 때 shellcode 앞에 이 NOP을 추가하여 공격한다. Attack Flow 할당된 버퍼에 NOP(”\x90”)을 입력하고 끝에 shellcode를 입력한다. 이후 shellcode 앞에 충분한 NOP을 넣어주었기 때문에 RET에.. DNS Spoofing? 오늘은 DNS Spoofing에 대해서 알아보려고한다. 먼저 DNS Spoofing을 이해하기 위해서는 정상적인 DNS의 원리부터 이해해야한다. DNS 서비스 ① 클라이언트가 DNS서버에 접속하고자하는 IP를 물어본다. (DNS Query) ② DNS서버가 해당 Domain Name에 대한 IP 주소를 클라이언트에 보내준다. (DNS Response) ③ 클라이언트는 DNS 서버에서 받은 IP주소를 바탕으로 웹 서버를 찾아간다. (Web Login) 그럼 이제 DNS Spoofing에 대해 알아보자!! DNS Spoofing? DNS 패킷은 UDP패킷이기 때문에 세션이 존재하지 않아서, 먼저 도착한 패킷을 신뢰하고, 다음에 도착하는 패킷의 정보는 버린다. 위와 같은 UDP의 Connectionless이 .. Cookie wargame 드림핵 쿠키 워게임 실습문제를 풀어보겠다 먼저 사이트에 들어가면 이런 화면이 나온다. 로그인 페이지가 있길래 들어가보았다. 다음과 같은 화면이 나와서 문제 코드를 보니 guest는 guest라는 아이디와 password로 로그인이 가능한거 같고, admin의 password가 flag라고 해석하였다. 그래서 일단 guest로 로그인을 해보았다 여기서 개발자도구를 켜서 Application에서의 guest의 쿠키를 확인해보았다. 그랬더니 username의 값으로 guest가 들어있는 것을 확인할 수 있었다. 그래서 값을 admin으로 변경하면 될 거같아서 한 번 보았다. 값을 admin으로 바꾸고 새로고침을 하니 다음과 같이 FLAG가 나왔다. 3-Way Handshake & 4-Way Handshake 실습 2개의 vm을 이용하여 실습을 해보았다. client : 192.168.217.134 server : 192.168.217.136 실습은 nc 명령어를 사용하여 쉽게 할 수 있다. Server $ nc -l 4000 (4000번 포트 listen) Client $ nc 192.168.217.136 4000 (Server에게 4000번 포트로 연결요청) “hello” Data 전송 후에 ^C →연결 종료 분석 Server측에서 wireshark를 봐보면 3-Way Handshake, Data 전송, 4-Way Handshake 들의 과정이 다 나와있다. 위에서는 wireshark에서 자체적으로 sequence number를 편의상 client, server 둘 다 0, 0인 상태로 지정하였다. 3-Way .. 3-Way Handshake & 4-Way Handshake 제대로 알고있니? 오늘은 이전 글에 이어서 4-Way Handshake를 덧붙여서 설명하고, 기존 내용에 좀 더 세부적으로 3,4-Way Handshake를 다뤄보려고 한다. TCP Control Flag? SYN( synchronization ) 연결 요청 플래그 통신 시작 시 세션을 연결하기 위한 플래그 ACK( Acknowledgement ) 응답 플래그 송신측으로부터 패킷을 잘 받았다는 걸 알려주기 위한 플래그 FIN( Finish ) 연결 종료 플래그 더 이상 전송할 데이터가 없고 세션 연결을 종료 시키겠다는 플래그 이외에도 RST, PSH, URG 등이 있다. 3-way Handshake? 3-Way Handshake는 위에서 말했다시피 TCP 통신을 이용하여 데이터를 전송하기 위해서 네트워크 연결을 설정하는 .. 3-Way Handshake TCP Flag? SYN( synchronization ) 연결 요청 플래그 통신 시작 시 세션을 연결하기 위한 플래그 ACK( Acknowledgement ) 응답 플래그 송신측 으로부터 패킷을 잘 받았다는 걸 알려주기 위한 플래그 FIN( Finish ) 연결 종료 플래그 더 이상 전송할 데이터가 없고 세션 연결을 종료시키겠다는 플래그 이외에도 RST, PSH, URG 등이 있다. 3-way Handshake? 3-way Handshake는 위에서 말했다시피 TCP 통신을 이용하여 데이터를 전송하기 위해서 네트워크 연결을 설정하는 과정이다. (Connection Establish) STEP1 (SYN) 클라이언트는 서버와 연결을 하기위해 SYN(요청) 패킷을 보낸다. 이때 클라이언트는 SYN 을 보내.. 이전 1 2 3 다음