웹 보안

Web Hacking

JNU 2022. 11. 22. 22:41
반응형

오늘은 가상환경에서 만들어진 Web server를 hacking해보는 시간을 가져보도록 할꺼야...!
일단 web hacking할 OS를 실행시키고 
해킹할 OS랑 공격자가 같은 network 안에 있다는 것을 가정하에 해당 실습을 진행해보도록 할께

 

해킹할 CentOS 현재 해당 계정의 비밀번호를 알아내는게 목적이다...!!

 

해킹에 사용할 kali linux 해당 kali의 ip 정보를 확인



network 192.168.10.0/24 vmnet8
kali = 192.168.10.138 <<< kali IP


1. 정보수집의 첫 단계 footprinting

먼저 같은 network 상에 있기 때문에 port scanning을 통한 network 내부 host 정보들을 쉽게 파악할 수 있어
port scanning에 자주 사용하는 명령어 nmap으로 현재 network 대역에 어떤 host들이 있는지 조사해보자...!!

사용한 명령어: nmap -T4 -sP 192.168.10.0/24
ping scan으로 빠르게 현재 network상의 host들을 scanning 한다.


192.168.10.1(network), 10.2(GW), 10.138(KALI), 10.254(broadcast)를 제외한

나머지 IP 주소들은 같은 network 안에 존재하는 host야

즉, 192.168.10.55, 192.168.10.60, 192.168.10.199 세 개의 호스트들을 조사해볼 필요가 있어...!!!
여기서 우리는 SYN scanning을 통해 어떤 응답이 돌아오는지 확인해보도록 하자.

0. 발견한 host들의 주소: 192.168.10.55, 192.168.10.60, 192.168.10.199


사용한 명령어: nmap -T4 -sS 192.168.10.(55,60,199)

 


여기서 눈여겨볼 것은...... 바로 MAC Address야
지금 세개의 IP주소가 같은 MAC Address로 묶여있는 것을 볼 수 있어
MAC Address: 00:0C:29:56:5D:B1 (VMware)
이거 쫌 수상한데...???
아직 정확한 정보를 더 알기는 어려우니깐 좀 더 정보수집을 해보도록 하자



2. banner grabbing

banner grabbing은 server의 signature를 표현하도록 하는 정보수집 기법이야
TCP/IP Protocol의 특성인 syn 패킷을 보내면 무조건 응답을 하도록 되어있는 architecture를 이용해서
해당 IP에 대한 server OS 및 세부 정보를 좀 더 알아볼 수 있지..!
CMD 창에서 다음과 같이 명령을 내려보도록 하자

사용한 명령어: telnet 192.168.10.(55,60,199) 80
80/tcp port


HTTP/1.1 400 Bad Request
Date: Sat, 02 Jul 2022 14:55:33 GMT
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
Content-Length: 226

위의 명령을 통하여 해당 server에 대한 OS 정보와 PHP 버전 정보를 확인할 수 있는데
10.55,60,199 모두 다 같은 OS 정보와 PHP 버전 정보를 응답해준 것을 확인할 수 있었어!


그렇다면 여기서 우리가 추측해볼 수 있는 내용은 뭘까?
같은 OS server와 php 버전을 갖고 있으면서 같은 MAC 주소를 갖는데 IP주소만 다르다...??
arp spoofing 공격을 당한 것도 아닌 이상 이런 결과가 나오지 않는데..??

그런데 다음 문제를 보면
korea10.com과 sevas10.com의 DNS를 확인했을 때 웹서버IP가 무엇인지 찾아보라고 나온다.
domain name을 통하여서 web server IP가 무엇인지 확인해볼 필요가 있다.
한번 domain name과 IP주소 matching을 시도해보자



3. DNS server 정보 scan

사용한 명령어: dig @192.168.10.(55,60,199) (sevas10.com | korea10.com) axfr

dig 명령: DNS 네임서버 구성과 도메인 설정이 완료된 후,

