웹 모의해킹

※ Reflected XSS 개요 Stored XSS는 게시판, 마이페이지, 닉네임 변경 등 서버에 저장시키는 페이지 내부에 악의적인 스크립트문을 삽입했다. 하지만 Reflected XSS는 서버 DB에 스크립트를 저장시키지 않고, 서버의 응답에 스크립트문을 삽입하는 공격이다. 주로 검색 기능에서 취약점이 발견되며, 공격 대상자가 Reflected XSS 공격을 당할 때 공격자가 유도한 url에 접속해야 한다. Reflected XSS 공격 단계 1.
※ Stored XSS 개요 게시판, 마이페이지, 닉네임 변경 등 서버에 저장시키는 페이지 내부에 악의적인 스크립트문을 삽입한다. 서버에 스크립트를 저장시키기 때문에 특정 대상이 아닌 해당 페이지를 열람하는 모든 사용자들이 공격 대상이 된다. 이 때, 해당 페이지를 이용하는 사용자들은 로그인을 한 상태이기 때문에 인증과 관련된 쿠키나 세션 토큰값을 탈취당할 수 있다. 사용자들은 페이지를 열람할 때마다 삽입된 스크립트가 실행된다. 1. Reflected XSS보다 Stored XSS가 더 위협적인 이유 1) Reflected XSS는 공격 대상이 링크를 직접 클릭하도록 유도해야하지만(사회공학적 기법), Stored XSS는 서버 내 페이지에 공격문이 저장되므로 링크를 클릭하도록 유도할 필요가 없다. 2) ..
※ XSS(Cross-site Scripting)란? XSS(Cross Site Scripting)는 공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 것이다. 다른 사용자의 웹 브라우저 내에서 적절한 검증 없이 실행되기 때문에 사용자의 세션을 탈취하거나, 웹 사이트를 변조하거나 혹은 악의적인 사이트로 사용자를 이동시킬 수 있다 [네이버 지식백과] XSS 취약점 (정보 보안 개론, 2013. 6. 28., 양대일) 1. 취약점 발생 원인 공격자의 스크립트가 그대로 서버에서 응답되기 때문이다. 2. 발생 가능한 위치 파라미터 데이터가 응답에 포함되는 모든 곳(사용자의 입력이 응답에 포함되는 곳) 3. 취약점 찾는 단계 1) 사용자 입력에 따른 응답이 출력되는지 확인한다. 2) 4가지 ..
서버에 보낸 질의문의 결과가 참, 거짓에 따라 다른 응답을 주는 경우 사용할 수 있는 공격이다. 다른 SQL Injection 공격이 가능한 환경 모두에서 사용할 수 있는 공격기법이다. 1. 취약점 확인 예로 로그인 페이지에서 user라는 아이디가 존재한다 가정했을 때, ID 입력창에 user' and '1'='1을 입력하면 참, user' and '1'='2 를 입력하면 거짓이라는 결과가 도출될 것이다. 이 때, 출력되는 결과가 다르다면 Blind Based SQL Injection이 가능함을 알 수 있다. user' and '1'='1 참 user' and '1'='2 거짓 2. Blind Based SQL Injection에 사용되는 함수 (1) limit select * from users lim..
데이터베이스 시스템에서 제공하는 에러를 이용하여 정보를 탈취하는 방법이다. 1. Error 출력 여부 확인 입력이 주어지는 페이지에서 논리적으로 잘못된 구문을 입력하는 경우 Error가 출력되는지 우선 확인한다. 출력이 되어야 Error based SQL Injection을 수행할 수 있기 때문이다. 만약 논리적으로 에러인 구문을 입력했을 경우 Error가 출력되면 "~ syntax error ~"가 출력된다. 이 때 mysql에서 에러를 유도하여 공격에 쓰이는 함수는 Updataxml과 Extractxml 함수로 공격 방법은 아래와 같다. 2. Updatexml 을 이용한 SQL Injection updatexml(xml_target, xpath_expr, new_xml) updatexml 함수는 지정..
UNION Based SQL Injection은 게시판의 검색 입력에서 많이 사용되는 공격기법이다. 게시판에서의 검색 내용은 DB 안에서 보통 '%____%' 사이에 삽입되는데, 이런 구조상의 취약점을 이용하여 공격한다. 1. 게시판 취약점 파악 게시판의 검색창에 문장을 입력했을 때 위에서 언급한 대로 '%____%' 사이에 삽입되는 구문인지부터 파악한다. SELECT * FROM board WHERE search like %_$sentence_%' 와 같은 쿼리문일 것이라고 예상하고 검색어%' and '1%=1 이라는 문장을 검색창에 입력했을 때, 정상적으로 작동할 경우 SELECT * FROM board WHERE search like '%검색어%' and '1%=1%' 로 우리가 예상한 쿼리문이 사..
●식별과 인증 - 식별 : 데이터에서 특정 데이터를 구분하는 작업 - 인증 : 특정 서비스를 이용하려는 사람이나 응용 프로그램의 신분을 확인하는 작업 ※SQL Injection 식별 처리과정 5가지 1. 식별 &인증 동시 진행 아이디 식별과 패스워드를 통한 인증을 동시에 진행한다. 2. 식별 & 인증 분리 아이디로 식별을 진행한 후에 DB에서 꺼내온 패스워드 정보와 입력한 패스워드 정보가 일치하는지 비교하여 인증한다. 3. 식별 & 인증 동시 진행 with hash 아이디 식별과 패스워드 인증을 동시에 진행하되, 입력한 패스워드를 해시값으로 변환시킨 뒤 DB에 저장되어 있는 해시화된 패스워드와 일치하는지 비교하여 인증한다. 해시함수로 아직까지 안전한 sha256을 사용하였다. 4. 식별 & 인증 분리 w..
SQL Injection이란? 웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격. 웹 응용 프로그램에 강제로 구조화 조회 언어(SQL) 구문을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버뿐만 아니라 모든 관계형 데이터베이스 관리 시스템(RDBMS)에서 가능하다. [네이버 지식백과] SQL 주입 공격 [SQL injection, -注入攻擊] (IT용어사전, 한국정보통신기술협회) 방법1. 논리 기호 사용 로그인 페이지에서 아이디와 패스워드를 입력받고 입력받은 내용을 위와 같은 sql문에 삽입하여 실행한다. 만약 아이디로 user1, 패스워드로 password1을 입력했다고 가정을 해본다면 아래와 같..
mysql 실행 관리자 계정으로 mysql을 실행한다. (exit 명령으로 탈출할 수 있다.) 데이터베이스 생성 mysql에 데이터베이스를 생성한다 > create database [데이터베이스명] DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci 데이터베이스 확인 현재 mysql에 저장된 데이터베이스들 정보를 출력한다. 아까 생성한 chDB가 존재하는 것을 확인할 수 있다. 사용자 생성 > create user [사용자명] identified by '[패스워드]'; > GRANT ALL PRIVILEGES ON [데이터베이스명].* TO '[사용자명]'@'localhost' identified by '[패스워드]'; 위처럼 권한을 부여해주지 않으면 해당 데이터베이스에 사용..
째로스
'웹 모의해킹' 카테고리의 글 목록