记录一下渗透测试的基础步骤。
Penetration test
渗透测试即利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给客户。客户根据我们撰写的测试报告,对网站进行漏洞修补,以防止黑客的入侵。
渗透测试的前提是经过用户的授权,才可以对网站进行渗透。如果我们没有经过客户的授权而对一个网站进行渗透测试的话是违法的。2016 年 6 月 1 日,我国颁布了《中华人民共和国网络安全法》,对网络犯罪有了法律约束。
渗透测试分为白盒测试和黑盒测试:
- 白盒测试:在知道目标网站源码和其他一些信息的情况下对其进行渗透,有点类似于代码审计
- 黑盒测试:只告诉我们这个网站的 url,其他什么都不告诉,模拟黑客对网站的渗透
接下来记录一下黑盒测试的几个步骤
Information Gathering(信息收集)
- 主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
- 被动信息收集:利用第三方的服务对目标进行访问了解,比例:Google 搜索、Shodan 搜索等
- DNS 域名信息的收集
- 整站分析
- 服务器类型(Linux/Windows)
- 网站容器(Apache/Nginx/Tomcat/IIS)
- 脚本类型(php/jsp/asp/aspx)
- 数据库类型(Mysql/Oracle/Accees/Mqlserver)
- 主机扫描(Nessus)
- 端口扫描(nmap)
- 网站敏感目录和文件
- 旁站和 C 段扫描
- 网站漏洞扫描
Vulnerability Detection(漏洞探测)
探测网站是否存在一些常见的 Web 漏洞:
- SQL 注入
- XSS 跨站脚本
- CSRF 跨站请求伪造
- XXE 漏洞
- SSRF 服务端请求伪造漏洞
- 文件包含漏洞
- 文件上传漏洞
- 文件解析漏洞
- 远程代码执行漏洞
- CORS 跨域资源共享漏洞
- 越权访问漏洞
- 目录浏览漏洞和任意文件读取/下载漏洞
- struts2 漏洞
- JAVA 反序列化漏洞
- …
Vulnerability Exploitation(漏洞利用)
当我们探测到了该网站存在漏洞之后,我们就要对该漏洞进行利用了。不同的漏洞有不同的利用工具,很多时候,通过一个漏洞我们很难拿到网站的 webshell,我们往往需要结合几个漏洞来拿 webshell。
- SQL 注入:Sqlmap
- XSS 跨站脚本:BeEF
- 抓包改包工具:Burpsuite、Fidder
- 文件上传漏洞:上传一句话木马,进而获得 webshell
- 提权:获得了 webshell 后,一般权限很低,所以需要提权,可以选择反弹一个 MSF 类型的 shell 提权,也可以使用其他提权(Windows 提权、Linux 下用 SUID 提权)
Intranet forwarding(内网转发)
当我们获取到了网站的 Webshell 之后,如果我们是想获取该主机的有关信息,我们可以将该主机的 webshell 换成 MSF 的 shell。直接生成一个木马,然后在菜刀中执行该木马,我们就能接收到一个 MSF 类型的 shell。
如果我们还想进一步的探测内网主机的信息的话,我们就需要进行内网转发。我们不能直接和内网的主机通信,所以就需要借助获取到的 webshell 网站的服务器和内网主机进行通信。
Intranet Penetration(内网渗透)
当能跟内网主机进行通信后,就可以开始进行内网渗透。可以先使用 nmap 对内网主机进行扫描,探测在线的主机,并且探测其使用的操作系统、开放的端口等信息。
内网用户基本都是使用的 windows 系统,而且大多数是使用的 windows7,在 windows7 中有很多漏洞,比如 MS17_010 这种漏洞,我们可以使用 Metasploit Framework 探测其 windows 系统是否存在这种漏洞,如果有这种漏洞,直接拿 shell。
企业内网大多数是一个域环境,所以我们只需要找到域控服务器,并拿下其权限,就可以登录其他所有用户的主机。
当然,内网中也有可能存在供内网使用的内网服务器,我们可以进一步渗透拿下其权限。
Report Writing(撰写渗透测试报告)
完成渗透测试之后,需要对这次渗透测试撰写渗透测试报告。明确地写出哪里存在漏洞,以及漏洞修补的方法,以便于网站管理员根据渗透测试报告修补这些漏洞和风险,防止被黑客攻击。
Complement
IP 配置
直接在文件中配置
sudo vim /etc/network/interfaces
# auto eth0 # 自动启用第一块网卡
# ifconf eth0 inet static
# address 192.168.1.2 # IP地址
# netmask 255.255.255.0 # 子网掩码
# gateway 192.168.1.1 # 网关
命令行配置
sudo ifconfig ens33 192.168.10.163 netmask 255.255.255.0 # 设置IP和掩码
sudo route add default gw 192.168.10.1 # 设置网关
sudo echo "nameserver 192.168.10.1" >> /etc/resolv.conf # 设置DNS
sudo /etc/init.d/networking restart # 重启服务
Common Vulnerabilities
输入输出验证不充分
- 输入输出验证
- SQL 注入
- 跨站脚本攻击(XSS)
- 跨站请求伪造(CSRF)
- 文件上传常见问题
- 文件下载漏洞
设计缺陷
- 非授权对象引用
- 纵向越权
- 找回密码漏洞
环境缺陷
- 解析漏洞
- IIS 5.x/6.0 解析漏洞
- IIS 7.0/IIS 7.5/ Nginx <8.03 畸形解析漏洞
- Nginx <8.03 空字节代码执行漏洞
- Apache 解析漏洞
- 其他
References
https://blog.csdn.net/qq_36119192/article/details/84674109
https://blog.csdn.net/wsclinux/article/details/73177091
http://blog.nsfocus.net/common-vulnerability-verify/