[5] docker에 대한 무작위대입공격 모의해킹
- 2022.08.22 -
해당 블로그의 내용에는 실제로 해킹을 하는 과정이 언급되어 있습니다.
모의 해킹의 환경은 100% 사용자가 통제가 가능한 상황에서 실습을 진행하였으며
불법적인 해킹이 아닌 모의 해킹으로써 해킹의 목적이 오롯이 교육의 성격에 초점이 맞추어져 있습니다.
본 과정을 악용하여 사용하는 2차 피해에 대해서는 행위자가 법적 책임을 질 수 있으며
일어나는 모든 피해에 대해서는 책임지지 않습니다.
구축 환경
가상 시스템 - 역할 - 운영기반
KALI - Attack - Debian GNU
docker - Victim - Linux
IP 목록
Host - IP Address
KALI - 192.168.206.131
docker - 192.168.206.132
시나리오 내용
docker내 설치된 워드 프레스의 관리자 계정을 wpscan을 이용해 무작위대입공격을 통해 아이디와 비밀번호를 찾아내 로그인한다. 위와 같은 과정을 msfconsole에서도 반복한다.
실습 시작

docker를 실행해보면 serer IP주소만 노출이 되고 다른건 나와있지않는다.
확인 가능한 IP주소는 192.168.206.132이다. 이 IP는 실습하는 환경마다 IP주소가 다 다르니 꼭 확인하자!

도커란?
리눅스 컨테이너 기술을 자동화해 쉽게 사용할 수 있도록 한 오픈소스 가상화 플랫폼이다.

해당 IP 192.168.206.132로 접속해 보았다.
사이트에 연결할 수 없다는 문구가 나왔다.
그럼 인터넷으로 접속되는 포트 (80번)가 아니라는 건데.. 열려있는 접속 가능한 포트를 스캔해봐야 알 수 있을 것 같다.

칼리에서 nmap을 이용해 포트스캔을 해보았다.
네모 박스를 보면 열려있는 포트가 나열된다. 역시 80번포트가 열려있지않고 22번 포트와 8000번 포트로 http가 열려있는것을 확인 할 수 있다.

다시 돌아와서 8000번 포트로 접속해 보았다. 결과는 성공~ 희희

칼리로 돌아와 dirb를 이용해서 하위 디렉토리를 검색한다.
dirb는 커맨드 기반의 웹 디렉토리, 히든 파일을 검색하는 도구이다.
Dirbuster에 비해 프로그램이 가볍고 검색속도가 빠르다는 장점이 있다.
dirb는 별도의 다운로드 없이 dirb명령어를 입력하면 바로 실행 할 수 있다.
dirb는 명령어 뒤에 Target URL 주소를 입력하면 분석을 실행할 수 있다.
심도 있는 탐색을 원하면 딕셔너리 파일 경로 혹은 확장자 등을 -X옵션과 함께 사용하면 가능하다.
sudo dirb http://192.168.206.132:8000
탐색된 디렉토리들을 모두 확인 할 수 있다.
가장 밑의 Testing : @@@ 으로 보면 무작위로 사전대입을 통해서 매칭시키는 것이다.
--> Testing: http://192.168.206.132:8000/platz_login
붉은 색 굵은 글씨체가 대입하여 디렉토리 하위폴더를 찾는다.
해당파일(*.txt)의 절대경로는 맨 위에 WORDLIST_FILE에 나와있다.

