기준

취약점 설명

웹에서 서버에 명령어를 전송하여 서버의 정보를 얻을 수 있는 취약점이며 서버의 관리자 권한을 탈취할 수 있는 심각하게 위험한 취약점입니다.

 

주통가이드에서 설명하고 있는 redirect와 같은 취약점 말고도 직접적인 명령어를 전달하거나 서버의 아이디 생성 및 서버 환경을 조작할 수 있을 만큼 심각한 취약점입니다.

 

이와 같이 운영체제 명령 실행은 백도어 설치 혹은 관리자 권한 탈취와 같은 취약점을 발생시킬 수 있는 취약점입니다.

공격 방법

공격 방법을 설명하기 위해 DVWA를 활용했으며 각 Level별로 별명 드리도록 하겠습니다.

페이지 UI는 각 단계별로 위와 동일합니다.

1. Low

위의 소스에서 보면 필터링을 거치고 있지 않는 것을 확인할 수 있습니다.

shell명령어를 받아오는 부분에 ping -c 4를 입력한 후에 사용자 입력 값이 삽입되는 것을 알 수 있습니다.

위 ping명령어가 실행된 후 ;를 사용하여 새로운 명령어를 실행시킬 수 있습니다.

127.0.0.1 ; cat /etc/passwd

위 명령어처럼 ; 를 활용하여 명령어를 나누고 2개의 명령어를 실행시킬 수 있습니다.

 

2. medium

medium level도 그렇게 다르진 않습니다.

&&와 ;를 필터링하고 있는 것을 확인할 수 있습니다.

여기에서 알 수 있는 것은 &&는 필터링하고 있으나 &를 단일로 필터링하고 있지는 않은 부분입니다.

  • ; - 앞의 명령어가 실패해도 다음 명령어가 실행
  • && - 앞의 명령어가 성공했을 때 다음 명령어가 실행
  • & - 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행
  • | - 앞의 명령어 실행 결과를 뒤의 명령어로 넘겨 실행
  • || - 앞의 명령어를 실행하여 앞의 명령어가 성공하면 뒤의 명령어가 실행되지 않음

위에서 처럼 다중 명령어를 사용하여 실행시키는 방법이 있습니다.

그럼 &를 단일로 써러 실행해보는 방법을 사용해 보겠습니다.

위처럼 &를 활용하여 실행이 가능합니다.

그럼 위의 다중 명령어를 활용하여 다른 방법도 사용해보겠습니다.

위처럼 |를 통해서도 실행이 가능합니다.

3. high

마지막 high level은 좀 더 많이 필터링하고 있는 것을 확인할 수 있습니다.

하지만 여기에서 주목해야할 부분은 |뒤에 띄어쓰기가 있는 부분입니다.

띄어쓰기를 인식하여 '| '를 필터링하는 것이지 |를 단일로 필터링하고 있는 것이 아닙니다.

그러면 지금까지와 비슷하게 명령어를 넣지만 띄어쓰기 없어 '|cat /etc/passwd'로 넣어보겠습니다.

이렇게 띄어쓰기만 없이 써도 필터링이 되지 않고 실행되는 것을 볼 수 있습니다.

 

------------------------------------------------------------------------------------------------------------------------------

 

물론 이것뿐만 아니라 ActiveX를 활용한 운영체제 명령 실행(RCE)도 가능한 경우도 있으며 CSV 파일을 이용한 Client Sode RCE 등 공격 방법은 다양하게 존재하고 있습니다.

+ Recent posts