国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Metasploit框架下SEH溢出漏洞的滲透測試研究

2016-12-22 06:39:11魏占禎高駿濤
信息安全與通信保密 2016年6期
關(guān)鍵詞:字符串緩沖區(qū)漏洞

姚 棟,魏占禎,高駿濤

(北京電子科技學(xué)院,北京100070)

基于Metasploit框架下SEH溢出漏洞的滲透測試研究

姚 棟,魏占禎,高駿濤

(北京電子科技學(xué)院,北京100070)

Metasploit作為安全領(lǐng)域中最具影響力的開源框架平臺,其最突出的貢獻(xiàn)是半工業(yè)化生產(chǎn)方式的漏洞研究與滲透代碼開發(fā)。以Easy File Sharing FTP v3.5軟件存在的基于PASS命令的SEH溢出漏洞為例,從漏洞挖掘與分析、滲透攻擊模塊編寫、滲透攻擊模塊測試這三個方面詳細(xì)闡述了基于Metasploit框架下SEH溢出漏洞的滲透測試通用方法,并編寫了針對上述軟件安全漏洞的滲透攻擊模塊。研究重點分析了針對SEH溢出滲透利用的三個關(guān)鍵環(huán)節(jié):繞過SEH限制、獲取返回地址和編寫短跳轉(zhuǎn)指令。通過這一系列的深入研究,很好的推動了自動化滲透測試發(fā)展的研究,同時編寫Metasploit框架支持的滲透攻擊模塊也為安全領(lǐng)域內(nèi)共享的系統(tǒng)化攻擊知識庫做出了重要補充,具有非常重要的意義。

Metasploit;客戶端滲透攻擊;SEH溢出攻擊;Ruby語言

0 引言

Metasploit[1-2]是一個開源的滲透測試框架軟件,同時也是一個逐漸發(fā)展成熟的漏洞研究與滲透代碼開發(fā)平臺,它將公開發(fā)布的滲透攻擊代碼資源以一種通用化結(jié)構(gòu)與標(biāo)準(zhǔn)化描述語言進(jìn)行組織,使其成為安全領(lǐng)域共享的系統(tǒng)化攻擊知識庫,因此每一個新的滲透代碼的增加,就是對業(yè)界共享的系統(tǒng)化攻擊知識庫的一次補充,具有非常重要的意義。

Metasploit中集成了一系列的實用工具,不僅可以為充分剖析目標(biāo)漏洞提供輔助,還能精確定位出漏洞利用過程可能依賴的關(guān)鍵指令與地址。此外,滲透攻擊模塊的編寫采用ruby元程序語言,使得代碼開發(fā)只需以類似攻擊模塊為模版,然后將重點放在漏洞觸發(fā)與利用過程中,編寫方式靈活多樣,此外還可以動態(tài)加載任意的攻擊載荷,大大提高了滲透測試工作效率[3]。這種滲透代碼的開發(fā)過程相較于以前的方式已經(jīng)初具工業(yè)化生產(chǎn)方式,對自動化滲透測試發(fā)展的研究具有很好的推動作用。

1 漏洞挖掘與分析

本文以Easy File Sharing FTP v3.5軟件存在的基于PASS命令的SEH溢出漏洞為例,詳細(xì)闡述具有通用性的基于Metasploit框架的SEH滲透測試方案。該軟件沒有對FTP賬戶密碼輸入長度進(jìn)行檢測,當(dāng)輸入長度很長的密碼時會觸發(fā)棧溢出漏洞,從而可以執(zhí)行攻擊者發(fā)送的任意代碼。

1.1 針對漏洞程序進(jìn)行Fuzz測試

Fuzz測試,也稱模糊測試[4-5],目的是驗證程序接收處理畸形數(shù)據(jù)是否發(fā)生異常,發(fā)生什么樣的錯誤,以及堆棧是否能被溢出等。此次針對Easy File Sharing FTP Server的fuzz測試目的是確認(rèn)程序是否存在基于SEH溢出漏洞,通過向其發(fā)送長度很長的隨機字符串作為登陸密碼,讓其服務(wù)端崩潰,從而驗證能否進(jìn)行漏洞利用[6]。

