TaoGOGO http://taogogo.taocms.org/ TaoGOGO的技术博客,始于2007年,通过文字分享技术、记录生活 2023-09-21 TaoGOGO http://taogogo.taocms.org/?id-368.htm WEB应用安全测试备忘单 介绍

这个备忘单是一个对WEB应用程序执行黑盒测试的任务清单。

目的

这个清单可以当成有经验的测试老手的备忘录、结合OWASP测试指南一起使用。清单将与测试指南v4一起更新(https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents)。

我们希望把这个备忘单做成XML文档,这样就可以使用脚本来将其转换成各种格式,如pdf、Media Wki、HTML等,这样同样使得将文档转换为某种打印格式变得容易。

感谢所有给予反馈和帮助的人,如果你有任何意见或建议,欢迎提出并加入到编辑队伍中来。

检查列表

收集信息

  • 手动访问站点
  • 使用爬虫来抓取(手工)无法访问或隐藏的内容
  • 检查泄露信息的文件,如robots.txt, sitemap.xml, .DS_Store
  • 检查主要的搜索引擎索引的此站点的公开内容
  • 检查不同的浏览器UA获取的内容的差异(如使用爬虫的UA访问手机站点)
  • 检查WEB应用程序的指纹(Fingerprinting)
  • 确认使用的技术
  • 确认用户角色
  • 确认应用程序的入口地址
  • 确认客户端代码
  • 确认不同的版本的差异(如web, mobile web, mobile app, web services)
  • 确认位于同一主机或业务相关的应用程序
  • 确认所有的主机名和端口
  • 确认第三方的托管内容

