為什么你什么都沒干,但QQ空間中卻發了很多小廣告?也許你的QQ賬號已經被盜。本文將講解一個QQ的快速登錄的原理。
而利用這個原理最終可以實現,只要你點擊一個頁面或運行過一個程序,那么我就可以擁有你的登錄權限。可以直接進你郵箱,進你微雲,進你QQ空間等....
看懂本篇需要一點點web安全的基礎,請移步我的上篇
web安全:通俗易懂,以實例講述破解網站的原理及如何進行防護!如何讓網站變得更安全。
http://www.cnblogs.com/1996V/p/7458377.html
騰訊QQ有一個快速登錄的功能,意思就是當你點開網頁的時候,他能自動效驗你是否登錄了QQ。
那么騰訊是怎樣實現的呢?
騰訊是通過NPAPI和 ActiveX 來實現的。
(網景插件應用程序編程接口(NPAPI, Netscape Plugin Application Programming Interface)是Netscape Navigator、Mozilla Suite、Mozilla SeaMonkey和Mozilla Firefox等Gecko引擎瀏覽器與Apple Safari和Google Chrome等webkit引擎瀏覽器所使用的類似ActiveX的插件接口。
ActiveX 是一個開放的集成平台,為開發人員、 用戶和 Web生產商提供了一個快速而簡便的在 Internet 和 Intranet 創建程序集成和內容的方法。 使用 ActiveX, 可輕松方便的在 Web頁中插入 多媒體效果、 交互式對象、以及復雜程序,創建用戶體驗相當的高質量多媒體CD-ROM 。)
因為IE從5.5版本后停止支持 NPAPI,所以, 騰訊對 IE瀏覽器 采用 ActiveX 插件,對除IE瀏覽器等其它主流瀏覽器采用NPAPI的形式來實現快速登錄。
每當你運行該頁面的時候,他會判斷你瀏覽器支持不支持ActiveX,然后再進行相關操作,代碼我就不放出來了,有興趣的大家可自行百度了解。
當然,如果用ActiveX呢,你的瀏覽器又得下載插件,如果用NPAPI呢部分瀏覽器還要審核插件,並且伴隨着時代的發展,NPAPI和ActiveX 已經顯得老態龍鍾,所以,騰訊想了個新花招來實現快速登錄。
原來,QQ在本地開了一些端口(4300),做了個httpd,可以把這個東西理解成web服務器,類似於IIS Express
httpd是是Apache超文本傳輸協議(HTTP)服務器的主程序。被設計為一個獨立運行的后台進程,它會建立一個處理請求的子進程或線程的池。
下面,我們開始着眼於實現。
將使用到一款工具:Fiddler。
我們隨便打開一個QQ域下的網站,比如www.qq.com,我們打開Fiddler進行監測。
發現:
在ui.ptlogin2.qq.com的Host下,會產生一個key為 pt_local_token的 cookie, 如圖所示,尾號為562。
然后我們點擊右上角登錄,
繼而會彈出一個快速登錄的框
他是怎么監測到我登錄的有QQ號呢?
好,我們接着用Fiddler來監測,我們發現,當點擊右上角登錄的時候,會觸發一個接口。
這個接口的地址是:https://localhost.ptlogin2.qq.com:4300/pt_get_uins?callback=ptui_getuins_CB&r=0.9417236381383591&pt_local_tk=0.1111111111111562
我們可以發現 ,這個接口的 pt_local_tk參數就是 之前的pt_local_token,尾號562,剛好吻合。
這個接口返回了一串 關於當前QQ的信息:
var var_sso_uin_list=[{"account":"137780739","client_type":65793,"face_index":486,"gender":1,"nickname":"看客 er","uin":"137780739","uin_flag":323486274}];ptui_getuins_CB(var_sso_uin_list);
還發現,還會請求一個接口,ptlogin2.qq.com/getface?appid=636014201&imgtype=3&encrytype=0&devtype=0&keytpye=0&uin=137780739&r=0.9433088515882535
這個接口會返回當前QQ的頭像地址:
這樣一來,頁面上就顯示了我們的頭像 網名等信息了。
再然后我們在快速登錄框中點擊, 登錄按鈕。
會調用:localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=137780739&callback=ptui_getst_CB&r=0.2443934530496683&pt_local_tk=0.11111111111111562
這個接口的作用是,服務器設置給瀏覽器Cookie,
再然后,又會調用接口:/jump?clientuin=137780739&keyindex=9&pt_aid=636014201&u1=http://www.qq.com/qq2012/loginSuccess.htm&pt_local_tk=0.11111111111111562&pt_3rd_aid=0&ptopt=1&style=40
將帶入之前的Cookie然后進入這個接口,最終返回的仍然是注冊Cookie,
而這次的Cookie,就是你登錄所需要的Cookie。
這些Cookie就相當於令牌,有了這個令牌就可以擁有快速登錄的權限,就相當於你登錄一般的網站,賬號密碼進去,后台會給瀏覽器注冊一條Token來做狀態驗證一樣。
也就是說,拿到了Cookie,你就可以通過CSRF(跨站偽裝)的形式,來搞好多事情。
可以在網站上放一個頁面,里面跑http請求,或者搞個窗體,里面也跑http請求。
只要你電腦上登錄了QQ,只要你打開了這個頁面或者打開了這個窗體,那么你的賬號就已經被入侵!
不需要輸入賬號密碼,可以直接拿着QQ空間發表留言的接口直接調用,可以直接爬蟲抓相冊圖片,可以進微雲等等等等。
最后,再告訴大家一個非常好的接口。
http://localhost.ptlogin2.qq.com:4300/mc_get_uins
Host: localhost.ptlogin2.qq.com:4300
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Get即可
返回:
作者:小曾
出處:http://www.cnblogs.com/1996V/p/7481823.html 歡迎轉載,但任何轉載必須保留完整文章,在顯要地方顯示署名以及原文鏈接。如您有任何疑問或者授權方面的協商,請給我留言
.Net交流群, QQ群:166843154 欲望與掙扎