본문 바로가기

전체 글

(40)
6주차 XXS(크로스사이트스크립팅) 공격 XXS 공격 크로스사이트스크립팅 공격 자바스크립트와 밀접한 관련이 있음 자바스크립트: 웹 어플리케이션을 개발할 때 사용하는 언어 (HTML- 정적, 자바스크립트- 동적) -> document.cookie로 쿠키를 읽고, document.location로 외부 사이트로 전달 가능 -> src를 이용해 외부의 자바스크립트를 페이지에 삽입해 실행할 수 있음 스크립트 코드를 취약한 웹 어플리케이션을 통해 사용자에게 전달하여, 클라이언트 쪽 웹브라우저를 공격 스크립트 코드를 삽입하여 다른 사용자 브라우저에서 실행되도록 함 Reflected XSS 공격- 스크립트를 반사하는 공격 1. 사용자에게 세션쿠키를 빼내는 스크립트 코드를 심은 이메일 등으로 피싱 2. 사용자가 클릭하면 스크립트코드가 삽입된 요청이 웹서버로 ..
5주차 SQL인젝션 SQL 인젝션: 데이터베이스로 전송되는 SQL 쿼리문을 사용자 입력으로 조작할 수 있는 경우, 데이터베이스 내의 데이터를 변조하거나, 다른 사용자의 개인정보 등 허가되지 않은 정보에 접근하는 공격 - 웹사이트의 회원 정보 등 개인정보를 꺼낼 때 최근까지도 자주 사용하는 웹공격 ex) 2011 소니 해킹, 2015년 뽐뿌 해킹, 2015년 어나니머스 WTO 해킹 where - where구문을 공격하는 예 1. ID가 1인 사용자 정보를 요청 2. 웹 어플리케이션은 내부에 있는 데이터베이스로 SQL 쿼리문을 전송 3. 쿼리문 안에 where라는 조건문이 있고 사용자가 입력한 아이디 값이 조건으로 입력 4. 쿼리가 실행이 되면 사용자 정보가 웹어플리케이션을 통해 클라이언트에게 전송 5. 해커는 1번 과정에서 ..
4주차 파일업로드 공격 파일 업로드 공격 파일을 업로드할 수 있는 페이지에서 발생할 수 있는 공격 게시판의 첨부파일, 프로필 등에 사진을 올릴 때, SNS에 파일을 올리는 경우 악성파일(웹쉘) 업로드 웹쉘: 웹을 통해 시스템 명령어를 실행할 수 있는 웹페이지(커맨드 인젝션 공격 유사) 1. 이미지를 업로드하는 페이지에 웹쉘 업로드 2. 웹 어플리케이션이 웹쉘을 저장 3. 해커가 웹셸에 접근하면 웹쉘이 실행됨 4.해커가 웹쉘을 통해 원하는 대로 시스템 명령어를 실행할 수 있음 웹어플리케이션은 업로드된 파일이 정상파일인지 검사해야함. 실습(low)-https://github.com/secuacademy/webhacking webshell.php파일 raw 클릭 터미널에 wget으로 다운로드 dvwa에 Browser클릭. root/..
3주차 CSRF 공격, 파일 인클루젼 공격 CSRF 공격 Cross Site Request Forgery의 약자. 사이트 간 요청 위조 사용자에게 피싱을 해 링크를 누르게 하고 사용자 모르게 사이트의 어떤 기능을 실행 주로 사용자 패스워드 변경을 하는데 사용. 피싱은 사회공학 기법 중 하나로 이메일이나 게시판 등을 이용해서 사람들을 낚음. 1. 사용자가 정상 접속 로그인 2. 사용자가 로그인 되어있는 동안 해커가 이메일을 보내 피싱 시도 3. 사용자가 링크를 클릭한 시점에 패스워드 변경 요청이 자동으로 전송 4. 패스워드가 변경되어 해커가 변경된 패스워드로 접속함. 필수조건: 사용자가 피싱을 당하는 시점에 해당 사이트에 로그인 되어있어야 함. (세션, 쿠키 값이 자동으로 요청에 포함되기 때문) 실습(low): 요청에 change 파라미터가 전송됨..
2주차 브루트 포스 공격, 커맨드 인젝션 공격 HTTP 프록시- 클라이언트와 서버 중간에서 중개인 역할 메시지의 내용을 볼 수 있고, 내용을 수정해 보내기가 가능하다. 웹 해킹이나 보안 취약점을 찾을 때 유용하다. 버프스위트- 대표적인 HTTP 프록시 리스너 프로그램 option의 Proxy Listeners에 running을 누르면 프록시 기능 켜짐 intercept: 키면 메시지를 가로채서 내용 수정 가능. 끄면 메시지가 프록시 통과하지만 메시지가 표기되지 않음. 인터셉트를 하면 메시지가 서버로 가지 않고 묶여있는다. (HTTP는 타이머 개념이 없기 때문에 장시간 인터셉트해도 문제없음) forward를 누르면 메시지 통과, Drop을 누르면 메시지 누락됨 Target: 접속한 호스트나 url을 트리 형태로 표현 직접 방문한 것은 진하게. 간접 방..
1주차 웹 해킹 기술 탐색 보안 취약성- 정보 보안에 영향을 주는 소프트웨어 버그 정보 보안의 3요소 기밀성: 패스워드 개인정보 유출 무결성: 시스템의 변조, 바이러스 가용성: 서비스가 문제없이 운영되어야하는 것(dos공격) 해킹: 보안 취약점을 공격하는 것 해킹의 기초 단계 정보 수집- 1. 정찰 2. 스캐닝, 취약점 분석 공격(익스플로잇)- 3. 침투 포스트 익스플로잇- 4. 권한상승 5. 백도어 관리 (언제든지 접근 가능할 수 있게 만듦) 6. 흔적 지우기 웹 보안의 중요성- 웹이 일상인 시대 모바일앱도 웹과 통신 웹은 방화벽에 대해서 항상 열려있음 모의해킹의 관문 해외 다수의 버그바운티제도에 웹이 포함됨 웹 아키텍쳐 클라이언트 영역, 서버영역(로직티어(웹서버, 웹프레임워크), 데이터티어(데이터베이스)) 클라이언트가 웹 브라..
1장 리스트, 스택, 큐 - std::array C 스타일의 배열은 몇가지 단점이 존재한다. 메모리 할당과 해제와 수동으로 처리해야 한다. 메모리를 해제하지 못하면 메모리 릭(memory leak)이 발생하여 해당 메모리 영역을 사용할 수 없다. []연산자에서 배열의 크기보다 큰 원소를 참조하는 것을 검사하지 못한다. 잘못 사용하면 세그멘테이션 결합(segmentation fault) 또는 메모리 손상으로 이어질 수 있다. 배열을 중첩해서 사용할 경우 문법이 복잡해진다. 깊은 복사(deep copy)가 기본으로 동작하지 않아 수동으로 구현해야 한다. 깊은 복사: 객체를 복사 할 때, 해당 객체와 인스턴스 변수까지 복사하는 방식. 전부를 복사하여 새 주소에 담기 때문에 참조를 공유하지 않는다. C++은 C스타일을 배열을 대체하는 std::array을 제..
1장 리스트, 스택, 큐 - 자료 구조의 유형 응용 프로그램에서 필요한 기능을 구현하고, 동작 성능과 안정성을 확보하려면 적절한 자료 구조를 선택하는 것이 중요하다. 자료구조는 크게 연속된 자료 구조와 연결된 자료 구조로 구분할 수 있다. 연속된 자료구조 연속된 자료 구조(contiguous data structure)는 모든 원소를 단일 메모리 청크(chucnk)에 저장한다. 메모리 청크: 하나의 연속된 메모리 덩어리 BA = 시작주소 sizeof(type) = 원소 하나에 필요한 메모리 크기 바깥쪽 큰 사각형은 모든 원소가 저장되어 있는 단일 메모리 청크를 나타내고, 안쪽 작은 사각형들은 각각의 원소가 저장된 메모리 공간을 의미한다. 이 그림에서 모두 같은 타입(type)을 사용하고 있으니 즉, 모두 같은 크기의 메모리를 사용한다. 이는 size..