我正在发现ZAP及其活动扫描仪。
我尝试对易受攻击的BodgeIT商店的变体执行主动扫描。在basket.jsp
页中,后端代码如下:
stmt = conn.prepareStatement("INSERT INTO BASKETCONTENTS (BasketID, ProductID, Quantity, PriceToPay) VALUES (" + basketId + ", " + productId + ", " + Integer.parseInt(quantity) + ", " + price + ")"); // add it in the basket in the DB
quantity
变量应该是一个整数,其值是从客户端请求中获取的,作为POST参数。
ZAP发现,当提供非数值时,后端将返回错误500并关闭连接:
问题是,后端是用Java编写的,它具有绑定检查机制,这使得开发人员无法引入Buffer Overflow漏洞(与语言本身一样)。
那么,为什么ZAP仅仅看到此“错误500” +“连接已关闭”,为什么认为缓冲区溢出?
编辑:我检查了缓冲区溢出的扫描规则,并发现:https://github.com/zaproxy/zap-extensions/blob/master/src/org/zaproxy/zap/extension/ascanrules/BufferOverflow.java#L119
ZAP每次收到内部服务器错误时是否都会报告缓冲区溢出?
答案 0 :(得分:2)
难以完全确定地检测到某些漏洞。 在这种情况下,ZAP提交了一个异常大的值,并且应用程序返回了错误。
如“其他信息”中所述,这可能是缓冲区溢出。由您决定是现在还是现在。您已经确定它不是,但是您可能还想更改该应用程序,以便在这些情况下不会返回500。