知识点:信息收集,漏洞验证,MetaSploit技术,MSF后渗透测试
靶机渗透:
三不知:不知IP,不知用户名,不知密码,只知道获取最高权限是root
靶机渗透通常指的是在网络安全领域中,对一个预先设置好的模拟系统(靶机)进行安全测试的过程。这个过程可以包括以下几个步骤:
1. **信息收集**:收集目标系统的公开信息,如域名、IP地址、操作系统类型等。
2. **漏洞分析**:分析收集到的信息,寻找可能存在的安全漏洞。
3. **漏洞利用**:利用发现的漏洞尝试对系统进行渗透。
4. **权限提升**:一旦渗透成功,尝试提升权限,以便进一步访问系统资源。
5. **维持访问**:在系统内部建立后门或使用其他方法保持对系统的访问。
6. **数据收集**:收集目标系统的信息,如敏感数据、系统配置等。
渗透测试级别:
DC-1和DC-4是渗透测试(Penetration Testing)中的两个不同级别的术语,通常用于描述渗透测试的深度和范围。渗透测试是一种模拟网络攻击的方法,目的是评估系统的安全性。以下是DC-1到DC-4的简要概述:
1. **DC-1(Discover)**:
- 这是渗透测试的初始阶段,通常称为发现阶段。
- 在这个阶段,渗透测试者收集目标系统的公开信息,如域名、IP地址、开放端口和服务等。
- 这个阶段不涉及任何形式的漏洞利用或攻击,只是信息收集。
2. **DC-2(Discover and Scan)**:
- 在DC-2阶段,渗透测试者除了进行信息收集外,还会使用自动化工具扫描目标系统,以识别潜在的漏洞。
- 这个阶段可能包括端口扫描、漏洞扫描和指纹识别等活动。
3. **DC-3(Discover, Scan, and Attack)**:
- 到了DC-3阶段,渗透测试者将开始尝试利用发现的漏洞。
- 这可能包括使用特定的漏洞利用技术,如SQL注入、跨站脚本(XSS)攻击等,以获取对系统的访问权限。
4. **DC-4(Discover, Scan, Attack, and Maintain Access)**:
- DC-4是渗透测试的最高级别,也称为“高级持续性测试”(APT)。
- 在这个阶段,渗透测试者不仅要利用漏洞,还要尝试在系统中保持访问权限,模拟APT攻击者的行为。
- 这可能包括建立后门、创建隐藏账户或使用其他方法来保持对系统的控制。
渗透测试的每个级别都代表了对目标系统的更深层次的攻击,旨在全面评估系统的安全性。进行渗透测试时,必须确保所有活动都在法律允许的范围内,并得到目标组织的明确许可。渗透测试的结果可以用来改进系统的安全性,防止真实的攻击者利用相同的漏洞。
在本篇博客中,我们先拿最简单的DC-1做举例。
黑盒渗透测试技术:
首先我们先来解决一个问题,靶机和kali必须在同一个局域网下。
将准备好的DC-1导入到VMware,先不管他,打开kali
首先,我们要对靶机进行信息收集
我们可以使用 nmap -sP [你的IP地址] 命令来扫描局域网内的一些存活主机,也可以使用:
sudo arp-scan -l
此命令也是一个局域网内的扫描命令,只不过使用的是arp协议,比nmap扫描更加快速
从此图中很容易可看出,172.16.130.138 为可疑IP。
接下来我们来扫描端口——目的是查看开启了哪些服务,使用
nmap -A -p- IP地址
等待片刻后我们得到了很多信息,如80端口,22端口等。有些主机为了安全,会将ssh等服务设置的很高,可能远不止22,所以我们要使用 -A -p- 来扫描,目的就是全面、完整的得到扫描结果。
从上图我们还能得到一个特别重要的信息:Apache的版本号是2.2.22,有了这个版本号,我们就可以直接上网搜索这个版本的Apache有哪些漏洞,这也是为什么第一步:信息收集十分重要,较为完整的信息收集能为我们之后的渗透测试提供非常多的便利。
另外一个重要信息:robots.txt,robots是网站跟爬虫间的协议,用简单直接的txt格式文本告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件,这个协议告诉我们网站的哪些内容能让我们查询,哪些对我们是不透明的。
在了解了以上的信息代表什么之后,信息收集的第二步,我们要开始扫描敏感路径。目的是:寻找登录框,寻找到登录框后,我们就有可能发现管理员的登陆位置,从而更好的进行渗透。而寻找登录框可以借助第三方工具,比如御剑,在此处我们不做那么麻烦的演示了,直接使用kali中的功能:dirb
Dirb是一个用于在Web服务器上搜索文件和目录的轻量级Unix工具。它发送一个包含可能存在的文件和目录名称的列表到Web服务器,并检查哪些名称存在。Dirb可以用于安全测试,帮助发现Web服务器上可能被忽视的文件或目录,这些文件或目录可能含有敏感信息或可以被利用的漏洞。
Dirb的工作原理是使用一个字典文件(默认情况下包含在程序中),这个字典文件包含了大量的可能的文件和目录名称。Dirb会尝试访问这些名称,看服务器是否返回200 OK状态码,如果是,就表示该文件或目录存在。Dirb还可以使用自定义字典文件来扩展其搜索范围。
在我们运行了dirb扫描后,我们发现,他正在按照字母排序逐个扫描可访问的网站,从中我们可以得到一些信息,如200代表网站是可访问的。
这里的扫描需要很长时间,在现实生活的渗透测试中,扫描好几天甚至一个星期也是正常的,我这里不等了,直接来说一下学习我们要学习的内容。
我们在浏览器中输入上面的信息,得到如下页面。
除了admistrator,还有user、password等,以上是扫描敏感路径后的举例,有关扫描敏感路径,kali提供了非常强大的工具,可以自行百度。
在上面的全面扫描结果中,我们还能得到一个重要信息,叫做Drupal 7,Drupal 7是Drupal内容管理系统(CMS)的一个主要版本,于2011年1月5日发布。Drupal是一个开源的、模块化的框架,广泛用于构建各种类型的网站,包括个人博客、公司网站、社区网站和复杂的定制应用程序。Drupal 7是一个成熟的平台,尽管随着时间的推移,新的版本如Drupal 8和9已经发布,提供了更多的功能和改进,但Drupal 7仍然被许多网站使用,特别是在需要稳定性和成熟技术的场合。
在此,我们可以用kali中的一个工具:searchsploit命令去寻找相关漏洞,有些类似于我们上个博客说过的msf。
运行命令后,我们就得到了关于Drupal 7的诸多漏洞,其中有一条非常明显,显示我们可以Add Admin User,即添加一个管理员。在结果中也给出了我们提示,想要添加数据库的管理员,我们需要去下载34992.py,在kali中下载方法如下:
之后我们cat一下这个py文件,得到了一长串信息,这里只截了冰山一角,这些信息就像一份说明书,告诉我们这个脚本应该如何去使用。我们一直往下翻,随后我们找到了可用信息:这条信息告诉我们,我们应该键入的格式
OK,那我们照着他给出的格式来吧。输入如下信息,这里方便演示,我的用户名就叫username,密码就是password
这里也提示,管理员创建成功,回到之前的网页使用账号密码登陆成功,以管理员身份登陆后,我们就能查看很多有用信息,这里不做展示了,自己慢慢探索吧。
账号提权:
在进行了以上种种准备工作后,我们可以开始渗透了,最重要的一步,就是先去提升我们权限。
系统账号提权一般都用 sudo -l,已知我们现在是服务账号,使用服务账号是无法进行系统层面的操作的(下图为kali中的一些服务账号,例如你无法用你的邮箱账号去登陆操作系统,局限性很大)
虽然服务账号的权限非常低,但是我们可以用find命令查找那条账号有漏洞,比如你错误的赋予了这个账号root权限,使它有很高的权限。
find / -perm -4000 2>/dev/null
- `find`:这是命令的名称,用于查找文件或目录。
- `/`:指定搜索的起始目录,这里是根目录,代表整个文件系统。
- `-perm -4000`:这个选项告诉`find`命令搜索具有特殊权限(即设置了SGID、UID或Sticky位)的文件。在Linux中,文件的权限位可以设置为:
- `2>/dev/null`:这部分是重定向操作,将标准错误(stderr)重定向到`/dev/null`,这意味着所有的错误信息都会被忽略,不会显示在终端上。
综合来看:
账号提权(Privilege Escalation)是渗透测试中的一个环节,指的是在已经获得系统访问权限的基础上,尝试获取更高权限的过程。以下是一些常见的提权方法:
1. **利用已知漏洞**:使用Kali Linux中的漏洞扫描工具,如`searchsploit`,来查找目标系统已知的漏洞,并尝试利用这些漏洞来提升权限。
2. **滥用SUID位**:查找具有SUID位设置的程序,这些程序在执行时会以文件所有者的权限运行。如果这些程序有漏洞,可以利用它们来执行提权攻击。
3. **利用配置不当**:检查系统配置,如sudoers文件配置错误,可以允许普通用户执行需要更高权限的命令。
4. **利用内核漏洞**:使用Kali Linux中的内核漏洞利用工具,如`exploitdb`,来寻找并利用Linux内核的漏洞。
5. **利用第三方软件漏洞**:检查系统中安装的第三方软件,使用Kali Linux中的`nmap`、`nikto`等工具扫描开放的端口和服务,然后找到并利用这些服务中的漏洞。
6. **利用文件包含漏洞**:如果Web应用程序存在文件包含漏洞,可以尝试包含并执行具有更高权限的脚本文件。
7. **利用定时任务**:检查`cron`定时任务,看是否有以root权限运行的任务,可以尝试修改这些任务来执行恶意代码。
8. **利用竞争条件**:在某些情况下,可以利用竞争条件来执行提权攻击,如通过`time-of-check to time-of-use`(TOCTOU)漏洞。
9. **利用未打补丁的系统**:检查系统是否及时更新了安全补丁,未打补丁的系统可能存在可利用的漏洞。
10. **利用社会工程学**:在某些情况下,提权可能需要结合社会工程学技巧,比如通过钓鱼攻击获取更高权限用户的凭证。