본문 바로가기

Hack The Box CBBH

Command Injection - Injecting Commands

728x90
반응형

앞 서 Host Checker 웹 애플리케이션이 Command Injection에 취약할 수 있다는 점과 이를 악용하기 위한 삽입 방법에 대해 알아봤다. 이제 ; 를 통해 Command Injection을 사용하려 한다.

https://securitas.tistory.com/27

 

Command Injection - Detection

기본적인 OS Command Injection 취약점을 탐지하는 과정은 이러한 취약점을 악용하는 과정과 동일하다. 다양한 방법으로 입력값을 조작해 명령어를 추가로 넣어본다. 추가한 명령어 때문에 출력이 평

securitas.tistory.com


127.0.0.1 IP 뒤에 세미콜론을 추가하고 명령어 whoami를 추가해 삽입 페이로드를 작성할 수 있다. 최종적으로 해당 웹 애플리케이션에서 실행되는 명령어는 다음과 같다.

ping -c 1 127.0.0.1;whoami

먼저, 해당 명령어가 실제로 실행되는지 확인해보면

┌──(kali㉿Acricks)-[~]
└─$ ping -c 1 127.0.0.1;whoami
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.014 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.014/0.014/0.014/0.000 ms
kali

위 결과를 보면 ping과 whoami가 실행되고, 각각의 출력이 표시된 것을 확인할 수 있다. 이제 이 페이로드를 Host Checker 웹 애플리케이션에서 적용할 수 있다.


Host Checker 웹 애플리케이션에 127.0.0.1;whoami 페이로드를 입력하면 애플리케이션이 입력값을 거부하며 오류 메시지를 출력한다. 이는 입력값이 IP 형식이어야만 허용되는 것을 확인할 수 있다. 그러나 오류 메시지를 보면 백엔드가 아닌 프런트엔드에서 발생한 것으로 보인다. F12 개발자 도구 Network 탭에서 Check 버튼을 눌렀을 때 Request가 발생하지 않았다. 이는 이 검사가 프론트엔드에서 이루어지는 것을 확인할 수 있다.

오류 메시지
Request가 발생 안함

프론트엔드 검증은 사용자가 악의적인 페이로드를 보내지 못하도록 막기 위한 방어책이다. 그러나 개발자들은 프론트엔드에서만 입력 검증을 수행하고, 백엔드에서는 검증이나 필터링을 하지 않는 경우가 많다. 이는 다음과 같은 이유로 발생한다.

  • 프론트엔드와 백엔드가 다른 팀에서 개발됨
  • 프론트엔드 검증만으로 충분하다고 잘못 판단

하지만 프론트엔드 검증만으로는 Injection 공격을 막기에 충분하지 않다 이는 HTTP 요청을 직접 백엔드로 보냄으로써 쉽게 우회할 수 있다.

 


HTTP 요청을 백엔드로 보낼 때, 이를 수정할 수 있는 가장 쉬운 방법은 웹 프록시(Ex: Burp Suite)를 사용하는 것이다.

해당 Request를 보면 ip=127.0.0.1로 되어 있는데, ip=127.0.0.1;whoami로 변경해서 보내면 된다.

Payload 변경

그러고 Forward를 누르게되면 결과가 달라진 것을 확인할 수 있다.

위 사진에서 ping 명령어와 whoami 명령어 출력이 포함된 것을 확인할 수 있다. 이는 삽입된 명령어가 실행된 것을 확인할 수 있다. 이처럼 프론트엔드 검증만으로는 명령어 삽입을 막기에 충분하지 않으며, HTTP 요청을 직접 조작해 손쉽게 우회할 수 있다.

728x90
반응형

'Hack The Box CBBH' 카테고리의 다른 글

CBBH[Certified Bug Bounty Hunter]  (0) 2025.02.05
XSS - Intro [HTB]  (0) 2025.01.13
Command Injection - Detection  (0) 2024.12.09
OS Command Injection  (0) 2024.12.09
[Intro] Command Injection  (0) 2024.12.02