nmap도구를 이용해 대상에 대해 최대한 스캔을 많이 한다.
각각 스캔도구들이 스캔하는 뎊스가 모두 다르기에 여러가지를 사용하면서 서치해보는것이 좋다.
sudo nnmap -sV -sC 192.168.206.132
해당 명령어를 통해서 8000번 포트에 있는 여러가지 다른 정보들을 찾아낼 수 있었다
보면 wordpress 4.8.1버전이 설치되어있는 것을 알 수 있는데 현재 가장 최신버전은 6.0.1로 구버전이 구축되어있는것을 확인할 수 있다.
최신버전이 아닌 구버전의 워드프레스는 최신버전에서 패치되지못한 각종 취약점에 노출되어있다.
웹 해킹에 가장 취약해지는 주요 원인은 최신업데이트의 부재인데 마냥 최신버전이 무조건 좋다 할 수 있는 것은 또 아니다.
최신버전이더라도 다른 플러그인과 다른 도구들과 호환성이 되려 떨어질 수 있고 잘못하면 특정 기능이 작동하지않는 장애가 발생할 수도 있다.
장애는 서버에 큰 데미지를 준다
따라서 적당한 시기에 특정 버전에 대해 대응하는 업데이트가 나오게되면 같이 올라가는것이 가장 좋은 방법이고 오랫동안 업데이트가 없는 툴이나 모듈은 다른 것으로 대체하거나 대응방안을 강구 해야한다.

nikto 스캔도 같이 이용해 보았다.
sudo nikto -h http://192.168.206.132:8000
nikto의 -h 옵션은
HOST의 약어로 호스트 타겟 주소를 일컺는 말이다.

다음은 wp scan을 이용해보았다.
wpscan은 워드프레스를 스캔하는 전용(?) 느낌의 스캐너이다.
뒤에 있는 --enumerate 는 옵션을 추가해서 사용한다는 의미로 p의 옵션을 사용해 스캔한다.
p는 Popular plugins이란 뜻을 능동적으로 스캔한다.
sudo wpscan --url http://192.168.206.132:8000/ --enumerate p

뒤이어 wp scan의 u옵션도 같이 사용한다.
u는 User ID를 스캔하는 옵션으로 사용자 정보로 스캔한다는 의미이다.
sudo wpscan --url http://192.168.206.132:8000/ --enumerate u

스캔이 끝나면 bob라는 계정이 나온것을 확인할 수 있다.
빨간색의 밑줄 친 링크를 복사해 브라우저로 접속하면 json형식으로 열람할 수 있다.

위에서 확인된 링크를 복사해 들어가면 json으로 볼 수있는 항목이다.

u옵션을 통해 계정 이름을 찾았으니 이제 접속할 패스워드를 찾아야한다.
무작위대입공격을 통해 해당 계정에 대해 비밀번호를 찾아보자.
sudo wpscan --url http://192.168.206.132:8000/ --username bob --passwords /home/kali/SecLists/Passwords/Common-Credentials/10-million-password-list-top-10000.txt
칼리에서 가지고있는 사전파일을 이용해서 대입해본다. 여러 개수가 들어있는 파일이 있는데 너무 오래걸리면 안되기에
10000개가 있는 파일을 이용해본다.
경로작성은 직접 작성했다. 오타가 있을 수 있으니 무조건 복붙보다는 명령어와 tab키를 이용해 자동완성을 이용해서 경로작성을 완성하자. :)

새로운 터미널을 열고 깃허브에 있는 해당 git파일을 가져온다.
sudo git clone https://github.com/danielmiessler/SecLists.git

Trying bob / 147852 Time: 00:00:08 <====
으로 빨간색 밑줄을 보면 bob계정에 대해 10-million-password-list-top-10000.txt에 있는 모든 비밀번호를 대입하고 있다.

조금 기다려보면 패스워드가 매칭된것을 확인 할 수 있다. 계정 정보는 네모박스안에서 확인 할 수 있다.
Username : bob
Password : Welcome1

워드프레스의 로그인 경로로 접속해서 위에서 알아낸 계정 정보로 로그인을 시도해본다.

우측 상단에 네모박스를 보면 bob계정명으로 로그인이 된 것을 확인 할 수 있다.
[msfconsole]

조금전에는 wpscan을 활용해 무작위대입공격으로 계정정보를 알았다면 이번에는 msfconsole을 이용해본다.
msfconsole의 시작 모습은 시작할때마다 다르고 재밌게 나와서 실행하는 재미가 있는 프로그램이다.
sudo msfconsole