為了能夠便于觀察堆棧是否溢出,登陸密碼用全“A”字符串來替代隨機字符串。下面列出了由python語言實現(xiàn)遠(yuǎn)程連接到FTP服務(wù)端上的fuzz測試代碼。Fuzz測試通過登陸匿名用戶,使用長達(dá)1 024個字符“A”的登錄密碼,來觸發(fā)異常,測試程序是否崩潰,并使用OllyDbg調(diào)試器進(jìn)行觀察。經(jīng)過多次測試,當(dāng)密碼長度達(dá)到3 000字節(jié)后,Winxp平臺下的Easy File Sharing FTP Server客戶端最終出現(xiàn)崩潰。

fuzz測試代碼如下:

在OllyDbg調(diào)試器所示查看SEH鏈的內(nèi)容,如圖1所示,結(jié)構(gòu)化異常處理鏈(SEH)已被成功覆蓋為41414141,同時觀察堆棧中改寫的內(nèi)容,如圖2,表明程序確實存在基于PASS命令的棧溢出漏洞,并且該漏洞可以被利用。

圖1 SEH鏈表

圖2 堆棧中SEH有關(guān)內(nèi)容

1.2 控制SEH

SEH[7-8]中文全稱為異常處理結(jié)構(gòu)體,它是Windows異常處理機制所采用的重要數(shù)據(jù)結(jié)構(gòu),可以對程序異常做出處理,并指導(dǎo)程序下一步流程。SEH結(jié)構(gòu)體包含兩個DWORED指針,共8 bytes存儲在系統(tǒng)棧中,它們分別是SEH鏈表指針和異常處理函數(shù)句柄。

Windows系統(tǒng)棧中同時存在多個SEH,他們通過鏈表指針在棧內(nèi)由棧頂向棧底串成單向鏈表,位于鏈表最頂端的SEH通過線程環(huán)境塊(TEB)0字節(jié)偏移處的指針進(jìn)行標(biāo)識,即FS:[0],而底部則被指定為FFFFFFFF,因此SEH鏈也叫FS:[0]鏈。當(dāng)異常發(fā)生時,操作系統(tǒng)會中斷程序,并首先從FS:[0]鏈的鏈表頂端處取出距離棧頂最近的SEH,使用異常處理函數(shù)句柄所指向的函數(shù)來處理異常,如果異常處理函數(shù)運行失敗,則順著SEH鏈表依次嘗試其他異常處理函數(shù),直到程序自身所寫的所有異常處理函數(shù)都無法處理時,系統(tǒng)默認(rèn)的異常處理函數(shù)UnhandledExceptionFilter()將會被調(diào)用,并彈出“程序遇到問題需要關(guān)閉,是否將錯誤報告發(fā)送給MS”的錯誤對話框,然后強制關(guān)閉程序。

正是由于SEH這些特性[9],導(dǎo)致溢出緩沖區(qū)的數(shù)據(jù)可以覆蓋SEH,并且能夠?qū)EH中異常處理函數(shù)的入口地址更改為shellcode的起始地址,從而錯誤的將shellcode當(dāng)作異常處理函數(shù)來執(zhí)行。

前面的模糊測試已經(jīng)證明可以通過發(fā)送一個超長密碼字符串,來控制存在漏洞的FTP服務(wù)進(jìn)程的SEH鏈,接下來確定覆蓋SEH所需要的緩沖區(qū)精確長度。修改fuzz測試代碼,利用Metasploit工具pattern_create生成3 000字節(jié)的 Metasploit rulez字符串,命令為 root@ kali:../msf3/tools#./pattern_create.rb 3000,用其替換字符串“A”,填充到 fuzz測試代碼中,部分修改代碼(Metasploit rulez字符串payload)如下:

在OllyDbg調(diào)試器中捕獲上述修改后的fuzz測試所引發(fā)的異常,查詢SEH鏈,如圖3所示,可知SEH被覆蓋為“68443468”。調(diào)用Metasploit框架下提供精確計算覆蓋發(fā)生位置的pattern_offset工具,命令為:#./pattern_offset.rb 68443468 3000,如圖 4 所示,可知偏移量為2563,表明覆蓋SEH四字節(jié)位置為2564~2567。

圖3 SEH被覆蓋為隨機字符串

圖4 計算SEH覆蓋精確位置

