웹 해킹 기본 학습
1. SQL 인젝션
(1) 개요
웹 어플리캐이션에서 입력 받아 데이터베이스로 전달하는 정상적인 SQL쿼리를 변조/삽입하여 불법 로그인/DB도청/시스템 명령수행 등을 하며 비정상적인 접근을 하는 공격
(2) 취약점 스캐너
Nikto: GNU 기반
SQLmap: 블라인드 SQL 인젝션 수행
Absinthe: GUI 기반
(3) 공격 유형 분류
1) Error Base
DB쿼리 에러를 기반으로 점진적으로 정보 획득
2) Blind SQL injection
오류 메시지가 아닌 쿼리의 참과 거짓을 통해 점진적으로 데이터를 알아가는 방식
(3) 공격 방법에 의한 분류
1) Form SQL injection
2) Union SQL injection
3) Stored SQL injection
" ; (연결함수)" 를 사용해 악성프로그램 실행
4) Mass SQL injection
대량의 js,swf,exe 함수 호출
(4) SQL 인젝션 대응방안
2. 크로스사이트 스크립트(XSS)
(1) 개요
검정되지 않은 외부 입력 값으로 인해 사용자의 웹 브라우저에서 의도하지 않은 스크립트가 실행될 수 있는 취약점, 클라이언트에서 접속자의 권한으로 악성 코드가 실행된다.
(2) 공격유형 및 대응책
3. CSRF(Cross site Request Forgery)
공격자는 정상 사용자로 위조한 요청을 올려서 공격자의 권한으로 문제를 발생시킴.
(2) 대책
4. 웹 로그 분석
(1) 요청
메소드 | 설명 |
GET | 리소스를 서버에 요청 |
POST | 리소스에 데이터를 전달하여 처리한 결과를 서버에 요청 |
HEAD | 리소스 없이 헤더 정보만 포함, 헤더값만 서버로 전송할 때, 검색엔진에서 사용 |
OPTIONS | 서버가 지원하는 메소드 확인 목적 |
CONNECT | 웹 서버를 프록시로, 터널링 목적 |
PUT | 요청한 데이터를 서버에 저장 , 사용안함 |
TRACE | 헬스체크 용도 |
DELETE | 요청 리소스 삭제 |
(2) 응답
5. 시큐어 코딩
분류 설명 공격종류 예제 1 입력데이터 검증 및 표현 입력값 검증 누락, 잘못된 형식지정 SQL 인젝션
Request. getParameter("user_id"); XSS <%=name%>
name=name.replaceAll("<","<") 2 보안기능 보안기능 비적절하게 구현된 보안 취약점 CSRF
재인증 메커니즘 없음
bank account account = new
재인증 메커니즘 도입
string new username = request.getparameter("username"); 중요 자원에 대한 잘못된 권한 설정 new file reader("/etc/passowrd/")
String cmd = "umask 77" 3 시간 및 상태 시간적 개념을 포함한 에러 레이스 컨디션 string name;
string name = hreq.getparameter("name) 4 에러 처리 에러처리를 불충분하게 처리하여 보안약점 발생 오류 메시지를 통한 정보 노출 e.printstack trace();(에러다보임)
System.out.println("예외발생"메시지로 프린트해서 보냄) 5 코드 오류 개발자의 코딩오류로 인한 약점 널(null)포인터 역참조 cmd = cmd.trim();
if (cmd !=null) 6 캡슐화 캡슐화 오류 잘못된 세션에 의한 데이터 정보 노출 String name = request.getparameter("name")
Private String name; 7 API 오용 보안에 취약한 API사용 DNS lookup에 의한 보안결정 if(addr.getcanonicalhostname().
if(ip.equals(trusted.addr) 입 보 시 에 코 캡 A
6. OWASP TOP 10
분류 예방 1 1 인젝션 데이터 DB에 올리기 전 필터링 실행
특수문자 신중히 처리
입력 데이터 충분한 검증 2 2 취약한인증과 세션관리 강력한 인증 방법 도입
로그인 타임아웃 설정 3 1 XSS 중요정보 쿠키에 저장하지 않기
불필요한 문자열 필터링
스크립트가 있는 경우 글 올리기 제외하기 4 안전하지 않은 객체 직접 참조 접근권한에 대한 서버 단 점검
입력창 대신에 드롭다운 형태의 메뉴 구성 5 2 보안상 잘못된 구성 소프트웨어 업데이트
정기적 스캐닝과 감사
불필요한 서비스/계정 등 제거하기 6 민감 데이터 노출 개인정보 암호화
강력한 암호화 알고리즘 사용
SHA-256 이상의 해시 알고리즘 사용 7 기능 레벨 접근통제 누락 어플리케이션 기능레벨 점검 및 통제
어플리케이션 일관성 정책 8 2 CSRF 세션에 고유한 토큰 값 생성하기
고유 토큰을 희든 필드에 포함시키기
재 인증 메커니즘 도입 9 알려진 취약점 구성요소 사용 컴포넌트 최신 업데이트
컴포넌트 정보 파악 10 검증되지 않은 리다이렉트와 포워드 리다이렉트와 포워드 사용 제한 안 보 민 인 크 크