본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(61일차)

by Challenge programmers 2024. 1. 30.

오늘 학습 주제

1. 웹 모의해킹 개론

2. 웹 브라우저

3. 웹 어플리케이션 트랜드

4. SQL Injaction

 

 

웹 모의해킹 개론


- 웹서비스 동자 구조 -

사용자(브라우저)가 요청을 하면 

방화벽 > 웹 서버 > 웹 어플리케이션 > DB에 요청이 전달

 

 

- HTTP Method -

PUT과 Delete는 현재 사용이 거의 없음

점검 시에는 정상적인 파일을 PUT으로 저장하고

Delete로 저장한 파일 삭제

 

 

- 세션과 쿠키 -

세션은 변조를 통해 권한 등에 영향을 주기 때문에 보안 코딩 적용

쿠키는 변조가 있어도 큰 영향이 없기 때문에 편의성 위주의 관리

 

 

 

 

 

웹 브라우저


- 웹 브라우저 -

브라우저마다 사용하는 엔진이 다르다

 

 

- 웹 브라우저 -

브라우저마다 사용하는 엔진이 다르다

 

 

 

 

 

 

 

웹 어플리케이션 트랜드


- Ajax -

JavaScript와 XML을 이용한 비동기적 정보 교환 기법

 

 

- WebSocket -

브라우저와 서버가 양방향 통신을 할 수 있도록 지원

다가올 미래의 기술로 HTML5의 기술 중 하나

 

 

 

 

취약점 점검 기준


- OWASP -

2004년부터 3년에 1번씩 10대 취약점 발표

웹 보안에 관심 있는 기업 및 개인이 함께 참여하는 프로젝트

 

 

- 주요정보통신기반시설 웹 취약점 -

현재 잘 사용하고 있지 않는 취약점도 존재

 

 

- 금융보안원 금취분평 -

위험도가 다양한 평가 항목이 존재

취약점이 디테일하다

 

 

 

 

SQL Injection


- Union SQL Injection -

Union 연산자로 기존의 Select 쿼리에 추가로 쿼리를 삽입하여 데이터를 출력

출력하는 칼럼 수가 동일해야하고

칼럼은 각 순서별로 동일한 데이터형 이어야 사용 가능

 

 

- 절차 -

[칼럼 수 확인] 

ex. ORDER BY 3 --'  

 

[칼럼 데이터 형 추출]

데이터 타입을 바꿔서 삽입하여 데이터 타입 화인

 

[데이터 탈취]

FROM ALL_TABLES--을 통해 테이블의 모든 정보 확인

테이블 네임을 확인했으면 해당 테이블의 전체 칼럼명 확인

blueborne

 

 

- 대응 -

해당 공격을 자동화하여 공격하는 툴이 존재

 

SQL Injection 방지 처리(Prepared Statement 사용, 입력값 검증 처리 등)

 

 

 

- Error Based SQL Injection -

의도적으로 발생시킨 에러페이지와 SQL Injection을 결합하여 정보를 탈취

에러 페이지에서 노출되는 정보를 이용

단순 에러 메시지가 아닌 서브쿼리 실행결과가 포함된 에러 메시지를 공격에 사용

 

 

 

- 절차 -

[공격 가능 여부 확인] 

UTL_INADDR.GET_HOST_NAME(원하는 쿼리 내용)

CTXSYS.DRITHSX.SN(user, (원하는 쿼리 내용))해당 함수를 포함하여 공격에 사용가능한 함수를 이용

 

 

[테이블 개수 확인]

Select Count(Table_name) From ALL_TABLES

(테이블의 목록 개수 확인)

 

SELECT TABLE_NAME FROM

(SELECT TABLE_NAME, ROWNUM AS RNUM FROM ALL_TABLES)

WHERE RNUM=1

(숫자를 바꿔가며 테이블의 이름 확인

같은 방식으로 테이블 내의 칼럼 확인)

 

 

[데이터 탈취]

' AND CTXSYS.DRITHSX.SN(user,(SELECT COLUMN_NAME FROM

(SELECT COLUMN_NAME, ROWNUM AS RNUM FROM ALL_TAB_COLUMNS

WHERE TABLE_NAME='LHSMEMBER3') WHERE RNUM=12))=1--

숫자를 바꿔가며 특정 칼럼의 데이터 출력 확인

 

- 대응 -

해당 공격을 자동화하여 공격하는 툴이 존재

 

SQL Injection 방지 처리(Prepared Statement 사용, 입력값 검증 처리 등)

Default 에러 메시지를 사전에 정의된 에러 메시지 창으로 대체

Debugging용 에러 메시지 창은 실 서버용 소스코드에서는 제거