文章目录
- 一、环境
- 二、获取flag1
-
- 1、扫描局域网内存活主机
-
- [1.1 查看kali的IP地址](#1.1 查看kali的IP地址)
- [1.2 扫描存活主机](#1.2 扫描存活主机)
- 2、粗略扫描靶机端口(服务)
- 3、寻找ftp服务漏洞
- 4、扫描端口详细信息
- 5、匿名登录ftp
一、环境
攻击机:kali
靶机:Pinkys-Place v3,靶机地址:https://www.vulnhub.com/entry/pinkys-palace-v3,237/
二、获取flag1
1、扫描局域网内存活主机
1.1 查看kali的IP地址
ifconfig
,可知本机IP地址
1.2 扫描存活主机
(1)使用nmap发现存活主机,nmap -sP 192.168.92.0/24
,-sP
代表ICMP扫描,即ping扫描。
- 192.168.92.1是kali攻击机IP地址;
- 192.168.92.2是虚拟网关地址;
- 192.168.92.5是windows真实机在虚拟网卡VMnet8下的IP地址;
- 192.168.92.254是DHCP对ip的分配上线。
故,靶机IP地址为192.168.92.3
(2)因为是在同一网段内,也可以使用arp-scan
,arp-scan -l
注意:arp-scan扫描列表里没有本机IP。
关于arp-scan
的原理,就是在局域网内发送广播包,询问IP对应的MAC地址,若IP对应的主机存活,就会返回该主机的MAC地址,以此来判断存活主机。
2、粗略扫描靶机端口(服务)
nmap -sV 192.168.92.3
,-sV
可以显示服务的详细版本
- 看到开启的端口、对应的版本号和版本。需要注意的是:ssh服务的默认端口是22,这里不是默认端口。
- 首先,发现靶机上的ftp版本是
vsftpd 2.0.8 or later
,vsftpd 2.3.4
存在漏洞
3、寻找ftp服务漏洞
MSF基础命令如下:
这就是笑脸漏洞,其原理:在vsftpd 2.3.4版本中,在登录输入用户名时输入:)类似于笑脸的符号,会导致服务处理开启6200后门端口,直接执行系统命令。
试一下,看能不能用,发现不行。
4、扫描端口详细信息
bash
nmap -sS -T4 -A -p- 192.168.92.3
-sS
:进行半开SYN扫描,特点是速度快,精度相对较低。
-T4
:-T
b表示扫描速度,共有0-5个等级,等级越高,扫描速度越快。一般认为,4是最合适的等级参数。
-A
:表示完全扫描,对操作系统和软件版本号进行检测。
-p-
:全端口扫描。
发现ftp允许匿名登陆。
5、匿名登录ftp
(1)安装lftp
lftp是著名的字符界面的文件传输工具,支持ftp、sftp、ftps、http、https和fish协议。
bash
apt-get install lftp
(2)匿名登录
bash
lftp 192.168.92.3
user anonymous # 用户名:anonymous,密码:无
ls -a # 查看该目录下的所有文件
注意:在linux中,一个点代表当前目录,两个点代表上一层目录。这里三个点就是一个文件夹,只是这个文件夹的名字就是三个点。
(3)发现文件WELCOME
和一个目录...
(三个点),首先使用get
命令将该文件传输到kali的root目录下,并打开。
(4)进入隐藏目录...
,用ls -a
查看当前文件夹下的所有文件,又发现一个文件夹.bak
。同样,进入该文件夹并查看所有文件。发现了firewall.sh
脚本文件和flag1.txt
文本文件。
使用get
命令传输到kali的root目录并查看。
上述防火墙规则大致意思就是:不允许主动与外界建立tcp链接,一旦发现有NEW状态的数据包就丢弃。言下之意,无法进行提权操作。
关于防火墙规则的简单查看:
netfilter/iptables(简称为iptables)
组成Linux平台下的包过滤防火墙。iptables
的基本语法格式:
bash
iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
-t
:指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。COMMAND
:子命令,定义对规则的管理。chain
:指明链表。CRETIRIA
:匹配参数。ACTION
:触发动作。
1)常用命令COMMAND
:
bash
-A 追加规则-->iptables -A INPUT
-D 删除规则-->iptables -D INPUT 1(编号)
-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则
-N 新的规则-->iptables -N allowed 定义新的规则
2)常用匹配参数及各自的功能CRETIRIA
:
bash
[!]-p 匹配协议,! 表示取反
[!]-s 匹配源地址
[!]-d 匹配目标地址
[!]-i 匹配入站网卡接口
[!]-o 匹配出站网卡接口
[!]--sport 匹配源端口
[!]--dport 匹配目标端口
[!]--src-range 匹配源地址范围
[!]--dst-range 匹配目标地址范围
[!]--limit 四配数据表速率
[!]--mac-source 匹配源MAC地址
[!]--sports 匹配源端口
[!]--dports 匹配目标端口
[!]--stste 匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
[!]--string 匹配应用层字串
3)-j ACTION
:
bash
ACCEPT 允许数据包通过
DROP 丢弃数据包
REJECT 拒绝数据包通过
LOG 将数据包信息记录 syslog 曰志
DNAT 目标地址转换
SNAT 源地址转换
MASQUERADE 地址欺骗
REDIRECT 重定向
4)其他常用参数
bash
-p 协议 例:iptables -A INPUT -p tcp
-s 源地址 例:iptables -A INPUT -s 192.168.1.1
-d 目的地址 例:iptables -A INPUT -d 192.168.12.1
-sport 源端口 例:iptables -A INPUT -p tcp --sport 22
-dport 目的端口 例:iptables -A INPUT -p tcp --dport 22
-i 指定入口网卡 例:iptables -A INPUT -i eth0
-o 指定出口网卡 例:iptables -A FORWARD -o eth0
-m -state 启用状态匹配模块
---state 状态匹配模块的参数。当SSH客户端第一个数据包到达服务器时,状态字段为NEW;建立连接后数据包的状态字段都是ESTABLISHED
---tcp-flags TCP标志
5) 简单聊一下--tcp-flags
bash
--tcp-flags ALL SYN
这段规则是上述防火墙规则中的一个片段,主要看ALL SYN
:
ALL
表示需要匹配tcp头中的所有标志位(SYN、ACK、FIN、RST、URG、PSH
)SYN
表示SYN标志位必须为1,其余标志位为0。
也就是说这个匹配规则是匹配tcp三次握手中的第一次握手。