본문 바로가기
정보보안/모바일 점검

[웹고트설치및활용#1]

by 0pen3r 2022. 4. 12.
반응형

#도커설명

도커 git으로 이동하자

https://github.com/WebGoat/WebGoat

 

GitHub - WebGoat/WebGoat: WebGoat is a deliberately insecure application

WebGoat is a deliberately insecure application. Contribute to WebGoat/WebGoat development by creating an account on GitHub.

github.com

 

설치 방식은 1)도커, 2)jar파일, 3)소스기반 3가지가 권장된다. (github 공식 가이드 상)

가장 손쉬운 도커방식으로 해보겠다.

DockerHub 클릭해서 관련 페이지에 들어가주자

2일전에 업데이트되었고, 친절하게 명령어도 나온다.

 

#1 도커설치

해당 명령어 쓰기 전에 도커를 설치해줘야된다.

필자는 우분투 서버(20.04.2 LTS)를 기반으로 한다.

//리눅스 버전 확인
cat /etc/issue

//도커 설치
sudo apt install docker.io

 

설치 완료되면 테스트도 해볼겸 docker --help 입력해보자.

하기 내용 처럼 잘나오면 설치된거다.

 

#웹고트 설치

아까 봐둔 명령어를 써서 설치를 해보자

<명령어 방식>
docker image pull [옵션] 리포지토리명[:태그명]

// sudo 권한으로 웹고트 리포지토리 최신꺼 다운
sudo docker pull webgoat/webgoat:latest

// 설치확인
sudo docker image ls
=> 설치된 도커 이미지 확인

 

 

#웹고트 실행

설치 완료되면 실행하자

docker 옵션 일부 정리

포멧
docker run <옵션> <이미지 식별자*> <명령어> <인자>

컨테이너종료 : docker kill
컨테이너삭제 : docker rm

-i, -t 옵션 : 컨테이너 종료하지 않은 상태로, 터미널 입력 계속해서 컨테이너로 전달

-e 옵션 : 컨테이너 환경변수 추가 (다수 추가 시 -e 여러번 사용)

--name 옵션 : 이름 부여 후, 컨테이너ID 대신 이름으로 컨테이너 식별(삭제/종료 등)

-p 옵션 : 컨테이너 간의 포트/배포/바인드 활용
호스트에서 컨테이너가 리스닝하고 있는 포트로 포트포워딩 설정
127.0.0.1:1234:5678 -> 호스트:1234 접속 시, 컨테이너:5678 접속됨
(앞이 호스트 / 뒤가 컨테이너)


위 정보 바탕 커스텀 하겠습니다.
<기존>
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=Europe/Amsterdam webgoat/webgoat

<커스텀-실행 성공한 명령어>
sudo docker run -it --name goattt -p 0.0.0.0:5000:8080 -p 0.0.0.0:5001:9090 -e TZ=Europe/Amsterdam webgoat/webgoat

이름은 goattt로, 호스트 5000.5001이랑 바인딩, TZ는 타임존이겠쥬..? 걍 귀찮으니 유럽

뭐라뭐라 뜨쥬

근데 안되서.. 명령어 재조정해서 실행했습니다.(위 명령어에 반영)


(1)"127.0.0.1:포트:포트", (2)"0.0.0.0:포트:포트", (3)IP안붙이고 "포트:포트" 3가지로 테스트해봤는데

 

(1)"127.0.0.1:포트:포트" : 외부에서 접속 불가 / 127.0.0.1은 localhost니 우분투 내부에서 테스트 하기 적합하겠네요

 

(2)"0.0.0.0:포트:포트" : 외부에서 접속 가능 / 공인IP로 테스트하시려면 이렇게 명령어 주셔야 될듯

 

(3)IP안붙이고 "포트:포트" : 하기 부분에서 멈춰서.. 당황했는데.. 컴터가 느린거였습니다. 2번과 동일한 방식

 

#잘됩니다.

http://내도메인(또는 IP):포트/WebGoat/login

 

 

 

-끝이구요-

 

 

 

 

 

 

 

 

아래부터는 기타 내용입니다.




 

#웹고트 트러블슈팅 

 

운영팀에 있을때 트러블슈팅 주구장창 했습니다.

클라우드 대시보드에서 클라우드 보안 정책 체크해보고

우분투 iptables 방화벽 정첵 체크해보고

서버 리부트도 해보고

도커 옵션 재설정을 했는데 (1) /WebGoat/ 경로 명시를 안해서 안됬고, (2) 127.0.0.1로 설정하면 외부 오픈안되네요.

(이참에 도커 공부도 좀 해야겠습니다.)

 


#오라클 클라우드 우분투 서버 방화벽 설정

 

1-1. 오라클 클라우드 대시보드에서 설정(https://cloud.oracle.com/)

 

*경로 : 네트워킹>가상 클라우드 네트워크>호스트명-VCN>보안 목록 세부정보

 

 

1-2. 우분투에서 iptables 설정

우분투 중에 ifconfig 안되는 경우가 많다.

그럴땐 ip addr 명령어 쓰거나 / apt install net-tools 로 설치하자 그리고 방화벽 열어주자

// sudo iptables --list 로 조회하고 INPUT (라인) 설정해야됨
// 80,443,5000은 기존 있었음
// 정책 변경 후, netfilter 로 저장해야 / 재부팅 시 정책이 유지됨

순서1 (방화벽 등록)
sudo iptables -I INPUT 6 -i ens3 -p tcp --dport 5001 -m state --state NEW,ESTABLISHED -j ACCEPT

순서2 (정책 저장)
netfilter-persistent save
(없을 시 설치 apt install netfilter-persistent 또는 iptables-persistent)
(방화벽 정책 리로드 : netfilter-persistent start)


//net인터페이스 확인
ip addr

 

 

 

 

기타 옵션

출처 : https://linuxstory1.tistory.com/entry/iptables-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%B0%8F-%EC%98%B5%EC%85%98-%EB%AA%85%EB%A0%B9%EC%96%B4

 

 

***참조 : https://kibua20.tistory.com/124

 

Oracle Cloud 방화벽 설정 (http/https 특정 포트 열기)

오라클 클라우드에서 VM Instance를 Web server에 활용하기 위해서는 http/https 포트를 개방해야 합니다. 또는 네트워크를 사용하는 애플리케이션에 따라서 특정 포트를 허용해야 합니다. 오라클 클라

kibua20.tistory.com


#도커 명령어 모음

 

1. 컨테이너 조회

sudo docker ps (동작중 컨테이너 조회)

sudo docker ps -a (중지된 컨테이너도 조회)

 

2. 컨테이너 중지

sudo docker stop <컨테이너ID or 이름>

 

3. 컨테이너 삭제

docker rm 컨테이너ID, 컨테이너ID

docker rm `docker ps -a -q` (컨테이너 모두 삭제)

 

4. 이미지 삭제

docker images

docker rmi 이미지ID

 

5. 컨테이너 삭제 전 이미지 삭제

docker rmi -f 이미지ID (-f 옵션 붙이면 컨테이너도 강제삭제)

 

6. 컨테이너 시작

sudo docker start <컨테이너ID or 이름>

(재시작)sudo docker restart <컨테이너ID or 이름>

 

7. 컨테이너 접속

sudo docker attach <컨테이너ID or 이름>

 

 

728x90
반응형