配置管理

  • 检查常用的应用程序和管理URL
  • 检查旧文件、备份文件和未引用文件是否存在
  • 检查支持的HTTP方法和XST漏洞(http://www.hackdig.com/?01/hack-11.htm)
  • 检查对文件后缀的处理
  • 检查安全HTTP头(如CSP, X-Frame-Options, HSTS,见http://www.hackdig.com/?07/hack-4958.htm)
  • 测试安全策略(如Flash, Silverlight, robots)
  • 在线上环境测试非生产数据或做相反的操作
  • 检查客户端代码中的敏感信息(如API keys,凭据等)

安全传输

  • 检查SSL版本、算法和密钥长度
  • 检查数字证书有效性
  • 检查凭据是否只通过HTTPS传输数据
  • 检查登陆表单是否只通过HTTPS传输数据
  • 检查会话令牌是否只通过HTTPS传输
  • 检查是否使用了HSTS

认证

  • 测试枚举用户
  • 测试认证绕过
  • 测试暴力破解保护
  • 测试密码规则的质量
  • 测试记住密码功能
  • 测试密码表单的自动完成的功能
  • 测试密码重置和找回
  • 测试密码修改流程
  • 测试验证码
  • 测试多因子认证
  • 测试注销功能
  • 测试HTTP的缓存管理(如Pragma, Expires, Max-age)
  • 测试默认登陆账号
  • 测试用户认证历史
  • 测试账号锁定和密码修改成功的通知渠道
  • 测试跨应用程序共享模式/SSO的一致性

会话管理

  • 确定应用程序管理会话的方式(如将cookie tokens、url中的token)
  • 检查会话cookie的标示(httpOnly和secure)
  • 检查会话cookie的返回(path和domain)
  • 检查会话cookie的有效期(expires和 max-age)
  • 检查会话cookie的过期失效
  • 检查会话cookie的相对超时失效
  • 检查会话cookie退出后失效
  • 测试用户是否可以同时拥有多个会话
  • 测试会话cookie的随机性
  • 确认会话令牌在登陆、角色变化和退出时的更新
  • 测试跨应用共享session会话的一致性
  • 测试会话过载(未限制会话应用范围,见:https://www.owasp.org/index.php/Testing_for_Session_puzzling_(OTG-SESS-010))
  • 测试是否存在CSRF和点击劫持漏洞

授权

  • 测试路径遍历
  • 测试绕过授权
  • 测试垂直访问控制问题
  • 测试水平访问控制问题
  • 测试授权检查缺失

数据验证

  • 测试反射型XSS
  • 测试存储型XSS
  • 测试DOM型XSS
  • 测试CSF(flash XSS)
  • 测试HTML注入
  • 测试SQL注入
  • 测试LDAP注入
  • 测试ORM注入
  • 测试XML注入(http://www.hackdig.com/?03/hack-8921.htm)
  • 测试XXE注入
  • 测试SSI注入(http://www.hackdig.com/?01/hack-7955.htm)
  • 测试XPath注入
  • 测试XQuery注入
  • 测试IMAP/SMTP注入
  • 测试Code注入
  • 测试EL注入(https://www.owasp.org/index.php/Expression_Language_Injection)
  • 测试Command注入
  • 测试Overflow (堆, 栈和整形溢出)
  • 测试Format String(错误的字符串格式化)
  • 测试incubated vulnerabilities(缺陷孵化)
  • 测试HTTP Splitting/Smuggling(协议层)
  • 测试HTTP Verb Tampering(权限干涉)
  • 测试Open Redirection
  • 测试本地文件包含
  • 测试远程文件包含
  • 比较客户端与服务端的验证规则
  • 测试NoSQL注入
  • 测试HTTP参数污染
  • 测试自动绑定(auto-binding:https://click.apache.org/docs/user-guide/html/ch02s03.html)
  • 测试Mass Assignment(见ror经典漏洞,http://blog.xdite.net/posts/2012/03/05/github-hacked-rails-security/)
  • 测试NULL/Invalid Session Cookie

拒绝服务

  • 测试反自动化/机器请求
  • 测试账号锁定
  • 测试HTTP 协议DoS
  • 测试SQL通配符DoS/sleep Dos

业务逻辑

  • 测试功能滥用
  • 测试缺乏不可否认性(非对称加密作用)
  • 测试信任关系
  • 测试数据完整性
  • 测试指责分离

密码学

  • 检查应加密数据是否加密
  • 根据上下文检查是否使用了错误的算法
  • 检查使用弱算法
  • 检查是否合理使用盐
  • 检查随机函数(的随机性)

风险功能—文件上传

  • 检查可接受的文件类型是否在白名单内
  • 检查文件尺寸限制、上传频率和总文件数的阈值与限制情况
  • 检查文件内容是否与定义的文件类型相符
  • 检查所有上传的文件都经过杀毒软件扫描
  • 检查不安全的文件名是否经过处理
  • 检查不能在web根目录下直接访问上传文件
  • 检查上传的文件是否存储在相同的主机名和端口
  • 检查文件和其他媒体继承了身份验证和授权功能

风险功能—支付信息

  • 测试WEB服务器或应用程序是否存在已知漏洞和配置问题
  • 测试默认或易被猜到的密码
  • 测试生产环境的非生产数据或做相反的测试
  • 测试注入漏洞
  • 测试缓冲区溢出
  • 测试不安全的加密存储
  • 测试传输层保护不足
  • 测试不适当的错误处理
  • 测试CVSS v2 评分> 4.0的全部漏洞
  • 测试身份验证和授权的问题
  • 测试CSRF

HTML 5

  • 测试WEB消息传递
  • 测试WEB本地存储SQL注入
  • 检查CORS的实现
  • 检查离线的WEB应用程序


其他格式

  • DradisPro模板格式 on github
  • Asana在Templana的格式 (感谢Bastien Siebman)

作者与主编

Simon Bennetts
Rory McCune 
Colin Watson
Simone Onofri

包括Testing Guide v3的全部作者

其他贡献者


Ryan Dewhurst
Amro AlOlaqi
翻译TaoGOGO


英文原文:https://www.owasp.org/index.php/Web_Application_Security_Testing_Cheat_Sheet

]]>
TaoGOGO 2015-10-17 23:10:29
http://taogogo.taocms.org/?id-365.htm SSO统一登录实现流程图 准备做个SSO统一登录,画了个流程图,不过最终因为复杂度的原因,没有使用这个方案。这个方案非常适合多域名或者对安全性要求很高的场景。


]]>
TaoGOGO 2015-07-10 00:07:17
http://taogogo.taocms.org/?id-357.htm IE11曝出UXSS 0day IE又爆出UXSS漏洞了,按照微软的步伐,这漏洞又要不知何时才能修复了。
光说不练假把式,看了这个漏洞演示地址,你啥都懂了:http://www.deusen.co.uk/items/insider3show.3362009741042107/

简要说明

此IE漏洞使通过第三域名修改dailymail.co.uk的内容称为可能。
使用方式:
1. 确认弹窗弹出后,等待3秒后关闭。
2. 点击“Go”。
3. 7秒后,dailymail.co.uk的内容将被修改为“Hacked by Deusen”

攻击效果图:


技术细节
漏洞类型:UXSS
影响:完全绕过SOP
攻击效果:攻击者可以窃取任意域名的内容、将恶意代码注入任意域名
测试环境:IE11 Win7 2015年1月29日
英文原文:http://seclists.org/fulldisclosure/2015/Feb/0
]]>
TaoGOGO 2015-02-03 07:02:46
http://taogogo.taocms.org/?id-356.htm Flash 0day漏洞(CVE-2015-0311)的详细分析 上周Flash爆了个大漏洞,相信不少玩家都收获颇丰,正好看到趋势已经把这个漏洞的成因分析出来了。正好闲来无事翻译后发到freebuf了,在这里也分享下:



我们分析截获的样本后发现,实际Flash文件被嵌入到一个经过高强度混淆的恶意.SWF文件内。剥离混淆代码后,我们全面的分析了漏洞并发现了Exp的运行方式。在介绍细节之前,分享一下我们的“神秘”发现:这些代码片段竟与CVE-2014-8439的漏洞利用代码颇有几分相似之处。这两个漏洞利用代码极有可能出自同一黑客之手。


漏洞根源

分析发现这是一个UAF类型的漏洞。这种情况下,domainMemory引用的内存会被释放掉,攻击者能够读写内存甚至执行任意代码。

漏洞触发的步骤如下:

  1. 创建一个ByteArray实例并写入大量数据,然后压缩实例内容

    图 1. ByteArray 创建代码

  2. 从0x200开始覆盖ByteArray的压缩数据并将ByteArray赋予domainMemory.

    图 2. 覆盖 ByteArray

  3. 解压ByteArray的数据。因为上一步的操作,程序将抛出IOError异常。代码捕获异常然后用另一个ByteArray保存释放后的内存地址,接下来ByteArray被0xBBBBBBBB填充。

    图 3. IOError与异常捕获

  4. 清除ByteArray内的占位符数据.

    图 4. 释放ByteArray内存

为什么domainMemory仍引用未压缩的数据缓冲区

AvmPlus项目代码中,我们在ByteArray::UncompressViaZlibVariant函数中发现了漏洞所在。函数是这样设计的:首先它会分配一个缓冲区来存储未经压缩的数据,如果解压缩成功,它会通知domainMemory使用新的缓冲区。如果解压缩失败,它将不通知domainMemory使用新缓冲区同时释放新申请的缓冲区。

这看上去是无可非议的,好戏还在后面。在解压缩的过程中,新分配的缓冲区会变大。类Grower控制缓冲区的动态增长,增长结束后,类Grower的析构函数通知domainMemory使用扩展缓冲区。最终domainMemory在解压过程中使用了新的缓冲区,如果解压失败,新创建的缓冲区将被释放。这就打乱了原来ByteArray::UncompressViaZlibVariant的逻辑:解压缩失败,domainMemory却使用了新的缓冲区。

这就是经过上面的步骤,domainMemory指向填充0xBBBBBBBB的被释放内存空间的原因,到这一步,Exp已经可以通过使用内部指令来读写这块被释放的内存空间了。


图 5. 读被释放的内存空间

与最近的大部分Flash漏洞利用代码类似,这个Exp通过控制内存布局将攻击向量置入被释放的内存并覆盖攻击向量的长度标识,从而达到任意读取和写入内存的目的。

图 6. 覆盖内存

很明显,内存布局在解压缩过程中被改变了,向量长度也被覆盖(见下图)。在我的调试环境中,UAF内存地址为0x05120000。

图 7. 解压缩后的内存布局(头部信息已经被成功解压)

图 8. 0xBBBBBBBB覆盖ByteArray后的内存布局

图 9. ByteArray释放后的内存布局和攻击向量

图 10. 攻击向量长度被覆盖后的内存布局

攻击向量长度被覆写为0x40000000后,示例代码就能任意读写内存;此时的内存容量也足以执行任意代码了。接下来Exp只需要触发一个伪造的虚函数即可完成全部利用过程。

英文原文:http://blog.trendmicro.com/trendlabs-security-intelligence/analyzing-cve-2015-0311-flash-zero-day-vulnerability/

]]>
TaoGOGO 2015-01-30 21:01:21
http://taogogo.taocms.org/?id-354.htm github中国区Top1000用户的博客列表 抓了github中国区top1000用户的信息,其中855个有博客,放在一个自用的小导航里面了:http://go.taocms.org/category-20.htm

