【安全】Web渗透测试(全流程)1 信息收集
1.1 域名、IP、端⼝
域名信息查询:信息可⽤于后续渗透
IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常
端⼝信息查询:NMap扫描,确认开放端⼝
如果不会⽤Nmap,看这⾥:
发现:⼀共开放两个端⼝,80为web访问端⼝,3389为windows远程登陆端⼝,嘿嘿嘿,试⼀下
发现:是Windows Server 2003系统,OK,到此为⽌。
1.2 指纹识别
指纹?其实就是⽹站的信息。⽐如通过可以访问的资源,如⽹站⾸页,查看源代码:看看是否存在⽂件遍历的漏洞(如图⽚路径,再通过../遍历⽂件)
是否使⽤了存在漏洞的框架(如果没有现成的就⾃⼰挖)
2 漏洞扫描
2.1 主机扫描
Nessus
如果不会⽤Nessus,看这⾥:
经典主机漏扫⼯具,看看有没有CVE漏洞:
2.2 Web扫描
AWVS(Acunetix | Website Security Scanner)扫描器
如果不会⽤AWVS,看这⾥:
PS:扫描器可能会对⽹站构成伤害,⼩⼼谨慎使⽤。
3 渗透测试
涉及⼯具的学习:
DVWA:
Burp Suite:
3.1 弱⼝令漏洞
漏洞描述
⽬标⽹站管理⼊⼝(或数据库等组件的外部连接)使⽤了容易被猜测的简单字符⼝令、或者是默认系统账号⼝令。
渗透测试
1. 如果不存在验证码,则直接使⽤相对应的弱⼝令字典使⽤burpsuite 进⾏爆破
2. 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别
⽰例:;
风险评级:⾼风险
安全建议
1. 默认⼝令以及修改⼝令都应保证复杂度,⽐如:⼤⼩写字母与数字或特殊字符的组合,⼝令长度不⼩于8位等
2. 定期检查和更换⽹站管理⼝令
3.2 ⽂件下载(⽬录浏览)漏洞
漏洞描述
⼀些⽹站由于业务需求,可能提供⽂件查看或下载的功能,如果对⽤户查看或下载的⽂件不做限制,则恶意⽤户就能够查看或下载任意的⽂件,可以是源代码⽂件、敏感⽂件等。
渗透测试
1. 查可能存在⽂件包含的漏洞点,⽐如js,css等页⾯代码路径
cve漏洞库
2. 看看有没有⽂件上传访问的功能
3. 采⽤../来测试能否夸⽬录访问⽂件
⽰例:
风险评级:⾼风险
安全建议
1. 采⽤⽩名单机制限制服务器⽬录的访问,以及可以访问的⽂件类型(⼩⼼被绕过)
2. 过滤【./】等特殊字符
3. 采⽤⽂件流的访问返回上传⽂件(如⽤户头像),不要通过真实的⽹站路径。
⽰例:tomcat,默认关闭路径浏览的功能:
1<param-name>listings</param-name>
2<param-value>false</param-value>
3.3 任意⽂件上传漏洞
漏洞描述
⽬标⽹站允许⽤户向⽹站直接上传⽂件,但未对所上传⽂件的类型和内容进⾏严格的过滤。
渗透测试
1. 收集⽹站信息,判断使⽤的语⾔(PHP,ASP,JSP)
2. 过滤规则绕过⽅法:
风险评级:⾼风险
安全建议
1. 对上传⽂件做有效⽂件类型判断,采⽤⽩名单控制的⽅法,开放只允许上传的⽂件型式;
2. ⽂件类型判断,应对上传⽂件的后缀、⽂件头、图⽚类的预览图等做检测来判断⽂件类型,同时注意重命名(Md5加密)上传⽂件的
⽂件名避免攻击者利⽤WEB服务的缺陷构造畸形⽂件名实现攻击⽬的;
3. 禁⽌上传⽬录有执⾏权限;
4. 使⽤随机数改写⽂件名和⽂件路径,使得⽤户不能轻易访问⾃⼰上传的⽂件。
3.4 命令注⼊漏洞
漏洞描述
⽬标⽹站未对⽤户输⼊的字符进⾏特殊字符过滤或合法性校验,允许⽤户输⼊特殊语句,导致各种调⽤系统命令的web应⽤,会被攻击者通过命令拼接、绕过⿊名单等⽅式,在服务端运⾏恶意的系统命令。
渗透测试
⽰例:
风险评级:⾼风险
安全建议
1. 拒绝使⽤拼接语句的⽅式进⾏参数传递;
2. 尽量使⽤⽩名单的⽅式(⾸选⽅式);
3. 过滤危险⽅法、特殊字符,如:【|】【&】【;】【'】【"】等
3.5 SQL注⼊漏洞
漏洞描述
⽬标⽹站未对⽤户输⼊的字符进⾏特殊字符过滤或合法性校验,允许⽤户输⼊特殊语句查询后台数据库相关信息
渗透测试
1. ⼿动测试,判断是否存在SQL注⼊,判断是字符型还是数字型,是否需要盲注
2. ⼯具测试,使⽤sqlmap等⼯具进⾏辅助测试
⽰例:;
风险评级:⾼风险
安全建议
1. 防范SQL注⼊攻击的最佳⽅式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO
2. 拒绝使⽤拼接SQL的⽅式
3.6 跨站脚本漏洞
漏洞描述
当应⽤程序的⽹页中包含不受信任的、未经恰当验证或转义的数据时,或者使⽤可以创建 HTML或JavaScript 的浏览器 API 更新现有的⽹页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执⾏脚本,并劫持⽤户会话、破坏⽹站或将⽤户重定向到恶意站点。
三种XSS漏洞:
1. 存储型:⽤户输⼊的信息被持久化,并能够在页⾯显⽰的功能,都可能存在存储型XSS,例如⽤户留⾔、个⼈信息修改等。
2. 反射型:URL参数需要在页⾯显⽰的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。
3. DOM型:涉及DOM对象的页⾯程序,包括:document.URL、document.location、ferrer、window.location等
渗透测试
⽰例:
1. 存储型:
2. 反射型:
3. DOM型:
风险评级:⾼风险
安全建议
1. 不信任⽤户提交的任何内容,对⽤户输⼊的内容,在后台都需要进⾏长度检查,并且对【<】【>】【"】【'】【&】等字符做过滤
2. 任何内容返回到页⾯显⽰之前都必须加以html编码,即将【<】【>】【"】【'】【&】进⾏转义。
3.7 跨站请求伪造漏洞
漏洞描述
CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是⼀种⽹络攻击⽅式,它可以在⽤户毫不知情的情况下,以⽤户的名义伪造请求发送给被攻击站点,从⽽在未授权的情况下进⾏权限保护内的操作,如修改密码,转账等。
渗透测试
⽰例:
风险评级:中风险(如果相关业务极其重要,则为⾼风险)
安全建议
1. 使⽤⼀次性令牌:⽤户登录后产⽣随机token并赋值给页⾯中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,
验证后重新产⽣新的token,并赋值给hidden标签;
2. 适当场景添加验证码输⼊:每次的⽤户提交都需要⽤户在表单中填写⼀个图⽚上的随机字符串;
3. 请求头Referer效验,url请求是否前部匹配Http(s)://ServerHost
4. 关键信息输⼊确认提交信息的⽤户⾝份是否合法,⽐如修改密码⼀定要提供原密码输⼊
5. ⽤户⾃⾝可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;
3.8 内部后台地址暴露

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。