由SQL注入(或數(shù)據(jù)庫(kù)權(quán)限)滲透WordPress站點(diǎn)的一些手法

最近居正通過(guò)SQL注入漏洞拿了某個(gè)WordPress(簡(jiǎn)稱WP)站點(diǎn),過(guò)程可謂是一波三折。滲透筆記過(guò)一段時(shí)間計(jì)劃公開(kāi)到自己的博客上。在這次滲透中,居正對(duì)由數(shù)據(jù)庫(kù)權(quán)限進(jìn)行滲透并提權(quán)到站點(diǎn)管理員權(quán)限有了更多的了解,便在這篇文章中把自己的小經(jīng)驗(yàn)分享出來(lái)。

天下沒(méi)有不透風(fēng)的墻:SQL注入的形成

這次遇到的WP站點(diǎn)上存在一個(gè)站長(zhǎng)自己開(kāi)發(fā)的取得某列表的功能,不過(guò)沒(méi)有采用WP插件的方式來(lái)進(jìn)行開(kāi)發(fā)。URL像是這樣:

https://www.example.com/somelist/get.php?id=1

稍微后面加個(gè)單引號(hào)就報(bào)錯(cuò)。

假如采用了WP插件的形式實(shí)現(xiàn)此功能,并且遵守插件開(kāi)發(fā)規(guī)范,根本不會(huì)有這么無(wú)腦的注入漏洞。而這個(gè)功能,或者說(shuō)這個(gè)程序,是在站點(diǎn)下面直接新建了一個(gè)目錄,在里面放代碼。程序本身和WP一點(diǎn)調(diào)用關(guān)系都沒(méi)有,但卻和WP用的是同一個(gè)數(shù)據(jù)庫(kù)。

打個(gè)比方,此程序就像是一個(gè)好端端的WP大樓上的違建。違建就違建吧,還開(kāi)了個(gè)天窗。我們直接跳傘就進(jìn)到大樓內(nèi)部了= =

下面居正就拋出自己摸索出來(lái)的“降龍十八掌”?。▁)

第一招:高權(quán)限SQLMAP寫后門

DBA(管理員)權(quán)限是可以直接用sqlmap寫入后門的。先檢測(cè)是否為DBA權(quán)限:

sqlmap.py -u 注入點(diǎn) –is-dba

可見(jiàn)此站點(diǎn)有DBA權(quán)限,可以直接寫后門:

sqlmap.py -u 注入點(diǎn) –os-shell

但是居正到這一步發(fā)現(xiàn)雖然可以正確取得網(wǎng)站路徑,但沒(méi)寫權(quán)限。那么這招就不能用了。

第二招:有讀權(quán)限SQLMAP下載wp-config.php

有時(shí)候沒(méi)有寫權(quán)限但有讀取權(quán)限,可以直接下載wp-config.php這個(gè)文件。它是WP用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)信息的文件,包括明文的賬號(hào)密碼,有了它,我們可以做這些事:

1.有phpmyadmin的話,直接通過(guò)此賬號(hào)登錄

2.利用密碼社工管理員進(jìn)入儀表盤

3.利用密碼社工直接連SSH、3389等

但是有個(gè)條件,需要得知站點(diǎn)的絕對(duì)路徑——WP的站點(diǎn)很容易就可以爆出來(lái)。

命令類似這樣:

sqlmap.py -u 注入點(diǎn) –file-read “/path/to/wordpress/wp-config.php”

然而居正發(fā)現(xiàn)連讀權(quán)限也沒(méi)有:

此招不行,咱們另尋門路。

第三招:wp_options表暗藏乾坤

開(kāi)發(fā)過(guò)WP插件的朋友都知道,wp_options是個(gè)很重要的表,它存儲(chǔ)著WP程序及其插件的設(shè)置數(shù)據(jù)。

如果網(wǎng)站有啟用SMTP的話,則可以通過(guò)注入dump到郵件服務(wù)器的賬戶數(shù)據(jù),再利用WP“忘記密碼/找回密碼”這個(gè)功能發(fā)送郵件重置管理員密碼,然后在已控制的郵件服務(wù)器里面可以看到這封郵件。

為什么不直接發(fā)送重置密碼郵件,然后在wp_users這個(gè)表里面找到重置密碼key,構(gòu)造URL來(lái)欺騙呢?原來(lái)現(xiàn)在新版的WP將這個(gè)key做了非可逆加密,無(wú)法通過(guò)讀表的方式得到原始的key:

在wp_options里面找SMTP信息需要注意,有可能站點(diǎn)使用了第三方SMTP插件,然后導(dǎo)致站點(diǎn)沒(méi)使用WP自帶的SMTP,而是使用此插件。而郵箱賬戶信息后面更新過(guò),只改了插件的設(shè)置,但WP自帶的設(shè)置里面就沒(méi)有及時(shí)更新了。簡(jiǎn)言之,表中會(huì)出現(xiàn)“真的”和“假的”兩種SMTP信息,需要去仔細(xì)辨認(rèn)。