数据显示,写博客的,技术都还可以~~

写代码的工程师其实和诗人、作家没啥区别,都是用爪子来创造美好的生活。


]]>
TaoGOGO 2014-12-19 18:12:55
http://taogogo.taocms.org/?id-348.htm 一个简单的使用hashmap的java程序 多年未摸java,为了给hive写udf操刀写了一把,哈哈~

import java.util.*;

public class test {
private static final String py2zhStr = "All,全部|BD,孟加拉|Unknown,Unknown";


private String result = "";
public static void main(String[] args) {


System.out.println("Hello, it's: ");
System.out.println(new Date());
test taotest=new test();
System.out.println(taotest.evaluate("USaa"));
}


public String evaluate( String text ) {
if ( null == text ) {
return null;
}


String str = text.toString();
HashMap hm=new HashMap();
String[] tmparray = new String[10];
String[] strarray=py2zhStr.split("|"); 


for (int i = 0; i < strarray.length; i++) {
tmparray = strarray[i].toString().split(",");
if(tmparray.length == 2) {
hm.put(tmparray[0],tmparray[1]);
}
}






if(hm.containsKey(str)) {
result= hm.get(str).toString();
} else {
result= "未知" ;
}


return result;
}
}]]>
TaoGOGO 2014-11-27 20:11:40