接下來繼續(xù)修改Fuzz測試代碼,來驗證此位置的正確性。以2 563個字符“A”開始,接著是4個字符“B”來覆蓋SEH,最后填充600個字符“A”,維持密碼長度為3 000字節(jié),登錄遠(yuǎn)端FTP服務(wù),程序出現(xiàn)奔潰,調(diào)試器捕獲如圖5所示信息,SEH被覆蓋為42424242,成功獲得SEH控制權(quán)。fuzz測試部分修改代碼如下(精確獲取SEH控制權(quán)payload):

圖5 成功獲得SEH控制權(quán)

2 滲透攻擊模塊開發(fā)

基于棧溢出漏洞的fuzz測試完成并獲得SEH控制權(quán)后,滲透攻擊模塊的開發(fā)便成為最終實現(xiàn)滲透利用的關(guān)鍵過程。

2.1 漏洞利用方式

基于SEH溢出攻擊的常見漏洞利用方式[10]是:覆蓋處理異常的SEH例程指針,同時觸發(fā)一個有意偽造的異常(通常這個偽造異常是通過POP POPRET這一系列指令來完成的),從而強制讓程序跳轉(zhuǎn)到攻擊者的 shellcode處,具體見圖6。其中諸如POP-POP-RETN這類偽造異常的指令,由于程序在調(diào)用異常處理例程之前,所有的寄存器都將先被清空(如:xor eax,eax),因此只能依靠從已加載的DLL/EXE模塊中去調(diào)用這些指令。區(qū)別于棧溢出攻擊的重寫EIP,跳轉(zhuǎn)到寄存器下執(zhí)行shellcode,基于SEH漏洞攻擊最大的區(qū)別正是所有的寄存器均不可用。

根據(jù)針對SEH異常的漏洞利用方式,可以歸納出一個典型的exploit結(jié)構(gòu)如表4所示。

表4 基于SEH溢出的典型Exploit結(jié)構(gòu)

2.2 繞過SEH限制

在前面的Fuzz測試中,我們已經(jīng)找到了next SEH和SE Handler的偏移,偏移分別為2560~2563和2564~2567字節(jié),之后就需要用指向pop pop ret指令串的指針去覆蓋SE Handler,偽造一個二次異常,而為了保證滲透代碼在windows平臺下的通用性,pop-pop-ret指令應(yīng)該避免使用系統(tǒng)DLL[11],而用程序自身的DLL/EXE中的地址來編寫,同時還需要保證使用的DLL沒有用/safeSEH選項去編譯,因為這一選項添加了額外的保護(hù),幫助禁止非法的SEH覆蓋。

首先編寫攻擊模塊關(guān)鍵初始代碼,如下:

圖6 基于seh漏洞利用方式

滲透代碼中的初始化模塊聲明了“BadChars”,它列出了所有可能會使目標(biāo)程序在未執(zhí)行shellcode前就崩潰掉的壞字符[12]。識別壞字符的通用方法是加載字符串連續(xù)的shellcode,eg(\x00\x01\x02……),然后在調(diào)試器中觀察最先被截斷的字符,將其標(biāo)識為badchar。由于在Metasploit平臺下存在類似的FTP攻擊模塊,可以采用從類似的代碼中尋找badchar這種高效簡便的方法。

此時的滲透攻擊模塊完成的主要功能是:連接和登陸到遠(yuǎn)程FTP服務(wù)上,使用一長串的“A”字符來作為初始緩沖區(qū),用字符串“BBBB”來覆蓋SEH,緊隨其后填充全“C”字符串,生成整個滲透注入字符串作為FTP的登錄密碼,發(fā)送到目標(biāo)主機上。

2.3 獲取返回地址

在確定SE Handler的偏移后,就需要使用指向pop pop ret指令串的指針將其覆蓋,來偽造一個二次異常,接下來從Easy File Sharing FTP Server程序中定位一個pop pop ret指令。

首先使用OllyDbg加載目標(biāo)程序,然后啟用OllySSEH插件,查詢所有已加載的模塊中,哪些未開啟safeSEH保護(hù),如圖7所示,因為WINXP下未啟用ALRS,找到包含pop/pop/ret指令串的且沒有safeSEH保護(hù)的DLL模塊對于成功滲透至關(guān)重要[13]。

圖7 safeSEH模塊掃描

