當前位置:首頁 » 編程軟體 » sql跨站腳本

sql跨站腳本

發布時間: 2022-09-22 17:18:41

A. 這個真不知該發在哪了,演示sql注入攻擊和跨站點腳本攻擊(XSS)

跨站腳本也是一樣沒有對數據進行過濾就被帶到資料庫內然後輸出的時候可以通過匹配閉合html頁面前面的代碼達到執行自己代碼的目的也就是用xss偷取cookie用的較多

B. 解釋什麼是sql注入,xss漏洞

所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。
而XSS漏洞,就是跨站腳本攻擊,是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。

C. 如何檢測SQL注入技巧以及跨站腳本攻擊

如何檢測SQL注入技巧以及跨站腳本攻擊
在最近兩年中,安全專家應該對網路應用層的攻擊更加重視。因為無論你有多強壯的防火牆規則設置或者非常勤於補漏的修補機制,如果你的網路應用程序開發者沒
有遵循
安全代碼進行開發,攻擊者將通過80埠進入你的系統。廣泛被使用的兩個主要攻擊技術是SQL注入[ref1]和CSS[ref2]攻擊。

D. 常見的漏洞類型有哪些

常見的漏洞類型如下
一:按照漏洞所屬類型來區分:

1,客戶端漏洞:
XSS(跨站腳本攻擊)
CSRF(跨站請求偽造)
XXE(XML外部實體注入)
2,服務端漏洞:
SQL注入
文件上傳漏洞
伺服器請求偽造(SSRF)
反序列化
命令執行漏洞
文件包含漏洞
邏輯漏洞
越權漏洞
敏感信息泄露

按照漏洞特徵類型區分:
1,注入類
SQL注入
XSS(跨站腳本攻擊)
XXE(XML外部實體注入)
CSRF(跨站請求偽造)
2,文件操作類
3,許可權控制類
4,命令執行類

E. 常見的漏洞類型有哪些

一、SQL 注入漏洞
SQL 注入攻擊( SQL Injection ),簡稱注入攻擊、SQL 注入,被廣泛用於非法獲取網站控制權, 是發生在應用程序的資料庫層上的安全漏洞。在設計程序,忽略了對輸入字元串中夾帶的SQL 指令的檢查,被資料庫誤認為是正常的SQL 指令而運行,從而使資料庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入後門程序等危害。

通常情況下, SQL 注入的位置包括:

(1)表單提交,主要是POST 請求,也包括GET 請求;

(2)URL 參數提交,主要為GET 請求參數;

(3)Cookie 參數提交;

(4)HTTP 請求頭部的一些可修改的值,比如Referer 、User_Agent 等;

(5)一些邊緣的輸入點,比如.mp3 文件的一些文件信息等。

SQL 注入的危害不僅體現在資料庫層面上, 還有可能危及承載資料庫的操作系統;如果SQL 注入被用來掛馬,還可能用來傳播惡意軟體等,這些危害包括但不局限於:

(1)資料庫信息泄漏:資料庫中存放的用戶的隱私信息的泄露。作為數據的存儲中心,資料庫里往往保存著各類的隱私信息, SQL 注入攻擊能導致這些隱私信息透明於攻擊者。

(2)網頁篡改:通過操作資料庫對特定網頁進行篡改。

(3)網站被掛馬,傳播惡意軟體:修改資料庫一些欄位的值,嵌入網馬鏈接,進行掛馬攻擊。

(4)資料庫被惡意操作:資料庫伺服器被攻擊,資料庫的系統管理員帳戶被篡改。

(5)伺服器被遠程式控制制,被安裝後門。經由資料庫伺服器提供的操作系統支持,讓黑客得以修改或控制操作系統。

(6)破壞硬碟數據,癱瘓全系統。

解決SQL 注入問題的關鍵是對所有可能來自用戶輸入的數據進行嚴格的檢查、對資料庫配置使用最小許可權原則。通常使用的方案有:

(1 )所有的查詢語句都使用資料庫提供的參數化查詢介面,參數化的語句使用參數而不是將用戶輸入變數嵌入到SQL 語句中。當前幾乎所有的資料庫系統都提供了參數化SQL 語句執行介面,使用此介面可以非常有效的防止SQL 注入攻擊。

