XML-RPC放大攻擊:針對(duì)WordPress的“暴力美學(xué)”
暴力猜解攻擊是我們至今為止在互聯(lián)網(wǎng)上看到的最古老而常見的攻擊之一。黑客可以通過SSH和FTP協(xié)議,暴力猜解攻擊你的WEB服務(wù)器。
傳統(tǒng)暴力猜解攻擊
這些攻擊一般都不是很復(fù)雜,而且理論上是比較容易遏制的。但是,它們?nèi)匀粨碛写嬖诘膬r(jià)值,因?yàn)槿藗儾⒉涣?xí)慣采用強(qiáng)密碼,而且不是每個(gè)人都擁有良好的登錄習(xí)慣。
然而可惜的是,暴力猜解攻擊有個(gè)致命的弱點(diǎn)。通常來說,如果黑客需要嘗試500個(gè)不同的密碼,他將嘗試發(fā)送500次不同的請(qǐng)求到服務(wù)器上。通過限制登錄次數(shù),可以在一定層面上遏制暴力猜解攻擊。
放大型暴力猜解攻擊
黑客可以減少攻擊次數(shù)么,他們能否一次請(qǐng)求,就能進(jìn)行多次登陸嘗試?請(qǐng)想象一下,如果你一次攻擊請(qǐng)求能嘗試500個(gè)密碼,那么登錄次數(shù)限制神馬的,不都是戰(zhàn)斗力5的渣渣了?
這種手法有點(diǎn)類似于咱們以前的DDoS放大攻擊,一個(gè)核心指揮服務(wù)器,能夠利用DNS或者NTP協(xié)議回應(yīng)進(jìn)行放大攻擊,增加原本攻擊強(qiáng)度50-100倍。無論是任何類型的放大型攻擊,都將讓黑客倍加受益。
通過Wordpress XML-RPC進(jìn)行暴力猜解放大攻擊
XML-RPC的隱藏特性之一,則是你可以使用system.multicall方法,在單個(gè)請(qǐng)求中進(jìn)行多次嘗試,這是非常有用的。它允許應(yīng)用程序通過一條HTTP請(qǐng)求,執(zhí)行多個(gè)命令。
XML-RPC是一個(gè)通過HTTP方法進(jìn)行遠(yuǎn)程調(diào)用的,非常簡單易用的玩意兒。它支持Perl、Java、Python、C、C++、PHP,以及許多其他編程語言。Wordpress和Drupal,以及許多其他內(nèi)容管理系統(tǒng)都支持XML-RPC。
當(dāng)然,任何好的技術(shù)都是雙刃劍。在XML-RPC技術(shù)被普通程序開發(fā)者所喜愛的同時(shí),也成了黑客手中的利器。
我們跟蹤有關(guān)XML-RPC的攻擊好幾個(gè)星期了,第一次在網(wǎng)絡(luò)上發(fā)現(xiàn)案例是在2015年9月10日,類似的攻擊有愈演愈烈的趨勢(shì)。與以前黑客熱衷于wp-login.php不同,這個(gè)文件很容易被登錄保護(hù),或者.htaccess給ban掉。黑客嘗試?yán)胹ystem.multicall方法,試圖在一個(gè)請(qǐng)求里包含數(shù)百次攻擊。你可以想象一下,你在查看日志的時(shí)候,一個(gè)條目就包含如此多嘗試的樣子。
194.150.168.95 – – [07/Oct/2015:23:54:12 -0400] “POST /xmlrpc.php HTTP/1.1″ 200 14204 “-” “Mozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1
光看這個(gè),你看的出來這是調(diào)用了數(shù)百次密碼猜解的攻擊么?黑客可以通過它們繞過安全檢測,進(jìn)行暴力嘗試。
wp.getCategories方法攻擊
我們?cè)诰W(wǎng)絡(luò)上還發(fā)現(xiàn)了wp.getCategories方法,這要求用戶名和密碼,請(qǐng)求效果如下:
<methodCall><methodName>system.multicall</methodName> <member><name>methodName</name><value><string>wp.getCategories</string></value></member> <member><name>params</name><value><array><data> <value><string></string></value><value><string>admin</string></value><value><string>demo123</string></value> .. <member><name>methodName</name><value><string>wp.getCategories</string></value></member> <member><name>params</name><value><array><data> <value><string>admin</string></value> <value><string>site.com</string></value> …
WordPress(xmlrpc)會(huì)響應(yīng)是否有成功的用戶名密碼組合。
在上面這個(gè)例子中,黑客嘗試了admin/demo123和admin/site.com的組合,響應(yīng)包如下:
[{‘faultCode': 403, ‘faultString': ‘Incorrect username or password.‘}, {‘faultCode': 403, ‘faultString': ‘Incorrect username or password.‘}, {‘faultCode': 403, ‘faultString': ‘Incorrect username or password.’}, {‘faultCode': 403, ‘faultString': ‘Incorrect username or password.’}, {‘faultCode': 403, ‘faultString': …
[[{‘url': ‘http://site.com/wordpress/’, ‘isAdmin': True, ‘blogid': ‘1’, ‘xmlrpc': ‘http://site.com/wordpress/xmlrpc.php’, ‘blogName': ‘wpxxx’}]]]
這里我們使用的是wp.getCategories方法進(jìn)行攻擊實(shí)驗(yàn),其他需要認(rèn)證的方法也可以這樣用。所以ban掉wp.getCategories對(duì)阻止同類攻擊,并沒有太大用處。下面是需要身份認(rèn)證的方法列表:
wp.getUsersBlogs, wp.newPost, wp.editPost, wp.deletePost, wp.getPost, wp.getPosts, wp.newTerm, wp.editTerm, wp.deleteTerm, wp.getTerm, wp.getTerms, wp.getTaxonomy, wp.getTaxonomies, wp.getUser, wp.getUsers, wp.getProfile, wp.editProfile, wp.getPage, wp.getPages, wp.newPage, wp.deletePage, wp.editPage, wp.getPageList, wp.getAuthors, wp.getTags, wp.newCategory, wp.deleteCategory, wp.suggestCategories, wp.getComment, wp.getComments, wp.deleteComment, wp.editComment, wp.newComment, wp.getCommentStatusList, wp.getCommentCount, wp.getPostStatusList, wp.getPageStatusList, wp.getPageTemplates, wp.getOptions, wp.setOptions, wp.getMediaItem, wp.getMediaLibrary, wp.getPostFormats, wp.getPostType, wp.getPostTypes, wp.getRevisions, wp.restoreRevision, blogger.getUsersBlogs, blogger.getUserInfo, blogger.getPost, blogger.getRecentPosts, blogger.newPost, blogger.editPost, blogger.deletePost, mw.newPost, mw.editPost, mw.getPost, mw.getRecentPosts, mw.getCategories, mw.newMediaObject, mt.getRecentPostTitles, mt.getPostCategories, mt.setPostCategories
下面的圖是針對(duì)XML-RPC的system.multicall方法,專門用于暴力猜解攻擊的樣例。每個(gè)請(qǐng)求都可以承載數(shù)百次暴力猜解攻擊,圖中的數(shù)字能讓你欣賞感受下暴力美學(xué):
如果你是一名Wordpress站長,并且沒有使用依賴xmlrpc.php文件的插件,你可以重命名或者刪除這個(gè)文件來防御攻擊。但如果你正在使用如JetPack之類的插件,ban掉這個(gè)文件可能會(huì)讓你的網(wǎng)站功能異常。