渗透测试网站代码审计等基础方法篇

北京医院手足癣治疗 https://m-mip.39.net/czk/mipso_8833641.html

这几天整理了下网站渗透测试中基础部分的第三节,我们SINE安全渗透工程师对代码安全审计,手工渗透测试检查代码的危险漏洞方法,找出安全问题重点,配合工具扫描来达到测试漏洞的目的,本测试重点仅限于客户授权才能操作,切记忽非法尝试入侵!以下方法只是提供网站安全检测的具体参考意见。

1.5.代码审计

1.5.1.简介

代码审计是找到应用缺陷的过程。其通常有白盒、黑盒、灰盒等方式。白盒指通过对源代码的分析找到应用缺陷,黑盒通常不涉及到源代码,多使用模糊测试的方式,而灰盒则是黑白结合的方式。

1.5.2.常用概念

1.5.2.1.输入

应用的输入,可以是请求的参数(GET、POST等)、上传的文件、网络、数据库等用户可控或者间接可控的地方。

1.5.2.2.处理函数

处理数据的函数,可能是过滤,也可能是编解码。

1.5.2.3.危险函数

又常叫做SinkCall、漏洞点,是可能触发危险行为如文件操作、命令执行、数据库操作等行为的函数。

1.5.3.自动化审计

一般认为一个漏洞的触发过程是从输入经过过滤到危险函数的过程,而审计就是寻找这个链条的过程。

1.5.3.1.危险函数

白盒审计最常见的方式是通过搜寻危险函数与危险参数定位漏洞,比较有代表性的工具是Seay开发的审计工具。这种方法误报率相当高,这是因为这种方法没有对程序的流程进行深入分析,另一方面,这种方式通常是孤立地分析每一个文件,忽略了文件之间复杂的调用关系。

具体的说,这种方式在一些环境下能做到几乎无漏报,只要审计者有耐心,可以发现大部分的漏洞,但是在高度框架化的代码中,能找到的漏洞相对有限。

1.5.3.2.控制流分析

在后来的系统中,考虑到一定程度引入AST作为分析的依据,在一定程度上减少了误报,但是仍存在很多缺陷。

而后,DahseJ等人设计了RIPS,该工具进行数据流与控制流分析,结合过程内与过程间的分析得到审计结果,相对危险函数匹配的方式来说误报率少了很多,但是同样的也增加了开销。

1.5.3.3.灰盒分析

国内安全研究员Sinesafe提出了基于运行时的分析方式,解决了控制流分析实现复杂、计算路径开销大的问题。

1.5.4.手工审计方式

拿到代码,确定版本,确定能否正常运行找历史漏洞找应用该系统的实例简单审计,运行审计工具看是否有漏洞大概看懂整个程序是如何运行的文件如何加载类库依赖有没有加载waf数据库如何连接mysql/mysqli/pdo有没有用预编译视图如何形成能不能xss能不能模版注入SESSION如何处理文件数据库内存Cache如何处理文件cache可能写shell数据库cache可能注入memcache看账户体系管理员账户的密码加密方式泄漏数据后能不能爆破密码重置漏洞修改密码漏洞修改其他人密码普通用户的帐号能否拿到普通用户权限普通用户帐号能否盗号重点找没有帐号的情况下可以访问的页面是不是OAuth攻击SQLi看全局过滤能否bypass看是否有直接执行sql的地方看是用的什么驱动,mysql/mysqli/pdo如果使用PDO,看是否是直接执行的地方XSS全局bypass直接echo看视图是怎么加载的FILE上传下载覆盖删除包含LFIRFI全局找include,require正常上传看上传是如何确定能否上传文件的RCEcall_user_funcevalassertpreg_replace/eXXECSRFSSRF反序列化变量覆盖extractparse_strarray_mapLDAPXPathCookie伪造过滤找WAF看waf怎么过滤的,相应的如何绕过

1.6.WAF

1.6.1.简介

1.6.1.1.概念

WAF(WebApplicationFirewall,Web应用防火墙)是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供加固的产品。在市场上,有各种价格各种功能和选项的WAF。在一定程度上,WAF能为Web应用提供安全性,但是不能保证完全的安全。

1.6.1.2.常见功能

检测异常协议,拒绝不符合HTTP标准的请求对状态管理进行会话保护Cookies保护信息泄露保护DDoS防护禁止某些IP访问可疑IP检查安全HTTP头管理X-XSS-ProtectionX-Frame-Options机制检测CSRFtokenHSTS1.6.1.3.布置位置

按布置位置,WAF可以分为云WAF、主机防护软件和硬件防护。云WAF布置在云上,请求先经过云服务器而后流向主机。主机防护软件需要主机预先安装对应软件,如mod_security、ngx-lua-waf等,对主机进行防护。硬件防护指流量流向主机时,先经过设备的清洗和拦截。

1.6.2.防护方式

WAF常用的方法有关键字检测、正则表达式检测、语法分析、行为分析、声誉分析、机器学习等。

基于正则的保护是最常见的保护方式。开发者用一些设定好的正则规则来检测载荷是否存在攻击性。基于正则的防护较为简单,因此存在一些缺点。例如只能应用于单次请求,而且正则很难应用到一些复杂的协议上。

基于语法的分析相对正则来说更快而且更准确,这种分析会把载荷按照语法解析成的符号组,然后在符号组中寻找危险的关键字。这种方式对一些载荷的变式有较好的效果,但是同样的,对解析器要求较高。

基于行为的分析着眼的范围更广一些,例如攻击者的端口扫描行为、目录爆破、参数测试或者一些其他自动化或者攻击的模式都会被纳入考虑之中。

基于声誉的分析可以比较好的过滤掉一些可疑的来源,例如常用的VPN、匿名代理、Tor节点、僵尸网络节点的IP等。

基于机器学习的WAF涉及到的范围非常广,效果也因具体实现和场景而较为多样化。

除了按具体的方法分,也可以根据白名单和黑名单的使用来分类。基于白名单的WAF适用于稳定的Web应用,而基于黑名单则适合处理已知问题。

1.6.3.扫描器防御

基于User-Agent识别基于攻击载荷识别验证码1.6.4.WAF指纹

额外的Cookie额外的Header被拒绝请求时的返回内容被拒绝请求时的返回响应码IP1.6.5.绕过方式

1.6.5.1.基于架构的绕过

站点在WAF后,但是站点可直连站点在云服务器中,对同网段服务器无WAF1.6.5.2.基于资源的绕过

使用消耗大的载荷,耗尽WAF的计算资源1.6.5.3.基于解析的绕过

字符集解析不同协议覆盖不全协议解析不正确站点和WAF对


转载请注明:http://www.aierlanlan.com/rzfs/3303.html