본문 바로가기

보안/WEB

(13)
[WEB 보안] SQL Injection 취약점_기타 ※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다. 1. 대역외(OAST) 기술을 사용하여 블라인드 SQL Injection 확용 : SQL 조회를 수행하지만 비동기적으로 수행, 사용자가 제어하는 시스템에 대한 대역 외 네트워크 상호 작용을 트리거하여 블라인드 SQL 주입 취약점을 악용 할 수 있다. 다양한 네트워크 프로토콜 사용, 그중에서 일반적으로 DNS(Domain Name Service)가 가장 효과적, DNS 쿼리를 트리거하는 기술을 사용중인 데이터베이스 유형에 따라 매우 다름. ​ 1) Microsoft SQL Server..
[WEB 보안] Blind SQL Injection 취약점_2 ※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다. 1. 목적 : 시간 지연을 트리거하여 Blind SQL Injection 활용 2. 설명 : 삽입된 SQL 구문이 실행될 때 데이터베이스 오류를 트리거해도 더이상 응용프로그램의 응답에 차이가 발생하지 않으므로 조건부 오류를 유발하는 선행 기술이 작동하지 않을 때 시간 지연을 트리거하여 블라인드 SQL Injection 취약점을 악용 할 수 있다. ​ 1) Microsoft SQL Server에서 다음과 같은 입력을 사용하여 조건을 테스트하고 표현식이 True 인지에 따라 지연을 트리..
[WEB 보안] 데이터베이스 버전 확인 : SQL Injection 취약점을 처음 식별 한 후에는 일반적으로 데이터베이스 자체에 대한 정보를 얻는것이 유용 ​ 1) 데이터베이스 유형 및 버전 조회 Database Type Query Microsoft, MySQL SELECT @@version Oracle SELECT * FROM v$version Postgre SQL SELECT version() ex) ' UNION SELECT @@version-- ​ 2) 쿼리에서 반환되는 열 수와 열을 텍스트 데이터를 포함, 쿼리가 카테고리 매개 변수에서 다음과 같은 페이로드를 사용하여 두개의 텍스트를 포함하는 두개의 열을 리턴하는지 확인(DB 종류 : Oracle) '+UNION+SELECT+'abc','def'+FROM+DUAL-- ​ 3) 다음 페..
[WEB 보안] Blind SQL Injection 취약점_1 ※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다. Blind SQL Injection : 보이지 않는 SQL Injection, 에러 기반(Error Based)의 SQL Injection을 막았을때 DB정보가 모두 블라인드 처리가 되어서 온다. 이때 서버에서 응답하는 참, 거짓으로만 DB 정보를 가져오는 방법이다. ​ 1. 방법 : 1) 참/거짓 (1) 참 xyz' UNION SELECT 'a' WHERE 1=1-- ​ (2) 거짓 xyz' UNION SELECT 'a' WHERE 1=2-- ​ 2) users 테이블에서 Admi..
[WEB 보안] SQL Injection 대응 방법_1 ※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다. String query = "SELECT * FROM products WHERE category = '"+ input + "'"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query); ​ PreparedStatement statement = connection.prepareStatement("SELECT * FROM products WHERE cate..