一、实验目的
(1)了解信息搜集和漏洞扫描的一般步骤;
(2)熟练Nmap的使用方法;
(3)了解程序漏洞的成因与分析,掌握漏洞扫描的基本方法。
二、实验内容
(1)利用Nmap进行信息收集,并记录、分析扫描结果;
(2)使用OpenVAS、Nikto等工具进行漏洞扫描并进行漏洞分析;
(3)利用口令破解工具针对软件和Web程序进行破解。
三、实验环境
靶机一:1、靶机地址:192.168.136.130
2、攻击机地址:192.168.136.131
四、实验过程和实验结果
1.查看一下Kali的地址:Ifconfig 或ip a,如图2.1.1
2.1.1查看kali地址
2.查看与攻击机处在同一网络的靶机地址
(1)可使用arp-scan -l,如图2.1.2
2.1.2 使用sudo arp-scan -l查看靶机地址
(2)使用nmap全网段扫描,如图2.1.3
2.1.3 nmap全网段扫描得靶机地址
(3)使用sudo netdiscover查看
2.1.4 sudo netdiscover 查看靶机地址
3.nmap扫描一下看一下开放了哪些端口,如图2.1.5.1和2.1.5.2
2.1.5.1 用nmap -sV 扫描端口
2.1.5.2 用nmap -sV -A -T4扫描端口
4.根据开放的80端口尝试是否存在web页面
在kali中打开firefox浏览器输入192.168.136.131,如图2.1.6
2.1.6 80端口是否存在web界面
经验证虽然80端口开放了,但靶机并没有提供web服务,无可用信息。
- 根据开放的21端口,查看提供ftp服务的软件版本是否可利用。
(1)可通过搜索引擎、AIGC工具查看ProFTPD 1.3.3c有无漏洞信息,如图2.1.7
2.1.7 查找proftpd1.3.3c信息
(2)可通过Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers查看漏洞信息。如图2.1.8
2.1.8 查看漏洞信息
6.根据存在的漏洞信息,在攻击机中查看是否有漏洞利用模块
(1)在kali中查看是否有此漏洞利用模块sudo searchsploit proFTPD 1.3.3c,如图2.1.9
2.1.9查看kali是否有此漏洞利用模块
(2)在kali中启动metasploit框架查看启动框架(命令:msfconsole)查看漏洞利用模块,如图2.1.10
2.1.10 查看proftpd1.3.3c漏洞利用模块
7.利用漏洞
(1)输入msfconsole,打开metasploit,
(2)输入search proftpd 1.3.3c,可以找到关于proftpd1.3.3c的漏洞
(3)输入use 0,再输入show options或options,查看需设置的参数,如图2.1.11
2.1.11 查看设置参数
需要的参数有RHOSTS和RPORT,只需设置RHOSTS,通过set RHOST 192.168.136.131即可,但此攻击载荷的效果不理想,考虑更换payload攻击载荷。
(4)更换默认攻击载荷,输入show payloads查看可用的攻击载荷,并设置cmd/unix/reverse为新的攻击载荷。如图2.1.12
2.1.12设置cmd/unix/reverse为新的攻击载荷
(5)通过options命令查看此攻击载荷所需设置的参数,如图2.1.13
2.1.13 options命令查看此攻击载荷所需设置的参数
(6)设置参数RHOSTS和LHOSTS,如图2.1.14
2.1.14设置参数RHOSTS和LHOSTS
(7)run/exploit执行渗透,如图2.1.15
ton
2.1.15 run执行渗透
8.提权
输入python3 -c 'import pty;pty.spawn("/bin/bash")',得到root权限进入目录ls,再进入home目录,如图2.1.16
2.1.16进入靶机
靶机二:1.靶机地址:192.168.136.132
- 攻击机地址:192.168.136.130
查看与攻击机处在同一网络的靶机地址,用sudo arp-scan -l查找,如图2.2.1
2.2.1查看靶机地址
用nmap详细扫描,如图2.2.2
2.2.2详细扫描
用dirb进行后台扫描,如图2.2.3
2.2.3后台扫描
尝试用户名 chili 使用 hydra 对 ftp 进行密码爆破,,发现login是chili,password是a1b2c3d4,如图2.2.4
2.2.4密码爆破
Kali中进行ftp登录,如图2.2.5
2.2.5 ftp登录
进入cd /var/www/html目录下,发现了.nano文件夹有读,写,执行权限,如图2.2.6
2.2.6 .nano有读写执行权限
生成php木马,如图2.2.7
2.2.7生成php木马
将木马上传到.nano目录下,如图2.2.8
2.2.8上传木马
对shell.php赋权,使能读写执行。如图2.2.9
2.2.9 shell.php赋权
启动msfconsole,配置攻击载荷,如图2.2.10
2.2.10 配置攻击载荷
网页访问192.168.136.132/.nano/shell.php,显示连接成功,如图2.2.11
2.2.11网页访问
反弹shell,如图2.2.12
2.2.12反弹shell
使用提权检测工具,将检测工具下载到 kali,开启 http 服务,在靶机上使用 weget 命令下载,赋权并运行漏洞检测脚本,如图2.2.13
2.2.13 wget命令提权
使enumy64在把集中可读可写可执行,如图2.2.14
2.2.14 chmod提权enumy64
输入./enumy64,检测出漏洞,发现passwd文件有读写权限,如图2.2.15
2.2.15 passwd文件有读写权限
生成加密后的密码,如图2.2.16
2.2.16 生成加密密码
新建root用户并登录,提权成功,如图2.2.17
2.2.17 提权成功
五、实验总结
靶机一原理:首先查找靶机的ip地址,进而通过nmap扫描找到靶机开放的端口,依次访问端口,观察靶机开放了了哪些服务,proftpd 1.3.3C服务,在发现漏洞网站上查看proftpd 1.3.3C服务存在漏洞,攻击漏洞需要调用metasploit 模块,在该模块查找proftpd 1.3.3C漏洞,发现关于proftpd该版本的漏洞,通过调整该漏洞攻击载荷的参数进行渗透,可以得到该靶机的普通用户权限,通过Python代码进行提权,获得root权限。
靶机二原理:用同样的方法进行扫描,找到靶机的ip地址,扫描它的端口服务,发现没什么可利用的,靶机本身提供了用户名chili,换个角度尝试进行目录爆破,发现爆破出ftp服务的密码,然后进行ftp远程登录,获取靶机基本权限,可以查看靶机的某些文件夹,最终在/var/www/html目录下发现.nano有读写执行权限,利用kali本身自带模块msfvenom制作php木马,然后将木马上传到.nano目录下,对php木马赋权使其能执行,继续用msfconsole 模块配置攻击载荷,查看php木马所在网页发现连接成功,反弹shell获得靶机基本权限,接下来开启kali的http服务通过wget下载提权工具,并在靶机发现漏洞passwd有读写执行权限,通过特殊命令将提权工具启动,生成加密后的密码,获得root权限。
通过本次实验,首先学到了通过arp-scan -l和namp全网段以及netdiscover扫描靶机但我ip地址;然后通过nmap加一定参数扫描靶机开放的端口,进而查找出靶机的漏洞进行渗透;学会了利用msfconsole模块配置攻击载荷,包括RHOSTS和LHOST的配置等进行攻击,获得基本权限;在第二个靶机中学会用hydra -l+用户名+字典路径 -P+靶机地址+-I -f -t64进行密码爆破,找到ftp下的密码;学会用msfvenom制作php木马放到可读写执行目录中调用然后获得权限;本次实验中提权的方法python3 -c 'import pty;pty.spawn("/bin/bash")'得到root权限;也有通过msfvenom模块wget 下载木马文件,通过漏洞生成加密后的密码新建root用户进行提权。
实验中发现的错误:nmap扫描的参数没有记住,不能精确调用tcp和udp服务扫描端口,最后通过查阅nmap相关参数格式进行知识补充;msfconsole模块攻击载荷不会调用,查看payload模块修改lhost和rhosts等进行攻击;提权方法没了解过,只能通过在网上查找资料比如一句话木马还有kali自带的工具反弹shell生成新的加密密码进行提权。
调试心得:在调试中常常因为一个字母打错而失败,根本原因还是因为没熟练记住相关命令;此外在调试中步骤一般为查找靶机ip,扫描靶机相关端口,找到漏洞,记得注意细节关注用户名之类的敏感信息,找到适合的攻击方式,获得基本权限后分析目录结构进行提权。
其他心得:通过实验还是有很多知识点没记住,感觉渗透攻击类型多种多样,需要经过长时间的知识沉淀进行学习
相关知识点:情报指目标网络、服务器、应用程序等的所有信息。渗透测试人员需要使用各种资源尽可能地获取测试对象的相关信息。如果我们采用的是黑盒测试,那么情报的搜集阶段(也称为信息搜集阶段)可以说是整个渗透测试过程中最为重要的一个阶段。所谓“知已知彼,百战不殆”也正说明了情报搜集的重要性。这个阶段所使用的技术可以分成两种。
1.被动扫描:这种扫描方式通常不会被对方发现。如果我们希望了解某个人,那么可以向他身边的人询问,如他的邻居、他的同事,甚至他所在社区的工作人员等。搜集到的信息包括哪些呢?可能包括他的名字、年龄、职业、籍贯、兴趣、学历等。
同样,对于一个目标网络,我们也可以获得很多信息。如现在我们仅仅知道客户的一个域名,通过这个域名我们就可以使用Whois 查询到这个域名所有者的联系方式(包括电话号码、电子邮箱、公司所在地等),以及域名的注册和到期时间等。通过搜索引擎可查找与该域名相关的电子邮箱、博客、文件等。
2.主动扫描:这种扫描方式的技术性比较强,通常会使用专业的扫描工具来对目标网络进行扫描。扫描之后将会获得的信息包括目标网络的结构、目标网络所使用设备的类型、目标主机上运行的操作系统、目标主机上所开放的端口、目标主机上所提供的服务、目标主机上所运行的应用程序等。
Nmap(网络映射器)是一款流行的网络扫描工具,它提供了大量的参数来定制扫描的过程。
nmap:扫描单个目标主机。
nmap -sP:扫描主机列表,进行主机发现。
nmap -sS:使用TCP SYN扫描方式,这是最常用的扫描方式,快速且安全。
nmap -sT:使用TCP Connect扫描方式,建立完整的TCP连接,扫描速度较慢,但更难被探测到。
nmap -sU:使用UDP扫描方式,扫描速度慢,但可以获取有价值的服务器程序信息。
nmap -A:使用操作系统和服务识别功能扫描目标主机,提供详细信息,如版本号、协议等。
nmap -O:仅使用操作系统识别功能扫描目标主机。
nmap -sV:仅使用服务识别功能扫描目标主机。
nmap -p:指定扫描的端口或端口范围。
nmap -F:快速扫描模式,扫描有限的端口。
nmap -T:指定扫描速度等级。