目录
在进行渗透测试时,我们需要遵循一定的思路和流程,以确保测试的全面性和有效性。下面,我将结合自己的经验,为大家分享一下拿到一个待检测的站时,应该如何进行渗透测试。
一、授权与合法性
在进行任何渗透测试之前,必须确保已经获得了合法的授权。没有授权的渗透测试是非法的,可能会带来严重的法律后果。
二、信息收集
信息收集是渗透测试的第一步,也是非常重要的一步。通过收集尽可能多的信息,可以扩大攻击面,提高渗透成功的几率。
- 服务器相关信息:包括真实 IP、系统类型、版本以及开放的端口等。这些信息可以帮助我们了解服务器的基本情况,为后续的攻击提供依据。
- 网站指纹识别:识别网站是否使用了 CMS、是否挂载了 CDN、证书信息、DNS 记录等。这些信息可以帮助我们确定网站的技术架构,为后续的漏洞测试提供方向。
- Whois 信息:包括姓名、备案邮箱、反差等。可以通过社工库查询这些信息,获取更多的线索。
- 子域名、旁站、C 段收集:通过收集子域名、旁站和 C 段信息,可以扩大攻击面,发现更多的漏洞。
- 谷歌 Hacking:通过谷歌搜索特定的关键词,如 PDF 文件、中间件版本、弱口令扫描等,可以发现一些敏感信息和漏洞。
- 网站目录结构扫描:扫描网站的目录结构,寻找后台入口、测试文件、备份文件和敏感文件等。
- 传输协议和通用漏洞 EXP:了解网站使用的传输协议,以及是否存在已知的通用漏洞 EXP。
- GitHub 源码:在 GitHub 上搜索与目标网站相关的源码,可能会发现一些敏感信息和漏洞。
三、漏洞测试
在收集了足够的信息之后,就可以开始进行漏洞测试了。漏洞测试的目的是发现网站存在的安全漏洞,为后续的漏洞利用提供依据。
- SQL 注入:测试网站是否存在 SQL 注入漏洞,可以通过手工测试和工具测试相结合的方式进行。
- 文件上传:测试网站是否存在文件上传漏洞,可以尝试上传恶意文件,如 PHP 脚本、WebShell 等。
- 命令执行:测试网站是否存在命令执行漏洞,可以尝试执行一些系统命令,如 whoami、ls 等。
- XSS:测试网站是否存在跨站脚本漏洞,可以尝试在输入框中输入一些恶意脚本,如
<script>alert('XSS')</script>
。 - 口令文件包含:测试网站是否存在口令文件包含漏洞,可以尝试读取一些敏感文件,如 /etc/passwd、/etc/shadow 等。
四、漏洞利用
在发现了漏洞之后,就可以开始进行漏洞利用了。漏洞利用的目的是通过漏洞获取网站的控制权,或者获取一些敏感信息。
- 上传 WebShell:通过文件上传漏洞上传 WebShell,获取网站的控制权。
- 拿到权限:通过漏洞获取网站的管理员权限、数据库权限等。
五、权限提升
在获取了一定的权限之后,就可以开始进行权限提升了。权限提升的目的是获取更高的权限,以便更好地控制网站和服务器。
- MySQL UDF 提权:在 Windows 系统中,可以通过 MySQL UDF 提权获取更高的权限。
- 低版本提权:在 Windows 和 Linux 系统中,可以通过利用低版本漏洞提权获取更高的权限。
六、权限维持
在获取了高权限之后,就需要进行权限维持了。权限维持的目的是确保在渗透测试结束后,仍然能够保持对网站和服务器的控制。
- 创建后门:通过创建后门程序,如 WebShell、木马等,确保在渗透测试结束后仍然能够访问网站和服务器。
- 计划任务:通过设置计划任务,定期执行一些恶意程序,确保在渗透测试结束后仍然能够保持对网站和服务器的控制。
- 隐藏账户:通过创建隐藏账户,确保在渗透测试结束后仍然能够访问网站和服务器。
七、内网扫描
在获取了服务器的控制权之后,就可以开始进行内网扫描了。内网扫描的目的是发现内网中的其他主机和漏洞,为后续的内网攻击提供依据。
- 端口探测:通过端口扫描工具,探测内网中的其他主机开放的端口。
- 铭文信息收集:收集内网中的其他主机的铭文信息,如操作系统版本、服务版本等。
八、内网攻击
在发现了内网中的其他主机和漏洞之后,就可以开始进行内网攻击了。内网攻击的目的是获取内网中的其他主机的控制权,或者获取一些敏感信息。
- 利用漏洞:利用内网中的其他主机存在的漏洞,获取其控制权。
- 横向移动:通过内网中的其他主机,进一步渗透到其他网络区域。
九、痕迹清理
在完成了渗透测试之后,就需要进行痕迹清理了。痕迹清理的目的是删除在渗透测试过程中留下的痕迹,以免被发现。
- 删除日志:删除网站和服务器的日志文件,以免被发现。
- 清理痕迹:清理在渗透测试过程中留下的其他痕迹,如临时文件、缓存文件等。
十、总结报告
在完成了渗透测试之后,就需要输出一个测试报告以及修复方案了。测试报告应该包括渗透测试的过程、发现的漏洞、利用的漏洞、获取的权限以及修复建议等内容。修复方案应该包括针对发现的漏洞的具体修复措施,以及如何加强网站和服务器的安全防护等内容。
总之,渗透测试是一项非常复杂和危险的工作,需要具备丰富的经验和专业的知识。在进行渗透测试时,必须严格遵守法律法规和道德规范,确保测试的合法性和安全性。