避免Java Web应用程序中的远程命令OS注入
我们正在从OWSAP运行ZAP工具,以检查应用程序中的安全漏洞。ZAP工具报告了许多问题,如路径遍历、跨站点脚本编写、操作系统命令注入。在这里,我不理解在我们的应用程序中执行OS命令时到底发生了什么。 下面是我们上传文件时报告的项目示例避免Java Web应用程序中的远程命令OS注入,java,security,zap,Java,Security,Zap,我们正在从OWSAP运行ZAP工具,以检查应用程序中的安全漏洞。ZAP工具报告了许多问题,如路径遍历、跨站点脚本编写、操作系统命令注入。在这里,我不理解在我们的应用程序中执行OS命令时到底发生了什么。 下面是我们上传文件时报告的项目示例 http://<<IpAddr>>:<<port>>/filedsMgr/upload/fileupload?/?fileSize=837259 %7Ctimeout+%2FT+%7B0%7D http://:/
http://<<IpAddr>>:<<port>>/filedsMgr/upload/fileupload?/?fileSize=837259
%7Ctimeout+%2FT+%7B0%7D
http://:/filedsMgr/upload/fileupload?/?fileSize=837259
%7Ctimeout+%2FT+%7B0%7D
在上面的url中,攻击是对“filesize”参数执行的,攻击是“837259 | timeout/T{0}”。
根据OWSAP给出的描述,我知道这是由ZAP工具执行的超时命令,但我不理解它与我的应用程序的关系
有谁能告诉我它到底是什么,以及如何防止这种攻击吗?例如:您有REST控制器,方法为fileUpload和绑定
/file upload/{fileSize}
:
代码:
如果某个恶棍会向您发送文件大小路径参数的附加数据
此方法将引发异常。因为它将是无效的整数值:837259%7Ctimeout+%2FT+%7B0%7D
还建议:
- 什么是不允许的->拒绝
- 检查所有输入参数(尤其是字符串)
使用try catch and throw exception tank you@EvgenyLebedev验证传入参数
fileSize
,尝试转换为int
或long
,因此我们不需要担心操作系统超时命令?当然,超时-下一个问题,您必须对所有连接使用超时“您必须对所有连接使用超时”这句话我不明白。这就是ZAP toolserver端进行的攻击必须使用超时来处理连接(配置应用程序服务器或应用程序)
@RequestMapping(value = "/file-upload/{fileSize}", method = RequestMethod.POST)
@ResponseBody
public Response fileUpload(@PathVariable int fileSize) {
//...
}