웹 보안

[Dreamhack] command injection 복습

tree frog 2024. 5. 16. 18:29

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