目录
常见漏洞签名
1.1、简介:
许多类型的Web应用程序漏洞在代码中都有相对一致的签名,通常这表示通过迅速扫描和搜索代码就可以确定一个应用程序中存在的大部分漏洞。但在大多数情况下、签名是不区分语言的,最重要的是程序员采用的编程技巧、而不是实际使用的API和语法
1.2、跨站点脚本
简述:
1、在非常明显的XSS漏洞中,用户收到的HTML代码的一部分明显是由用户可控制的数据构成的
2、示例一:如果HREF链接的目标由从请求查询字符串中直接提取的字符串构成。对潜在恶意的内容进行HTML编码这种阻止跨站点脚本的常用方法,并不适用于生成的串联字符串,因为它已经包含有效的HTML标记,任何净化数据的尝试都会按应用程序指定的方式对HTML编码,从而中断应用程序。因此这个HREF链接肯定易于受到攻击,除非在其他地方头施了过滤, 阻止了在查询字符串中包含XSS的请求。这种使用过滤来阻止XSS攻击的方法往往存在缺陷, 如果采用, 应对它进行仔细审查, 以确定解决办法
3、示例二:用户可控制的数据用来指定随后用于创建发送给用户响应的一个变量值。类成员变量m_pageTitle被设定为从请求查询字符串中提取的一个值,随后将用于创建被返回的HTML页面的<title>元素
4、应该仔细审查应用程序对m_pegeTitle变量的处理过程. 以及它是如何被合并到被返回的页面中的,以确定数据是否为防止XSS攻击面进行了适当的编码
1.3、SQL注入
简述:
1、如果各种硬编码的字符串与用户可控制的数据串联成一个SQL查询,然后在数据库内执行这个查询,那么最可能出现SQL注入漏洞
2、在源代码中搜索常用于从用户提交的输入构建查询的硬编码子字符串,是在代码中迅速确定这种明显漏洞的简单方法,这些子字符串通常由SQL代码片断组成,并被源代码引用,因此寻找由引号、SQL关键字和空格组成的适当模式可能会有用
3、在每一种情况中,应该核实将这些字符串与用户可控制的数据串联是否会引入SQL注入漏洞。因为SQL关键字区分大小写,所以在代码中搜索这些关键字时也应区分大小写。为减少错误警报,这些搜索项后可能附加了空格
1.4、路径遍历
简述:
1、用户可控制的输入未经任何输入确认,或核实已经选择一个适当的文件,就被传送给一个文件系统API,这是路径遍历漏洞的常见签名,在最常见的情况下,用户数据附加在一个硬编码或系统指定的目录路径之后,让攻击者能够使用点-点-斜线建立目录树,访问其他目录中的文件
2、应对任何允许用户上传或下载文件的应用程序功能进行仔细审查,了解是如何根据用户提交的数据调用文件系统API的,并确定是否可以使用专门设计的输入访问其他位置的文件。通常通过在代码中搜索任何与文件名有关的查询字符串参数,以及在相关语言中搜寻所有文件API并检查提交它们的参数,就可以迅速确定相关的功能
1.5、任意重定向
简述:
1、通过源代码中的签名常可轻易确定各种钓鱼攻击向量。如任意重定向,查询字符串中用户提交的数据被用于构建一个URL,用户即被重定向到这个URL
2、通常检查客户端代码即可发现任意重定向漏洞,当然这并不需要了解应用程序的内部机制。如使用JavaScript 从URL查询字符串中提取一个参数, 并最终重定向到这个URL
3、当意识到脚本可能会成为指向外部域的一个绝对URL的重定向攻击的目标,该脚本检查重定向URL是否包含一个双斜线, 如果包含就省略第一个单斜线将它转换成一个相对URL。但当它最后一次调用函数时,该函数将对任何URL编码的字符进行解码,确认后再执行规范化常常会导致漏洞产生。攻击者可以使用构造的查询字符串造成一个指向任意绝对URL的重定向
1.6、OS命令注入
简述:
连接到外部系统的代码中常常包含指示代码注入漏洞的签名。如message与address参数从用户可控制的表单数据中提取出来, 然后直接传送给 API
1.7、后门密码
简述:
除非被程序员有意隐藏, 否则当审查证书确认逻辑时,用于测试或管理目的的后门密码非常容易确定,使用这种方法还可以轻易确定未引用的函数与隐藏调试参数
1.8、本地代码漏洞
简述:
应对应用程序使用的任何本地代码进行仔细审查,确定可被攻击者用于执行任意代码的常见漏洞
【web-攻击本地编译性应用程序】(11.1)缓冲区溢出漏洞https://blog.csdn.net/qq_53079406/article/details/126631060?spm=1001.2014.3001.5501【web-攻击本地编译性应用程序】(11.2)整数漏洞https://blog.csdn.net/qq_53079406/article/details/126641483?spm=1001.2014.3001.5501【web-攻击本地编译性应用程序】(11.3)格式化字符串漏洞https://blog.csdn.net/qq_53079406/article/details/126642107?spm=1001.2014.3001.5501
1.9、源代码注释
简述:
1、许多软件漏洞可以从源代码注释中发现,如果开发者意识到某项操作存在危险,并在代码中标注提示,准备以后修复这个问题,但却从未看到修复,这时就会出现以上情况。如果测试时确定应用程序存在某种反常行为,并将其记录在注释中,但同样从未对这种行为进行全面调查,这时也会出现上面的情况
2、在代码中搜索说明常见问题的注释,往往可以迅速发现许多明显的漏洞
有用的搜索项:bug、problem、bad、hope、todo、fix、overflow、crash、inject、xss、trust