WAP Web Application Security

WAP Web Application Security

Author: lake2 [80sec]
EMail:  lake2#80sec.com
Site:   http://www.80sec.com
Date:   2008-6-10

---------------------------------

      [ 目录 ]

0x00  纯属扯淡
0x01  WML与WMLScript
0x02  WML注入攻击
0x03  WML注入可以做什么
0x04  WAP站点会话安全
0x05  后记

--------------------------------

0x00  纯属扯淡

    因为本本借给小s美女了,只好用手机上网,发现WAP网站也有一定的市场,顺便也就学习了下WAP上的Web安全。貌似还没有全面一点的关于WAP Web应用安全的文章,那我就不揣浅陋分享一下自己的一点经验,抛砖引玉,还望各位大牛指教。


0x01  WML与WMLScript

    现在大多数WAP网站的页面都是使用的WML,也有使用XHTML的,不过用的比较少,所以本文主要还是讨论WML。
    WML是Wireless Markup Language(无线标记语言)的缩写,它同HTML类似,都是网页标记语言。不过HTML是让我们在电脑上用IE或firefox等浏览器进行阅读的,而WML语言则是专为手机等一些无线终端使用的。
    当然,Opera浏览器目前是支持WML的,比如你可以使用Opera打开百度的WAP主页:http://wap.baidu.com,但你用IE、firefox就看不到正常页面。
    如果你的手机支持WAP上网的话,它的浏览器就是支持WML的。呃,或许您早就用手机浏览过WAP网站了吧。
    嗯,一个简单的WML网页代码如下:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="no1" title="Card 1">
<p>Hello world!</p>
</card>
</wml>

    用支持WML的浏览器访问以上页面就可以看到Hello world字样。
    不管是HTML还是WML,这些都是前端展示页面,其实它们的后台都是一样的,都可能是ASP、PHP、JSP或者ASP.Net,所以后台程序面临的安全问题还是SQL注入那些,本文不讨论。
    呃,更多的关于WML语法请参考这里:http://www.w3school.com.cn/wap/index.asp
    如果我们把WML比作HTML,那么有没有可以比作Javascript的WAP脚本语言呢?有,它就是WMLScript。不过同JS比起来,WMLScript功能上要弱很多,有兴趣可以看看这里:http://www.w3school.com.cn/wmlscript/index.asp


0x02  WML注入攻击

    HTML页面面临的一个大的安全风险就是XSS,那是因为输出到页面的参数没有被妥善的处理导致攻击者可以向页面注入HTML或者Javascript代码。
    类似的,对于后台程序处理到的参数如果没有做好处理,WML页面也可以被注入任何数据,这种方式可以叫做WML注入(WML Injection)。
    好,看一个简单的例子,有这样一个PHP代码(为了更好的演示,假设magic_quotes_gpc=off):

<?PHP
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=/"1.0/"?>";
?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="no1" title="Card 1">
<p>Hello <?PHP echo $_REQUEST['a']?>!</p>
</card>
</wml>

    呵呵,很明显,参数a没有被转义就直接输出到页面了,一个WML注入漏洞就产生了。


0x03  WML注入可以做什么

    先想一下,XSS可以做什么?
    目前来看最大的问题是WML注入可以插入WML代码更改页面。好,还是前面那个代码,我提交这样的参数:http://127.0.0.1/wap/test.php?a=lake2</p><a href="http://www.baidu.com">点击登录</a><p>hi,然后WAP浏览器里面就会显示出一个“点击登录”的链接,实际上是指向百度首页的。呵呵,有些WAP浏览器是没有地址栏和状态栏的。其实也不用让用户去点,WML有一个timer标签可以定时让页面自动转过去。
    当然可以插入WMLScript,但不是每个浏览器都支持WMLScript,而且WMLScript功能很弱。如果浏览器是Opera的话倒可以利用WML注入来执行JS代码。
    经典的弹cookie的框框哪里去了?是的,没有了,一是因为WML/WMLScript根本不能读写Cookie,二是很多WAP浏览器根本不支持Cookie-_-


0x04  WAP会话安全

    是的,由于多数WAP浏览器不支持Cookie,WAP网站的解决办法就是把标识会话的字符串在URL或者表单中传送。这个字符串就相当于是Cookie了,只要拿到它就能以用户身份访问WAP网站了。
    会话标识放在URL中从来都是危险的,呵呵,您应该知道HTTP协议里面的referer是干什么的吧。哈哈,这里是一片蓝海,因为好多WAP网站都是这样的。当然,有些WAP浏览器会发送referer字段,有些又不发送——没有统一的标准很是麻烦。
    如果会话标识放在表单中,那就比较安全了,WMLScript也拿不到页面内容,除非我们能够控制表单提交的URL——貌似一般情况下WML注入不容易修改到这个。不过这样的设置也比较少见。


0x05  后记

    现在各大门户都有自己的WAP站点,基本上大业务都有对应的WAP页面,但是很少人关注WAP站点的安全,所以,这一部分是有很多安全问题挖掘的。除了前面提到的比较常见的WML注入和会话劫持,也存在其他很多攻击面,比如,可能在传统HTML页面登陆的地方有验证码,但是在WAP登陆入口却没有,这里就产生了一个暴力破解密码的隐患——这些就要看具体的业务应用逻辑了。对于WAP站点来讲,如何更好的保证Web应用程序的安全呢,这是它的安全部门的问题:)
    不局限于WAP,手机是通过GPRS网关连出去的,所以IP地址就是网关的,如果以手机为终端进行攻击,在追溯来源上应该比PC更困难。而且可以以手机为Modem,电脑通过手机使用GPRS网关上网。
    随着3G的发展,以后肯定会攻击手机客户端,也会出现手机上的木马、流氓软件,无线终端安全又是一个新的挑战。面对挑战,您准备好了吗?

源码来自:https://pan.quark.cn/s/a4b39357ea24 《C++ Primer》作为C++编程领域中的一部权威著作,主要服务于初学者和经验丰富的开发者,致力于帮助他们深入掌握C++的核心知识。 第一章通常会详细讲解C++语言的基础概念和语法结构,包括变量的使用、数据类型的分类、常量的定义、运算符的应用以及基础的输入输出操作。 接下来,我们将对这一章中的核心知识点和可能的习题解答进行深入分析。 ### 1. 变量与数据类型在C++编程中,变量被视为存储数据的媒介。 每一个变量都必须预先声明其数据类型,常见的数据类型有整型(int)、浮点型(float)、双精度浮点型(double)以及字符型(char)。 例如:```cppint age = 25; // 声明一个整型变量age并赋予其初始值25float weight = 70.5f; // 声明一个浮点型变量weight并赋予其初始值70.5char grade = A; // 声明一个字符型变量grade并赋予其初始值A```### 2. 常量与字面量常量指的是不可更改的值,可以通过`const`关键字进行声明。 例如:```cppconst int MAX_SIZE = 100; // 声明一个整型常量MAX_SIZE,其值为100```字面量是指程序中直接书写的值,如`42`、`3.14`或`"Hello"`。 ### 3. 运算符C++提供了多种运算符,涵盖了算术运算符(+,-,*,/,%)、比较运算符(==,!=,<,>,<=,>=)、逻辑运算符(&&,||,!)以及赋值运算符(=,+=,-=,*=,/=,%=)等。 ### 4. 输入与输出在C++中,使用`std::cin`来实现输...
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值