문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. == 개요 == 사용자에게 허용된 권한 이상의 동작이나 정보 열람을 가능하게 하는 소프트웨어의 설계상의 허점이나 결점을 말한다.<br> 웹 시스템 등 다양한 환경에서 발생하며 개발자의 실수로 인해 발생하는 경우가 많다. == 분류 == === System Hacking === ==== OverFlow ==== 인가된 메모리 장소보다 더욱 큰 값을 주입하여 개발자의 의도와 다른 방향으로 프로그램이 돌아가게 만드는 취약점이다. ===== Stack Buffer Overflow ===== 주로 입력값의 크기를 검증하지 않는 함수 사용으로 인해 스택의 다른 영역을 침범하게 되어 발생한다. 매우 고전적인 취약점이나 아직도 많이 발생하고 있으다. ex) strcpy, scanf, gets, strcat, sprintf 등 ===== Heap Overflow ===== 스택 오버플로우와 비슷하나, 그 대상이 힙 메모리라는 점이 다르다. 메모리 영역이 다르므로 취약점 공격방법도 다르다. ===== Integer Overflow ===== 정해진 자료형보다 큰 수를 저장할때 발생하는 오버플로우 문제로, 조건문 등에서의 분기를 우회 할수 있다. 자료형보다 큰 수를 입력할 경우 값이 양수에서 음수로 바뀌는 것을 이용한 취약점이다. ==== Format String Bug ==== 포맷스트링을 지정해주지 않고 사용할 때 발생하는 취약점으로 %n, %hn 등의 포맷스트링을 이용하여 메모리값을 변조 할수 있다. ex)printf, sprintf ==== Use-After-Free ==== 최근 특히 브라우저에서 많이 발견되는 취약점이다. Free된 포인터를 재사용 할 때 발생하는 취약점이다. free(ptr); ptr->func(); ==== Double Free ==== Free된 메모리를 다시 Free할 때 발생한다. ==== Null Pointer Dereference ==== 메모리 값이 지정되지 않은 초기화되지 않은 포인터에 값을 넣으려 할때 발생한다. === Web Hacking === ==== 입력값 검증 ==== 사용자에게서 입력값을 받을 때 발생하는 취약점이다. 일반적으로 필터링을 통해 회피할 수 있다.<br> PHP의 경우 mysqli_real_string_escape()와 같은 함수를 사용하면 이 종류의 공격을 회피할 수 있다. ===== SQL Injection ===== SQL Query를 DB에 주입하여 해커가 원하는 행동을 하게 만드는 것이다. ===== Cross Side Script (XSS) ===== JavaScript를 입력값에 사용하여 DB에 주입하거나 사용한 주소를 다른 사용자에게 유포해 쿠키 정보를 빼가는 등의 행위를 할 수 있다. ==== File ==== ===== File Download ===== 허가되지 않은 파일을 다운로드 받을 수 있을 때 발생하는 취약점이다.<br> 리눅스 서버 기준 <b>../</b>을 여러번 사용해 서버 내부에 있는 파일까지 접근이 가능한 경우도 있다. ===== File Upload ===== 웹 서버에서 쓰이는 스크립트 파일을 업로드 가능할 경우 발생하는 취약점이다. <br> 웹 쉘을 얻어낼 수 있는 스크립트 파일을 업로드하여 해커 마음대로 웹 서버를 다룰 수 있게 되지만, 현재 이 취약점이 적용되는 서버는 거의 없다. ===== File Browsing ===== 웹 서버에서 특정 폴더에 접근할 때 그 폴더의 내용을 전부 공개해주는 취약점을 위미한다.<br> 아파치 서버의 경우 파일 브라우징 관련 설정을 끄지 않는다면 이 취약점이 발생할 수 있다. ==== Click Jacking ==== 웹 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 것을 클릭하게 하는 방식의 취약점이다.<br> 이 취약점을 이용하면 별다른 기법을 사용하지 않고도 사용자 자신의 정보를 해커에게 보낼 수 있게 된다. 취약점 문서로 돌아갑니다.