(2 )對進入資料庫的特殊字元( '"\<>&*; 等)進行轉義處理,或編碼轉換。

(3 )確認每種數據的類型,比如數字型的數據就必須是數字,資料庫中的存儲欄位必須對應為int 型。

(4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL 注入語句無法正確執行。

(5)網站每個數據層的編碼統一,建議全部使用UTF-8 編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。

(6)嚴格限制網站用戶的資料庫的操作許可權,給此用戶提供僅僅能夠滿足其工作的許可權,從而最大限度的減少注入攻擊對資料庫的危害。

(7)避免網站顯示SQL 錯誤信息,比如類型錯誤、欄位不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。

(8)在網站發布之前建議使用一些專業的SQL 注入檢測工具進行檢測,及時修補這些SQL 注入漏洞。

二、跨站腳本漏洞
跨站腳本攻擊( Cross-site scripting ,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。XSS 攻擊使用到的技術主要為HTML 和javascript ,也包括VBScript和ActionScript 等。XSS 攻擊對WEB 伺服器雖無直接危害,但是它藉助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。

XSS 類型包括:

(1)非持久型跨站: 即反射型跨站腳本漏洞, 是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。

(2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如資料庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript 代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript 代碼。

(3)DOM 跨站(DOM XSS ):是一種發生在客戶端DOM (Document Object Model 文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。

XSS 的危害包括:

(1)釣魚欺騙:最典型的就是利用目標網站的反射型跨站腳本漏洞將目標網站重定向到釣魚網站,或者注入釣魚JavaScript 以監控目標網站的表單輸入,甚至發起基於DHTML 更高級的釣魚攻擊方式。

(2 )網站掛馬:跨站時利用IFrame 嵌入隱藏的惡意網站或者將被攻擊者定向到惡意網站上,或者彈出惡意網站窗口等方式都可以進行掛馬攻擊。

(3)身份盜用: Cookie 是用戶對於特定網站的身份驗證標志, XSS 可以盜取到用戶的Cookie ,從而利用該Cookie 盜取用戶對該網站的操作許可權。如果一個網站管理員用戶Cookie 被竊取,將會對網站引發巨大的危害。

(4)盜取網站用戶信息:當能夠竊取到用戶Cookie 從而獲取到用戶身份使,攻擊者可以獲取到用戶對網站的操作許可權,從而查看用戶隱私信息。

(5)垃圾信息發送:比如在SNS 社區中,利用XSS 漏洞借用被攻擊者的身份發送大量的垃圾信息給特定的目標群。

(6)劫持用戶Web 行為:一些高級的XSS 攻擊甚至可以劫持用戶的Web 行為,監視用戶的瀏覽歷史,發送與接收的數據等等。

(7)XSS 蠕蟲:XSS 蠕蟲可以用來打廣告、刷流量、掛馬、惡作劇、破壞網上數據、實施DDoS 攻擊等。

常用的防止XSS 技術包括:

(1)與SQL 注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script 、iframe 等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入介面,也包括HTTP 請求中的Cookie 中的變數, HTTP 請求頭部中的變數等。

(2 )不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。

(3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。

( 4)對輸出的數據也要檢查, 資料庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。

(5)在發布應用程序之前測試所有已知的威脅。

三、弱口令漏洞
弱口令(weak password) 沒有嚴格和准確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。設置密碼通常遵循以下原則:

(1)不使用空口令或系統預設的口令,這些口令眾所周之,為典型的弱口令。

(2)口令長度不小於8 個字元。

(3)口令不應該為連續的某個字元(例如: AAAAAAAA )或重復某些字元的組合(例如: tzf.tzf. )。

(4)口令應該為以下四類字元的組合,大寫字母(A-Z) 、小寫字母(a-z) 、數字(0-9) 和特殊字元。每類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。

(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail 地址等等與本人有關的信息,以及字典中的單詞。

(6)口令不應該為用數字或符號代替某些字母的單詞。

(7)口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。

(8)至少90 天內更換一次口令,防止未被發現的入侵者繼續使用該口令。

四、HTTP 報頭追蹤漏洞
HTTP/1.1 (RFC2616 )規范定義了HTTP TRACE 方法,主要是用於客戶端通過向Web 伺服器提交TRACE 請求來進行測試或獲得診斷信息。當Web 伺服器啟用TRACE 時,提交的請求頭會在伺服器響應的內容(Body )中完整的返回,其中HTTP 頭很可能包括Session Token 、Cookies 或其它認證信息。攻擊者可以利用此漏洞來欺騙合法用戶並得到他們的私人信息。該漏洞往往與其它方式配合來進行有效攻擊,由於HTTP TRACE 請求可以通過客戶瀏覽器腳本發起(如XMLHttpRequest ),並可以通過DOM 介面來訪問,因此很容易被攻擊者利用。防禦HTTP 報頭追蹤漏洞的方法通常禁用HTTP TRACE 方法。

五、Struts2 遠程命令執行漏洞
Apache Struts 是一款建立Java web 應用程序的開放源代碼架構。Apache Struts 存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java 代碼。網站存在遠程代碼執行漏洞的大部分原因是由於網站採用了Apache Struts Xwork 作為網站應用框架,由於該軟體存在遠程代碼執高危漏洞,導致網站面臨安全風險。CNVD 處置過諸多此類漏洞,例如:「 GPS 車載衛星定位系統」網站存在遠程命令執行漏洞(CNVD-2012-13934) ;Aspcms 留言本遠程代碼執行漏洞( CNVD-2012-11590 )等。

修復此類漏洞,只需到Apache 官網升級Apache Struts 到最新版本

六、框架釣魚漏洞(框架注入漏洞)
框架注入攻擊是針對Internet Explorer 5 、Internet Explorer 6 、與Internet Explorer 7 攻擊的一種。這種攻擊導致Internet Explorer 不檢查結果框架的目的網站,因而允許任意代碼像Javascript 或者VBScript 跨框架存取。這種攻擊也發生在代碼透過多框架注入,肇因於腳本並不確認來自多框架的輸入。這種其他形式的框架注入會影響所有的不確認不受信任輸入的各廠商瀏覽器和腳本。如果應用程序不要求不同的框架互相通信,就可以通過完全刪除框架名稱、使用匿名框架防止框架注入。但是,因為應用程序通常都要求框架之間相互通信,因此這種方法並不可行。因此,通常使用命名框架,但在每個會話中使用不同的框架,並且使用無法預測的名稱。一種可行的方法是在每個基本的框架名稱後附加用戶的會話令牌,如main_display 。

七、文件上傳漏洞
文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過Web 訪問的目錄上傳任意文件,包括網站後門文件( webshell ),進而遠程式控制制網站伺服器。因此,在開發網站及應用程序過程中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell 攻擊。

八、應用程序測試腳本泄露
由於測試腳本對提交的參數數據缺少充分過濾,遠程攻擊者可以利用洞以WEB 進程許可權在系統上查看任意文件內容。防禦此類漏洞通常需嚴格過濾提交的數據,有效檢測攻擊。

九、私有IP 地址泄露漏洞
IP 地址是網路用戶的重要標示,是攻擊者進行攻擊前需要了解的。獲取的方法較多,攻擊者也會因不同的網路情況採取不同的方法,如:在區域網內使用Ping 指令, Ping 對方在網路中的名稱而獲得IP;在Internet 上使用IP 版的QQ直接顯示。最有效的辦法是截獲並分析對方的網路數據包。攻擊者可以找到並直接通過軟體解析截獲後的數據包的IP 包頭信息,再根據這些信息了解具體的IP。針對最有效的「數據包分析方法」而言,就可以安裝能夠自動去掉發送數據包包頭IP 信息的一些軟體。不過使用這些軟體有些缺點, 譬如:耗費資源嚴重,降低計算機性能;訪問一些論壇或者網站時會受影響;不適合網吧用戶使用等等。現在的個人用戶採用最普及隱藏IP 的方法應該是使用代理,由於使用代理伺服器後,「轉址服務」會對發送出去的數據包有所修改,致使「數據包分析」的方法失效。一些容易泄漏用戶IP 的網路軟體(QQ 、MSN 、IE 等)都支持使用代理方式連接Internet ,特別是QQ 使用「 ezProxy 」等代理軟體連接後, IP 版的QQ 都無法顯示該IP 地址。雖然代理可以有效地隱藏用戶IP,但攻擊者亦可以繞過代理, 查找到對方的真實IP 地址,用戶在何種情況下使用何種方法隱藏IP,也要因情況而論。

十、未加密登錄請求
由於Web 配置不安全, 登陸請求把諸如用戶名和密碼等敏感欄位未加密進行傳輸, 攻擊者可以竊聽網路以劫獲這些敏感信息。建議進行例如SSH 等的加密後再傳輸。

十一、敏感信息泄露漏洞
SQL 注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。針對不同成因,防禦方式不同。

F. 跨站腳本攻擊有哪些類型

1、持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。

2、非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。

3、DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。

(6)sql跨站腳本擴展閱讀:

跨站腳本攻擊產生的原因是網站過於相信用戶的輸入,那麼解決的辦法也很直接,就是從根本上不相信用戶的任何輸入。一個安全的網站應當對任何用戶的任何輸入都要進行檢查,特別是對用戶提交到伺服器中保存的數據,更要做篩選。

這種攻擊與反射型攻擊不同的是,它會把自己的攻擊代碼保存在網站的伺服器上,這樣,任何訪問了這個頁面的用戶,都會受到這個攻擊。

G. 如何實現php的安全最大化怎樣避免sql注入漏洞和xss跨站腳本攻擊漏洞

使用php安全模式

伺服器要做好管理,賬號許可權是否合理。

假定所有用戶的輸入都是「惡意」的,防止XSS攻擊,譬如:對用戶的輸入輸出做好必要的過濾

防止CSRF,表單設置隱藏域,post一個隨機字元串到後台,可以有效防止跨站請求偽造。

文件上傳,檢查是否做好效驗,要注意上傳文件存儲目錄許可權。

防禦SQL注入。

避免SQL注入漏洞

1.使用預編譯語句

2.使用安全的存儲過程

3.檢查輸入數據的數據類型

4.從資料庫自身的角度考慮,應該使用最小許可權原則,不可使用root或dbowner的身份連接資料庫。若多個應用使用同一個資料庫,也應該為資料庫分配不同的賬戶。web應用使用的資料庫賬戶,不應該有創建自定義函數,操作本地文件的許可權。

避免XSS跨站腳本攻擊

1.假定所有用戶輸入都是「邪惡」的

2.考慮周全的正則表達式

3.為cookie設置HttpOnly,防止cookie劫持

4.外部js不一定可靠

5.出去不必要的HTML注釋

6. 針對非法的HTML代碼包括單雙引號等,使用htmlspecialchars()函數。

H. 如何檢測SQL注入技術以及跨站腳本攻擊

在最近兩年中,安全專家應該對網路應用層的攻擊更加重視。因為無論你有多強壯的防火牆規則設置或者非常勤於補漏的修補機制,如果你的網路應用程序開發者沒
有遵循
安全代碼進行開發,攻擊者將通過80埠進入你的系統。廣泛被使用的兩個主要攻擊技術是SQL注入[ref1]和CSS[ref2]攻擊。SQL注入是
指:通過互聯網的輸入區域,插入SQL meta-characters(特殊字元
代表一些數據)和指令,操縱執行後端的SQL查詢的技術。這些攻擊主要針對其他組織的WEB伺服器。CSS攻擊通過在URL里插入script標簽,然後

誘導信任它們的用戶點擊它們,確保惡意Javascript代碼在受害人的機器上運行。這些攻擊利用了用戶和伺服器之間的信任關系,事實上伺服器沒有對輸
入、輸出進行檢測,從而未拒絕javascript代碼。
這篇文章討論SQL注入和CSS攻擊漏洞的檢測技術。網上已經有很多關於這兩種基於
WEB攻擊的討論,比如如何實施攻擊,他們的影響,怎樣更好的編制和設計程序防止這些攻擊。 然而,
對如何檢測這些攻擊並沒有足夠的討論。我們採用流行的開源的IDS Snort[ref
3],組建根據檢測這些攻擊的規則的正則表達式。附帶,Snort默認規則設定包含檢測CSS的方法,但是這些容易被避開檢測。比如大多通過hex進制編
碼,如%3C%73%63%72%69%70% 74%3E代替避開檢測。
依賴level of
paranoia組織的能力,我們已經編寫了多種檢測相同攻擊的規則。如果你希望檢測各種可能的SQL注入攻擊,那麼你需要簡單的留意任何現行的SQL
meta-characters,如單引號,分號和雙重破折號。同樣的一個極端檢測CSS攻擊的方法,只要簡單地提防HTML標記的角括弧。但這樣會檢測
出很多錯誤。為了避免這些,這些規則需要修改使它檢測更精確些, 當仍然不能避免錯誤。
在Snort規則中使用pcre(Perl
Compatible Regular
Expressions)[ref4]關鍵字,每個規則可以帶或不帶其他規則動作。這些規則也可以被公用軟體如grep(文檔搜索工具)使用,來審閱網路
伺服器日誌。 但是,需要警惕的是,用戶的輸入只有當以GET提交請求時,WEB伺服器才會記錄日記,如果是以POST提交的請求在日記中是不會記錄的。
2. SQL注入的正則表示式

你為SQL注入攻擊選擇正則表示式的時候,重點要記住攻擊者可以通過提交表單進行SQL注入,也可以通過Cookie區域。你的輸入檢測邏輯應該考慮用戶

組織的各類型輸入(比如表單或Cookie信息)。並且如果你發現許多警告來自一個規則,請留意單引號或者是分號,也許些字元是你的Web應用程序創造的
合法的在CookieS中的輸入。因此, 您需要根據你的特殊的WEB應用程序評估每個規則。
依照前面提到,一個瑣細的檢測SQL射入攻擊的正則表達式要留意SQL特殊的meta-characters 譬如單引號(』)雙重擴則號(--),為了查出這些字元和他們hex等值數, 以下正則表達式適用:
2.1 檢測SQL meta-characters的正則表達式
/(\%27)|(\』)|(\-\-)|(\%23)|(#)/ix
解釋:

們首先檢查單引號等值的hex,單引號本身或者雙重擴折號。這些是MS SQL Server或Oracle的字元, 表示後邊的為評論,
隨後的都將被忽略。 另外,如果你使用MySQL,你需要留意 』#』和它等值的hex的出現。注意我們不需要檢查雙重破折號等值的hex,
因為這不是HTML meta-character, 瀏覽器不會進行編碼。 並且,
如果攻擊者設法手工修改雙重破折號為它的hex值%2D(使用代理像Achilles[ref 5]), SQL注入將失敗。
加入上述正則表達式的新的Snort規則如下:
alert
tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"SQL
Injection - Paranoid";
flow:to_server,established;uricontent:".pl";pcre:"/(\%27)|(\』)|(\-\-)|(%23)|(#)/i";
classtype:Web-application-attack; sid:9099; rev:5;)
在本篇討論中,
uricontent關鍵字的值為".pl ", 因為在我們的測試環境里, CGI
程序是用Perl寫的。uricontent關鍵字的值取決於您的特殊應用, 這個值也許是".php ", 或" .asp ", 或" .jsp
", 等。 從這點考慮, 我們不顯示對應的Snort 規則, 但是我們會給出創造這些規則的正則表達式。
通過這些正則表達式你可以很簡單的創造很多的Snort規則.在前面的正則表達式里,
我們檢測雙重破折號是因為:即便沒有單引號的存在那裡也可能是SQL射入點[ref 6]。 例如, SQL查詢條目只包含數值,如下:
select value1, value2, num_value3 from database
where num_value3=some_user_supplied_number
這種情況,攻擊者可以執行額外的SQL查詢, 示範提交如下輸入:
3; insert values into some_other_table
最後, pcre的修飾符』 i』 和』 x 』 是用於分別匹配大小寫和忽略空白處的。 上面的規則也可以另外擴展來檢查分號的存在。然而,分號很可以是正常HTTP應答的一部分。為了減少這種錯誤,也是為了任何正常的單引號和雙重擴折號的出
現,上面的規則應該被修改成先檢測=號的存。用戶輸入會響應一個GET或POST請求,一般輸入提交如下:
username=some_user_supplied_value&password=some_user_supplied_value
因此, SQL 注入嘗試將導致用戶的輸入出現在a = 號或它等效的hex值之後。
2.2 修正檢測SQL meta-characters的正則表達式
/((\%3D)|(=))[^\n]*((\%27)|(\』)|(\-\-)|(\%3B)|(:))/i
解釋:
這個規則首先留意 = 號或它的hex值(%3D),然後考慮零個或多個除換行符以外的任意字元,最後檢測單引號,雙重破折號或分號。

型的SQL注入會嘗試圍繞單引號的用途操作原來的查詢,以便得到有用的價值。討論這個攻擊一般使用1』or』1』=』1字元串. 但是,
這個串的偵查很容易被逃避,譬如用1』or2>1 --.
然而唯一恆定的部分是最初的字元的值,跟隨一單引號,再加』or』。隨後的布爾邏輯可能在一定范圍上變化,可以是普通樣式也可能是非常復雜的。這些攻擊可
以相當精確被偵測,通過以下的正則表達式。2.3章節講解。
2.3 典型的 SQL 注入攻擊的正則表達式
/\w*((\%27)|(\』))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
解釋:
\w* - 零個或多個字元或者下劃線。
(\%27)|\』 - 單引號或它的hex等值。
(\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -『or』的大小寫以及它的hex等值。
』union』SQL
查詢在SQL注入各種資料庫中攻擊中同樣是很常見的。如果前面的正則表達式僅僅檢測單引號或則其他的SQL meta characters
,會造成很多的錯誤存在。你應該進一步修改查詢,檢測單引號和關鍵字『union』。這同樣可以進一步擴展其他的SQL關鍵字,像』select』,
』insert』, 』update』, 』delete』, 等等。
2.4 檢測SQL注入,UNION查詢關鍵字的正則表達式
/((\%27)|(\』))union/ix
(\%27)|(\』) - 單引號和它的hex等值
union - union關鍵字
可以同樣為其他SQL查詢定製表達式,如 >select, insert, update, delete, drop, 等等.

果,到這個階段,攻擊者已經發現web應用程序存在SQL注入漏洞,他將嘗試利用它。如果他認識到後端伺服器式MS SQL
server,他一般會嘗試運行一些危險的儲存和擴展儲存過程。這些過程一般以『sp』或『xp』字母開頭。典型的,他可能嘗試運行
『xp_cmdshell』擴展儲存過程(通過SQL Server執行Windows
命令)。SQL伺服器的SA許可權有執行這些命令的許可權。同樣他們可以通過xp_regread, xp_regwrite等儲存過程修改注冊表。
2.5 檢測MS SQL Server SQL注入攻擊的正則表達式
/exec(\s|\+)+(s|x)p\w+/ix
解釋:
exec - 請求執行儲存或擴展儲存過程的關鍵字
(\s|\+)+ - 一個或多個的空白或它們的http等值編碼
(s|x) p- 『sp』或『xp』字母用來辨認儲存或擴展儲存過程
\w+ - 一個或多個字元或下劃線來匹配過程的名稱
3. 跨站腳本(CSS)的正則表達式

發動CSS攻擊或檢測一個網站漏洞的時候, 攻擊者可能首先使簡單的HTML標簽如(粗體),(斜體)或(下劃線),或者他可能嘗試簡單的
script標簽如alert("OK").
因為大多數出版物和網路傳播的檢測網站是否有css漏洞都拿這個作為例子。這些嘗試都可以很簡單的被檢測出來。
然而,高明點的攻擊者可能用它的hex值替換整個字元串。這樣標簽會以%3C%73%63%72%69%70%74%3E出 現。
另一方面,攻擊者可能使用web代理伺服器像Achilles會自動轉換一些特殊字元如換成%3E.這樣攻擊發生時,URL
中通常以hex等值代替角括弧。
下列正則表達式將檢測任何文本中包含的html的。它將捉住試圖使用、、或。這正則表達式應該忽略大小寫。我們需要同時檢測角括弧和它的hex等值(% 3C|
3.1 一般 CSS 攻擊的正則表達式
/((\%3C)|)/ix
解釋:
((\%3C)|) -檢查>或它的hex等值
Snort 規則:
alert
tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"NII
Cross-site scripting attempt"; flow:to_server,established;
pcre:"/((\%3C)|)/i"; classtype:Web-application-attack; sid:9000; rev:5;)
跨站腳本同樣可以使用技術。現行默認的snort規則可以被輕易避開。
3.2章節提供了防止這種技術的方法。
3.2 "
/((\%3C)|)/I
解釋:
(\%3 C)|) ->或它的hex等值
3.3 CSS 攻擊的極端的正則表達式
/((\%3C)|)/I
解釋:
這個規則簡單尋找。由於你的web伺服器和web應用程序的構架,這個規則可能產生一些錯誤。但它能保證捉住任何CCS或者類似CSS的攻擊。
一個不錯避開過濾的CSS方法請參考Bugtraq投稿的
http://www.securityfocus.com/archive/1/272...rchive/1/272037.
但是請注意最後一種極端的規則將能檢測這所有的攻擊。
總結:


這篇文章中,我們提出了不同種類的正則表達式規則來檢測SQL注入和跨站腳本攻擊。有些規則簡單而極端,一個潛在的攻擊都將提高警惕。但這些極端的規則可

能導致一些主動的錯誤。考慮到這點,我們修改了這些簡單的規則,利用了另外的樣式,他們可以檢查的更准確些。在這些網路應用成的攻擊檢測中,我們推薦將這
些作為調試你IDS或日誌分析方法的起點。再經過幾次修改後,在你對正常網交易部分的非惡意應答進行評估以後,你應該可以准備的檢測那些攻擊了。

I. 請問如何解決跨站問題

最近腳本攻擊好象是很流行的,不過早在很久前就有這個了!腳本攻擊嚴格的說應該是一件藝術而不是漏洞!首先我們先要知道什麼是腳本,腳本就是運行在網頁伺服器上的文本程序,例如:ASP、PHP、CGI、JSP、ISAP等等,腳本的攻擊就是利用這些文件的設置和編寫時的錯誤或者疏忽不當,攻擊者就可以利用這些來達到自己攻擊目的,如果一個伺服器存在這些漏洞,那麼它的淪陷也是時間的問題!
這些文本文件一般都是要結合資料庫來使用的,這些資料庫有ACCESS、MSSQL、MYSQL、Oracle等!腳本攻擊就是針對這些資料庫來配合腳本對一些變數的過濾不嚴的問題來達到得到用戶密碼等敏感信息,修改資料庫等目的!下面我就針對這些來分別舉例說明!
一、跨站腳本的攻擊
腳本的跨站(CSS/XSS)就是利用程序對用戶提交的變數不嚴,大多數是利用多媒體標簽,前段時間比較流行的flash跨站就是利用的這個,比如我在[FLASH=450,350][/FLASH]之間插入一個我自己作好的一個swf文件,swf文件里我們用geturl里加上javascript:window.open('http://qfaq.yeah.net'就可以讓他打開清風安全網的網站,如果這里是一個木馬網頁,呵呵,,,你就等著中木馬吧!還有就是竊取用戶的cookie,例如我們利用也就是圖片的跨站,在這個裡面插入
這段地址即可得到!如果將javascript過濾掉後怎麼辦?
好,我們在看看下面這段代碼:
[upload=swf]uploadImages/200310812145390577.swf?">[/upload]
怎麼樣,還是能將你的信息得到的,而且還不會彈出對話框!
另外在joekoe論壇程序里還有一個這樣的問題,比如你發個帖子里有[DIR][/DIR]就會彈出一個播放器的安裝程序,呵呵,如果是一個黑心的站長利用這個來放馬,那後果就不用說了吧!
解決辦法:現在還沒有好的方法解決這個問題,你要做的就是將多媒體的標簽刪掉!
另附ASP和PHP的跨站代碼
php如下
$info = getenv("QUERY_STRING";
if ($info) {
$fp = fopen("test.txt","a";
fwrite($fp,$info."n";
fclose($fp);
}
?>

asp如下

二、sql injection
是現在最熱門的,也是本文要重點說的!
1、ASP+ACCESS資料庫類型的SQL注射
現在的大多數網站是採用的這個組合,但是如果在ASP程序中沒有對用戶提交的變數充分過濾的話就可能導致管理員密碼被猜到,整個網站的信息就會暴漏無移~!
在大多數ASP站點中,我們並不知道其程序代碼,靠任何掃描器也不可能發現SQL injection漏洞,這時就要靠手工檢測了,由於我們執行SQL語句要用到單引號、分號、逗號、冒號和「--」,所以我們就在可修改的URL後加上以上符號,或在表單中的文本框加上這些符號!比如比較經典的金梅系統漏洞,在movie.aps中有怎麼一段代碼:
articleid=request("id"
set rs=server.createobject("adodb.recordset"
sql="update learning set hits=hits+1 where articleID="&articleid

--------------------------------------------------------------------------------

2 [轉帖]腳本安全和利用
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1

articleid未經任何檢查便提交了,所以我們就可以自己構造一些SQL語句來提交上去!具體的利用過程請看拙作《SQL注入完整篇》和《SQL注入的補充》的動畫教程,這里我就不在重復的說了!
2、ASP+MYSQL資料庫類型的利用
MYSQL資料庫簡單使用和強大的功能一直以來都是網管們的最愛!但是如果是ASP中沒有對變數過濾的話,我們就可以來直接的到他的系統管理員許可權!
比如動網論壇、BBSXP論壇的SQL版有好幾個文件都沒有對ID過濾,所以我們只要找到他的存在問題的頁面就可以了,
看這段代碼:rs.open "select * from news where newsid=" & cstr(request("newsid"),conn,1,1
比如我們提交:
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了嗎?我們已經在系統中田加了一個xuehan 密碼是ilovexuehan的管理員帳號,以下的事情你就自己來做吧,呵呵,,,不用我來教了吧!!!
如果過濾了分號和單引號怎麼辦?呵呵,我們只要將我們的命令形式轉換一下,比如我們轉換成十六進制或者別的形式就可以繼續注入了,還有就是他如果過濾了xp_cmdshell 我們也可以解決,我們可以寫成xp'+'_cmd'+'shell形式,如果他將xp_cmdshell 擴展刪掉,我們可以通過xplog70.dll文件來恢復,呵呵,,,具體自己查找下資料庫的知識,當然我們也可以用別的擴展!所以說SQL injection不僅僅是一門技術,更要有靈活的頭腦和扎實的資料庫知識,特別是對SQL語言的掌握程度,如果不會SQL語言,你永遠都是生搬硬套,遇到障礙就過不去了!
3、PHP+MYSQL資料庫類型
PHP+MYSQL一直以來都認為是最安全的組合,不過一些文件沒有過濾單引號、反斜線等,我們也可以來進行注入,不過在最新的php安裝程序里的php.ini文件默認都是對這些過濾掉的,所以很大情況下我們是無法對進行注入的,不過也有許多牛人們可以饒過這個限制的!由於我的PHP和MYSQL不是太懂,所以就不能來具體舉例來說明了,大家要是有興趣可以去找寫資料來看!!!
需要從根本上解決解決SQL Injection問題。還得從程序本身入手。過濾不能單純的過濾URL所提交的參數,在表單里的也要過濾,value=後面的可以修改的數據,修改後可以提交到伺服器,總之對所有的表單提交的數據以及用戶可能對HTML源文件進行修改來控制的所有來自Web伺服器外部的數據進行過濾或轉換,對單引號、雙引號、分號「--」還有對數字鍵上面的所有特殊字元進行過濾,還有QUERY_STRING環境變數。在伺服器上刪除一些危險的擴展存儲過程,比如xp_cmdshell。有條件裝個IDS更好,不敢說無堅不摧,但至少可以阻擋大部分攻擊者。
三、一些別的腳本攻擊
有些程序沒有對cookie或者session進行過濾和檢查,就造成了用戶可以非法修改提交頁面,自己提交修改數據,比如像海陽頂端網木馬的以前版本對session沒有過濾,我們就可以饒過密碼的驗證來到達真正的頁面,還有就是post提交的問題,像leadbbs的2.77版本就是沒有充分的過濾,我們就可以把管理員的密碼修改成自己的密碼!
還有一個腳本的攻擊例子,在Discuz! 2.0 論壇里,因為個人屬性缺乏必要的安全確認,所以很容易誘使其他會員自動修改其個人屬性內容,特別是注冊郵件信息,這關系著登陸密碼的修改。
比如我們發個帖子,寫上

誘使會員點擊這個頁面後,就會自動修改該會員注冊的email地址為crack.x.h2163.com。當然為了隱蔽性,可以更新後自動關閉,然後調用另外一個假地址。
當然我們也可以利用這個漏洞進行欺騙、隱藏來誘惑管理員來修改我們為管理員等等!大家自己去學習吧!
看了這么多枯燥的東西下面我們再來看看另外一個好玩的漏洞,在百渡里搜索」傳奇留言薄「找幾個免費的留言本進去,找到他的登陸頁面,我找到的一個是:
http://www.conanshome.com/guestbook/login.asp
我們再來看看下面這個連接:
http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎麼我們就闖入後台了!!!
什麼原因,自己去琢磨吧!
後記:腳本的攻擊可以說是防不勝防的,我們所要做的只能是提高編寫程序的嚴謹態度,人為的因素在腳本攻擊中是最重要的!
聲明:本文提到的漏洞都有一定的攻擊性,我們的目的是探討技術,搞破壞的是小人!所造成的一切後果於作者無關!由於作者水平有限,文中難免有錯誤之處,歡迎指出!

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:642
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:89
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:312
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:794
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:348
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:818
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:369
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:596