본문 바로가기

Web19

Union SQL Injection 1. 취약점 개요 1.1. 정의 SQL Injection에는 여러 종류가 있다. Non Blind Sql Injection, Blind Sql Injection, Union Sql Injection 등... 이번 포스팅은 Union Sql Injection에 대한 내용이다. SQL Injection은 웹 어플리케이션에서 많이 발생하는 보안 취약점 중 하나다. Union SQLi는 다수의 SELECT 문을 하나의 결과로 합쳐서 출력하는 방법이다. 이를 사용하면 데이터베이스의 테이블을 병합할 수 있다. 1.2. 예시 다음과 같은 쿼리가 있다고 가정한다. SELECT id, password FROM user WHERE idx=1 위 쿼리를 Union SQL로 변환할 경우, 다음과 같이 작성할 수 있다. SEL.. 2023. 3. 1.
불충분한 인가 (IN) 목차 1. 취약점 개요 2. 점검 방법 3. 보안 방안 1. 취약점 개요 1.1. 정의 페이지 접근을 위한 인증기능이 구현되지 않을 경우, 해커나 인가되지 않는 사용자가 페이지에 접근 및 중요 정보의 변조를 할 수 있는 취약점이다. 1.2. 보안 위협 접근제어가 필요한 중요 페이지의 통제수단이 미흡한 경우, 비인가자가 URL 파라미터 값 변경 등의 방법으로 중요 페이지에 접근하여 민감한 정보 열람 및 변조 가능하다. 2. 점검 방법 - 마이페이지 등 본인만 접근 가능한 페이지에서 다른 사용자와의 구분을 일련번호 등의 단순한 값으로 하는지 확인한다. ex) https://example.com/mypage.html?post=111 (내 게시글) - 일련번호가 들어가는 파라미터의 값을 변조하여 다른 사용자의 .. 2022. 12. 11.
쿠키 / 세션 / 토큰 / JWT 쿠키 / 세션 / 토큰 쿠키 인증: key-value 형식의 문자열 / 클라이언트가 어떠한 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 기록 정보 파일이다. 요청 시 쿠키의 값을 그대로 보낸다는 취약점이 존재한다. 세션 인증: 쿠키의 보안적 이슈 때문에 비밀번호 등 클라이언트의 민감한 인증 정보를 브라우저가 아닌 서버 측에 저장하고 관리한다. 민감한 정보는 클라이언트에 보내지 않고 서버에서 모두 관리한다. 토큰 인증: 클라이언트가 서버에 접속을 하면 서버에서 해당 클라이언트에게 인증되었다는 의미로 '토큰'을 부여한다. 이 토큰은 유일하며 토큰을 발급받은 클라이언트는 또 다시 서버에 요청을 보낼 때 요청 헤더에 토큰을 심어서 보낸다. 그러면 서버에서.. 2022. 10. 15.
CI / DI / SSO CI / DI CI: Connecting Information (연계정보) 본인 확인 기관 등에서 개인별로 고유하게 부여하는 개인 식별정보로, 어느 업체에서 발급해도 유일하게 발급되므로 이 값이 같으면 동일인으로 판단할 수 있다. 주민등록번호 수집이 금지되면서 인터넷 서비스업체에서는 휴대폰 본인인증, 공인인증, 신용카드 인증을 통해 CI를 제공받고 있으며, 주민등록번호를 대신해 고객을 구별하는 데이터로 사용한다. 구조: 88byte, 영어 대소문자와 특수문자의 조합으로 표현 DI: Duplication Information (중복정보 또는 중복가입확인정보) 인증 업체별로 사용자에게 부여하는 고유번호이며 동일인이라 하더라도 인증업체가 다르면 DI가 다르다. 한 사람이 여러 개의 계정을 만드는 것을 방지하고.. 2022. 10. 15.
[MySQL] UNION, JOIN 차이 1. SQL 이란? MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어 2. UNION 2-1. UNION 정의 2개 이상의 쿼리 결과를 단일 결과 세트로 연결한다. UNION ALL: 중복 항목을 포함한다. UNION: 중복 항목을 제외한다. 2-2. 규칙 열의 개수와 순서가 모든 쿼리에서 동일해야 한다. 단일 결과 세트로 나오기 때문이다. 데이터 형식이 호환되어야 한다. 즉, 숫자면 숫자, 문자면 문자라는 조건이 성립되어야 한다. 3. JOIN https://lyk00331.tistory.com/107 https://lyk00331.tistory.com/108 https://lyk00331.tistory.com/109 참고하기 !! 4. 차이점 UNION: 하나.. 2022. 3. 3.
[MySQL] JOIN - OUTER JOIN (LEFT+RIGHT) 1. SQL 이란? MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어 2. JOIN 2-1. JOIN 정의 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 연결하기 위해 테이블이 적어도 하나의 컬럼을 공유하고 있어야 한다. 이때, 공유하는 컬럼을 PK 또는 FK 값으로 사용한다. 2-2. PK(Primary Key), FK(Foreign Key) PK: 기본 키라고 하며, 엔티티를 식별하는 대표 키다. NULL일 수 없다. FK: 다른 테이블의 PK를 참조하는 키다. 어떠한 테이블에서 존재하는 다른 테이블의 정보이기 때문에 왜래 키이다. 참조하고자 하는 컬럼은 PK 또는 UK이여야 한다. PK와 FK는 테이블의 필수 요소로써, 모든 테이블은 이들 둘 중 하나 .. 2022. 3. 3.
[MySQL] JOIN - LEFT/RIGHT JOIN 1. SQL 이란? MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어 2. JOIN 2-1. JOIN 정의 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 연결하기 위해 테이블이 적어도 하나의 컬럼을 공유하고 있어야 한다. 이때, 공유하는 컬럼을 PK 또는 FK 값으로 사용한다. 2-2. PK(Primary Key), FK(Foreign Key) PK: 기본 키라고 하며, 엔티티를 식별하는 대표 키다. NULL일 수 없다. FK: 다른 테이블의 PK를 참조하는 키다. 어떠한 테이블에서 존재하는 다른 테이블의 정보이기 때문에 왜래 키이다. 참조하고자 하는 컬럼은 PK 또는 UK이여야 한다. PK와 FK는 테이블의 필수 요소로써, 모든 테이블은 이들 둘 중 하나 .. 2022. 3. 2.
[MySQL] JOIN - INNER JOIN 1. SQL 이란? MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어 2. JOIN 2-1. JOIN 정의 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법 연결하기 위해 테이블이 적어도 하나의 컬럼을 공유하고 있어야 한다. 이때, 공유하는 컬럼을 PK 또는 FK 값으로 사용한다. 2-2. PK(Primary Key), FK(Foreign Key) PK: 기본 키라고 하며, 엔티티를 식별하는 대표 키다. NULL일 수 없다. FK: 다른 테이블의 PK를 참조하는 키다. 어떠한 테이블에서 존재하는 다른 테이블의 정보이기 때문에 왜래 키이다. 참조하고자 하는 컬럼은 PK 또는 UK이여야 한다. PK와 FK는 테이블의 필수 요소로써, 모든 테이블은 이들 둘 중 하나 .. 2022. 3. 2.
[MySQL] SUM, MAX, MIN 1. SQL 이란? MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어 2. SUM, MAX, MIN 2-1. 집계 함수 계산을 수행하고 단일 값을 반환한다. Count() 함수를 제외한 집계 함수는 NULL 값을 무시하며, SELECT문 혹은 HAVING 절에만 사용할 수 있다. 2-2. Count() * NULL 포함 여부에 관계없이 대상 테이블의 모든 행을 카운트한다. ALL 모든 값에 적용된다. NULL이 아닌 값의 수를 반환한다. DISTINCT 중복 값을 무시한다. 즉 유니크하며 NULL이 아닌 값의 수를 반환한다. expression 단일 상수, 변수, 스칼라 함수 또는 열 이름으로 구성된 식이며 값을 다른 값과 비교하는 SQL 쿼리일 수도 있다. 텍스.. 2022. 2. 27.
파일 업로드 취약점 | 악성코드 배포 | 보안 방법 파일 업로드(File Upload) 취약점이란? 파일 업로드 기능이 존재하는 웹 사이트의 확장자 필터링이 미흡할 경우, 공격자가 악성 파일을 업로드하여 시스템을 장악할 수 있는 취약점이다. 악성 스크립트가 업로드 된 후, 서버 상에서 스크립트를 실행하여 쉘을 획득하는 등의 행위로 시스템 권한을 획득하거나 서버를 변조시키는 등의 방법으로 웹 서버를 장악한다. 이 취약점으로 접근 권한 상승, 정보 유출, 악성코드 배포 등의 공격이 발생할 수 있다. 쉘: 사용자에게 받은 지시를 하드웨어 지식으로 변경하여 운영체제의 커널과 유저를 이어 준다. 웹 쉘: 웹 사이트를 통해 쉘을 여는 공격으로, 이 쉘을 통해 서버에 명령어를 수행하는 파일 업로드 취약점으로 많이 사용된다. 웹 서비스 구동 방법 Client : 웹 사.. 2021. 8. 9.
CSRF | XSS와 CSRF 차이점 | 보안 방법 CSRF 란? CSRF는 사이트 간 요청 위조라는 뜻으로, 사용자의 의지와 무관하게 웹 사이트에 요청을 보낼 수 있다. 공격자가 클라이언트에게 form이 담긴 html 코드를 보내면, 클라이언트는 해당 페이지로 연결되어 코드가 실행된다. 해당 form에는 악성 스크립트가 담겨있어, 자동으로 스크립트 값을 넘기게 되어 방문자가 원치 않는 동작을 하게 된다. 실습(burp suite 사용) 1. 기존의 로그인 정보는 아이디가 lyk00331이다. 2. 다음과 같은 코드를 동작시킴으로써, 다른 아이디인 csrf-lyk00331로 로그인할 수 있게 했다. value에는 기존 아이디인 lyk00331의 패스워드를 적어준다. 3. 확인해보면 csrf-lyk00331로 로그인된 것을 알 수 있다. XSS와 CSRF .. 2021. 8. 9.
XSS | 필터링 우회 | 보안 방법 XSS 이란? 웹 사이트 관리자가 아닌 사용자가 웹 페이지에 악성 스크립트를 삽입함으로써 개발자가 고려하지 않은 기능이 작동하여 발생하는 취약점이다. 클라이언트를 대상으로 사용자 세션을 가로채거나, 홈페이지 변조, 악의적인 사이트 이동 등의 공격을 수행할 수 있다. 종류는 Dom Based XSS, Stored XSS, Reflected XSS로 나뉜다. Stored XSS 저장형 XSS이다. 웹 서버에 스크립트를 저장하여 데이터베이스에 기록된다. 공격자가 미리 XSS 공격에 취약한 웹 사이트를 탐색하고 XSS 공격을 위한 스크립트를 포함한 게시글을 업로드함으로써 발생한다. 게시글의 URL을 클라이언트에게 노출하고 클라이언트가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송하게 된다. 웹 서버에서.. 2021. 8. 9.