真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

數(shù)據(jù)庫(kù)安全知識(shí)介紹

數(shù)據(jù)庫(kù)系統(tǒng)是在操作系統(tǒng)平臺(tái)之上的最重要的系統(tǒng)軟件,數(shù)據(jù)庫(kù)系統(tǒng)的安全可以說(shuō)是十分重要的。曾經(jīng)有句話這樣說(shuō):如果網(wǎng)絡(luò)遍地是金錢(qián),那么金錢(qián)就在數(shù)據(jù)庫(kù)服務(wù)器中。隨著無(wú)紙化業(yè)務(wù)環(huán)境的不斷擴(kuò)大,人們?cè)跀?shù)據(jù)庫(kù)中存儲(chǔ)著越來(lái)越多的敏感信息:銀行賬戶(hù)、醫(yī)療記錄、政府文件、軍事機(jī)密等等,數(shù)據(jù)庫(kù)系統(tǒng)就成為越來(lái)越有價(jià)值的攻擊目標(biāo),因此確保數(shù)據(jù)庫(kù)系統(tǒng)的安全也越來(lái)越重要。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的利通網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

  作為一種大型的系統(tǒng)軟件,數(shù)據(jù)庫(kù)系統(tǒng)中也存在著各種各樣的安全漏洞,其中危害性較大的有緩沖區(qū)溢出、堆溢出和SQL注入等。

  1.緩沖區(qū)溢出

  緩沖區(qū)溢出是一種很常見(jiàn)也很古老的安全漏洞。早在上個(gè)世紀(jì)80年代,緩沖區(qū)溢出就已經(jīng)為人所知,但時(shí)至今日,大量的緩沖區(qū)溢出漏洞仍被發(fā)現(xiàn)。最著名的Morris蠕蟲(chóng)就是利用Unix系統(tǒng)上fingerd程序的緩沖區(qū)溢出漏洞。在Oracle 9i發(fā)布之初,Oarcle公司曾宣稱(chēng)他的數(shù)據(jù)庫(kù)是“ unbreakable ”的,但不到幾個(gè)月的時(shí)間,就暴出Oracle 9i中oracle.exe、XDB等程序存在多個(gè)緩沖區(qū)溢出漏洞。

  在C語(yǔ)言中最常見(jiàn)的緩沖區(qū)就是字符數(shù)組,而操縱字符數(shù)組的函數(shù)有g(shù)ets、strcpy、sprintf等。這些函數(shù)在執(zhí)行字符串拷貝的過(guò)程中沒(méi)有對(duì)字符串進(jìn)行長(zhǎng)度檢查,這樣就很容易發(fā)生超長(zhǎng)的字符串溢出緩沖區(qū)的情況。當(dāng)初這樣設(shè)計(jì)是出于效率的考慮,但現(xiàn)在看來(lái),這些函數(shù)的使用已成為C語(yǔ)言軟件脆弱的一個(gè)重要因素。如果程序員沒(méi)有良好的編程習(xí)慣,時(shí)刻注意函數(shù)調(diào)用過(guò)程中是否拷貝了超過(guò)緩沖區(qū)長(zhǎng)度的字符串,那么緩沖區(qū)溢出就不可避免。對(duì)于一個(gè)有緩沖區(qū)溢出漏洞的程序,當(dāng)普通用戶(hù)輸入超長(zhǎng)字符串時(shí),通常只會(huì)使該程序崩潰。例如對(duì)于下面一小段代碼:

  以下是引用片段:

        /* vulprog */

  #include

  int main(int argc , char * argv[])

  {

  char buff[8];

  strcpy(buff, argv[1]);

  }

  如果用戶(hù)執(zhí)行 ./vulprog AAAAAAAAAAAAAAAA,在Linux上會(huì)出現(xiàn)段錯(cuò)誤,因?yàn)橛脩?hù)輸入了超長(zhǎng)的字符串,除了填滿(mǎn)了緩沖區(qū),還覆蓋了其他一些程序正常退出所需要的數(shù)據(jù)。為了研究這個(gè)問(wèn)題,就需要了解Linux系統(tǒng)中進(jìn)程的內(nèi)存空間。

  進(jìn)行函數(shù)調(diào)用時(shí)系統(tǒng)所作的“序幕”工作就是將函數(shù)的返回地址和EBP壓棧,再將ESP賦給EBP使其成為局部基指針,最后ESP減去一定的值為局部變量留出空間。這樣當(dāng)程序?qū)⑦^(guò)長(zhǎng)的字符串拷貝到緩沖區(qū)時(shí)就會(huì)依次覆蓋EBP和返回地址。當(dāng)用AAAA覆蓋返回地址,函數(shù)退棧時(shí)系統(tǒng)就將0x41414141(A的16進(jìn)制ASCII碼)賦給EIP去執(zhí)行,由于是一個(gè)非法的內(nèi)存地址,故程序崩潰。但如果用一個(gè)實(shí)際存在的地址覆蓋返回地址,那么程序就轉(zhuǎn)而去執(zhí)行該地址處的指令,通常黑客會(huì)在這個(gè)地址植入所謂的shellcode,由shellcode產(chǎn)生一個(gè)shell,如果被攻擊程序設(shè)置了suid位,那么產(chǎn)生的shell就是root shell,黑客也就獲得了系統(tǒng)的最高控制權(quán),這一過(guò)程就是基本的緩沖區(qū)溢出攻擊。

  覆蓋函數(shù)的返回地址是比較常見(jiàn)的攻擊方式,但緩沖區(qū)溢出攻擊的手法是靈活多樣的,往往在編程中的一個(gè)小小紕漏就可能導(dǎo)致被攻擊,下面簡(jiǎn)單介紹一下幾種較為高級(jí)的攻擊方式。

  (1)通過(guò)覆蓋函數(shù)指針進(jìn)行攻擊:

  以下是引用片段:

        /* vulprog */

  int main(int argc , char * argv[])

  {

  void (* fp)(char *) = (void (*)(char *))&puts;

  char buff[256];

  strcpy(buff,argc[1]);

  fp(argc[2]);

  exit(1);

  }

  上面這個(gè)程序在執(zhí)行拷貝時(shí)沒(méi)有檢查邊界,這樣用戶(hù)數(shù)據(jù)就有可能覆蓋函數(shù)指針fp,如果用shllcode的地址去覆蓋fp,那么函數(shù)指針調(diào)用時(shí)就會(huì)去執(zhí)行shellcode。

  這種覆蓋函數(shù)指針的方式是一種較直接的覆蓋方式(因?yàn)楹瘮?shù)指針就在緩沖區(qū)上面),還有一種間接的覆蓋方式,就是當(dāng)函數(shù)指針不直接在緩沖區(qū)上面時(shí),通過(guò)覆蓋另外一個(gè)指針來(lái)覆蓋函數(shù)指針,再將shellcode的地址填充函數(shù)指針。

  (2)通過(guò)覆蓋 .dtors區(qū)地址進(jìn)行攻擊:

  以下是引用片段:

        /* vulprog */

  int main(int argc ,char * argv[])

  {

  char * pbuf = malloc(strlen(argv[2])+1);

  char buff[256];

  strcpy(buff,argv[1]);

  strcpy(pbuf,argv[2]);

  exit(1);

  }

  雖然這個(gè)程序沒(méi)有函數(shù)指針,但在執(zhí)行第二個(gè)拷貝時(shí),可以將任意的數(shù)據(jù)拷貝到任意的地址中(這個(gè)地址由第一個(gè)拷貝指定),這時(shí)就可以選擇用 .dtors區(qū)的地址覆蓋指針pbuf,在執(zhí)行第二個(gè)拷貝時(shí)將shellcode的地址拷貝至.dtors區(qū),那么在函數(shù)退出時(shí)shellcode就會(huì)被執(zhí)行。

  其實(shí)針對(duì)這個(gè)程序,攻擊者不僅可以覆蓋.dtors區(qū)的地址,還可以覆蓋GOT(全局偏移表)中exit的地址,或__deregister_frame_info的地址。

  從上面的這些例子可以看出,如果編程中不注意緩沖區(qū)邊界的檢查,就很可能導(dǎo)致被溢出攻擊。

  由于緩沖區(qū)溢出攻擊的頻繁爆發(fā),迫使很多操作系統(tǒng)廠商推出了不可執(zhí)行堆棧、更新C庫(kù)函數(shù)等措施。這些措施一定程度上遏制了普通的緩沖區(qū)溢出,但道高一尺,魔高一丈,黑客們很快就將注意力轉(zhuǎn)移到新的溢出攻擊上,如堆溢出。從最初的溢出重要變量(如函數(shù)指針、文件指針)到dlmalloc中malloc-free類(lèi)型的堆溢出到ptmalloc中的堆溢出,層出不窮。其實(shí)不管這些手法有多高明,最終的根源只有一個(gè):利用程序中未對(duì)緩沖區(qū)邊界進(jìn)行有效檢查。

  2.SQL注入

  數(shù)據(jù)庫(kù)系統(tǒng)除了可能受到緩沖區(qū)溢出的攻擊外,近幾年又出現(xiàn)了SQL注入的攻擊方式,這種攻擊方式被稱(chēng)為 “ SYSDBA的惡夢(mèng)”。SQL注入可能導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)中的普通用戶(hù)竊取機(jī)密數(shù)據(jù)(如獲得SYSDBA密碼)、進(jìn)行權(quán)限提升(如獲得SYSDBA特權(quán))等,而這種攻擊方式又不需要太多計(jì)算機(jī)方面的知識(shí),一般只要能熟練使用SQL語(yǔ)言即可,因此對(duì)數(shù)據(jù)庫(kù)的安全構(gòu)成了很大的威脅。

  SQL注入的攻擊方式比較簡(jiǎn)單,一般是將一些特權(quán)語(yǔ)句注入到有漏洞的存儲(chǔ)過(guò)程或觸發(fā)器中導(dǎo)致這些語(yǔ)句被非法執(zhí)行。例如在Oracle中由SYS創(chuàng)建如下存儲(chǔ)過(guò)程并將執(zhí)行權(quán)限授予普通用戶(hù):

  以下是引用片段:

        CREATE OR REPLACE PROCEDURE PROC1 ( INPUT VARCHAR2) AS

  ... ...

  STMT:='SELECT TITLES FROM BOOKS WHERE AUTHOR =''' || INPUT || '''';

  EXECUTE IMMEDIATE STMT;

  ... ...

  正常情況下用戶(hù)可以通過(guò)執(zhí)行:EXEC SYS.PROC1('DICKENS')來(lái)查詢(xún)DICKENS的著作,但如果惡意用戶(hù)這樣執(zhí)行該存儲(chǔ)過(guò)程:

  EXEC SYS.PROC1( 'DICKENS'' UNION SELECT PASSWORD FROM USERS_TABLE WHERE ''A'' = ''A'),那么他就非法地查出了所有用戶(hù)的密碼。

  雖然這只是一個(gè)簡(jiǎn)單的例子,但它表明在編寫(xiě)系統(tǒng)存儲(chǔ)過(guò)程、函數(shù)和觸發(fā)器時(shí)一定要注意防止SQL注入的可能。

  數(shù)據(jù)庫(kù)是信息系統(tǒng)的基石,一旦被黑客入侵,后果將不堪設(shè)想。而抵抗黑客入侵的好辦法就是克服軟件編程中存在的各種漏洞,讓黑客無(wú)機(jī)可乘。通過(guò)源碼審計(jì)、漏洞跟蹤等方式可以較好的修正現(xiàn)存系統(tǒng)中的各種安全隱患。目前我們正在達(dá)夢(mèng)數(shù)據(jù)庫(kù)中積極開(kāi)展漏洞發(fā)掘的相關(guān)工作,努力使達(dá)夢(mèng)數(shù)據(jù)庫(kù)成為真正牢不可破的數(shù)據(jù)庫(kù),為國(guó)家的信息安全構(gòu)筑堅(jiān)強(qiáng)的基石。


本文題目:數(shù)據(jù)庫(kù)安全知識(shí)介紹
標(biāo)題URL:http://weahome.cn/article/pjdcde.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部