【文章用于学习】
前提:拿到授权书
渗透测试的目的:尽可能多的找漏洞。
渗透测试的本质: 信息收集。
1.计划阶段
一般直接给域名,识别测试范围和目标,并明确测试的目的和范围。
- 如果给的是域名查看是否有CDN绕过CDN获取ip
利用钟馗之眼获取主机IP
- 如果直接给IP,直接进行信息收集
2.渗透阶段(信息收集):
2.1 扫描开放端口
NMap扫描,确认开放端口
2.2指纹识别
指纹?其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:
- 看看是否存在文件遍历的漏洞(如图片路径,再通过../遍历文件)
- 是否使用了存在漏洞的框架(如果没有现成的就自己挖)
3.渗透测试(漏洞利用)
3.1弱口令漏洞
如果有网站登录框:
- 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破
- 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别
3.2文件下载(目录浏览)漏洞
扫描目录,查看有没有其他目录,查看有没有可以下载的文件如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
- 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径
- 看看有没有文件上传访问的功能
- 采用../来测试能否夸目录访问文件
3.3 任意文件上传漏洞
- 收集网站信息,判断使用的语言(PHP,ASP,JSP)
- 查找可以进行文件上传的注入点
- 过滤规则绕过方法
3.4命令注入漏洞
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令.
如DVWA渗透系列二:Command Injectio
3.5 SQL注入漏洞
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息
如:php?id=1
- 手动测试,判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注
- 如果可以使用工具测试,使用sqlmap等工具进行辅助测试
3.6.判断CMS
收集网站的框架,插件,有没有历史上的漏洞被发现。尝试使用这些漏洞进行测试。
等其他渗透测试手法。