R's Hacking Daily Log

OS Command Injection (1) - Lab (1) 본문

Port Swigger/Command Injection

OS Command Injection (1) - Lab (1)

hanhxx 2023. 6. 2. 09:27

Lab - OS command injection, simple case

OS command injection의 간단한 예시를 살펴볼 수 있는 lab을 한 번 풀어보도록 하자!

최종 목표는 command injection attack으로 whoami command를 주입하여 username을 획득하는 것이다.

 

 

Lab에 들어가면 여러 아이템들이 나열되어 있는 걸 볼 수 있는 데

 

 

하나를 클릭해보면 상품에 대한 이미지와 설명 밑에 "check stock"이라는 버튼이 눈에 들어올 것이다.

 

 

왼쪽에 있는 박스에서는 해당 상품이 있는 지점을 선택할 수 있고 

check stock 버튼을 누르면 사용자가 고른 지점에 상품이 몇 개 남았는지 출력해 준다. 

 

 

Check Stock 버튼을 눌렀을 때 서버로 날아가는 packet이 어떻게 생겼는 지 확인해 보자.

POST Method로 만들어진 packet에는 productID & storeID가 포함되어있다.

 

이 부분을 활용해 command injection attack을 할 것이다. 

서버에서는 ID 값인 3 & 2를 가져다가 재고를 확인하는 과정을 거치기 때문에 이 부분에 실행하고자 하는 

명령어를 입력해보고자 한다. 

 

 

storeId에 separator를 이용하여 whoami command를 연결해 준다.

 

이렇게 입력하면 서버는 productId와 storeId를 이용해 재고를 확인하고 나서 

whoami command를 실행시켜 총 2개의 명령어가 실행된 결과를 출력해 줄 것이다.

 

 

결과를 확인해 보면 London 지점에 남아있는 재고가 43개이고 현재 username이 peter-wQMWii라는 것을 알 수 있다.

 

 

** separator로 사용할 수 있는 문자가 항상, 모두 유효한 것은 아니다.

Command injection을 방지하기 위해 separator 문자를 차단하기 때문에 

이번 Lab의 경우에서는 "||, &, &&"와 같은 문자로는 원하는 결과를 얻을 수 없었다. 

'Port Swigger > Command Injection' 카테고리의 다른 글

Access Control - Lab (2)  (0) 2023.06.13
OS Command Injection (3) & Lab (3)  (0) 2023.06.04
OS Command Injection (2) & Lab (2)  (0) 2023.06.03
OS Command Injection (1)  (0) 2023.06.01
Command Injection  (0) 2022.11.17
Comments