NoSQL Injection
·
Web/Web Hacking
NoSQL Injection이란?Not Only SQL의 약자인 NoSQL은 비관계형 DBMS를 뜻하며 이러한 비관계형 DBMS에서 사용되는 쿼리를 조작하여 인증을 우회하거나 데이터베이스의 내용을 유출시키는 공격이 NoSQL Injection입니다. 이전에 SQL Injection 포스팅에서 언급하였듯 DBMS에는 테이블 형식으로 데이터가 저장되는 관계형 DBMS와 키-값 형태로 데이터가 저장되는 비관계형 DBMS가 있습니다. 아래는 관계형 DBMS인 MySQL과 비관계형 DBMS인 MongoDB의 쿼리문을 비교한 것입니다.두 쿼리 모두 userid가 admin이고, password가 keshu인 데이터를 불러오는 쿼리이지만, 구조가 다른 것을 알 수 있습니다. mysql에서는 sql문법으로 명령형 쿼리..
비관계형 DBMS
·
Web/DataBase
DBMS란?데이터 베이스를 관리하는 애플리케이션으로 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정하고 삭제하는 역할을 합니다. DBMS는 크게 관계형 DBMS인 RDBMS와 비관계형 DBMS인 NoSQL으로 나누어져 있습니다.비관계형 DBMS (RDBMS)비관계형 DBMS는 테이블 형식이 아닌 키-값의 형태로 데이터를 저장하는 DBMS입니다. SQL을 사용하지 않으며, 단순 검색과 같은 복잡하지 않은 데이터를 저장할 때 유용합니다. DB마다 사용하는 문법이 다 다르기 때문에 사용하는 데이터베이스마다 다른 쿼리가 생성됩니다. NoSQL에는 MongoDB, CouchDB, Redis 등이 있으며 이번 포스팅에서는 MongoDB에 대해 설명해 보겠습니다. 관계형 DBMS에 대한 내용은 다른 포스..
관계형 DBMS
·
Web/DataBase
DBMS란?데이터 베이스를 관리하는 애플리케이션으로 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정하고 삭제하는 역할을 합니다. DBMS는 크게 관계형 DBMS인 RDBMS와 비관계형 DBMS인 NoSQL으로 나누어져 있습니다.관계형 DBMS (RDBMS)관계형 DBMS는 행과 열의 집합으로 구성된 테이블 묶음 형식으로 데이터를 관리하는 DBMS입니다. 테이블 형식의 데이터를 조작할 수 있는 관계 연산자가 제공되며, 해당 관계 연산자로 사용하는 쿼리 언어가 SQL(Structured Query Language)입니다. SQL을 이용해 데이터를 추가, 조회, 수정, 삭제할 수 있으며 목적과 행위에 따라 다양한 구조의 쿼리가 구성됩니다. SQL을 사용하는 RDBMS에는 MySQL, MariaDB..
XXE External Entities
·
Web/Web Hacking
XXE란?XML 데이터를 처리하는 과정에 공격자가 개입하여 외부 엔티티를 주입시키는 공격입니다. (XML이란?)웹 애플리케이션에서 브라우저와 서버 간에 데이터 전송을 위해 XML 형식을 사용하는 경우에 발생할 수 있으며, 다음과 같은 공격 방법이 존재하며 해당 방법들을 Burp suite에서 실습해 본 내용과 함께 소개해보도록 하겠습니다.XXE 파일 접근다른 취약점과 XXE 연계문서 제어 불가능 시 XInclude에러 메시지에 데이터를 포함시켜 출력XXE 파일 접근XML 문서 요청에 외부 엔티티를 추가하여 /etc/passwd 파일에 접근하여 파일의 내용을 출력할 수 있습니다.위의 실습 환경에서 실습을 해보았으며해당 사이트에는 Check stock 버튼을 눌러 재고를 확인할 수 있는 기능이 구현되어 있습..
XML
·
Web/언어
XML이란?데이터를 저장하고 전송하는 목적으로 만들어진 마크업 언어로 HTML과 같이 태그를 사용합니다.HTML과 XML두 언어 모두 마크업 언어로 태그를 사용한다는 공통점이 존재하지만, HTML의 경우 데이터를 사용자에게 표시하는 목적으로 미리 정의된 태그를 사용하는 반면에 XML은 데이터를 저장하고 전송하는 목적으로 사용자가 태그를 정의하여 사용한다는 차이점이 있습니다.XML DTDXML DTD란 Document Type Definition의 약자로 XML 문서의 구조 및 해당 문서에서 사용할 수 있는 요소와 속성을 정의한 문서입니다. 이러한 DTD는 ]> &title; &user; Hello World! 위와 같은 코드를 예시로 들 수 있는데 해당 XML 코드를 해석하자면, xml의..
File Download Vulnerability
·
Web/Web Hacking
File Download Vulnerability란?파일 다운로드 기능이 존재하는 웹 애플리케이션에서 파일 다운로드 시 파일 경로에 대한 미검증, 사용자의 권한 검증 미흡 등과 같은 부재로 인해 파일 업로드 과정에서 발생할 수 있는 취약점입니다.메타 문자를 이용한 Path Traversal파일을 다운로드하는 과정에서 프록시를 사용해 요청을 조작할 수 있는데, 이를 통해 파일의 이름을 아래와 같이 바꾸어 상위 디렉터리의 파일을 다운로드할 수 있습니다./../../../../etc/passwd위와 같이 test.txt 파일을 다운로드할 때 BurpSuite의 Proxy Intercept를 On으로 설정한 후 다운로드 해주면 아래와 같은 요청이 가는 것을 가로챌 수 있습니다. 이때 파일 이름이 다운로드를 누른..
File Upload Vulnerability
·
Web/Web Hacking
File Upload Vulnerability이란?파일 업로드 기능이 존재하는 웹 애플리케이션에서 파일 업로드 시 파일의 확장자 검증 미흡, 업로드 파일의 경로 노출, 파일 실행권한 제한을 하지 않음 등과 같은 부재로 인해 파일 업로드 과정에서 발생할 수 있는 취약점입니다.아래와 같은 방법으로 공격이 가능합니다.파일 이름에 메타 문자를 사용하여 상위 디렉터리에 파일 저장 (Path Traversal)웹 쉘 띄우기클라이언트 사이드 취약점으로 연결Path Traversal../과 같은 메타 문자를 파일 이름에 사용하여 상위 디렉터리에 파일을 업로드할 수 있습니다.$file_path="../files/".$file_name; 위와 같은 코드로 작성된 업로드 기능에 ../index.php 를 입력할 경우../f..
SQL Injection (1)
·
Web/Web Hacking
SQL Injection이란?SQL injection이란 관계형 DBMS에서 사용하는 질의 구문인 SQL을 삽입하는 공격입니다. 여기서 DBMS란 DataBase Management System의 약자로 데이터베이스를 관리하는 애플리케이션을 말합니다. 이 DBMS는 테이블 형식으로 데이터가 저장되는 관계형 DBMS와 키-값 형태로 데이터가 저장되는 비관계형 DBMS가 있습니다. 이번 포스팅에서 다루게 될 SQL Injection은 관계형 DBMS인 RDBMS에서 사용되는 공격으로 공격 발생 시 조작된 쿼리로 인증을 우회하거나, 데이터베이스의 정보를 유출할 수 있는 해킹 기법입니다.SQL Injection은 공격 방법에 따라 여러 종류가 존재합니다.이번 포스팅에서는 아래의 4가지 종류의 SQL Inject..
XSS (Cross Site Scripting)
·
Web/Web Hacking
XSS(Cross Site Scripting)란?공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 것으로 이용자를 식별하기 위한 세션 및 쿠키 정보를 탈취하여 임의의 기능을 실행할 수 있는 해킹기법→ Cross Site Scripting의 약자인 CSS는 이미 스타일시트 언어인 Cascading Style Sheets의 약자로 사용되기 때문에 XSS를 사용 이러한 XSS는 발생 형태에 따라서 아래와 같이 다양한 종류로 구분됩니다.Stored XSS : XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSSReflected XSS : XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSSDOM-based XSS : XSS에 사용되는 악성 스크립트가..