wp에서 모듈을 서치해본다.
서치할 항목은 wordpress_xmlrpc 이다.
search wordpress_xmlrpc

로그인과 관련된 모듈을 사용할 것이기에 0번을 사용하고 해당 모듈의 옵션을 보기위해 show options을 사용한다.
use 0
show options
set RHOST 192.168.206.132 //IP주소는 docker IP로 입력
set RPORT 8000
set PASS_FILE /home/kali/SecLists/Passwords/Common-Credentials/10-million-password-list-top-10000.txt
set USERNAME bob
set THREADS 10
set STOP_ON_SECCESS true
exploit
set RHOST로 타겟의 IP주소.. 그러니까 우리는 docker의 IP를 입력해준다.
set RPORT는 목적지 포트.
즉, 이 docker는 22,8000번 포트만 열려있고 현재 접속이 가능한 8000번 포트로 입력한다.
set PASS_FILE 은 패스워드 파일이 있는 절대경로를 입력해주면된다. 조금전 10-million-password-list-top-10000.txt 의 절대 경로를 입력해준다.
set USERNAME은 계정 이름인 bob입력
set THREADS는 쓰레드는 10으로 지정한다.
set STOP_ON_SUCCESS는 true로 설정 지정한다. 사진상에서는 CC를 VV로 오타를 내는 상황이 생겼지만.. ㅋㅋㅋ
실제로는 잘 입력하면 된다.
그리고 마지막 공격 exploit!

그리고 exploit을 하면 해당 주소와 bob에 대해 무작위 공격을 시작하는 것을 확인 할 수 있다.

최종적으로 bob에 대한 Welcome1이라는 비밀번호를 매칭성공한 것을 확인할 수 있다.
[+] 192.168.206.132:8000 - Success: 'bob:Welcome1'
마찬가지로 해당 msfconsole에서도 무작위대입을 통해 확인 할 수 있다. :)
마 치 며
아직 까지는 하나 딸랑 주고 해봐라 하면
크게 감을 잡기까지 시간이 오래 걸릴 것 같다.
그래도 다시 하나하나 복습해가며 전체적인 틀을 이해하는데에는 큰 도움이 되는 것 같다.
하면 할 수록 더 큰 재미를 느끼는게 취약점 분석과 모의해킹영역인것 같다.
낯설고 실행하면 마치 엄청난 해커가 된것만 같았던 msfconsole화면도
자주 실행하니 인트로 로고 보는 재미도 있고 흥미롭다. ㅋㅋ
계속 삽질한다. 언젠간 보석이 나오겠지.
'Red Team > Penetration Testing & CTF' 카테고리의 다른 글
| [7] CTF:Breakout user,rOOt 텍스트 모의해킹 (0) | 2022.09.01 |
|---|---|
| [6] Earth리눅스 취약점 분석 및 모의해킹(w. vulnhub) (0) | 2022.08.27 |
| [4]OpenSSL 취약점을 이용한 Heartbleed 모의해킹 (0) | 2022.08.19 |
| [3] Nessus를 활용한 Metasploitable2에 대한 samba취약점 해킹 (0) | 2022.08.19 |
| [2] hfs 취약점을 이용한 모의해킹 (0) | 2022.08.04 |
댓글
이 글 공유하기
다른 글
-
[7] CTF:Breakout user,rOOt 텍스트 모의해킹
[7] CTF:Breakout user,rOOt 텍스트 모의해킹
2022.09.01 -
[6] Earth리눅스 취약점 분석 및 모의해킹(w. vulnhub)
[6] Earth리눅스 취약점 분석 및 모의해킹(w. vulnhub)
2022.08.27 -
[4]OpenSSL 취약점을 이용한 Heartbleed 모의해킹
[4]OpenSSL 취약점을 이용한 Heartbleed 모의해킹
2022.08.19 -
[3] Nessus를 활용한 Metasploitable2에 대한 samba취약점 해킹
[3] Nessus를 활용한 Metasploitable2에 대한 samba취약점 해킹
2022.08.19