[공통점] 악성스크립트가 담긴 URL을 이용해서 공격함 [차이점] Reflected XSS는 서버 측에서 사용자 입력값을 받아 동적 페이지를 구성하지만, DOM based XSS는 클라이언트 웹 브라우저에서 사용자 입력값을 받아(DOM 이용) 동적 페이지를 구성함. ※ DOM based XSS의 경우 웹서버는 사용자 입력값을 사용하지 않으며, 사용자가 서버로부터 웹 페이지를 응답 받는 시점까지는 아직 공격이 이뤄지지 않지만, 응답 받은 웹 페이지가 사용자 브라우저를 통해 실행되면서 DOM에 의해 사용자 입력값(악성 스크립트)을 가져와 동적 페이지를 구성함으로써 사용자 측에서 악성 스크립트가 실행된다.

[HTTP와 HTTPS의 의미] HTTP는 HTML, 이미지, 비디오 등 웹 페이지 데이터를 전송하기 위해 웹 서버와 통신하는 데 사용하는 프로토콜임. HTTPS는 HTTP에 SSL/TLS를 적용해 클라이언트와 서버가 주고받는 데이터를 암호화시켜 스니핑을 방지하기 위한 프로토콜임. [URL] Scheme: 자원에 접근하기 위해 어떤 프로토콜을 사용할지 정함. User: 일부 서비스는 로그인 시 인증이 필요하며 URL에 사용자 이름과 비밀번호를 입력해서 로그인이 가능함. Host/Domain: 접근하려는 서버의 도메인 이름 또는 ip 주소 Port: 연결할 포트를 지정함. 일반적으로 HTTP 의 경우 80 , HTTPS의 경우 443임. Path: 자원의 파일 이름 또는 위치를 나타냄. Query Stri..

[DNS 의미] DNS는 도메인 이름과 IP주소의 대응을 관리하고 사용자의 요청에 따라 도메인 이름에 대응하는 IP 주소를 찾아서 응답함. 다른 시스템에 접속하기 위해서 IP 주소가 필요한데 이때 IP 주소에 대응되는 도메인 이름(ex. www,naver.com)을 등록해두면 해당 도메인 이름을 이용해 쉽게 시스템에 접근할 수 있음. [도메인 계층] DNS는 기본적으로 계층 형태를 가진다. TLD(Top-Level-Domain) 예를 들어 admin.tryhackme.com 도메인 이름에서 .com 부분을 말함. TLD는 크게 ccTLD와 gTLD로 나뉜다. ccTLD는 국가나 지역마다 할당되는 도메인이고 gTLD는 국가나 지역에 상관없는 도메인이다. ccTLD 예시 → .kr(한국) .ca(캐나다) ...

* 요청 메시지 구조 → 요청메시지는 요청라인 + 요청 헤더 + 빈 라인 + 요청 바디로 구성된다. → 요청라인은 HTTP Method + URI + HTTP Version로 구성된다. ※ POST 방식일때만 요청바디에 데이터를 담아서 전송한다. GET 방식일 경우 URL을 통해 전달한다. * 응답 메시지 구조 → 응답 메시지는 응답라인 + 응답헤더 + 빈 라인 + 응답 바디로 구성된다. → 응답라인은 HTTP Version + Status code + Phrase로 구성된다. * GET & POST 방식 → GET 방식은 요청 URL 끝에 데이터를 담아서(쿼리스트링) 전달하는 방식 → POST 방식은 요청 바디에 데이터를 담아서 전달하는 방식

* 피싱 → 개인정보 (Private data)와 낚시 (Fishing)의 합성어로 인터넷 이용자들에게 유명 회사를 사칭하는 e-메일을 보내고, 위장된 홈체이지에 접속하도록 유도하여 계좌번호, 주민등록번호, 로그인 비밀번호, 인증서 암호 등의 개인정보를 입력하도록 함으로써 얻은 이들 정보를 이용해 금융사기를 일으키는 신종 사기수법이다. → 사회공학공격을 하기 위한 공격도구 모음인 setoolkit 사용 (se는 social engineering 을 의미) → 툴을 이용해 구글 사이트로 위장한 피싱사이트를 생성함. → 희생자는 공격자의 주소인 192.168.45.230으로 접속하게 된다면 구글로 위장한 피싱사이트로 이동하게 된다 → 공격자가 희생자에게 문자나 이메일등으로 http://192.168.45.2..

