🛡️ security/web

SSTI 취약점이란 웹 어플리케이션에 적용되어 있는 웹 템플릿 엔진에 공격자의 공격 코드가 템플릿에 포함된 상태에서 서버 측에서 템플릿 인젝션이 발현되는 공격을 의미한다. 웹 템플릿 엔진이란? 템플릿 엔진: 템플릿 양식과 특정 데이터 모델에 따른 입력자료를 합성하여 결과 문서를 출력하는 소프트웨어 및 컴포넌트 웹 템플릿 엔진: 브라우저에서 출력되는 웹 문서를 위한 템플릿 엔진 > 고정적으로 사용되는 웹 문서를 템플릿으로 미리 작성해 두고 동적으로 변경되는 데이터 영역만 필요 시에 결합해서 웹 문서를 구성하고 화면에 출력 하게 되는 것 위 샘플 게시판을 보면 상단에 출력되는 네비게이션바가 있다. 이를 웹 문서를 구성할 때마다 새로 구성해야 한다면 반복 구문수행으로 효율성이 떨어지는데, 이를 최소화 할 수 ..
SSRF(Server-side Request Forgery) 란? 서버 측에서 위조된 HTTP요청을 발생시켜 직접적인 접근이 제한된 서버 내부 자원에 접근하여 외부로 데이터 유출 및 오동작을 유발하는 공격이다. 공격 형태로만 보면 CSRF와 유사하지만, 공격자의 공격이 발현되는 지점이 서버측인지 클라이언트측인지 여부에 따라 공격 형태를 구분한다. SSRF 취약점을 통해 웹 서비스의 권한으로 요청을 보낼 수 있다면, 공격자는 외부에서 간접적으로 내부망 서비스를 이용할 수 있고, 이는 막대한 피해로 이어질 수 있어 통상적으로 CSRF보다 위험하다. SSRF 동작 위 그림에서, A서버가 B서버의 정보를 얻어 브라우저에 서비스를 보이는데, 해커가 B서버의 주소를 C서버로 반환한 경우 A서버는 B서버가 아니라 C..
DBMS DBMS는 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정, 삭제하는 역할을한다. Relational (관계형) MySQL, MariaDB, PostgreSQL, SQLite Non-Relational (비관계형) MongoDB, CouchDB, Redis 두 종류의 차이점: 관계형은 행과 열의 집합인 테이블 형식으로 데이터를 저장하고, 비관계형은 테이블 형식이 아닌 키-값 (Key-Value) 형태로 값을 저장 RDBMS(Relational DataBase Management System) 행과 열의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 관리하고, 테이블 형식의 데이터를 조작할 수 있는 관계 연산자를 제공한다. SQL(Structured Query Language) RD..
CSRF(Cross Site Request Forgery) 이용자를 속여서, 의도치 않은 요청에 동의하게 하는 공격이다. ex) 웹 페이지를 만들어 이용자의 입력을 유도해, 입력된 값을 은행 등의 사이트로 전송해 이용자가 동의한 것 같은 요청을 발생시킨다 ((비밀번호 바꾸기, 돈 송금, 이메일 주소 변경 등)) 웹 서비스는 쿠키나 세션을 사용해 이용자를 식별한다. 임의 사용자의 쿠키를 사용할 수 있다? -> 임의 이용자의 권한으로 웹 서비스의 기능을 사용할 수 있다. Cross Site Request Forgery 동작 CSRF 공격에 성공하려면, 공격자가 작성한 악성 스크립트(HTTP 요청을 보내는 코드)를 이용자가 실행해야 한다. 공격자가 이용자에게 메일을 보내기 게시판에 글을 작성해 이를 조회하도록..
Path Traversal 디렉토리 순회 사용자의 입력 데이터가 적절한 검증 없이 URL/File Path에 직접적으로 사용될 경우 의도하지 않은 임의의 경로에 접근할 수 있는 취약점이다. 사용자의 입력 데이터가 URL Path에 사용될 경우 URL 구분 문자를 사용하지 못하도록 필터링 or 인코딩이 부재하다면, 의도한 경로가 아닌 타 경로로 접근해 다른 API를 호출할 수 있다. 사용자 입력 데이터가 경로로 사용되어야 한다면 URL Encoding과 같은 인코딩이 필요하다. URL에서 해석되는 구분 문자 문자 의미 / Path identifier .. Parent directory * /tmp/test/../1234 => /tmp/1234 ? Query identifier * ? 뒤는 query로 해석..
File Upload 파일 업로드 기능이 존재하는 웹 상, 업로드 파일에 대한 제어(필터링, 개수 및 크기 제한 등) 미흡으로 외부에서 파일이 업로드 될 수 있는 취약점이다. 파일 업로드 취약점으로 서버 파일시스템에 파일 경로/파일 명을 업로드 할 수 있다 -> 공격자가 파일을 업로드하여 공격에 사용할 수 있다. CGI(Common Gateway Interface): 사용자의 요청을 받은 서버가 동적인 페이지를 구성하기 위해 엔진에 요청을 보내고 엔진이 처리한 결과를 서버에서 반환하는 기능 php, jsp, asp 등과 같이 CGI를 통해 서비스를 하는 형태에서는 확장자를 통해 웹 어플리케이션 엔진에 요청 여부를 판단한다. ※ .php확장자 외에도 .php3/4/5/7, .pht, .phtml 등의 확장..
Command Injection 인젝션(Injection)은 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법을 말한다. 시스템 함수: 다양합 웹 애플리케이션 제작용 언어는 시스템에 내장되어 있는 프로그램들을 호출할 수 있는 함수를 지원한다. ex) PHP-system, Node JS-child_process, python-os.system 시스템 함수를 사용하면 설치된 소프트웨어들을 쉽게 이용할 수 있지만, 함수의 인자를 셸의 명령어로 전달한다는 점에서 취약점으로 이어진다. Command Injection은 이런 함수를 잘못 사용하여 발생하는 취약점이다. Command Injection은 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할..
XSS(Cross Site Scripting) 공격자가 입력한 악성스크립트가 사용자 측에서 응답하는 취약점이다. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고, 임의의 기능을 수행하는 등의 공격을 진행할 수 있다. 이는 이용자가 삽입한 내용을 출력하는 기능에서 발생한다. 클라이언트는 HTTP 형식으로 웹 서버에 리소스를 요청하고, 서버로부터 받은 응답(HTML, CSS, JS 등의 웹 리소스)를 시각화하여 이용자에게 보여준다. 이런 코드가 포함된 게시물을 조회할 경우 이용자는 변조된 페이지를 보거나 스크립트가 실행될 수 있다. 공격자가 자바스크립트를 통해 웹 페이지를 조작 가능한 이유? - 이용자를 식별하기 위한 세션 및 쿠키가 웹 브라우저에 저장되어 있기 떄문에! XSS 스크립트 예시 ..
소저어엉
'🛡️ security/web' 카테고리의 글 목록