什么是二次漏洞?首先要结构利用代码写入网站保存,在第二次或多次请求后调用攻击代码触发或修改配置触发的脆弱性被称为二次脆弱性。二次漏洞有点像存储XSS的味道。即使payload插入,也要看页面输出是否过滤。
举个简单的SQL注入例子。攻击者a在网站评论的地方发表了带注入语言的评论,此时注入语言完全保存在数据库中。但是,由于评论引用功能存在SQL注入脆弱性,攻击者在评论所引用刚提交的注入句的评论,提交后,server方面从数据库中取出了第一次评论,因为第一次评论中有单一引用可以关闭第二次的句子,引起了注入脆弱性2019年8月初发表的dedecms评论二次注入脆弱性,当时有很棒的60个文字的长度限制突破,之后在案例中分析了这个脆弱性。
二次漏洞的出现归根结底是开发商在信誉数据的逻辑上考虑不全面,开发商认为这个数据来源或者这个配置是不会出现问题的,而没有想到另一个漏洞可以修改这些信誉数据,整个漏洞产生的流程。因为这样的漏洞没有很大的逻辑关系,所以在发现和修补上比一般直接利用的漏洞更复杂。
二次漏洞审计技术。二次脆弱性写在payload上,触发payload可能不在一个地方,但可以通过寻找相关关键词来定位,但精度稍微下降,例如可以根据数据库字段、数据表名等进行代码检索,大部分二次脆弱性比一般脆弱性强得多,因此为了更好地挖掘二次脆弱性,最好读一遍所有的代码。这有助于更好地理解程序的业务逻辑和整体配置,读代码时一定会轻松愉快。业务逻辑越复杂,二次漏洞越容易出现。我们可以关注购物车和订单。此外,还有引用数据、文章编辑、草稿等。这些地方与数据库互动。与文件系统互动的是系统配置文件。然而,这些通常需要管理者的权限来操作。在二次漏洞类型中,可以重点关注SQL注入、XSS。