本文为一些列连载文章之一,不定期更新,计划目录如下:
OWASP介绍
SQL注入
命令注入
XML外部实体注入
XPATH注入
反射式、DOM及存储XSS
失效的身份认证和会话管理
不安全的直接对象引用
安全配置错误
敏感信息泄露
功能级访问控制缺失
跨站请求伪造
服务端请求伪造
文件上传漏洞
未验证的重定向和转发
不安全的反序列化
使用含有已知漏洞的组件
一、 注入
注入攻击漏洞,例如SQL,OS 以及 LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。
XML外部实体注入
漏洞利用演示
页面功能:选择并查看xml文件内容。假设选择的evil.xml文件内容为:
则结果显示了对应的文件内容和目录内容:
漏洞危害说明
XXE攻击可以执行服务端任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
漏洞代码分析
Stringxmlfile=request.getParameter("fileselect"); if(xmlfile ==null){ xmlfile="wah.xml"; } File f = newFile(application.getRealPath("/") + "/xml/"+xmlfile); SAXReader reader = newSAXReader(); try { Document document = reader.read(f); Element element = document.getRootElement(); Iterator it = element.elementIterator(); while(it.hasNext()) { Object object = (Object) it.next(); out.println("=====开始遍历=====
"); Element ele = (Element) object; List eleAttrs =ele.attributes(); for (Attributeattr : eleAttrs) { out.println("属性名:" +attr.getName() + "--属性值:" +attr.getValue()+"
"); } Iterator itt = ele.elementIterator(); while(itt.hasNext()) { Element eleChild = (Element)itt.next(); out.println("节点名:" +eleChild.getName() + "--节点值:" +eleChild.getStringValue().replaceAll("\r\n", "br/>")+"
"); } out.println("=====结束遍历=====
"); } } catch(DocumentException e) { e.printStackTrace(); } %>
后端处理代码中没有禁用DTD或没有对XML文件中可能引用外部实体的关键字进行判断,如果xml文件中,通过定义外部引用变量,指向系统敏感文件或其它地址,则可导致上述漏洞问题发生。
注:代码中未对xmlfile进行验证,存在路径遍历问题。
漏洞代码修复
防止XXE注入可使用:
a.禁用文档类型定义DTD
String xmlfile=request.getParameter("fileselect"); if(xmlfile ==null){ xmlfile="wah.xml"; } File f = newFile(application.getRealPath("/") + "/xml/"+xmlfile); SAXReader reader = newSAXReader(); // 禁止DTD reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true); reader.setFeature("http://xml.org/sax/features/external-general-entities",false); reader.setFeature("http://xml.org/sax/features/external-parameter-entities",false); try { Document document = reader.read(f); Element element =document.getRootElement(); Iterator it = element.elementIterator(); …….%>
b.过滤用户提交的XML数据关键词:!ENTITY,或者,SYSTEM和PUBLIC。
了解新钛云服
新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照
深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资
原电讯盈科中国区副总裁加入新钛云服「附专访」
新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁
新钛云服一周年,完成两轮融资,服务五十多家客户
上海某仓储物流电子商务公司混合云解决方案
新钛云服出品的部分精品技术干货
国内主流公有云VPC使用对比及总结
万字长文:云架构设计原则|附PDF下载
刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
Ceph OSD故障排除|万字经验总结
七个用于Docker和Kubernetes防护的安全工具
运维人的终身成长,从清单管理开始|万字长文!
OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等
什么是云原生?
IT混合云战略:是什么、为什么,如何构建?