command injection - 1

DH Park·2024년 6월 28일

서론

Command Injection은 이용자 입력을 시스템 명령어로 실행하게 하는 취약점으로, 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달 할 수 있을 때 발생한다.

시스템 함수(Linux - ls, PHP - System, Node.js - child_process, Python - os.system)를 사용하면 이용자의 입력을 소프트웨어의 인자로 전달할 수 있다.

;, &&, | 등의 문자를 이용하여 명령어를 연속으로 실행 시킬 수 있다.

문제 정보

문제 풀이

Ping을 보내는 기능이 있는 사이트로 추정된다.

input에 ip주소를 넣으면 서버가 ping을 보내는 기능을 하는 것 같다.
ping 테스트에 많이 활용되는 구글 DNS 주소인 8.8.8.8을 넣어보겠다.

위와 같은 결과가 출력된다.
다중 명령어를 이용하는 취약점을 도출하기 위한 문제인 것 같다.

처음에 설명한 시스템 함수를 같이 사용했더니 command injection 형식이 맞지 않다고 한다.

pattern 속성을 이용하여 형식을 지정하고 있었기 때문에 그런 것 같아 해당 속성을 제거하고 명령을 수행하였다.

error가 발생했다. 핑의 기능은 ping -c 3 "input 입력 값" 이라고 한다.

그래서 ""때문에 발생하는 에러를 우회하기 위해 위와 같이 작성하였다.

잘 전달된 것을 알 수 있다. 이제 flag.py를 확인해보자.

flag가 잘 나오는 것을 볼 수 있다.

profile
Web Deveolper / Offensive Security Consultant (Prev)

0개의 댓글