ysuekkom의 IT study note

[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기II -모의 웹 공격(SQL Injection, XSS Attack) 본문

Cloud Service/AWS

[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기II -모의 웹 공격(SQL Injection, XSS Attack)

ysuekkom 2022. 10. 30. 11:28

개인 공부 기록용

aws waf 공격 및 방어 실습 따라하기

(sessin.github.io)

 

I편 바로가기

https://ysuekkom8915.tistory.com/14

 

[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기I -실습 환경 구축

개인 공부 기록용 aws waf 공격 및 방어 실습 따라하기 (sessin.github.io) CloudFormation로 생성한 DVWA 웹 서버를 공격 대상으로하는 모의 웹 공격 실습을 따라해보자! -웹 어플리케이션: DVWA(웹 취약점에

ysuekkom8915.tistory.com

 

I편에서 구축했던 실습 환경을 바탕으로 모의 웹(SQL injection) 공격을 진행해보자. 

 

# SQL Injection

데이터베이스와 연동된 응용 프로그램에서 "입력된 데이터에 대한 유효성 검증"을 하지 않을 경우, 공격자가 입력 데이터에 SQL 쿼리문을 삽입하여, DB로부터 정보를 열람하거나 조작할 수 있는 보안 취약점.

 

step1. 쿼리를 조작할 수 있는 문자열 입력

 a' or 'a' = 'a

admin' --

admin' #

 

''는 문자열로 인식된다, #이하는 주석처리 되기 때문에 무시되고, 

 

''는 문자열로 인식된다, #이하는 주석처리 되기 때문에 무시되고, 

ID 입력값은 'test' or '1' ='1'이 된다.

여기서, 실제 디비에 있는 user의 아이디 중에, test가 없다고 하더라도 OR구문으로 인해 1=1이 True의 결과값을 가져온다.

True의 결과값을 가져 올 경우, 디비의 가장 윗 줄로 연결하여 admin  계정을 탈취할 확률이 높다.

(디비 셋팅 시, admin 계정이 가장 위에 올라올 가능성이 높기 때문에)

 

step2. 공격자가 조작된 요청을 웹 서버로 요청, 웹서버는 DB 쿼리 실행 

-인가되지 않는 사용자가 DB 데이터를 무단으로 수정 혹은 조회 삭제할 수 있음

 

step3. 웹서버가 공격 결과를 공격자에게 전달

 

>>실습에 사용되는 구문은 가장 기본적인 SQL Injection 구문 중 하나로, 현재 사용되는 대부분의 웹 서비스는 이와 같은 간단한 SQL 구문에 대해서는 취약점 조치를 수행했을 것.

 

 

>DVWA > SQL Injection > User ID: ' OR 1=1 # 입력

 

>여러 계정정보 확인 가능(탈취)

 

 

#XSS Exploit

 XSS(교차 사이트 스크립팅) 공격은 취약한 웹 응용프로그램에서 악성 코드를 삽입하는 공격기법이다. XSS는 웹 어플리케이션이 대상이 아닌 일반 사용자 대상의 취약점 공격이다.

XSS 공격 성공 시, 세션 쿠키가 노출되어 공격자가 사용자의 계정을 탈취할 수 있다. 사용자를 가장하여 계정을 사용할 수 있으며, 가장 많이 알려진 트로이목마 프로그램등을 사용하여 사이트 컨텐츠를 수정. 사용자의 민감한 정보를 제공하는 등의 속임수가 가능해진다.

 

공격자가 XSS 공격으로 웹사이트를 손상시키는데 사용하는 방법

 -로그인 양식 등 사용자 입력을 요구하는 웹사이트 기능 타겟팅(사용자가 사이트 로드 시 마다, 악성코드를 실행시킴)

 -다른 도메인의 악성코드

 -세션 훔치기(민감 정보) 

 

XSS 취약점의 영향

 취약점은 애플리에키션 유형에 따라 달라지며, 다음 세 가지 유형이 있다. 

-정적 컨텐츠(사용자가 익명으로 관리되어 최소한의 영향)

-민감한 데이터(큰 피해 유발)

-권한 있는 사용자(프로그램을 완전히 제어할 수 있어 모든 데이터에 대한 신뢰도를 잃으며, 가장 위험한 상태)

 

더 자세한 내용 확인> OWASP (https://owasp.org/www-community/attacks/xss/)

 

>DVWA XSS(Reflected) > User ID: <script>alert(document.cookie)</script> 입력 

경고창 안내되며, 아래 코드와 같이 Hello 출력 확인

 

 

취약점에 적용된 소스 코드

<?php


header ("X-XSS-Protection: 0");


// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}


?>

 

 

다음 포스팅에서는 AWS WAF(Web Application Firewall)을 설정하여 이번 포스팅에서 진행했던 공격테스트를 동일하게 진행, 

차단이 되는지 확인할 예정이다. 

또한, 로깅기능을 사용하여 로그를 확인해 볼 예정이다.