類似的命令可以dump這張表:

sqlmap.py -u 注入點(diǎn) -D 當(dāng)前數(shù)據(jù)庫(kù)名 -T wp_options –dump

然后sqlmap會(huì)把表數(shù)據(jù)以csv的格式存到指定的目錄,打開(kāi)就可以瀏覽了。

居正在這里面發(fā)現(xiàn)了相應(yīng)的郵箱數(shù)據(jù),成功登錄。接著就用發(fā)送重置密碼郵件的方式改了管理員的密碼,成功getshell。

getshell之后讀取wp-config.php的數(shù)據(jù)庫(kù)連接信息,通過(guò)phpmyadmin控制數(shù)據(jù)庫(kù)。如果沒(méi)有的話就傳一個(gè)adminer上去。

提醒一下,先前可以dump表wp_users里面管理員賬戶加密的hash,在getshell后把密碼給他改回去,以清除滲透痕跡。

第四招:有數(shù)據(jù)庫(kù)讀寫權(quán)限的提權(quán)辦法

這個(gè)招數(shù)用于可以得到數(shù)據(jù)庫(kù)的讀寫權(quán)限提權(quán)的方法,如可以登錄phpmyadmin但是沒(méi)有g(shù)etshell。

有兩種方法可以用:

1.注冊(cè)一個(gè)站點(diǎn)普通用戶,改用戶表,把自己提升為管理員。

2.利用outfile之類的SQL語(yǔ)句直接getshell。

下面分別介紹

第一種

先注冊(cè)一個(gè)站點(diǎn)用戶,在數(shù)據(jù)庫(kù)里面找wp_users這個(gè)表,取得自己的ID和隨便哪個(gè)管理員的ID:

我的ID是72,某管理員的ID是1。

然后打開(kāi)wp_usermeta這個(gè)表,通過(guò)ID找到管理員,復(fù)制他的wp_capabilities:

再通過(guò)ID找到自己的賬戶,先復(fù)制自己現(xiàn)在的wp_capabilities保存好,然后改成管理員的的wp_capabilities。

之后登錄儀表盤,會(huì)發(fā)現(xiàn)自己已經(jīng)是管理員權(quán)限了,可以getshell。

getshell完了之后記得把自己的wp_capabilities再改回原來(lái)的那個(gè),以清除痕跡。

第二種

第二種方法不僅僅用于WP,而適用于所有可以操作數(shù)據(jù)庫(kù)的站點(diǎn)。

利用需要滿足以下條件:

1.DBA權(quán)限

2.有絕對(duì)路徑

3.沒(méi)有配置–secure-file-priv

在phpmyadmin執(zhí)行類似命令:

select ‘’ into outfile ‘/path/to/wordpress/shell.php’

來(lái)寫入一句話。

如果開(kāi)啟了–secure-file-priv,就是禁止使用outfile,還是可以通過(guò)寫logfile的方法繞過(guò):

SET global general_log=’ON’

SET global general_log_file=’/path/to/wordpress/shell.php’;

select ‘’;

SET global general_log=’OFF’;

詳細(xì)了解這種姿勢(shì):https://zhuanlan.zhihu.com/p/25957366

以上就是帶給大家由SQL注入(或數(shù)據(jù)庫(kù)權(quán)限)滲透WordPress站點(diǎn)的四大招,你都學(xué)會(huì)了嗎??


本文首發(fā)于淀粉月刊:https://dfkan.com

原作者:居正

發(fā)布時(shí)間:2018年5月11日

點(diǎn)此查看原文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當(dāng)給sq...
    xuningbo閱讀 10,559評(píng)論 2 22
  • sqlmap用戶手冊(cè) 說(shuō)明:本文為轉(zhuǎn)載,對(duì)原文中一些明顯的拼寫錯(cuò)誤進(jìn)行修正,并標(biāo)注對(duì)自己有用的信息。 ======...
    wind_飄閱讀 2,205評(píng)論 0 5
  • 一套實(shí)用的滲透測(cè)試崗位面試題,你會(huì)嗎? 1.拿到一個(gè)待檢測(cè)的站,你覺(jué)得應(yīng)該先做什么? 收集信息 whois、網(wǎng)站源...
    g0閱讀 5,146評(píng)論 0 9
  • sqlmap也是滲透中常用的一個(gè)注入工具,其實(shí)在注入工具方面,一個(gè)sqlmap就足夠用了,只要你用的熟,秒殺各種工...
    查無(wú)此人asdasd閱讀 1,617評(píng)論 0 1
  • sqlmap也是滲透中常用的一個(gè)注入工具,其實(shí)在注入工具方面,一個(gè)sqlmap就足夠用了,只要你用的熟,秒殺各種工...
    linkally閱讀 7,196評(píng)論 1 40

友情鏈接更多精彩內(nèi)容