Web Hacking/Study 30

ExploitTech: Blind SQL Injection Advanced

기초 과정에서 Blind SQL Injection에 대해서 간략하게 알아보았다. 해당 공격 기법은 임의 데이터를 알아내기 위한 일련의 방법으로 수많은 쿼리를 전송한다. 실제로 애플리케이션을 공격할 때 수많은 쿼리를 전송하게 되면 방화벽에 의해 접속 IP가 차단될 수 있다. 이 뿐만 아니라 알아내려는 데이터의 길이가 길면 길수록 실행해야할 쿼리 또한 늘어나며 그만큼 공격에 들이는 시간이 길어질 수밖에 없다. 이번 코스에서는 Blind SQL Inejction을 통해 데이터베이스의 내용을 효율적으로 알아내기 위한 방법에 대해서 소개하고 방법을 알아보기에 앞서 간략하게 알고리즘에 대해서 설명하고 공격 쿼리를 작성해보도록 할 것이다. Binary Search 이진 탐색 (Binary Search)은 이미 정렬된..

Web Hacking/Study 2023.07.01

Background: SQL Features

[WHA] Background: SQL Features UNION UNION은 다수의 SELECT 구문의 결과를 결합하는 절이다. 해당 절을 통해 다른 테이블에 접근하거나 원하는 쿼리 결과를 생성해 애플리케이션에서 처리하는 타 데이터를 조작할 수 있다. 이는 애플리케이션이 데이터베이스의 쿼리의 실행 결과를 출력하는 경우 유용하게 사용할 수 있는 절이다. 다음은 UNION 절의 사용 예시이다. username 과 password 컬럼에 각각 “Dreamhack”, “DreamHack PW”가 일치하는 데이터를 조회한 것을 알 수 있다. mysql> SELECT * FROM UserTable UNION SELECT "DreamHack", "DreamHack PW"; /* +-----------+-------..

Web Hacking/Study 2023.07.01

정규 표현식

정규 표현식(regular expression, regexp, regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.만약 DREAM-무작위 숫자 형태의 입력 데이터를 검증하고 싶은 경우 정규 표현식을 사용해 손쉽게 구현할 수 있다.function DREAMChecker(value){ var re = /DREAM-\d+/; var OK = re.exec(value); if (OK) { console.log(OK[0]); } else { console.log("Not Found"); } } DREAMChecker("DREAM-1"); // DREAM-1 DREAMChecker("DREAM-31337"); // DREAM-31337 DREAMChecker("DREAM-A"); ..

Web Hacking/Study 2023.07.01

File Download 취약점과 대응방안

파일 다운로드 취약점(File Download Vulnerabillity)이란?파일 다운로드 시 사용자로부터 특정 파일 정보를 입력받지만 이 입력 값을 검증하지 않을 경우에 발생할 수 있는 취약점이다. 발생 원인파일 다운로드 시 파일의 절대 경로 또는 상대 경로가 노출되는 경우다운로드 모듈이 파일의 경로나 이름을 파라미터로 사용하는 경우파일 경로와 파일명 필터링 미흡하여 ../를 이용해 상위 디렉터리에 접근이 가능한 경우다운로드 경로가 노출되지 않더라도 구조가 단순하여 파라미터 변조를 통해 접근이 허용되지 않은 파일에 접근이 가능할 경우 절대 경로란?웹 페이지나 파일이 가지고 있는 고유한 경로ex) C:\Apache24\bin\iconv\test.txt 상대 경로란?현재 위치한 곳을 기준으로 하여 그곳의..

Web Hacking/Study 2023.07.01

File Upload 취약점과 대응방안

파일 업로드 취약점(File Upload Vulnerabillity)이란?파일 업로드 취약점은 웹 애플리케이션에 파일이 업로드되기 전에 유효성 검사가 구현되지 않았거나 안전하지 않은 방식으로 구현된 경우 악성 파일을 업로드할 수 있는 취약점이다. 이런 파일 업로드 기능이 취약하면 공격자는 웹셸과 같은 파일을 업로드하여 시스템 명령을 실행하거나 다른 시스템 공격을 위한 경유지로 악용하는 등의 서버측 공격을 할 수 있다. 또한 XSS 같은 클라이언트측의 공격도 가능하다. 파일 업로드 취약점의 동작 원리사용자가 파일을 업로드된 파일은 어디가에 저장된다. 이 때 파일이 저장되는 위치는 개발자가 지정한 저장 공간이므로 웹 애플리케이션마다 다를 수 있다. 파일 업로드 취약점은 일반적으로 업로드 파일의 저장 위치가 ..

Web Hacking/Study 2023.07.01

SQL Injection 실습(2)

SQL Injection 실습(2) 이전에 실습했던 oyesmall 홈페이지 데이터베이스의 구조는 MS-SQL을 사용하고 시스템 테이블을 이용해 데이터베이스 정보를 획득할 수 있다. information_schema.tables 함수는 기본 MS-SQL 데이터 베이스에 있는시스템 테이블의 함수이며 저 함수를 구글에 검색해보면 다양한 함수를 알 수 있다. 다음과 같이 TABLE_NAME 함수를 사용해 테이블의 이름을 알 수 있다. information_schema.columns 를 검색해보면 다음과 같이 TABLE_NAME과 COLUMN_NAME이 나오는데 COLUMN_NAME을 이용하여 컬럼의 이름을 얻어 수 있다. oyesmall의 회원가입 창에서 주소를 찾는 곳에서 SQL 문을 삽입해 데이터베이스에 ..

Web Hacking/Study 2023.07.01

Non-Relational DBMS

RDBMS는 스키마를 정의하고 해당 규격에 맞는 데이터를 2차원 테이블 형태로 저장한다. 이는 복잡할 뿐만 아니라, 저장해야 하는 데이터가 많아지면 용량의 한계에 다다를 수 있다는 단점이 있다. 이를 해결하기 위해 등장한 것이 비관계형 데이터베이스 즉, Non-Relational DBMS (NRDBMS, NoSQL) 이다. 관계형 데이터베이스에서 발생할 수 있는 문제점으로 SQL Injection이 있었다. 공격자는 이를 통해 데이터베이스의 정보를 알아내거나 임의의 결과를 반환해 인증을 우회하는 등의 행위가 가능했다. NoSQL 또한 이용자의 입력값을 통해 동적으로 쿼리를 생성해 데이터를 저장하기 때문에 이와 같은 문제점이 발생할 수 있다. 비관계형 데이터베이스(NRDBMS)RDBMS는 SQL을 사용해 ..

Web Hacking/Study 2023.07.01

Relational DBMS

Background: Relational DBMS DBMS란? 일상 생활에서 생기는 다양한 정보를 기록하기 위해 다이어리와 노트를 사용하듯이, 컴퓨터도 정보를 기록하기 위해 데이터베이스 (Database)를 사용한다. 그리고 데이터베이스를 관리하는 애플리케이션을 **DataBase Management System(DBMS)**이라고 한다. 다수의 사람들이 데이터를 생성하고, 참조하고, 수정하는 웹 서버의 특수한 환경에 가장 적합한 자료구조로 채택된 것이 데이터베이스이며, 최근의 웹 서비스에는 거의 필수적으로 포함되어야 한다. 웹 서비스는 데이터베이스에 정보를 저장하고, 이를 관리하기 위해 **DataBase Management System (DBMS)**을 사용한다. DBMS는 데이터베이스에 새로운 정보..

Web Hacking/Study 2023.07.01

SQL Injection 취약점

SQL InjectionSQL은 DBMS에 데이터를 질의하는 언어이다. 웹 서비스는 이용자의 입력을 SQL 구문에 포함해 요청하는 경우가 있다. 예를 들면, 로그인 시에 ID/PW를 포함하거나, 게시글의 제목과 내용을 SQL 구문에 포함한다.다음 코드는 로그인 할 때 애플리케이션이 DBMS에 질의하는 예시 쿼리이다./* 아래 쿼리 질의는 다음과 같은 의미를 가지고 있습니다. - SELECT: 조회 명령어 - *: 테이블의 모든 컬럼 조회 - FROM accounts: accounts 테이블 에서 데이터를 조회할 것이라고 지정 - WHERE user_id='user' and user_pw='password': user_id 컬럼이 user이고, user_pw 컬럼이 password인 데이터로 범위 지정 즉..

Web Hacking/Study 2023.07.01

CSS Injection 취약점

CSS란? Cascading Style Sheet (CSS)는 HTML로 정의된 문서를 다채롭게 하는 역할을 한다. 개발자는 CSS로 HTML 요소들이 사용자에게 어떻게 보여질지 정의할 수 있다. 표현헤 사용될 임의의 CSS 코드를 주입시켜 의도하지 않은 속성이 정의되는 것을 CSS Injection이라고 한다. 임의 Javascript가 삽입되는 것에 대한 두려움은 이미 많은 개발자들이 가지고 있지만, 악의적인 CSS의 위험성은 잘 알려져있지 않아 대게 무시되고 있다. 그 결과로, 많은 회사에서 CSS Injection 취약점이 발생했다. CSS Injection CSS Injection은 XSS와 비슷하게 웹 페이지 로딩 시 악의적인 문자열을 삽입하여 악의적인 동작을 이끄는 공격이다. 공격자가 임의 ..

Web Hacking/Study 2023.06.26