본문 바로가기

보안

DVWA를 이용한 웹해킹 - 1(바인드쉘)

실습에서 사용될것은 먼저

서버(우분투)

클라이언트(칼리리눅스)

을 사용하였다.

그리고 취약점진단을 하기위해 DVWA라는 취약한 웹 어플리케이션으로 진행하였다.

DVWA의 보안레벨은 모두 LOW상태로 진행.

여러가지 취약점을 진행해볼수있게 준비되어있는데 먼저 해볼것은

File Upload을 이용한 백도어 이다.

클라이언트에서 서버로 접속하여

먼저 File Upload 칸으로 가보면

이렇게 서버에 올릴수있는 환경이 주어지는데.

먼저 확인을 위해 test.txt라는 아무의미없는 파일을 업로드해보았다.

보안레벨이 LOW라서 일부로 보여주는건가 싶을정도로 서버의 경로를 친절하게알려주는데..

이 취약점을 이용해서 사용할 스크립트는 b374k-2.8.php

라고하는 연구용 으로 배포되어있는 스크립트를 이용할것이다.

먼저 다운받기 위해 구글링을 통해서 다운받아보자.

이렇게 친절하게 준다.

하지만 다운로드 버튼을 못찾아서 Raw버튼을 누르면 전체 소스를 보여주는데

소스를 긁어서 붙혀넣기로 만들었다.

이제 나쁜일을 할 준비가되었으니

이 스크립트를 upload 시켜보자.

그후에 친절하게 알려준 서버의 upload 경로에서 내가 올린 스크립트b374k-2.8.php 실행시켜버리면

이렇게 서버측에 내가 올린 스크립트를 실행시킬수있다.

정말 많은 기능을 가지고있는데 서버가 가지고있는 파일을 볼수있고

그 파일을 수정할수있으며

Shell command 창에다가 내가 마치 서버인거처럼 명령어를 입력시킬수있다.

이제 원했던 백도어를 심어보자

rs 칸에 들어가서 Bind shell 을 시작하면되는데

바인드 쉘이란 서버측의 포트를 활성화시켜서 해커가 필요할때 그 포트로 접근하는것이다.

위의 이미지를보면

1513 이라는 내가 백도어로 사용할 포트를 입력하고 GO 클릭을하면 백도어가 만들어지고

이제 그때부터는 nc을 이용해서 마음대로 접속할수있다.

접속완료.

그럼 이제 서버측은 어떻게 이 바인드 쉘을 막을수있을까.

서버측의 보안을 담담하는

방화벽의 입장에서는 밖에서 안으로 들어오는것을 인바운드 라고한다.

즉 밖에서 안으로 접속하려하면 그걸 거부하면 된다는말이다.

먼저 sudo ufw enable 명령어를 이용해서 방화벽을 활성화 하였다.

sudo ufw status 명령어는 지금 방화벽 동작상태를 보는것인데 내가 명령한 활성화가 잘되어있는지

확인차 입력하였다.

sudo ufw status verbose 명령어는 방화벽의 룰을 보는것인데.

처음 이상태에서는 모든 포트에 활성화 시킨것이기때문에

어떠한 포트도 외부에서는 내부로 접속할수없다.

하지만 홈페이지를 운영해야하는 서버라면 클라이언트가 접속할수있는 포트는 활설화시켜줘야하는데.

이때 룰을 추가하여서 특정포트는 막지않겠다라는 설정을해줘야한다.

이제 나는 웹을 서비스해야하니 port 80 번은 막지않는다라는 정책을 allow명령어로 추가하였다.

sudo ufw status verbose 명령어로 방화벽의 룰을 보니 80번포트가 추가된게 보인다.

이제 80번포트로 외부에서 내부로 접근하는건은 허용하고

다른 모든 포트는 거부할것이다.

이렇게 바인드쉘을 막아보았다.