渗透测试发现bug记录(SQL注入等)
一、SQL注入(高危)
程序开发过程中,对sql关键字未进行过滤,导致客户端可以通过POST或GET提交sql语句到服务器端正常运行。SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
漏洞查询:
将下列中的unitName参数插入sql语句,成功进行延时。
"unitName":"'and(select*from(select+sleep(2))a/**/union/**/select+1)='"
解决办法:
不要使用${}

二、swagger未授权访问 (高危)
未授权访问漏洞是指未受保护的资源或功能可以被未经授权的用户访问。在 Swagger API 中,如果没有适当的访问控制措施,攻击者可以通过查看 Swagger 文档中的 API 接口和参数,发现和利用未受保护的 API。
漏洞URL:
http://xxxx/warning/swagger-resources
http://xxxx/warning/v2/api-docs
http://xxxx/warning/v3/api-docs
解决方法:
knife4j:
# 开启增强配置
enable: true
# 开启生产环境屏蔽
production: true
三、HOST头攻击(低危)
应用系统未校验或者直接使用Host头,攻击可利用此漏洞与一系列其他漏洞组合进行缓存投毒、触发特殊业务功能的逻辑漏洞、造成基于路由的SSRF以及经典服务端漏洞,如SQL注入(当Host头被用于SQL语句时)等。
操作步骤:
将host头更换,依旧可以访问。

修复建议:
1、对于所有的HTTP请求,都要验证Host头信息的合法性;
2、使用反向代理服务器,可以有效防范Host头攻击。反向代理服务器可以在代理HTTP请求前,验证请求的Host头信息的合法性,并且可以过滤掉非法的请求,例如:
1)Nginx,修改ngnix.conf文件,在server中指定一个server_name名单,并添加检测。
2)Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。
3)Tomcat,修改server.xml文件,配置Host的name属性。
更多推荐

所有评论(0)