經(jīng)過篩選,最終確定程序自帶的SSLEAY32.DLL這一模塊。使用msfpescan功能例程的-p選項來從此DLL中尋找pop+pop+ret指令串的地址[14]。具體指令為:msfpescan-p ssleay32.dll。msfpescan找到了非常多的符合pop-pop-ret指令,從中任意選擇一個不含NULL(00)字節(jié)的地址,如圖8所選地址0x100189b4,用來在滲透代碼中覆蓋SEH。

圖 8 pop-pop-ret指令地址

2.4 編寫短跳轉(zhuǎn)指令

確定返回地址后,對滲透代碼中的‘target’字節(jié)進(jìn)行修改,用0x100189b4地址將原來的占位符替換掉。同時修改exploit函數(shù),將原來的“BBBB”字符串修改為[targt.ret].pack(“V”),這樣Metasploit利用[target.ret].pack(“V”)函數(shù)就能自動對返回地址進(jìn)行正確排序并寫入,從而準(zhǔn)確對SEH覆蓋,繞過SEH限制[15]。

完成上述步驟后,接下來進(jìn)行shellcode定位,從而精確的填寫nseh中短跳轉(zhuǎn)指令。為了能夠?qū)hellcode進(jìn)行定位,將“next SEH”中的4 bytes替換為斷點[16],當(dāng)異常發(fā)生時程序被中斷,方便觀 察 shellcode,同 時 shellcode用 特 殊 字 符 串 -“1ABCDEFGH2ABCDEFGH3ABCDEFGH4ABCDEFGH”替代,最后調(diào)整初始緩沖區(qū)長度為2 559字節(jié),修改代碼如下(驗證shellcode位置攻擊代碼)。

運行上述編寫的 easy_file_sharing_ftp_pass_3.5 滲透攻擊模塊,攻擊winxp下的FTP客戶端,程序出現(xiàn)崩潰,OllyDbg調(diào)試器在崩潰點處暫停,進(jìn)入View->SEH Chain菜單項,按F2設(shè)置斷點,如圖9所示,之后將異常傳遞給應(yīng)用程序并進(jìn)入到SSLEAY.DLL模塊下pop-pop-ret指令中,如圖10所示,接著使用單步步入進(jìn)行調(diào)試,最終執(zhí)行到NSEH中的斷點,如圖11所示,觀察緩沖區(qū)的數(shù)據(jù)可以發(fā)現(xiàn)在next SEH中地址指針指向了\xcc\xcc\xcc\xcc,正如滲透代碼中編寫的一樣,其后的shellcode代碼變?yōu)椤癉EFG…”,由此可知shellcode開始位置為SEH后4 bytes。跳轉(zhuǎn)指令short jump的機器碼為EB,后面跟上跳轉(zhuǎn)距離,加上nSEH、SEH各占4 bytes空間,因此跳轉(zhuǎn)距離=2bytes(nop)+4bytes(SEH)+4bytes,此外shellcode前通常添加一段空指令(\x90),來提供在內(nèi)存中緩沖區(qū)位置變化時的一段錯誤容忍空間,這樣以空指令滑行區(qū)大小為30 bytes來設(shè)置最終跳轉(zhuǎn)距離為10 bytes,所以我們用0xEB,0x0A,0x90,0x90 覆蓋“next SEH”[17-20]。

圖9 在SEH處設(shè)置斷點

圖10 SSLEAY.DLL模塊下的pop-pop-ret指令

圖11 shellcode在緩沖區(qū)中的位置

確定跳轉(zhuǎn)指令后,替換掉代碼中原來4 bytes的中斷字符串,將shellcode利用Metasploit下的payload.encoded函數(shù)來代替[14],這樣Metasploit在運行時刻會將指定的攻擊載荷經(jīng)過編碼之后,附加到邪惡攻擊字符串后面,修改如下(滲透攻擊代碼):

這樣一個完整的滲透攻擊代碼已經(jīng)完成,之后在Metasploit平臺下裝載新編寫的 eaay_file_sharing_ftp_pass_3.5 攻擊模塊,驗證其可用性。

3 滲透攻擊模塊測試

