반응형

Command Injection이란

  • 이름 그대로 사용자의 요청에 명령어를 삽입하여 실행하는 공격
  • 사용자가 제공하는 데이터가 적절히 검증되거나 escape 처리되지 않을 때 악의적인 명령이 시스템에 주입되어 실행되게 한다.
  • 이 취약점을 이용하여 시스템에 접근하거나 데이터를 조작하고, 심지어 시스템을 제어할 수 있다.

 

 

Command Injection 공격

Enter an IP Address 부분에 IP 주소를 입력하면 ping이 보내진다.

 

먼저 정상적인 IP 주소 1.1.1.1을 포함

&&는 쉘에서 "이전 명령이 성공적으로 실행된 후, 다음 명령을 실행하라"는 의미를 가지고 있기 때문에 cat /etc/passwd 명령이 실행되어 시스템의 사용자 계정 정보가 포함된 /etc/passwd 파일의 내용을 출력하게 된다.

 

위와 같이 공격자는 /etc/passwd 파일을 통해 시스템에 등록된 모든 사용자의 목록을 볼 수 있게 된다.

사용자가 시스템 명령을 입력할 수 있는 입력 필드에 악의적인 입력을 함으로써 시스템에서 실행될 수 있게 하며, 이를 통해 공격자는 시스템에 부당한 접근을 시도하거나 민감한 정보를 유출함

 

 

Command Injection 공격 방어

https://minii22.tistory.com/170

 

SQL Injection

SQL Injection이란일반적으로 공격자가 웹서버의 중요 정보를 탈취하기 위하여 가장 자주 사용하는 공격 방법 중의 하나사용자의 입력을 데이터 베이스의 쿼리에 반영되도록 구성된 시스템의 취약

minii22.tistory.com

전에 정리한 내용과 겹치는 부분은 위의 티스토리 참고

AWS WAF 사용자 정의 규칙

특정 조건에 따라 트래픽을 허용하거나 차단하도록 Regular rule 선택

 

 

Command Injection 공격을 차단하기 위한 3가지 설정(조건)

먼저 규칙의 모든 조건(문장)과 일치해야 해당 규칙의 조치가 적용되도록 설정(해당 방어 실습에서는 3가지)

 

  • Inspect: URI path
    • 요청의 URI 경로 부분을 검사
  • Match Type: Starts with string
    • 검사 대상이 특정 문자열로 시작하는지 확인
  • String to Match: /vulnerabilities/exec/
    • 이 문자열로 시작하는 요청을 검사 대상으로 함

=> 첫 번째 Statement는 웹 애플리케이션의 특정 경로(/vulnerabilities/exec/)로 시작하는 요청을 검사한다. /exec/와 같은 경로는 명령어 실행 기능을 내포하고 있을 수 있어, 공격자가 이 경로를 통해 시스템에 접근할 가능성이 높다.

 

 

 

  • Negate Statement: Enabled
    • 이 문장의 결과를 부정하여, 지정된 조건과 일치하지 않는 요청에 대해서만 다음 조건을 평가
  • Inspect: Body
    • 요청 본문을 검사
  • Content Type: Plain text
    • 본문의 내용이 일반 텍스트인 경우를 대상으로 함
  • Match Type: Matches regular expression
    • 정규 표현식에 매칭되는지를 평가
  • Regular Expression:
    • 특정 패턴의 텍스트를 식별하기 위한 복잡한 정규 표현식을 사용

=> 두 번째 Statement는 요청의 본문 내용을 검사하여 특정 패턴이나 위험한 명령어가 포함되어 있는지 확인

정규 표현식을 사용하여 복잡한 패턴을 찾아내어, 이를 포함한 요청은 차단함

 

 

 

  • Inspect: HTTP method
    • 검사할 HTTP 메서드를 지정
  • Match Type: Exactly matches string
    • 문자열과 정확히 일치하는지 확인
  • String to Match: POST
    • POST 메서드인 요청만을 대상으로 함

=> 세 번째 Statement는  HTTP 메서드가 POST인 요청만을 필터링 대상으로 함. 일반적으로 POST 요청은 데이터를 전송하는 데 사용되기 때문에 공격자가 악의적인 코드를 전송하기 위해 사용될 수 있다. 해당 조건을 통해 보안에 민감한 데이터 처리 부분에서 추가적인 보안 조치를 적용할 수 있다.

 

 

조건에 해당할 경우 block되며 설정한 html 화면을 띄운다.

 

룰이 성공적으로 저장되었는지 확인

 

다시 공격 진행

 

사용자 정의 차단 페이지와 함께 차단되는 것을 확인

 

관리형 규칙

https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-posix-os

 

Use-case specific rule groups - AWS WAF, AWS Firewall Manager, and AWS Shield Advanced

This rule only inspects the request body up to the body size limit for the web ACL and resource type. For Application Load Balancer and AWS AppSync, the limit is fixed at 8 KB. For CloudFront, API Gateway, Amazon Cognito, App Runner, and Verified Access, t

docs.aws.amazon.com

  • 로컬 파일 포함(LFI) 공격을 포함하여 POSIX 및 POSIX와 유사한 운영 체제에 특정한 취약성 악용과 관련된 요청 패턴을 차단하는 규칙이 포함
  • POSIX(휴대성과 호환성을 위한 유닉스 기반 표준 운영 체제) 또는 POSIX 유사 운영 체제를 대상으로 하는 취약점을 이용하는 요청 패턴을 차단하는 규칙을 포함

=> 공격자가 액세스해서는 안 되는 파일 내용을 노출하거나 코드를 실행하는 공격을 방지하는 데 도움이 될 수 있다.

우리가 진행한 command injection 공격은 서버의 /etc/passwd 파일이나 다른 중요한 시스템 파일에 접근하려고 시도하기 때문에 이러한 관리형 규칙 적용으로 해당 공격을 방어함

 

AWS-AWSManagedRulesUnixRuleSet 규칙이 정상적으로 생성되었는지 확인

 

다시 공격 진행

 

AWS 관리형 규칙 에 의해 차단되어 403 Forbidden 페이지가 출력되는 것을 확인

반응형

'Study > 클라우드' 카테고리의 다른 글

[AWS WAF] Brute Force  (0) 2024.11.05
[AWS WAF] Backdoor  (0) 2024.11.05
[AWS WAF] SQL Injection  (0) 2024.10.29
[AWS WAF] Stored XSS  (0) 2024.09.29
[AWS WAF] Reflected XSS  (0) 2024.09.29