일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 쉘스크립트
- linux명령어
- 직무분리
- aws기초
- aws따라하기
- terraform기초
- aws기본
- terraform with aws
- 리눅스기초명령어
- aws
- AWS CodeDeploy
- 리눅스명령어
- AWS구축
- blue/green배포
- AWS실습
- opt/anaconda3/bin/jupyter_mac.command
- 주피터노트북 설치
- terraform기본
- AWS배포자동화
- cissp
- 리눅스
- 리눅스기초
- Linux
- Cissp sdlc
- 최소권한
- aws terraform
- AWS CI/CD
- terraform따라하기
- GDPR
- AWS 공격테스트
ysuekkom의 IT study note
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기II -모의 웹 공격(SQL Injection, XSS Attack) 본문
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기II -모의 웹 공격(SQL Injection, XSS Attack)
ysuekkom 2022. 10. 30. 11:28개인 공부 기록용
aws waf 공격 및 방어 실습 따라하기
(sessin.github.io)
I편 바로가기
https://ysuekkom8915.tistory.com/14
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)을 설정하여 이번 포스팅에서 진행했던 공격테스트를 동일하게 진행,
차단이 되는지 확인할 예정이다.
또한, 로깅기능을 사용하여 로그를 확인해 볼 예정이다.
'Cloud Service > AWS' 카테고리의 다른 글
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기 V -AWS 자원 삭제하기 (0) | 2022.10.31 |
---|---|
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기 IV - 특정국가 유발 트래픽 차단(custom rule 적용) (0) | 2022.10.31 |
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기III -WAF 설정, 공격 차단 (0) | 2022.10.30 |
[AWS 실습] 공격 테스트 대응 WAF 설정 및 로깅 확인하기I -실습 환경 구축 (0) | 2022.10.26 |
[AWS] EC2 인스턴스 연결 및 도커 생성, 시작하기 워드프레스 이미지 생성하기 (0) | 2022.10.17 |