在Kali攻擊機(IP:192.168.40.200)下,進(jìn)入MSF,搜索 easy_file_sharing_ftp_pass_3.5 攻擊模塊,首先查看該模塊具體信息是否與我們編寫一致,接下來利用該滲透攻擊模塊攻擊利用上述軟件開啟FTP服務(wù)的目標(biāo)主機WIN XP SP3,IP:192.168.40.128,驗證是否能夠獲得目標(biāo)主機的遠(yuǎn)程訪問權(quán)限。

3.1 查詢攻擊模塊信息

easy_file_sharing_ftp_pass_3.5 模塊信息如下:

root@ kali:~# msfconsole

msf>search easy_file_sharing_ftp_pass_3.5

上面的攻擊模塊信息完整顯示了模塊適用平臺為windows,攻擊目標(biāo)為XP sp3,目標(biāo)地址為192.168.40.128,目標(biāo)端口21,payload空間為600字節(jié),壞字符數(shù)為14個。

3.2 配置模塊,實施攻擊

配置攻擊載荷為常用的windows/meterpreter/reverse_tcp,創(chuàng)建一個具有反彈式meterpreter會話連接,監(jiān)聽地址設(shè)為攻擊機地址192.168.40.200,F(xiàn)TP登錄用戶名為anonymous,實施攻擊。如圖12所示,攻擊模塊成功運行,同時發(fā)起針對FTP服務(wù)的滲透攻擊,并且開放回連端口,等待靶機連接,等待幾秒,攻擊機成功獲得遠(yuǎn)程主機winxp的訪問權(quán)限。

圖12 滲透攻擊成功

4 結(jié)語

本文針對Easy File Sharing FTP v3.5軟件存在的SEH溢出漏洞,從漏洞挖掘與分析、滲透攻擊模塊編寫、滲透攻擊模塊測試這三個方面進(jìn)行闡述。研究首先利用Fuzz測試法針對Easy File Sharing FTP軟件自身進(jìn)行了漏洞挖掘與分析,之后利用Ruby語言編寫初始骨架的滲透攻擊模塊,繼而完成繞過SEH限制、獲取返回地址和編寫段跳轉(zhuǎn)指令這三個環(huán)節(jié),形成最終完善的滲透攻擊模塊。最后動態(tài)加載攻擊載荷,實施針對目標(biāo)靶機的滲透攻擊,獲取目標(biāo)主機遠(yuǎn)程訪問權(quán)限。

隨著網(wǎng)絡(luò)安全日益成為人們關(guān)注的熱點,研究基于SEH漏洞攻擊對網(wǎng)絡(luò)安全問題的研究具有重要推動作用,同時編寫Metasploit框架支持的滲透攻擊模塊也為安全領(lǐng)域內(nèi)共享的系統(tǒng)化攻擊知識庫做出了重要補充。

[1](美)David Kennedy,Jim O'Gorman,Devon Kearns著.Metasploit滲透測試指南[M].諸葛建偉,王珩,孫松柏譯.北京:電子工業(yè)出版社,2012:198-210.

[2]Rapid7.Metasploit User Guide[EB/OL].(2013-11-3)[2015-4-10].https://community.rapid7.com/docs/DOC-1567.

[3]諸葛建偉,陳力波,孫松柏等.Metasploit滲透測試魔鬼訓(xùn)練營[M].北京:機械工業(yè)出版社,2013.

[4]SUTTON M,GREENE A,AMINIP.Fuzzing,brute vulnerability discovery[M].[S.I.]:Pearson Education Inc,2007.

[5]龔波,馮軍,徐雅麗.模糊測試一強制性安全漏洞發(fā)掘[M].北京:機械工業(yè)出版社,2009.

[6]王穎.Fuzzing漏洞挖掘與溢出利用分析技術(shù)研究[D].河南:解放軍信息工程大學(xué),2009.

[7]王清.0day安全:軟件漏洞分析技術(shù)[M].第2版.北京:電子工業(yè)出版社,2011.

[8]彭贊.Windows平臺下緩沖區(qū)漏洞研究[D].杭州:浙江師范大學(xué),2010.

[9]徐有福,張晉含,文偉平.Windows安全之SEH安全機制分析[J].信息網(wǎng)絡(luò)安全,2009(5):50.

[10]Corelanc0d3r.ExploitWriting Tutorial Part 3-SEH Based Exploits[EB/OL].(2010-02-26)[2015-4-10].http://www.corelan.be:8800.

