Blind SQL Injection - DB 데이터 값 추측
·
보안 이론/웹 보안
데이터베이스의 내용을 보여주지 않는 페이지에서 참, 거짓의 결과 차이를 이용한 방식으로 웹 서버의 DB를 탐색하고 유출시키는 실습을 진행한다. Blind SQL Injection 입력값에 대해 명확한 결과 데이터를 알려주지 않는 페이지에 대한 공격이다. 무조건 참인 값과 거짓인 값을 넣어 그 차이를 확인하고 데이터에 대한 내용을 질의하여 답을 알아낸다. 이번 실습에서도 DB의 메타데이터를 이용한다. 메타데이터에 대한 설명은 아래 게시글에 있다. 2022.09.14 - [보안 이론/웹 보안] - SQL Injection - 다른 DB 데이터 접근 bWAPP) SQL Injection - Blind - Boolean-Based 해당 페이지에서는 검색어에 따라 결과가 존재하면 'The movie exists ..
SQL Injection - 다른 DB 데이터 접근
·
보안 이론/웹 보안
데이터베이스의 메타 데이터를 이용하여 현재 테이블이 아닌 다른 DB, 테이블의 내용을 알아내는 방법을 실습해본다. 관계형 데이터베이스 메타 데이터 관계형 데이터베이스는 DB, Table, column으로 구성되어 조직화된 모습으로 데이터를 저장하는 저장소이다. 메타데이터는 데이터베이스에 저장된 모든 데이터를 설명하는 데이터이며 데이터들을 구조화하고 정리하는데 중요한 역할을 한다. 메타데이터에는 데이터들의 구조, 위치 등이 담겨있기 때문에 공격 시 민감한 데이터의 위치를 찾는데 도움이 된다. information_schema MySQL과 MariaDB에서 사용되는 메타 데이터베이스이다. DB의 거의 모든 정보를 가지고 있으며 데이터를 동적으로 생성하고 읽기 전용이라 사용자가 수정할 수 없다. 다양한 구성 ..
SQL Injection - 오류 페이지를 이용한 공격
·
보안 이론/웹 보안
잘못된 SQL문 사용 시 RDBMS에서 발생하는 오류 페이지에서 정보를 얻어 공격하는 방법을 실습한다. RDBMS 오류 페이지 위는 SQL문에 오류가 있을경우 보이는 오류 페이지이다. 개발자 입장에서는 오류의 원인을 파악할 수 있어 용이할 수 있으나 공격자의 경우 DB에 대한 여러 가지 정보를 얻을 수 있기 때문에 위험할 수 있다. 서비스 중인 웹 서버라면 이러한 오류 정보를 숨기고 동일한 오류 페이지를 구성해 정보의 유출을 최소화 해야한다. 실습 사이트 오류 페이지 정보 수집 공격 로그인에 SQL injection 취약점이 존재하는 실습용 페이지이다. 해당 페이지는 SQL문의 오류시 오류 페이지를 반환한다. 우리는 이를 이용하여 webmaster라는 계정의 비밀번호를 바꾸어 나만 접속가능하도록 만들 것..
SQL Injection - 로그인 우회
·
보안 이론/웹 보안
SQL injection을 사용하여 취약한 사이트에서 데이터베이스의 정보를 유추하여 로그인을 우회하는 실습을 진행한다. SQL injection 데이터베이스를 조작하는 SQL문을 사용할 때 사용자의 입력에 대해 적절한 필터링이 되어있지 않아 발생하는 취약점이다. 공격자는 비정상적인 동작을 하도록 SQL문을 주입하여 내부 정보를 유출, 변조, 삭제 등의 악의적인 행동이 가능하다. SQL injection 공격을 위한 3대 조건 주석 : 사용자가 입력한 값 뒤에 오는 문장을 무력화 시키기 위해서 사용한다. 주석 문자 대상 DB -- Oracle, MS-SQL # MySQL, MariaDB /* */ 대다수 DB의 여러 줄 주석 논리적인 참 : SQL문은 조건에 의해 알맞은 데이터를 가져오기 때문에 참, 거짓..