Web 安全渗透测试
1 文件上传漏洞
开发人员未限制上传文件类型,或未对上传文件进行检查。比如:一个上传图片的接口,用户却可以选择脚本文件上传,例如:中国菜刀等工具配合PHP一句话木马。
攻击方式
- 攻击者上传带有病毒的脚本文件
- 攻击者使用中国菜刀等类似工具远程配合脚本文件内的特定命令连接服务器,获取控制权
- 攻击者获取各种重要数据或文件
解决方案
检查文件类型,如content-type,文件后缀等;限制上传文件大小等
2 文件包含漏洞
分为本地文件包含(LFI)和远程文件包含(RFI)。将木马隐藏在常规文件中,如图片,文本文件等,上传文件到目标服务器(LFI)或者自己的服务器(RFI),利用文件包含漏洞配合木马文件生成后门,远程连接服务器获取控制权。
攻击方式
- 生成木马文件
- 上传木马文件,目标服务器或自有服务器均可
- 利用文件包含漏洞生成后门
- 使用中国菜刀等类似工具远程连接获取控制权
解决方案
缩小包含文件的范围,限制包含文件类型,不要轻易使用通配符,只包含需要的文件,如:include need.php
3 SQL注入漏洞
开发人员书写SQL语句时没有限制用户的特殊输入值,如单引号等,导致存在SQL注入漏洞。分为手动注入和自动注入两大方式。
攻击方式
- 基于错误注入,构造特殊语句如单引号,获取执行错误信息,确定SQL注入点
- 基于布尔注入,构造包含or或and的逻辑语句,闭合或注释掉多余的代码,同时添加上自己的查询语句
- 基于union注入,基于联合查询来获取更多有效信息,配合information_schema表,多个字段可以使用concat()进行拼接
- 基于时间盲注,使用 and sleep(5) 判断注入点
- 自动化注入,使用SQLmap等工具,对于需要登陆的网站,可使用cookie方式解决,对于国外网站可使用proxy代理访问
解决方案
开发人员需要对用户输入值和单引号等进行检测过滤。
4 跨站脚本攻击(XSS,Cross Site Scripting)
网站未对用户输入的数据进行转义或过滤,导致用户提交恶意代码,导致其他所有访问该页面的用户遭受攻击,如留言板页面。分为反射型XSS(Reflected XSS)和存储型XSS(Stored XSS),反射型直接将脚本内容包含在URL中,需要引导用户去点击,典型如搜索;而存储型将攻击脚本保存在服务器中,用户只要访问该页面就会受到攻击,典型如留言板页面。
攻击方式
- 放置于HTML标签中,如:iframe, textarea, img, script
- JavaScript方法,如:alert, window.loccation, location.href, onload, onsubmit, onerror
- 可对字符进行url,base64编码等
- 自动化XSS:使用浏览器开源渗透测试框架:BeFF。如BeFF里面Commands中的各种攻击方式
解决方案
开发人员需要对用户输入进行严格限制和检测过滤,防止恶意代码的输入
5 Web信息搜集
搜索引擎
- Google:site, inurl, filetype, intitle, intext
- 撒旦:https://www.shodan.io/
- 钟馗之眼:https://www.zoomeye.org/
目标扫描
- Nmap:https://nmap.org/
- openVAS:https://www.openvas.org/
6 Web漏洞扫描工具
- AWVS:https://www.acunetix.com/
- AppScan
- Burp suite
7 SSH密码暴力破解
- hydra
- Medusa
- patator
- BrutesPray:基于Nmap的扫描结果,调用Medusa进行暴力破解。
- Metasploit
解决方案
- 对于只是程序用于访问的身份设置无需登录,useradd soloman -s /sbin/nologin
- 设置复杂密码,大小写字母+数字+特殊字符,位数足够长
- 修改默认端口:vim /etc/ssh/sshd_config,Port 6666
- 限制登陆的用户或组,AllowUsers soloman
- 使用sudo,而不是直接登录root用户
- 设置允许访问的IP:vim /etc/hosts.allow,如:sshd:192.168.111.222:allow
- 基于PAM实现登录限制,设置连续输入密码错误时需要等待一定时间
8 中间人攻击
利用ARP协议修改MAC地址,充当中间人,如Ettercap工具
解决方案:
使用HTTPS加密传输