[11] Aishwarya lyer,Liebrock L M.Vulnerability Scanning for Buffer Overflow[C]//Information Technology:Coding Computing,2004.ITCC International Conference on,2004:25.

[12](美)Michael Sikorski,Andrew Honig著.惡意代碼分析實戰(zhàn)[M].諸葛建偉,姜輝,張光凱譯.北京:電子工業(yè)出版社,2014.

[13]張曉磊,張曉明.基于堆棧的緩沖區(qū)溢出攻擊原理[J].廣州大學(xué)學(xué)報,2004,3(4):329-332.

[14]姜洋.滲透測試關(guān)鍵技術(shù)研究[D].西安:西安電子科技大學(xué)電路與系統(tǒng),2014.

[15]鄧樂.基于緩沖區(qū)溢出的網(wǎng)絡(luò)滲透技術(shù)[D].上海:上海交通大學(xué),2007.

[16]王煒,方勇.緩沖區(qū)溢出教程[M].北京:中電電子出版社,2005.

[17]羅愛國,鄭艷杰.黑客攻防技術(shù)寶典:系統(tǒng)實戰(zhàn)篇[M].第2版.北京:人民郵電出版,2010.

[18]趙麗娟.Fuzz安全測試技術(shù)研究[D].北京:北京郵電大學(xué),2011.

[19]張明,徐萬里.Windows系統(tǒng)異常處理機制的研究及應(yīng)用[J].計算機工程,2009,35(01):157-160.

[20](日)愛甲健二著,周自恒譯.有趣的二進(jìn)制:軟件安全與逆向分析[M].北京:人民郵電出版社,2015:90-100.

[21](日)高橋征義,(日)后藤裕藏著.Ruby基礎(chǔ)教程[M].何文斯譯.第4版.北京:人民郵電出版社,2014.

SEH Buffer Overflow based on M etasp loit Framework

YAO Dong,WEIZhan-zhen,GAO Jun-tao
(Beijing Electronic Science and Technology Institute,Beijing 100070,China)

Metasploit,as themost influential open source framework platform in the field of security,itsmost prominent contribution is the development of semi industrial production mode of vulnerability research and penetration-code development.Taking Easy File Sharing FTP Server software as an example and from the three aspects of vulnerabilitymining and analysis,exploitwriting and exploit testing,the generalmethod of SHE exploit based on Metasploit framework is described,and the penetration attack exploit for the software security vulnerabilitiesalsowrote.The research focuses on the analysis of the three key aspectsof SEH exploit:through bypassing the SEH limit,acquiring the return address and writing a short jump instruction.Through in-depth study of this series,fairly the study of automated penetration testing development is fairly promoted.At the same time,development of penetration attack exploit under MSF serves as an important supplement to the system of the knowledge base of the system in the security field,and also it is of important significance.

Metasploit;client penetration attack;SEH based Exploit;Ruby

TP309

A

1009-8054(2016)06-0099-06

2016-02-16

姚 棟(1975—),男,工程師,主要研究方向為信息安全;

魏占禎(1971—),男,研究員級高工,主要研究方向為信息安全測評;

高駿濤(1990—),男,碩士研究生,主要研究方向為信息安全。

猜你喜歡
字符串緩沖區(qū)漏洞
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
漏洞
三明:“兩票制”堵住加價漏洞
漏洞在哪兒
兒童時代(2016年6期)2016-09-14 04:54:43
高鐵急救應(yīng)補齊三漏洞
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
一種新的基于對稱性的字符串相似性處理算法
依據(jù)字符串匹配的中文分詞模型研究
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)
電視技術(shù)(2012年1期)2012-06-06 08:13:58
莲花县| 洞口县| 建水县| 涪陵区| 上林县| 台湾省| 惠州市| 铜陵市| 乡城县| 原平市| 贵阳市| 延边| 繁昌县| 沂南县| 吉首市| 涪陵区| 隆回县| 贡觉县| 赤水市| 平江县| 虹口区| 三河市| 成安县| 万源市| 永州市| 新巴尔虎左旗| 洛宁县| 瑞安市| 申扎县| 靖宇县| 武清区| 阜康市| 浦城县| 乐业县| 且末县| 来安县| 舞钢市| 湾仔区| 涞水县| 正蓝旗| 聂荣县|