일반 사용자의 입장에서 설정한 도메인네임에 대한 DNS 질의응답이

정상적으로 이루어지는지를 확인 점검하는 경우에 많이 사용해


즉, name server와 domain 설정이 잘 연결이 되었는지 확인하는 명령어로

해당 DNS server의 zone file을 모두 확인할 수 있는 명령어야!

zone file을 볼 수 있게 된다면 어떤 IP와 어떤 domain이 연결되었는지 확인할 수 있겠지?

 

 


현재 192.168.10.60 IP에 대하여 korea10.com이 zone file에 등록된 것을 볼 수 있어?
물론 192.168.10.55와 192.168.10.199 또한 똑같은 zone file 내용을 확인할 수 있고...!!
그러면 우리는 이제 192.168.10.60을 집중적으로 공략을 해보도록 하자!



4. Web spider (burp suite를 이용한 proxy 기능 활용)

이제 우리가 공략할 IP 주소를 알았으니 해당 IP로 web 접속을 시도해보도록 하자


접속을 해보면 다음과 같이 web page가 뜨는 것을 볼 수 있어
이제 우리는 해당 web server의 구성요소를 알아보도록 할건데 이제 proxy server를 사용해볼꺼야!
바로 burp suite라는 proxy tool인데 이걸로 해당 web server의 구조를 알아보도록 하자

burp suite를 실행시켜주고...!

 

SwitchyOmega를 설치해서 크롬에서 proxy를 활성화 시키도록해주자

 


위의 사진에 오른쪽 사이트는 192.168.10.60으로 접속했을 때 web site의 모습이고
왼쪽은 brup suite로 proxy를 intercept on을 실행시켜 해당 web server의 http request header 정보를 보여주고 있어



그러면 이제 burp suite의 Target tag로 가서 site map을 확인하면 proxy server를 통해서 해당 web server의 파일 구조를
확인할 수 있는데 어떤 파일들이 있는지 확인해보자



지금 왼쪽 상단에 보면 http://192.168.10.60 하위에 여러가지 html 파일과 php파일이 있는 것을 볼 수 있어
해당 파일들을 URL링크로 들어가서 확인한 결과야

board.php -> 게시판 파일
join.html -> 회원가입 파일
login.html -> 로그인 파일
logout.php -> 로그아웃 파일
index.html -> 웹 페이지 초기화면 파일
hidden directory -> ???

우리가 여기서 확인을 해야될 파일은 바로 hidden dir인데 여기에 어떤 정보가 있는지 확인을 못했어..!
한번 hidden dir로 URL을 옮겨가보도록 할께

HTTP response에 message 부분에 a/b/c/ 라는 부분이 보내져왔는데
proxy에서 forwarding을 시도하면 다음과 같이 페이지가 redirect 되는걸 볼 수 있어

 



자, 첫번째 단서가 나온듯해...!
하위에 a/b/c/ 디렉토리가 더 있는 것 같은데 URL에 다음과 같이 입력을 해보도록 하자

hidden test가 존재하네..? 그리고 해당 web server는 directory listing에 취약하다는 것을 확인해볼 수 있어

 

찾았다 요놈...!


hidden.txt에 대한 내용이 다음과 같이 나온 것을 볼 수 있어
계정은 secureftp
비밀번호는 3자리의 영문조합
그리고 port번호는 알 수 없는 상태
이제 우리가 여기서 할 일은 비밀번호 세자리의 영문조합을 찾아야되는데,
우리가 이전에 network 보안에서도 사용했던 hydra 명령을 통해서 bruteforcing 공격을 시도해봐야 될 것 같아
그리고 현재 어떤 port를 공략을 해야할지는 아까 위에서 nmap을 통한 port scanning의 결과에서 open된
port들을 하나씩 bruteforcing 공격을 시도해봐야 알 것 같아..!

- 192.168.10.60의 nmap 결과

