R's Hacking Daily Log

OS Command Injection (3) & Lab (3) 본문

Port Swigger/Command Injection

OS Command Injection (3) & Lab (3)

hanhxx 2023. 6. 4. 15:24

Exploiting blind OS command injection by redirecting output

이번에 살펴볼 내용은 Blind OS command injection 기술 중 Redirection과 관련되어 있다. 

 

여기서 말하는 Redirection이란, 

어떤 데이터가 저장되는 원래 위치가 아닌 사용자가 임의로 지정한 곳으로 데이터가 지정되도록 

위치를 변경하는 것을 말한다. 

 

기본적으로 사용자가 만든 파일이 현재 directory에 저장된다고 할 때

현재 directory가 아닌 다른 directory에 파일이 저장되도록 하는 게 redirection의 예시가 될 수 있다.

 

 

현재 사용자가 /root/bandit directory에 위치해 있고 hello.txt file을 하나 만들고자 한다. 

" > " command를 이용해서 파일을 만들었더니 현재 directory에 파일이 생성된 걸 볼 수 있다.

 

 

하지만 사용자가 현재 directory가 아닌 다른 경로에 파일을 저장하고 싶다고 한다면

" > " command 뒤에 파일명을 입력할 때 저장하고자 하는 경로를 지정함으로써 /root/bandit이 아닌

/root/Documents directory에 파일을 저장시킬 수 있다. 

 

 

 

Lab - Blind OS command injection with output redirection

이번 Lab에서는 redirection 개념을 활용해 Blind OS command injection attack을 수행해야 한다.

:) feedback 기능에 os command injection 취약점이 있는 서버.

:) 서버에서는 사용자가 입력한 정보를 바탕으로 shell command을 실행한다. 

:) command를 실행한 결과는 그 어떤 response로도 제공되지 않는다.

앞에서 풀어본 Lab과 동일한 상황에서 다음과 같은 조건이 추가된다고 보면 된다.

 

 

:) 서버는 /var/www/images directory에서 상품의 카달로그 이미지를 가져와 출력한다. 

:) 공격자는 이 directory에 파일을 작성할 수 있으며

:) url을 통해 directory 안에 있는 데이터를 조회할 수 있다.

 

이런 상황에서 공격자는 > command를 이용해 whoami command의 결과를 파일에 저장하고 

결과를 확인하기 위해 image를 얻어오는 url 값을 조작할 수 있다.

 

 

 

Lab에 들어가서 feedback을 보내는 부분은 이전 Lab과 동일한 과정이니 생략하도록 한다. 

feedback을 보내면 위와 같은 packet이 만들어진다. 

 

이때 whoami command를 주입하는 데,

중요한 것은 이전 Lab과는 달리 whoami command 결과를 /var/www/images directory 안에 whoami.txt file

저장한다는 것이다. 

 

서버에서 command를 실행한 그 어떤 결과도 response로 보여주지 않는다고 했기 때문에 

사용자 입장에서 접근이 가능한 directory에 command output을 파일 형태로 저장한 것이고 

 

 

다시 home page로 돌아가면 상품 이미지를 쭉 가져오는 packet들이 날아가는 데 

이 중 하나를 가로채서 

 

 

공격자가 redirection한 파일 이름을 적어준다.

이렇게 되면 서버는 기본 경로인 /var/www directory 경로에서 /image directory로 들어가

filename이 whoami.txt인 파일 내용을 출력하는 과정을 수행하게 된다. 

 

 

그 결과로 현재 user name이 peter라는 걸 알게 됐다. 

 

 


지금까지 살펴본 redirection을 수행하기 위해선 > command를 사용할 수 있다. 

> command는 자신보다 선행된 command의 결과를 자신을 뒤따르는 경로에 넣어!라는 의미로 해석하면 된다.

 

 

cat > hello.txt

사용자가 입력한 내용을 hello.txt file 안에 넣어라. 

이때 hello.txt 이름을 가진 파일이 없으면 새로 생성하고, 이미 존재한다면 덮어쓰기 한다. 

 

파일 이름만 작성한다면 현재 directory에 파일이 저장되고 

directory 경로를 작성했다면 해당 directory에 파일이 저장된다. 

 

 

cat > /root/Documents/hello.txt

따라서 위의 명령은 root directory 안에 있는 Documents directory에 hello.txt file을 만들어 저장하게 되는 것이다. 

 

 

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

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