* Stored XSS → 공격자가 게시판등에 악의적인 스크립트를 저장해두고 사용자가 해당 게시판을 클릭 할 경우 해당 스크립트가 실행돼서 악의적인 행위가 클라이언트 측에서 발생하는 공격 () 처럼 게시판 글 클릭 시 사용자의 쿠키 값을 쿼리스트링으로 담아 공격자의 서버(192.168.56.2의 attacker.php 파일)로 전달할 수 있음. * Stored XSS 실습 → 게시판에 악의적인 스크립트을 저장해서 게시글에 접근 시 사용자 측에서 악의적인 행위가 발생할 수 있는지( 사용자 측에서 스크립트가 실행되는지) 알아보기 위해 사용자의 쿠키값을 출력하는 스크립트를 작성 후 저장 → 저장된 게시글을 클릭할 경우 스크립트가 사용자 측에서 실행되어 사용자 쿠키값이 출력되는 모습임. → 스크립트가 동작한 페..

* LFI와 RFI 공격의 취약점 발생 지점 → LFI 공격과 RFI 공격은 include() 또는 require() 함수를 사용할 때 발생할 수 있는 취약점이다. include() 또는 require() 함수는 다른 파일을 불러와 현재 파일의 일부인 것처럼 사용하는 함수이다. 주로 웹 페이지를 만들 때 웹 페이지의 각 부분을 나눠서 제작한 뒤 include 기능을 사용해서 각 부분들을 조합해 하나의 페이지를 만든다 * LFI (Local File Inclusion) → 공격 대상 서버에 존재하는 파일을 include 함수의 입력값으로 전달해 파일을 열람할 수 있는 취약점 → 현재 쿼리스트링으로 웹 서버의 어떤 파일을 웹 페이지에 포함시킬지 결정할 수 있는 상태이다. → page 쿼리 스트링의 page ..

* Webshell → 공격자가 서버에 명령을 내릴 수 있는 동적파일(php,asp 등)을 서버에 업로드하고 직접 URL 호출을 하면 동적파일이 서버 측에서 처리되고 공격자에게 응답함으로써 서버에 명령을 내릴 수 있는 인터페이스(웹 페이지)를 제공 하게되는 공격임 이 공격의 핵심은 1) 파일 업로드 하기, 2)업로드된 위치 찾기 이다. * Webshell 실습 → 공격자는 해당 명령어를 통해 리버스 쉘이 포함된 php 파일(shell.php)을 생성 ▶ -p php/reverse_php: 리버스쉘이 포함된 php 파일을 생성 ▶ LHOST : 리스닝 호스트 (공격자) ▶ LPORT: 리스닝 호스트의 포트번호 (공격자) ▶ -f raw > shell.php : 출력방식은 raw 방식이며 출력 리다이렉션을 ..

* SQL injection → 사용자의 입력값을 받는 부분에 공격자가 임의의 값을 삽입해서 서버 사이드 스크립트에 있는 sql 쿼리를 완성시켜 DB로 쿼리를 날려 DB 정보를 탈취,삭제,조회 할수 있는 공격 * SQL injection 실습 ※ DVWA 가상머신에서 ifconfig를 입력 후 ip주소를 확인한 뒤 URL에 입력해서 DVWA 페이지에 접속할 수 있음. (id: admin, password: password) → 3을 입력하면 ID가 3인 계정의 정보가 정상적으로 출력 → 첫 번째 사진의 결과를 통해 SELECT First_name, Surname FROM 테이블이름 WHERE ID='사용자 입력값'과 같은 쿼리를 서버사이드 스크립트에서 사용한다고 예측 가능. → a' or 'a'='a를 ..