Nmap scan report for 192.168.10.60
Host is up (0.00046s latency).
Not shown: 994 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
3306/tcp open mysql
MAC Address: 00:0C:29:56:5D:B1 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 2.43 seconds

현재 열려있는 port 21,22,53,80,111,3306에 하나씩 bruteforcing을 해보면 나오지 않을까???
kali로 가서 다음과 같이 명령을 입력해보도록 하자
먼저 ftp port부터 시도를 해보도록 할께!

사용할 명령어: hydra -l secureftp -x 3:3:a ftp://192.168.10.60 -V -v
[option]
-l: login 계정
-x: passsword 적용범위 (3:3:a) = min 3자리,max 3자리, 영문으로 조합
-V -v: bruteforcing 과정 상세표기

 

 


위의 결과를 통해서 해당 계정은 ftp를 통해서 접속 가능한 계정이었고,
secureftp 계정의 비밀번호는 apa인 것을 알 수 있게 됐어
이제 kali에서 192.168.10.60으로 ftp 접속을 시도해서 얻을 수 있는 정보들이 무엇이 있는지 찾아볼께

 


ftp 접속에 성공을 하고 192.168.10.60에 어떤 file들이 있는지 확인해보는데......
good.txt 라는 file 하나만 지금 보여지고 있어
binary 형식으로 전환하고 get 명령으로 kali linux로 file을 받아오도록 할께

 

good.txt 파일을 찾았다..!! 파일들을 가져와볼까??

 

오...!! 계정정보에 대한 힌트를 알려주고 있네~


해당 파일에 지금 어떤 단서를 내려주고 있어..!!
webservice login try
계정은 master
비밀번호는 2자리
조합은 agto6497..!!

우리가 접속했던 web page에 대한 master 계정의 비밀번호 조합을 알려주고 있네...!!
다시 한번 proxy server를 실행시켜서 bruteforcing 공격을 해보도록 하자~

로그인 페이지에서 proxy를 가동하여 http request의 messgae 부분에 집중하자!

 

send to intruder를 실행하여 brute forcing 공격 준비를 하자

 

clear $ 를 실행해서 cookie 값과 id,pw 와 같이 parameter들에 대한 선택해제를 하고

 

password 부분만 Add $ 를 하여 bruteforcing target을 설정한다

 

brute forcing을 하기위한 payload 설정까지 완료하면 공격준비 끝!!

 

attack을 실행하면&nbsp; RESPONSE에 Login Success와 status code가 302로 뜨는 것을 볼 수 있다

 

그러면 이제 아까 proxy server의 http request로 돌아가서 pw부분에 g7을 넣고 forwarding을 해보도록 하자!

 

성공..!!!



드디어 성공했다...!!!
이렇게 하면 계정 탈취에 성공한 거야!!
오늘은 직접 burp suite와 kali를 이용하여 정보수집을 해보고 이를 hacking 해보는 과정을 실습해봤어..!!

자 그러면 위에 실습한 내용을 통해서 문제를 풀 수 있겠지??

 


0. 발견한 호스트의 IP는 무엇인가요?
1. DNS 도메인은 korea10.com 과 sevas10.com이다. DNS를 확인했을때
웹서버IP는 무엇이라고 생각하시나요? <DNS와 연결되어있는 IP는 무엇입니까?>
2. 웹서버 apache 와 php 버전은 무엇인가요?
3. 웹서버OS는 무엇일까요?
4. 숨겨져있는 웹페이지 경로는 무엇인가요? ( 보안파일전송프로토콜 : secureftp )
5. 해당경로에 있는 내용을 참고해서 FTP서비스를 활용하여 ID/PW를 찾아내세요.
7. 최종적으로 찾아낸 정보는 무엇일까요?


해당 web server가 취약한 web server 이지만 그럼에도 계정탈취까지 꽤 많은 작업들이 필요하다는 것을 알게 된 것 같아
오늘은 여기까지 해보고 다음 시간에는 XSS,CSRF 공격에 대해서 한번 알아보도록 할께~

 

반응형