command injection
-인젝션은 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어 코드, 데이터베이스, 쿼리 등으로 실행되게 하는 기법을 말합니다.
- 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달 할 수 있을 때 발생.
메타문자
'' - 명령어 치환 - 안에 들어있는 명령어를 실행한 결과로 치환됩니다.
$() - 명령어 치환 - 안에 들어있는 명령어를 실행한 결과로 치환됩니다. 이 문자는 위와 다르게 중복 사용이 가능합니다.
&& - 명령어 연속 실행 - 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행합니다.
ㅣㅣ - 명령어 연속 실행 - 한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. 앞 명령어에서 에러가 발생해야 뒷 명령어를 실행합니다.
; - 명령어 구분자 - 한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다.
서버를 생성해서 사이트에 접속해보면 /ping 명령어를 통해 host에 ping 패킷 전송을 수행하는 것을 알 수 있다.
cmd 변수는 사용자로부터 입력받은 host 값을 포함하고 있는데 사용자의 입력을 그대로 명령어로 실행하기 때문에, 사용자가 악의적인 공격 코드를 주입할 수 있다. --> Command Injection 공격
host = '8.8.8.8"; ls #' -> cmd = 'ping -c 3 "8.8.8.8" ls #" ' 문자열을 가지게 됨.
pattern 값을 다 삭제해준다.
cat 명령어를 이용한다.
ping 보내면 성공!
'웹 보안' 카테고리의 다른 글
[Dreamhack] File Vulnerability 복습 (0) | 2024.05.16 |
---|---|
5/7 최신동향 (정형,비정형 데이터 가명처리) (0) | 2024.05.13 |
Dreamhack 워게임 (session) (0) | 2024.04.02 |
Dreamhack 워게임 (pathtraversal) (0) | 2024.04.02 |
Dreamhack (web-ssrf) (0) | 2024.03.28 |