A. 求一個有sql注入漏洞的mssql的網站源碼。
攻擊研究及防範措施
SQL-Based Web System Security——Structured Query Language InjectionLeak Attack Study And Defense Measure
SQL注入(SQL Injection)漏洞攻擊是目前網上最流行最熱門的黑客腳本攻擊方法之一,那什麼是SQL注入漏洞攻擊呢?它是指黑客利用一些Web應用程序(如:網站、論壇、留言本、文章發布系統等)中某些存在不安全代碼或SQL語句不縝密的頁面,精心構造SQL語句,把非法的SQL語句指令轉譯到系統實際SQL語句中並執行它,以獲取用戶名、口令等敏感信息,從而達到控制主機伺服器的攻擊方法。
1. SQL注入漏洞攻擊原理
1. 1 SQL注入漏洞攻擊實現原理
SQL(Structured Query Language)是一種用來和資料庫交互的語言文本。SQL注入的攻擊原理就是攻擊者通過Web應用程序利用SQL語句或字元串將非法的數據插入到伺服器端資料庫中,獲取資料庫的管理用戶許可權,然後將資料庫管理用戶許可權提升至操作系統管理用戶許可權,控制伺服器操作系統,獲取重要信息及機密文件。
SQL注入漏洞攻擊主要是通過藉助於HDSI、NBSI和Domain等SQL注入漏洞掃描工具掃描出Web頁面中存在的SQL注入漏洞,從而定位SQL注入點,通過執行非法的SQL語句或字元串達到入侵者想要的操作。下面以一段身份驗證的.NET代碼為例,說明一下SQL 注入攻擊的實現方法。
SqlConnectionnwConn = new SqlConnection((string)ConfigurationSettings.AppSet
tings["DBconnStrings"]);
string queryStr = "SELECT userid,userpwd, username,type FROM users where userid='" + Txtusername.Text +"'";
DataSet userSet = new DataSet();
SqlDataAdapter userAdapter = newSqlDataAdapter(queryStr, nwConn);
userAdapter.Fill(userSet, "Users");
Session["UserID"] =Txtusername.Text.ToString();
Session["type"] =type.Text.ToString();
Response.Redirect("/Myweb/admin/login.aspx");
從上面的代碼中可以看出,程序在與資料庫建立連接得到用戶數據之後,直接將username的值通過session傳給login.aspx,沒有進行任何的過濾和處理措施, 直接用來構造SQL 語句, 其危險系數是非常高的, 攻擊者只要根據SQL 語句的編寫規則就可以繞過身份驗證,從而達到入侵的目的。
1. 2 SQL注入漏洞攻擊分析
SQL注入可以說是一種漏洞,也可以說是一種攻擊。當程序中的變數處理不當,沒有對用戶提交的數據類型進行校驗,編寫不安全的代碼,構造非法的SQL語句或字元串,都可能產生這個漏洞。
例如Web系統有一個login頁面,這個login頁面控制著用戶是否有權訪問,要求用戶輸入一個用戶名和口令,連接資料庫的語句為:
「select * from users where username = 'username' andpassword = 'password'」
攻擊者輸入用戶名為aa or 1=1口令為1234 or 1=1之類的內容。我們可以看出實際上攻擊者並不知道真正的用戶名、口令,該內容提交給伺服器之後,伺服器執行攻擊者構造出的SQL命令,但由於攻擊者輸入的內容非常特殊,所以最後得到的SQL命令變成:
「select * from users where username = 'aa' or 1=1 andpassword = '1234' or 1=1」;
伺服器執行查詢或存儲過程,將用戶輸入的身份信息和資料庫users表中真實的身份信息進行核對,由於SQL命令實際上已被修改,存在永遠成立的1=1條件,因此已經不能真正驗證用戶身份,所以系統會錯誤地授權攻擊者訪問。
SQL 注入是通過目標伺服器的80埠進行的,是正常的Web訪問,防火牆不會對這種攻擊發出警告或攔截。當Web伺服器以普通用戶的身份訪問資料庫時,利用SQL注入漏洞就可能進行創建、刪除、修改資料庫中所有數據的非法操作。而當資料庫以管理用戶許可權的身份進行登錄時,就可能控制整個資料庫伺服器。
SQL注入的方法很多,在以手動方式進行攻擊時需要構造各種各樣的SQL語句,所以一般攻擊者需要豐富的經驗和耐心,才能繞過檢測和處理,提交語句,從而獲得想要的有用信息。這個過程需要花費很多的時間,如果以這種手動方式進行SQL注入漏洞攻擊,許多存在SQL注入漏洞的ASP、JSP、php、JAVA等網站就會安全很多了,不是漏洞不存在了,而是手動入侵者需要編程基礎,但現在攻擊者可以利用一些現成的黑客工具來輔助SQL注入漏洞攻擊,加快入侵的速度,使SQL注入變得輕而易舉。
由於SQL注入漏洞攻擊利用的是通用的SQL語法,使得這種攻擊具有廣泛性。理論上說,對於所有基於SQL語言的資料庫管理系統都是有效的,包括MSSQLServer、Oracle、DB2、Sybase和MySQL等。當然,各種系統自身的SQL擴展功能會有所不同,因此最終的攻擊代碼可能不盡相同。
1. 3 SQL注入漏洞攻擊過程
(1)繞過身份驗證
如一個login界面,需要輸入用戶名和口令,然後Post到另一個頁面,進行身份驗證,因此攻擊者只需在用戶名和口令的輸入框中都輸入aa or』1』=』1』的內容,那麼攻擊者就可以通過欺騙的驗證方式而直接進入下一個頁面,並擁有和正常登錄用戶一樣的全部特權。原因是什麼呢? 我們比較一下正常用戶登錄和攻擊者登錄時的兩種SQL語句:
1)正常用戶(如用戶名為admin,口令為1234567) :
SQL= " selectfrom users where username = 』admin』and password= 』1234567』 ";
2)攻擊者(用戶名和口令都為aa or』1』=』1』) :
SQL= " select * from users where username='aa or』1』=』1』'and password = ' aa or』1』=』1』'";
可以看到由and連接的兩個條件都被一個永遠成立的1=1所代替,執行的結果為true,資料庫會認為條件恆成立,會返回一個true,讓攻擊者以合法身份登錄進入下一個頁面。
(2)執行非法操作
如一個查詢頁面select1.asp? id=1,編程人員原本設計意圖是顯示id為1的查詢信息,而攻擊者利用程序中沒有對id內容進行檢查的機制,插入自己的代碼。
從select1.asp中摘錄一段關鍵代碼:
SQL= " select *from photo where photoid= 'id'";
可以看到,id沒有進行任何的處理,直接構成SQL語句並執行,而攻擊者在知道該系統資料庫中表名及欄位名的情況下,利用SQL語句特性(分號是將兩句SQL 語句分開的符號),直接向資料庫Tuser表中添加記錄:
select1.asp? id= 1;Insertinto Tuser (username,password,type) values ('hack','1234567','管理員'),然後攻擊者就可以直接用hack進行登錄了。通過這樣的方法,攻擊者還可以對系統做任何的事情,包括添加、刪除、修改系統資源的操作。
(3)執行系統命令
如果Web主機使用MSSQL資料庫管理系統,那麼攻擊者就可以用到xp_cmdshell這個擴展存儲過程,xp_cmdshell是一個非常有用的擴展存儲過程,用於執行系統命令,比如dir、net等,攻擊者可以根據程序的不同,提交不同的語句:
execmaster.dbo.xp_cmdshell " dir ";
exec master.dbo.xp_cmdshell" net user hack 1234567 /add ";
execmaster.dbo.xp_cmdshell " net localgroup administrators hack /add ";
這樣就可以向Web主機系統中成功添加了一個管理員帳戶。
2. SQL注入漏洞攻擊的檢測方式及方法
2. 1檢測方式
SQL注入漏洞攻擊檢測分為入侵前的檢測和入侵後的檢測。入侵前的檢測,可以通過手工方式,也可以使用SQL注入漏洞掃描工具軟體。檢測的目的是為預防SQL注入漏洞攻擊,而對於SQL注入漏洞攻擊後的檢測,主要是針對審計日誌的查看,SQL注入漏洞攻擊成功後,會在Web Service和資料庫的審計日誌中留下「痕跡」。
2. 2檢測方法
(1)動態SQL檢查
動態的SQL語句是一個進行資料庫查詢的強大的工具,但把它和用戶輸入混合在一起就使SQL注入成為了可能。將動態的SQL語句替換成預編譯的SQL或者存儲過程對大多數應用程序是可行的。預編譯的SQL或者存儲過程可以將用戶的輸入作為參數而不是命令來執行,這樣就限制了入侵者的行動。當然,它不適用於存儲過程中利用用戶輸入來生成SQL命令的情況。在這種情況下,用戶輸入的SQL命令仍可能得到執行,資料庫仍然存在SQL注入漏洞攻擊的危險。
(2)有效性校驗
如果一個輸入框只可能包括數字,那麼要通過驗證確保用戶輸入的都是數字。如果可以接受字母,檢查是不是存在不可接受的字元,那就需要設置字元串檢查功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。
(3)數據表檢查
使用SQL注入漏洞攻擊工具軟體進行SQL注入漏洞攻擊後,都會在資料庫中生成一些臨時表。通過查看資料庫中最近新建的表的結構和內容,可以判斷是否曾經發生過SQL注入漏洞攻擊。
(4)審計日誌檢查
在Web伺服器中如果啟用了審計日誌功能,則Web Service審計日誌會記錄訪問者的IP地址、訪問時間、訪問文件等信息,SQL注入漏洞攻擊往往會大量訪問某一個頁面文件(存在SQL注入點的動態網頁),審計日誌文件會急劇增加,通過查看審計日誌文件的大小以及審計日誌文件中的內容,可以判斷是否發生過SQL注入漏洞攻擊事件;另外還可以通過查看資料庫審計日誌,查詢某個時間段是否有非法的插入、修改、刪除操作。
(5)其他
SQL注入漏洞攻擊成功後,入侵者往往會添加特權用戶(如:administrator、root、sa等)、開放非法的遠程服務以及安裝木馬後門程序等,可以通過查看用戶帳戶列表、遠程服務開啟情況、系統最近日期產生的一些文件等信息來判斷是否發生過入侵。
3. SQL注入漏洞攻擊檢測防範模型及措施
3. 1 防範模型
本人通過深入的學習研究,吸取前人的經驗成果,提出了一種通用的SQL注入漏洞攻擊檢測防範模型如圖1所示,本模型中所有檢測均在伺服器端進行。首先是校驗客戶端提交數據的有效性,自動識別該數據類型是否符合程序中設定的值,如果校驗未通過將禁止訪問,返回重新輸入數據並記錄該過程;其次將輸入的字元串類型與SQL注入規則庫字元串類型進行比對,檢測字元串類型是否合法(驗證是否存在SQL注入漏洞),若不合法也將禁止訪問,返回重新輸入數據並記錄該操作;最後檢測是否超過訪問許可權,如果未超過訪問許可權,就可以正常訪問頁面,若超過訪問許可權,除禁止訪問,返回重新輸入數據並記錄該操作外,同時發送Email給管理員,如果超過3次郵件告警管理員還未採取任何措施,那麼將通過手機簡訊方式進行告警,直到管理員採取防範措施為止。
圖1 SQL注入漏洞攻擊檢測防範模型
本模型的最大特點是自動將攻擊信息及時地傳遞給管理員,方便管理員及時做出響應。
3. 2 防範措施
SQL注入漏洞攻擊的防範方法有很多種,現階段總結起來有以下方法:
(1)數據有效性校驗。如果一個輸入框只可能包括數字,那麼要通過校驗確保用戶輸入的都是數字。如果可以接受字母,那就要檢查是不是存在不可接受的字元,最好的方法是增加字元復雜度自動驗證功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。另外限製表單數據輸入和查詢字元串輸入的長度也是一個好方法。如果用戶的登錄名最多隻有10個字元,那麼不要認可表單中輸入10個以上的字元,這將大大增加攻擊者在SQL命令中插入有害代碼的難度。
(2)封裝數據信息。對客戶端提交的數據進行封裝,不要將數據直接存入cookie中,方法就是在編程的代碼中,插入session、if、try、else,這樣可以有效地防止攻擊者獲取cookie中的重要信息。
(3)去除代碼中的敏感信息。將在代碼中存在的用戶名、口令信息等敏感欄位刪除,替換成輸入框。
如:SQL=" select from users where username = 』admin』and password= 』1234567』 "這樣顯然會暴露管理員的用戶名、口令信息。可以將其修改成SQL= " select * from users where username='" +Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'",這樣就安全了很多,入侵者也是不會輕易的就獲取到用戶名、口令信息。
(4)替換或刪除單引號。使用雙引號替換掉所有用戶輸入的單引號,這個簡單的預防措施將在很大程度上預防SQL注入漏洞攻擊,單引號時常會無法約束插入數據的Value,可能給予輸入者不必要的許可權。用雙引號替換掉單引號可以使大部分SQL注入漏洞攻擊失敗。
如:「select* from users where username='" + admin + "' and userpwd='" + 1234567+ "'」顯然會得到與「select * from users where username='admin' and password= '1234567'」相同的結果。
(5)指定錯誤返回頁面。攻擊者有時從客戶端嘗試提交有害代碼和攻擊字元串,根據Web Service給出的錯誤提示信息來收集程序及伺服器的信息,從而獲取想得到的資料。應在Web Service中指定一個不包含任何信息的錯誤提示頁面。
(6)限制SQL字元串連接的配置文件。使用SQL變數,因為變數不是可以執行的腳本,即在Web頁面中將連接資料庫的SQL字元串替換成指定的Value,然後將Web.config文件進行加密,拒絕訪問。
(7)設置Web目錄的訪問許可權。將虛擬站點的文件目錄禁止遊客用戶(如:Guest用戶等)訪問,將User用戶許可權修改成只讀許可權,切勿將管理許可權的用戶添加到訪問列表。
(8)最小服務原則。Web伺服器應以最小許可權進行配置,只提供Web服務,這樣可以有效地阻止系統的危險命令,如ftp、cmd、vbscript等。
(9)鑒別信息加密存儲。將保存在資料庫users表中的用戶名、口令信息以密文形式保存,也可以對users表進行加密處理,這樣可以大大增加對鑒別信息訪問的安全級別。
(10)用戶許可權分離。應盡可能的禁止或刪除資料庫中sa許可權用戶的訪問,對不同的資料庫劃分不同的用戶許可權,這樣不同的用戶只能對授權給自己的資料庫執行查詢、插入、更新、刪除操作,就可以防止不同用戶對非授權的資料庫進行訪問。
4. 結束語
SQL注入漏洞攻擊在網上非常普遍,許多ASP、PHP論壇和文章管理系統、下載系統以及新聞系統都存在這個漏洞。造成SQL注入漏洞攻擊的主要原因是開發人員在系統開發的過程中編程不規范,沒有形成良好的編程習慣,問題的解決只有依賴於規范編程。此外,也可以使用現有的SQL注入漏洞掃描器對整個網站中的關鍵代碼進行掃描,查找網站頁面中存在的SQL注入點。對於有問題的頁面,可以及時刪除或更新。本文通過對SQL注入漏洞攻擊的方法、原理以及攻擊實施過程進行了闡述和總結,並給出了一些常見的SQL注入漏洞攻擊防範的方法。
B. 怎麼檢測網站代碼php代碼怎麼查漏洞
有個eesafe網站安全檢測工具 可以檢測代碼漏洞
再就是eesafe網站安全聯盟 掃描網站漏洞
C. 網路漏洞掃描器源代碼
中文的漏洞掃描器源代碼 代碼-非常代碼網(代碼-軟體-網路服務-項...
《非常代碼網》僅提供源代碼發布、雙方交易服務,本站不對源代碼的質量進行任何擔保。 二. 《非常代碼網》不承擔由於...中文的漏洞掃描器源代碼中文的漏洞掃描器源代碼 代碼內容:本地下載 網路搜索:中「中文的漏洞掃描器源代碼」相關內容...
.supercss.com/code/230.htm
D. 如何使用「Seay源代碼審計系統」掃描源代碼漏洞
打開Seay源代碼審計系統(安裝流程略),點擊「新建項目」按鈕新建一個審計項目。
打開一個審計項目後,可以看到審計系統左側列出了該項目的全部源代碼文件,點擊「自動審計」按鈕進入審計操作。
點擊「自動審計」操作下的「開始」按鈕,正式進入審計過程並等待審計掃描完成。
當Seay源代碼審計系統底部提示「掃描完成」時,這時候源代碼審計就完成了。
點擊「生成報告」生成本次審計報告並保存報告生成的html文件。
打開生成的審計報告,查看本次掃描出來的網站源代碼漏洞。
E. 如何對網站進行漏洞掃描及滲透測試
注冊一個賬號,看下上傳點,等等之類的。
用google找下注入點,格式是
Site:XXX.com inurl:asp|php|aspx|jsp
最好不要帶 www,因為不帶的話可以檢測二級域名。
大家都知道滲透測試就是為了證明網路防禦按照預期計劃正常運行而提供的一種機制,而且夠獨立地檢查你的網路策略,一起來看看網站入侵滲透測試的正確知識吧。
簡單枚舉一些滲透網站一些基本常見步驟:
一 、信息收集
要檢測一個站首先應先收集信息如whois信息、網站真實IP、旁註、C段網站、伺服器系統版本、容器版本、程序版本、資料庫類型、二級域名、防火牆、維護者信息有哪些等等
二、收集目標站注冊人郵箱
1.用社工庫里看看有沒有泄露密碼,然後嘗試用泄露的密碼進行登錄後台。2.用郵箱做關鍵詞,丟進搜索引擎。3.利用搜索到的關聯信息找出其他郵進而得到常用社交賬號。4.社工找出社交賬號,裡面或許會找出管理員設置密碼的習慣 。5.利用已有信息生成專用字典。6.觀察管理員常逛哪些非大眾性網站,看看有什麼東西
三、判斷出網站的CMS
1:查找網上已曝光的程序漏洞並對其滲透2:如果開源,還能下載相對應的源碼進行代碼審計。
3.搜索敏感文件、目錄掃描
四、常見的網站伺服器容器。
IIS、Apache、nginx、Lighttpd、Tomcat
五、注入點及漏洞
1.手動測試查看有哪些漏洞
2.看其是否有注入點
3.使用工具及漏洞測試平台測試這個有哪些漏洞可利用
六、如何手工快速判斷目標站是windows還是linux伺服器?
Linux大小寫敏感,windows大小寫不敏感。
七、如何突破上傳檢測?
1、寬字元注入
2、hex編碼繞過
3、檢測繞過
4、截斷繞過
八、若查看到編輯器
應查看編輯器的名稱版本,然後搜索公開的漏洞
九、上傳大馬後訪問亂碼
瀏覽器中改編碼。
十、審查上傳點的元素
有些站點的上傳文件類型的限制是在前端實現的,這時只要增加上傳類型就能突破限制了。
掃目錄,看編輯器和Fckeditor,看下敏感目錄,有沒有目錄遍及,
查下是iis6,iis5.iis7,這些都有不同的利用方法
Iis6解析漏洞
Iis5遠程溢出,
Iis7畸形解析
Phpmyadmin
萬能密碼:』or』='or』等等
等等。
每個站都有每個站的不同利用方法,自己滲透多點站可以多總結點經驗。
還有用google掃後台都是可以的。
F. 網站漏洞掃描源碼
去微軟的中文網站看看吧
G. 網站,老是被人入侵上傳一些,在線文件查看解壓程序,他們通過這個程序偷源碼,我的源碼絕對沒有漏洞,服
要看你的網站是用什麼語言什麼版本的框架開發的。誰都覺得自己代碼沒漏洞。其實未必。比如struts2他本身框架就有漏洞。要及時更新jar包。否則黑客可以直接通過struts2攻擊你上傳文件。和你的源碼沒有任何關系。也有的是你源碼存在問題的。也有是伺服器有問題的。多種可能啊。這要找專業人士對你網站進行測評了。
H. 求網站安全漏洞檢測程序的源代碼,誰有啊
建站一段時間後總能聽得到什麼什麼網站被掛馬,什麼網站被黑。好像入侵掛馬似乎是件很簡單的事情。其實,入侵不簡單,簡單的是你的網站的必要安全措施並未做好。
有條件建議找專業做網站安全的sine安全來做安全維護。
一:掛馬預防措施:
1、建議用戶通過ftp來上傳、維護網頁,盡量不安裝asp的上傳程序。
2、對asp上傳程序的調用一定要進行身份認證,並只允許信任的人使用上傳程序。這其中包括各種新聞發布、商城及論壇程
序,只要可以上傳文件的asp都要進行身份認證!
3、asp程序管理員的用戶名和密碼要有一定復雜性,不能過於簡單,還要注意定期更換。
4、到正規網站下載asp程序,下載後要對其資料庫名稱和存放路徑進行修改,資料庫文件名稱也要有一定復雜性。
5、要盡量保持程序是最新版本。
6、不要在網頁上加註後台管理程序登陸頁面的鏈接。
7、為防止程序有未知漏洞,可以在維護後刪除後台管理程序的登陸頁面,下次維護時再通過ftp上傳即可。
8、要時常備份資料庫等重要文件。
9、日常要多維護,並注意空間中是否有來歷不明的asp文件。記住:一分汗水,換一分安全!
10、一旦發現被入侵,除非自己能識別出所有木馬文件,否則要刪除所有文件。
11、定期對網站進行安全的檢測,具體可以利用網上一些工具,如sinesafe網站掛馬檢測工具!
二:掛馬恢復措施:
1.修改帳號密碼
不管是商業或不是,初始密碼多半都是admin。因此你接到網站程序第一件事情就是「修改帳號密碼」。帳號
密碼就不要在使用以前你習慣的,換點特別的。盡量將字母數字及符號一起。此外密碼最好超過15位。尚若你使用
SQL的話應該使用特別點的帳號密碼,不要在使用什麼什麼admin之類,否則很容易被入侵。
2.創建一個robots.txt
Robots能夠有效的防範利用搜索引擎竊取信息的駭客。
3.修改後台文件
第一步:修改後台里的驗證文件的名稱。
第二步:修改conn.asp,防止非法下載,也可對資料庫加密後在修改conn.asp。
第三步:修改ACESS資料庫名稱,越復雜越好,可以的話將數據所在目錄的換一下。
4.限制登陸後台IP
此方法是最有效的,每位虛擬主機用戶應該都有個功能。你的IP不固定的話就麻煩點每次改一下咯,安全第一嘛。
5.自定義404頁面及自定義傳送ASP錯誤信息
404能夠讓駭客批量查找你的後台一些重要文件及檢查網頁是否存在注入漏洞。
ASP錯誤嘛,可能會向不明來意者傳送對方想要的信息。
6.慎重選擇網站程序
注意一下網站程序是否本身存在漏洞,好壞你我心裡該有把秤。
7.謹慎上傳漏洞
據悉,上傳漏洞往往是最簡單也是最嚴重的,能夠讓黑客或駭客們輕松控制你的網站。
可以禁止上傳或著限制上傳的文件類型。不懂的話可以找你的網站程序提供商。
8. cookie 保護
登陸時盡量不要去訪問其他站點,以防止 cookie 泄密。切記退出時要點退出在關閉所有瀏覽器。
9.目錄許可權
請管理員設置好一些重要的目錄許可權,防止非正常的訪問。如不要給上傳目錄執行腳本許可權及不要給非上傳目錄給於寫入權。
10.自我測試
如今在網上黑客工具一籮筐,不防找一些來測試下你的網站是否OK。
11.例行維護
a.定期備份數據。最好每日備份一次,下載了備份文件後應該及時刪除主機上的備份文件。
b.定期更改資料庫的名字及管理員帳密。
c.借WEB或FTP管理,查看所有目錄體積,最後修改時間以及文件數,檢查是文件是否有異常,以及查看是否有異常的賬號。
網站被掛馬一般都是網站程序存在漏洞或者伺服器安全性能不達標被不法黑客入侵攻擊而掛馬的。
網站被掛馬是普遍存在現象然而也是每一個網站運營者的心腹之患。
您是否因為網站和伺服器天天被入侵掛馬等問題也曾有過想放棄的想法呢,您否也因為不太了解網站技術的問題而耽誤了網站的運營,您是否也因為精心運營的網站反反復復被一些無聊的黑客入侵掛馬感到徬彷且很無耐。有條件建議找專業做網站安全的sine安全來做安全維護。
I. 求網路安全漏洞掃描源代碼,C或C++語言。(水平要高於本科)
哎,本人也就個本科水平,幫不了你了,遺憾