本次渗透测试具体流程详见Neos的渗透测试靶机练习——DC-1。
这篇文章将介绍本次渗透测试所用到的工具的常见用法和渗透测试的常用技巧,若有欠缺,还望海涵,并请在评论区指出,不胜感激。
虚拟机软件:VirtualBox
下载界面:https://www.virtualbox.org/wiki/Downloads
攻击机:kali linux(网卡初始为仅主机模式,要有安全意识)
下载界面:https://www.kali.org/get-kali/#kali-platforms
靶机:DC-1(网卡初始为仅主机模式,要有安全意识)
下载界面:https://vulnhub.com/entry/dc-1,292/
ARP协议的功能是根据ip地址获取mac地址,源主机将ARP请求广播到本网段的所有主机。若本网段存在符合请求的主机 ,则向源主机 单播 ARP应答;若本网段没有主机符合请求,则通过网关(一般是路由器)转发到其他网段的主机,反复执行,最终获得目标主机的mac地址。
arp-scan是kali linux中的一款网络扫描工具,通常情况下,渗透测试中当攻击机与靶机在同一网段时,可以扫描出本网段的所有主机ip地址与对应的mac地址的映射表,主要还是用于查找目标主机的ip地址。
用之前,首先需要切换到root权限。
然后确认本机IP地址,可以看到这里网卡eth0对应的本机ip地址为192.168.56.101
,子网掩码为255.255.255.0
,故网络地址为192.168.56.0。这些信息亦用于后面其他工具介绍。
下面介绍两个命令,虽然还有其他功能,但基本上用不到,大家感兴趣的可以自行去了解。
其中参数**-l是localnet的意思。
看到其中本网段192.168.56.0
中除了本机外其他机器的ip地址,一般通过这条命令就可以确认靶机的ip地址**了。
其中第一个参数-I是大写的i,即interface的意思,后面是l,小写的l,localnet的意思。
可以看到,扫描出来了网卡eth0对应网段的其他主机的ip和mac信息。
nmap是一款十分强大的主机和端口扫描工具,渗透测试中主要用来扫描目标网段的存活主机和具体主机的端口开放信息,熟练使用nmap是初学者(脚本小子)们的必备技能。
实际操作时参数可根据自己的需要组合使用。
由于目的是扫描指定网段中的存活主机,故不需要扫描其端口信息,使用 -sn不扫描端口,只扫描是否存活,速度更快。
192.168.56.0/24也可写为192.168.56.1-254,
比如这里有一个test.txt文件里面有若干ip地址。
我们结合上面的-sn参数,输入nmap -sn -iL test.txt
,扫描test.txt文件中存活的ip地址。
结合上面的命令,我们输入nmap -sn -iL test.txt -exclude 192.168.56.102
,
可以看到,扫描了test.txt文件中除了192.168.56.102这个ip的所有主机。
我们输入nmap -sn 192.168.56.0/24 -excludefile test.txt
,
可以看到,扫描出一台存活的主机也没有,因为test.txt中已经提前包含了这个网段中所有的存活主机ip,将这些ip地址都排除不扫,那么扫描出来当然不会有任何一台存活主机了。
当然可以什么参数也不加直接nmap 192.168.56.102
,只不过扫描的信息不一定全面。
亦可以扫描多个指定的ip,比如nmap 192.168.56.101 192.168.56.102
。
可以看到,扫描指定ip的基础上多了路由追踪信息,当中有跳数HOP,生存时间RTT,和ip地址,个人搭建靶机练习的时候用不到,现实环境中可能会用到。
可以看到,我们指定了80端口,扫描出来目标机的80端口open,对应的服务为http。
不加-p-的话只会扫描1024以内的端口,有的时候需要我们扫描目标主机的65535内的所有端口。
比如这里,不加-p-是不会扫出来40605端口的。
nmap默认是以TCP方式扫描的,有的时候防火墙会过滤掉其中的SYN数据包,故此时可以通过发送FIN标志的数据包进行扫描。
有时我们需要知道端口对应的服务版本是多少,这时可以添加-sV参数。
这里可以看到对应的服务版本信息。
有时我们需要知道目标机的操作系统版本是多少,这时可以添加-O参数。
这里可以看到Linux的版本信息。
whatweb 是kali中的一个非常强大的网站指纹识别工具,可识别内容管理系统(CMS)、博客平台、统计/分析包、JavaScript库,Web服务器和嵌入式设备等,还可以识别操作系统版本号,电子邮件地址、账户、中间件模块,SQL错误等。
大多数情况下直接whatweb http://neos.com(或ip:端口)
,也可以根据需要自行了解加一些参数(不了解也行)。
可以看到,已经很全面的显示了网站指纹信息。
Metasploit Framework(MSF)是一款漏洞检测和利用的工具,自带大量的已知的软件漏洞及其利用方法。Metasploit可以用于渗透测试的整个流程。
metasploit功能太丰富了,篇幅有限,这里只介绍本次渗透所涉及到的一些简单用法,其余功能日后在其他知识点总结中逐步介绍。
输入search Drupal
,本次渗透的web框架名称为Drupal。
可以看到,Drupal历年来所被发现的漏洞。
针对Description中具体漏洞的描述,使用对应的漏洞利用模块。
show options
查看该模块所需的主机信息并设置。
一般都要将RHOSTS(目标机IP)和LHOST(本地IP)还有LPORT(本地监听端口)设置好。
直接输入run
或者exploit
运行漏洞利用模块。
可以看到这里成功利用漏洞,获得shell。
get shell后,经常会发现界面不稳定,难以操作,即没有上下文环境,这时就需要通过一些方式切换为交互式shell,方便进一步操作。
如果存在python环境,则可以输入python -m 'import pty; pty.spawn("/bin/bash")'
来实现交互式shell。
一般用find / -perm -u=s -type f 2>/dev/null
,查找有suid属性权限的文件。
符号/
为当前目录;
-perm
为按指定权限执行find命令;
-u=s
为按suid权限查找文件;
-type
指定文件类型;
f
为普通文件;
2>/dev/null
中2
为文件描述符,指标准错误(stderr);>
为重定向符,指将结果定向到指定位置;/dev/null
是一个设备文件,任何数据被定向到这里都会被丢弃。
如果find命令有suid属性权限的话,则可以通过find blabla.txt -exec "/bin/sh" \;
来提权。
参数-exec
是find命令对指定文件(我这里是blabla.txt
)执行后接的shell命令(我这里是“/bin/sh”
);
\
为转义字符,由于-exec
必须以分号结束,故这里用于分号;
。
篇幅有限,只介绍了部分知识点,还有大量的内容没有涉及到,我们将在后续的渗透测试知识点总结中逐步完善知识体系,安全之路需要大家一步一个脚印,砥砺前行。