본문 바로가기

웹 해킹

(28)
CSRF란? (정의, 취약점, XSS와의 차이점) CSRF(Cross Site Request Forgery)란? : 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격이다. 이 공격도 sql injection과 xss와 마찬가지로 주요정보통신기반시설 기술적 취약점 분석·평가 방법 상세가이드에서 찾아볼 수 있다. CSRF 취약점 확인 CSRF는 임의의 요청을 하게 만드는 공격이므로 모든 요청에서 일어날 수 있다. 다만 요청 보내는 곳을 싹다 취약점으로 취급하지는 않는다. 주로 공격자가 요청을 임의로 만들 수 있고, 이것이 위험도가 크면 취약점으로 잡는다. 예를 들어 비밀번호 변경 요청 URL이 https://hackker.com/pwchange.php?newpw=1234&pw_conf=1234 의 형태로 파라미터..
문자열 인코딩이란? 문자열 인코딩 종류 (ASCII,EUC-KR, 유니코드, UTF-8 등) 문자열 인코딩이란? : 사람이 사용하는 문자(언어) -> 컴퓨터가 이해하는 2진수(0과 1) 컴퓨터에 문자를 저장, 전송하기 위해서는 모든 데이터를 0과 1로 변환해야한다. 컴퓨터는 '안녕하세요'와 같은 문장을 이해할 수 없기 때문이다. 1. ASCII(American National Standard Institute) 최초의 문자열 인코딩 방식으로, 7비트의 고정 길이로 알파벳, 숫자, 특수문자 등을 표현한다. 영어를 인코딩하기 위한 방식이 때문에 한국어와 같은 다른 나라 문자들은 표현할 수 없다. 2. EUC-KR 한글을 지원하기 위해 등장한 완성형 인코딩 방식으로 2바이트(16비트)로 하나의 문자를 표현한다. 참고로 완성형 인코딩 방식이란 사람들이 자주 사용하는 문자(가~힣)에 코드를 부여하는 방식..
[XSS] 키로거를 이용한 개인정보 탈취 (공격 실습) XSS 공격이란? XSS(Cross Site Scripting) 공격이란? (종류, 방어기법) 1. XSS 공격이란? XSS 공격은 사용자 브라우저에 전달되는 데이터에 악성 스크립트를 포함시킨 뒤, 사용자 브라우저에 실행되면서 해킹하는 공격이다. SQL Injection과 함께 웹 취약점 중 가장 기초적 studysteadily.tistory.com XSS로 발생할 수 있는 피해는 다음과 같다. 사용자의 개인정보 탈취 Keylogger 형태의 스크립트를 사용하여 키보드 입력 값 탈취 사용자의 쿠키정보 탈취 Document.cookie를 사용하여 해당 사용자의 쿠키 값 탈취 피싱 사이트로 강제 이동 Location.href등을 사용하여 페이지 강제 이동 악성코드 다운로드 및 실행 악성코드 다운로드 링크로 ..
Javascript DOM 접근 및 조작 (CRUD, 이벤트 핸들러) Javascript? DOM? 자바스크립트는 html 제어하기 위한 언어 (컨텐츠 변경, 추가 등) 제어 대상에 접근한다 => 조작한다 DOM 이란 스크립트로 웹 문서를 제어할 수 있도록 웹 문서를 객체화한 것으로 개발자에겐 굉장히 편리한 기능이다. 반면에, 이를 잘못 사용할 경우 XSS나 개발자가 의도한 동작과 다르게 동작시킬 수 있는 취약점이 발생할 수 있다. (나는 이걸 노리는 것) - document 자체는 웹 페이지를 의미하며, 돔트리의 최상위 노드임 - 따라서 document는 진입점이 됨 먼저 알아야 할 것 Node는 모든 타입(텍스트, 주석 등)의 노드를, Element는 요소 타입의 노드만 의미함 참고) https://developer.mozilla.org/en-US/docs/Web/AP..
URL이란? URL 구조, 도메인과의 차이 URL 이란? : 네트워크 상 특정 정보 자원의 종류와 위치를 나타내는 일련의 규칙 URL과 도메인의 차이 도메인은 쉽게 말해 인터넷 상의 주소라고 생각하면 된다. 숫자로 구성된 IP 주소를 기억하기 쉽게 문자의 형태로 변환한 것이다. (ex. www.naver.com) URL은 프로토콜, 인터넷 주소(도메인), 경로, 파일 등 모든 데이터를 포함한다. 참고 https://haepos.com/entry/%EB%8F%84%EB%A9%94%EC%9D%B8-URL-%EA%B8%B0%EB%B3%B8-%EC%9A%A9%EC%96%B4
정적 페이지와 동적 페이지 정적 페이지 : 서버에 미리 저장된 파일(HTML, JavaScript, 이미지 등)이 그대로 전달되는 웹 페이지 - 서버에 저장된 데이터가 변경되지 않는 한 항상 같은 내용을 보게 됨 - 사용자가 URL을 통해 서버에 웹 페이지를 요청하였을 때, 서버 안에 이미 만들어져 있는 리소스 사용자에게 보여 - 웹 서버만 필요 동적 페이지 : 사용자와 상호작용 하여 전달받는 파라미터에 따라 다른 데이터를 출력하는 웹페이지를 말한다. - 사용자의 요청을 해석하여 데이터를 가공한 후 웹 페이지 생성 - 클라이언트가 URL을 통해 서버에 웹 페이지를 요청했을 때, 서버는 사용자에 맞는 HTML 문서를 생성하여 사용자에게 응답 - GET 방식을 사용하는 경우 동적 페이지 설정으로 분석 가능 - 웹 서버와 웹 애플리케이..
[SQL Injection] Blind SQL Injection이란? (공격 절차, 실습) Blind SQL Injection: 데이터베이스 에러 메시지나 데이터가 직접적으로 노출되지 않을 때 사용하는 공격 기법으로 쿼리 결과 즉 서버의 참/거짓 반응을 통해 데이터를 얻어내는 공격이다. Blind SQLi는 어떠한 데이터나 에러도 뜨지 않는 경우 참 거짓 반응을 통해 원하는 정보를 추출한다. DB 이름의 첫번째 글자가 a 맞는지 b가 맞는지... 이런 식으로 한 글자씩 알아내야해서 공격에 오랜 시간이 소요되므로 자동화가 필수인 공격이다. 여기서는 간략한 절차만 담을 것이기 때문에 자동화 스크립트는 생략한다. [공격 절차] 1. SQL Injection 포인트 찾기먼저 서버에서 어떤 SQL 구문을 사용하는지 생각한다. 다음은 id 검색 페이지에서 플래그를 획득하는 과정이다. 서버에서는 selec..
[SQL Injection] Union Based SQL Injection란? (공격 절차, 실습) Union Based SQL Injection : Union 키워드를 사용해서 원래 서버에서 사용되는 쿼리에 추가 쿼리를 요청해서 추가적인 정보를 얻는 공격 현재 페이지에서 사용되는 테이블의 다른 컬럼에 저장된 데이터나 현재 사용되는 테이블 외의 테이블에 있는 데이터를 가져올 수 있다. Union Based SQLi를 사용하기 위해서는 두 쿼리에서 출력되는 컬럼 수가 같아야 한다. (https://sqltest.net/ 이 사이트에서 간단하게 확인할 수 있다.) [공격 절차] 1. SQLi 포인트 찾기 union sqli가 통하기 위해서는 데이터가 웹 페이지에 출력되어야 한다. 대표적으로 검색 페이지가 있다. 여기서는 id 검색 페이지를 활용할 것이다. (최종 목적은 flag를 획득하는 것이다.) id ..