Command Injection [4]

DATE : 2023/10/01

OS Command Injection - Blind

Command Injection [3]에서는 time delay를 유발함으로써

Blind Command injection 공격을 성공할 수 있었다.

[3]에 이어 [4]에서도 Blind Injection에 대해 다루어볼 건데

이번에는 redirection 개념을 활용한 Blind Command Injection 공격을 해볼 것이다!

Redirection

Redirection은 표준 출력 값을 원하는 경로로 이동 시키는 걸 말한다.

터미널에서 어떤 command를 실행하면 그 결과가 터미널에 출력되는 데

redirection을 하게 되면 설정한 경로로 결과가 들어가기 때문에 터미널에는 출력되지 않는다.

여느 때와 같이 LAB으로 들어가면 피드백을 보낼 수 있는 form을 볼 수 있다.

이름, 메일, 제목, 내용을 입력하고 "Submit feedback" 버튼을 누르면

위와 같은 packet이 만들어진다.

이번 LAB에서는 /var/www/images directory에 파일을 작성할 수 있다는 사전 정보가 있기 때문에

이 경로로 Command 결과를 redirection 시켜볼까 한다.

message parameter 부분에 추가한 내용은

whoami > /var/www/images/result.txt

whoami command의 결과를 /var/www/images directory에 result.txt라는 파일로 작성하라는 의미이다.

문제는 "images directory에 어떻게 접근할 것인가"인데..

feedback을 제출할 때는 /feedback/submit directory로 내용이 전달되는 데

이는 우리가 접근해야 하는 /var/www/images directory와는 동떨어져 있다. 😯

그래서 LAB에 있는 전체적인 구성을 다시 봐보니

메인 페이지에 있는 상품 POST가 눈에 들어온다.

다양한 상품 중 아무거나 눌러보면 총 2개의 packet이 지나가는 데

첫 번째 packet은

상품 ID를 productId로 보내는 request이고 두 번째 packet은

상품 이미지를 filename parameter로 보내는 request이다.

이때 눈 여겨볼 부분은 바로 request를 보내는 path!!

productId는 /product directory로 전달되고 filename은 /image directory로 전달된다.

이거다!! filename parameter 값을 조작해 result.txt 내용을 요청하는 packet을 보내자.

위에서 feedback form을 통해 whoami command 결과로 result.txt를 생성한 후

상품 POST를 요청하는 과정에서 filename parameter 값으로 result.txt 내용을 불러오면

response body 부분에 현재 username이 무엇인지 알 수 있다!!

다시 메인 페이지로 돌아가면~

성공적으로 LAB을 끝마칠 수 있다. 👏👏👏


이번 LAB은 Blind command injection attack을 실행하기 위해서

파일을 작성할 수 있는 다른 directory로 명령어의 결과를 redirection 하는 과정을 거쳤다.

Blind command injection 상태이기 때문에 whoami command의 결과를 확인할 수 없으므로

whoami command 결과를 확인할 수 있는 다른 경로로 output을 보낸 것이다.

LAB에서는 redirection 과정만 거쳤지만

사실 어떤 경로에 파일을 작성할 수 있는지 알아내는 거 또한 필요한 과정이다.

Last updated