웹 해킹 기본 학습

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("<","&lt;")

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 

 

검증되지 않은 리다이렉트와 포워드

리다이렉트와 포워드 사용 제한

안 보 민 인 크 크

 

+ Recent posts