XML安全之Web Services
L.N. · 2015/03/31 10:37
0x01 引言
前段时间搞站遇到了TRS的系统里面涉及到了ws(Web Services简称)的相关技术,不久前玩一个xx酒店的时候又通过ws进入了它的数据库,后来接连遇到或看见一些app服务和物联网相关系统中出现XML相关漏洞,于是搜索相关资料做技术积累。如果文中出现错误,望指正。
0x02 什么是WS
Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。 Web Services 利用 SOAP 和 XML对这些模型在通讯方面作了进一步的扩展以消除特殊对象模型的障碍。Web Services 主要利用 HTTP 和 SOAP 协议使业务数据在 Web 上传输,SOAP通过 HTTP 调用业务对象执行远程功能调用,Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象的。(来至百度百科)。
简单的说WS就是http + XML,WS平台的元素有:SOAP、UDDI、WSDL。
0x03 xml注入(soap注入)
以下将介绍一些利用场景,漏洞是千变万化的肯定不全,也不是每种环境都适用。
情景1:
漏洞:
#!html
<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest">attacker's code</USER>
复制代码
poc:
#!html
A</USER><USER role="admin">B
复制代码
情景2:
漏洞:
改变了为空,通过返回错误发现loginid作为登陆判断:
poc:
结果bypass登陆:
情景3:
#!html
<transaction><total>6000.00<total><credit_card_number>12345</credit_card_number> //12345可控,覆盖<total>标签<expiration>01012008</expiration>
</transaction>
复制代码
poc:
#!html
12345</credit_card_number><total>1.00</total><credit_card_number>12345
复制代码
0x03 SQL注入和xpath注入
总所周知SQL注入,注入的是数据库,作为owasp top10的漏洞,存在相当的普遍,ws中也同样存在。wooyun上也同样存在案例 WooYun: 安盛天平某平台系统可被getshell第四弹,并存在注入 ,这种ws上的sql注入漏洞也是非常容易被忽略的。至于sql注入的利用,不用多少,不同数据库不同注入手法,和我们常见的sql注入方法一样,并无区别。
xpath注入,在wooyun上谈论的很少,中文资料也不是很多。简单的形容如果xml作为数据库的话xpath讲究相当与sql语句,因此如果服务器是用xml格式来存储数据,我们用xpath来调用数据,当传入参数过滤不严的时候,就可能照成xpath注入,当然xpath注入还有很多技巧和函数的使用以及和xxe结合使用之类的技巧,在此不多说。
举一ws注入xpath利用场景:
#!html
<sopaenv:Body>
<web1:Login xmlns:web1="http://ws.ws.com/">
<username>abc</username>
<password>123</password>
</web1:Login>
</sopaenv:Body>
复制代码
假如正常的xpath查询:
string(//Employee[username/text()='abc' and password/text()='123']/account/text())
复制代码
我们控制可以控制username或者password,输入
' or '1' = '1
复制代码
最后xpath查询成为:
string(//Employee[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']/account/text())
复制代码
绕过登陆,当让xpath的利用不知如此,比如使用doc()函数读取任意xml文件、使用doc()和xxe读取任意文件。
0x04 DDOS和XXE
为什么会有DDOS和XXE呢,前面已经说过了ws可以看成xml和http的结合,因此XML相关漏洞也是可能会出现在ws之中的,关于xml中的DDOS和XXE都是各位大牛都做了很多分析:
DDOS上有:长数据DDOS、多标签DDOS
例如:
#!html
<transaction><total>6000.00<total><credit_card_number>12345</credit_card_number><credit_card_number>qqqq</credit_card_number> <credit_card_number>qqqq</credit_card_number> <credit_card_number>qqqq</credit_card_number> <credit_card_number>qqqq</credit_card_number> ``````<expiration>01012008</expiration>
</transaction>
复制代码
xxe漏洞drops上已有文章:http://drops.wooyun.org/tips/5290,以及利用xxe漏洞DDOS,利用xxe漏洞SSRF、命令执行关于这连个漏洞推荐两篇文章:《Having Fun with XML hacking》、《XML实体攻击-从内网探测到命令执行步步惊心》
0x05 上传漏洞
这两个都是危害非常大的漏洞:
上传漏洞,ws是可以上传附件的,典型的例子就是trs上传漏洞
WooYun: 安徽省公路管理网站任意文件写入漏洞
0x06 总结
从上面的攻击方式不难看出分为两类:
1.xml相关攻击技术;
2.使用soap请求传输数据,数据进去其他函数或程序引起的漏洞(sql注入、文件上传等所有常见漏洞)
因此漏洞利用形式多种多样,不同场景会有不同利用方式结合使用或者是bypass,掌握基础的知识才能在遇到的时候灵活运用。
0x07 引用
http://resources.infosecinstitute.com/soap-attack-2/
https://www.blackhat.com/presentations/bh-europe-07/Bhalla-Kazerooni/Whitepaper/bh-eu-07-bhalla-WP.pdf
https://www.owasp.org/index.php/Testing_for_Web_Services
XML安全之Web Services相关推荐
- Web Services简单介绍
Web Services简单介绍 Web Services入门 一.Web Services简介 1.什么是Web Services? Web Services 是应用程序组件 Web Service ...
- 使用LoadRunner对Web Services进行调用--Add Service Call
利用LoadRunner对Web Services进行测试时,通常有三种可供采用的方法: 在LoadRunner的Web Services虚拟用户协议中,[Add Service Call] 在Loa ...
- 把一个 ASP.NET 程序转换为了 Web Services
什么是Web Services? Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-contained)并可自我描 ...
- Web Services 平台元素
Web Services 拥有三种基本的元素. 它们是:SOAP.WSDL 以及 UDDI. 什么是 SOAP? 基本的 Web services 平台是 XML + HTTP. SOAP 指简易对象 ...
- Web services详解 :入门必看 | WSDL、SOAP
文章目录 概念 交互过程 Web services 三种基本元素: SEI和CXF WSDL 概念 WSDL文档结构 `` **Operation**(操作) `` ***binding*** 元素 ...
- Web Services:惊世未了缘
URL= http://www.csdn.net/news/newstopic/5/5665.shtml Web Services:惊世未了缘 (2002.05.14) 来自:每周电脑报 ...
- 使用Apache CXF和Apache Axis2实现Web Services客户端
记录:314 场景:在Spring Boot微应用上,使用Apache CXF框架实现Web Services客户端,调用Web Services服务端:使用Apache Axis2框架实现Web S ...
- .NET Web Services服务
一.简介 Web Services 可使您的应用程序成为 Web 应用程序. Web Services 通过 Web 进行发布.查找和使用. 1.什么是Web Services? Web Servic ...
- web services学习笔记(摘自菜鸟教程)
1.什么是web services Web Services是应用程序组件 Web Services使用开放协议进行通信 Web Services是独立的(self-contained)并可自我描述 ...
- 新版:Web Services面试题库和答案
新版:Web Services面试题库和答案 1.Web Service是什么? Web Service是一种标准软件系统,用于通过网络在两个设备(客户端和服务器)之间进行通信. Web Servic ...
最新文章
- 开源websocket
- 可以直接考甲级吗_函授本科可以考四级吗
- BZOJ 1646: [Usaco2007 Open]Catch That Cow
- 学习python的日常7
- 2020 年百度之星·程序设计大赛 - 测试赛1001 度度熊保护村庄
- 越优秀的人,越早想通透这七件事
- 西门子PLC usb编程电缆驱动
- 为何恒星/太阳(辐射)可以被视为黑体(辐射)?
- android oppo 驱动,OPPO R9驱动安装不了怎么办 OPPO R9驱动安装不了的解决方法
- 毕业设计-基于汇编语言的at89c52单片机可调数字钟的设计,基于AT89S52单片机数字钟的仿真设计(汇编语言程序)...
- Docker网络之bridge0详解
- csuacm H - 爬楼梯
- Prometheus+k8s之告警通知
- IMO班聊助力壹米滴答全国“织网” 让每一米、每一秒都更有效率
- UE4 制作玻璃材质总结
- 三点共线判断方法分析
- 尺寸公差分析尺寸链计算软件:新能源电池行业—模组散热系统之弹簧长度计算
- 基于三相VSR的SVPWM调制
- LeetCode - 点菜展示表
- 浅析漫谈EOS之带宽
热门文章
- linux访问vdma的数据,Xilinx VDMA 24位流输出与32位AXI总线的内存流数据关系
- 1081. 不同字符的最小子序列
- 190.颠倒二进制位
- 25. k个一组翻转链表
- Morris Traversal
- ctab法提取dna流程图_每周实验新品:创新核酸提取技术、离心管自动打标设备...
- pc 页面在移动端怎么获取放大倍数、_逆冬:移动端排名应该怎么做?两种匹配移动端实战排名干货分享!...
- 凸优化第四章凸优化问题 4.6广义不等式约束
- Hamilton-Caylay (哈密尔顿-凯莱)定理
- vue 背景弹出禁止滚动_vue-蒙层弹窗里的内容滚动。外层大页面禁止滚动