[ 目錄 ]

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的發展,以後肯定會攻擊手機客戶端,也會出現手機上的木馬、流氓軟件,無線終端安全又是一個新的挑戰。面對挑戰,您準備好了嗎?

資料來源 http://www.cnhacker.com/bbs./read.php?tid=197795
作者 新疆人胡胡
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ivan0914 的頭像
    ivan0914

    I'n Blog 之萬象真藏

    ivan0914 發表在 痞客邦 留言(0) 人氣()