TWI439097B - 跨站腳本攻擊產生方法 - Google Patents
跨站腳本攻擊產生方法 Download PDFInfo
- Publication number
- TWI439097B TWI439097B TW100130715A TW100130715A TWI439097B TW I439097 B TWI439097 B TW I439097B TW 100130715 A TW100130715 A TW 100130715A TW 100130715 A TW100130715 A TW 100130715A TW I439097 B TWI439097 B TW I439097B
- Authority
- TW
- Taiwan
- Prior art keywords
- cross
- attack
- site scripting
- string
- generation
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本發明是與一種網路攻擊的產生方法有關,且特別是與一種跨站腳本攻擊的產生方法有關。
近年來,跨站腳本攻擊為逐漸增加之網站漏洞攻擊手法。在2007年,跨站腳本攻擊已成為十大網站安全漏洞之一。在網站應用程式中,跨網站攻擊可以繞過其存取控制而得到提昇的權限,而這些攻擊都源自於網站應用程式中含有不完整或不正確的過濾函式。今日,即使是程式設計師或安全專家皆使用自動測試工具來找出跨網站弱點,這類的工具卻缺少變形的機制,來協助發現潛在的跨網站弱點。由於網站允許使用者輸入字串,而又在伺服器上運作資料庫系統。因此,駭客得以利用網站輸入字元或字串的欄位插入網頁與腳本語言,使得其他使用者在觀看網頁的同時下載執行該惡意程式碼,或重導到惡意網站,從而受到網路攻擊。
一般網站對於跨站腳本攻擊的防護,乃是建立檢測規則。而測試網站對於跨站腳本攻擊的耐受力,則是使用攻擊字串樣本嘗試滲透網站。由於檢測規則可能不完備或被迴避,但攻擊字串樣本數目有限且未必能準確對應網站漏洞,因此自動化大量攻擊的滲透測試難以施行。
本發明提供一種跨站腳本攻擊產生方法,可自動化產生大量變形跨站腳本攻擊,以用於對網站進行滲透測試。
本發明提出一種跨站腳本攻擊產生方法,其包括下列步驟。首先,接收多個攻擊字串樣本。每一這些攻擊字串樣本係由多個字串文字所組成。接著,分別分析這些攻擊字串樣本,以獲得多個第一代符序列。其中,每一個第一代符序列係由多個代符所構成,且每一個代符係對應至少一個字串文字。然後,根據這些代符所對應的字串文字與上述第一代符序列,來產生多個跨站腳本攻擊字串。再來,輸出這些跨站腳本攻擊字串。
在本發明之一實施例中,於上述分別分析這些攻擊字串樣本,而獲得這些第一代符序列的步驟中,依據這些字串文字所對應之跨站腳本語言規則,來分析上述攻擊字串樣本,而獲得上述第一代符序列。
在本發明之一實施例中,於產生上述跨站腳本攻擊字串的步驟中,可根據這些第一代符序列,建立一結構模型,以根據此結構模型,而利用這些代符來產生多個第二代符序列。並且,將這些代符所對應的字串文字代入至這些第二代符序列,以產生多個跨站腳本攻擊字串。
在本發明之一實施例中,上述第二代符序列是根據結構模型隨機所產生。
在本發明之一實施例中,上述結構模型根據貝氏定理(Bayes' theorem)或隱藏式馬可夫鏈(Hidden Markov Chain,HMC)所建立。另外,上述結構模型係藉由機率及自動機(automata)技術所轉換之。而上述結構模型係以有向圖(directed graph)表示,以決定這些代符在這些第二代符序列中的順序。
在本發明之一實施例中,上述代符所對應的字串文字是根據一跨站腳本語言規則,而隨機代入這些第二代符序列。
基於上述,本發明的跨站腳本攻擊產生方法,係藉由將攻擊字串樣本轉換成代符序列後,再以代符所對應的字串文字來代換代符,進而產生跨站腳本攻擊字串。因此,本發明將可產生新的、未曾出現過的跨站腳本攻擊,以協助目前的跨網站弱點偵測技術,並加強測試網站的未知弱點之能力。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖1為本發明第一實施例之跨站腳本攻擊產生系統的示意圖。請參照圖1,跨站腳本攻擊產生系統100係用以接收攻擊字串樣本,其在經由一連串處理之後而輸出跨站腳本攻擊字串至待測網站50。在此,跨站腳本攻擊產生系統100主要包括樣本資料庫110、處理模組120以及產生模組130。其中,處理模組120係耦接至樣本資料庫110,而產生模組130則耦接至處理模組120。
在本實施例中,跨站腳本攻擊產生系統100可以設置於具有中央處理單元以及儲存單元的電子裝置中。樣本資料庫110則設置於儲存單元中,並且透過中央處理單元來執行處理模組120與產生模組130。而處理模組120與產生模組130可以是個別獨立的晶片,或者是由程式語言所撰寫之程式碼。然而,在此僅為例示說明,並不以此來限制其實施手段。
樣本資料庫110係用以存放多個攻擊字串樣本,每一個攻擊字串樣本是由多個字串文字所組成。而這些攻擊字串樣本可以自網路公開資源、書籍文獻範例、誘捕系統側錄流量、網站連線紀錄等處進行蒐集。處理模組120用以自樣本資料庫110中讀取這些攻擊字串樣本,並分析每一個攻擊字串樣本,以獲得多個第一代符序列(token sequence)。也就是說,由一個攻擊字串樣本會獲得一個第一代符序列。產生模組130係用以根據處理模組120所獲得之多個第一代符序列,來產生多個跨站腳本攻擊字串,並將這些跨站腳本攻擊字串輸出至待測網站50。以下即配合圖1之跨站腳本攻擊產生系統100,來說明跨站腳本攻擊產生方法各步驟。
圖2為本發明第一實施例之跨站腳本攻擊產生方法的流程圖。請同時參照圖1及圖2,在步驟S210中,處理模組120係自樣本資料庫110讀取多個攻擊字串樣本。亦即,以這些攻擊字串樣本作為處理模組120之輸入值。接著,在步驟S220中,處理模組120分別分析這些攻擊字串樣本,以獲得多個第一代符序列。
在此,每一個第一代符序列均包括多個代符(token),且每一個代符均係對應於至少一個字串文字。詳細來說,處理模組120在取得其中一個攻擊字串樣本後,會先將此攻擊字串樣本解碼,該解碼動作可包含文字內碼與字元之轉換、冗餘字元清除以及特殊及跳脫符號之對應動作,與字元之轉換等動作,以重現通用之網站腳本語言文字。之後,根據跨站腳本語言規則,將解碼後之攻擊字串樣本進行斷字,以將字串文字轉換成為一連串對應的代符,在此係將上述一連串代符稱為第一代符序列。故,處理模組120之輸出即為第一代符序列。
之後,在步驟S230中,產生模組130係根據這些代符所對應的字串文字與這些第一代符序列,來產生多個跨站腳本攻擊字串。如步驟S240所示,在這些跨站腳本攻擊字串產生後,產生模組130可將這些跨站腳本攻擊字串輸出至待測網站50。如此一來,即可利用這些跨站腳本攻擊字串,來測試待測網站50對於跨站腳本攻擊的耐受力,進而找出待測網站50的網站漏洞。
圖3為本發明第二實施例之跨站腳本攻擊產生系統的示意圖。請參照圖3,跨站腳本攻擊產生系統300包括樣本資料庫310、處理模組320、產生模組330、學習模組340
以及結構模型350。本實施例之樣本資料庫310、處理模組320及產生模組330係分別與第一實施例之樣本資料庫110、處理模組120及產生模組130的功能相似或相同,在此不再詳述。也就是說,相較於第一實施例的跨站腳本攻擊產生系統100,本實施例之跨站腳本攻擊產生系統300更包括學習模組340與結構模型350。
學習模組340係耦接至處理模組320,其可根據第一代符序列來建立結構模型350,以藉由統計方法來反映其與代符間的關聯。例如,學習模組340可以利用機率模型來學習、建立第一代符序列的結構,以建立結構模型350。在此,機率模型可以例如為貝氏定理(Bayes' theorem)或隱藏式馬可夫鏈(Hidden Markov Chain,HMC)。
以下即配合圖3之跨站腳本攻擊產生系統300,來說明跨站腳本攻擊產生方法各步驟。圖4為本發明第二實施例之跨站腳本攻擊產生方法的流程圖。請同時參照圖3及圖4,在步驟S410中,處理模組320係自樣本資料庫310接收多個攻擊字串樣本。每一這些攻擊字串樣本是由多個字串文字所組成。以下為攻擊字串樣本的5個例子:
(1)”’;alert(String.fromCharCode(88,83,83))//'
;alert(String.fromCharCode(88,83,83))//”;alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//-></SCRIPT>”>’><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>=&fg”
(2)alert(String.fromCharCode(88,83,83))
(3)<DIV STYLE=”background-image:n0075n0072n006Cn0028’n006an0061n0076n0061n0073n0063n0072n0069n0070n0074n003an0061n006cn0065n0072n0074n0028.1027n0058.1053n0053n0027n0029’n0029”>
(4) <SCRIPT>a=/XSS/alert(a.source)</SCRIPT>”
(5) <A HREF=”http://6	6.000146.0x7.147/”>XSS</A>
接著,在步驟S420中,處理模組320會分別分析這些攻擊字串樣本,而獲得多個第一代符序列。在此,每一個第一代符序列由均係由多個代符所構成,且每一個代符係對應於至少其中一個字串文字。舉例來說,處理模組320可先將這些攻擊字串樣本進行斷字之後,再把斷字之後的字串文字各自歸類(如“Start tag”、“Attribute”、“The Value of Attribute”、“Plain text”、“End tag”與“Comment”等6類),並且以所對應的代符代替之。
然後,在步驟S430中,學習模組340與產生模組330會根據這些代符所對應的字串文字與這些第一代符序列,來產生多個跨站腳本攻擊字串。在本實施例中,步驟S430包括三個子步驟,即步驟S432、S434及S436。
在步驟S432中,學習模組340會根據上述第一代符序列,來建立結構模型350。詳細而言,第一代符序列可以作為學習模組340的輸入值。學習模組340會根據這些代符在第一代符序列中出現的頻率與順序,並利用機率模型(例如:貝氏定理或隱藏式馬可夫鏈)來統計這些代符之間的相關性,並產生對應的代符順序之機率文法(probabilistic grammar)。此機率文法可再藉由自動機技術來轉換為結構模型350。在此,結構模型350中的節點係代表第一代符序列中各代符的狀態。亦即,上述第一代符序列在各自的結構模型建立之後,可藉由合併(merge)其共通之狀態,而將上述第一代符序列各自的結構模型合併為一經整合之結構模型350,以作為自樣本所學習到之跨站腳本攻擊的綜合結構。
舉例來說,圖5為本發明第二實施例之結構模型的示意圖。結構模型350係依據貝氏定理或隱藏式馬可夫鏈而建立,其可藉由節點來展現代符之狀態,連接邊註明機率值,以作為結構模型之表達。在本實施例中,結構模型350包括10個節點。在此僅為例示說明,並不以此為限。
請參考圖5,結構模型350的有向邊線為狀態轉換之方向,有向邊線上的數字係為狀態轉換的機率值。其中一個第一代符序列將自節點1起,根據有向邊線的方向,遊歷圖5中各節點,直至回到節點1結束。藉由攻擊字串樣本轉換所得來的第一代符序列,學習模組340將可自動習得代符可能的先後順序組合,並據以建立出結構模型350。
接著,返回圖4,在步驟S434中,學習模組340便能夠利用結構模型350,而依據這些代符來產生多個第二代符序列。然後,在步驟S436中,產生模組330將這些代符所對應的字串文字代入至這些第二代符序列,以產生多個跨站腳本攻擊字串。
詳細來說,產生模組330以結構模型350為輸入值,以產生跨站腳本攻擊字串。由於結構模型350為代符可能的先後順序組合,因此以節點1為起點與終點,其餘節點可重複經過,並根據有向邊線的方向,隨機遊歷圖中各節點所產生的任一路徑,皆為可能的代符序列。由於遊歷過程乃基於結構模型350,因此可以產生與第一代符序列中相同或不同的第二代符序列。將第二代符序列中之各代符,以跨站腳本語言規則所對應的文字置換,即可形成新的跨站腳本攻擊字串。同一代符可對應的字串文字並非惟一,因此可產生與攻擊字串樣本內相同或不同的的跨站腳本攻擊字串。亦即,根據結構模型350隨機產生新的第二代符序列,藉以建立新的跨站腳本攻擊字串。以上述攻擊字串樣本的5個例子而言,可分別獲得如底下所示之腳本攻擊字串。
(1) ”>,alert(123)<iframe/src=http://xssed.com>alert(123)</scrihttp://pt>alert(123)
(2) ”>,’></div>alert(123)<input><script>alert(123)</script></marquee>alert(123)”>
(3) >”>,</p>alert(123)<marquee><script>alert(123)</script></title>alert(123)
(4) ”/>,</ScRiPt>alert(123)<title><script>alert(123)</script></SCRIPT>alert(123)
(5) >”>,</form>alert(123)<b><script>alert(123)</script></input>alert(123)”type=”hidden”/>
再來,在步驟S440中,產生模組330會將這些跨站腳本攻擊字串輸出至待測網站50。值得一提的是,這些跨站腳本攻擊字串將可能會擁有與攻擊字串樣本相同的代符序列,但為全新的文字組合。或是甚至擁有未曾出現過的代符序列。
綜上所述,本發明的跨站腳本攻擊產生方法藉由將攻擊字串樣本轉換成代符序列後,再以代符對應的字串文字代換代符,進而產生跨站腳本攻擊字串。因此,本發明將可產生新的、未曾出現過的跨站腳本攻擊,以協助目前的跨網站弱點偵測技術,加強測試網站的未知弱點。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100、300‧‧‧跨站腳本攻擊產生系統
110、310‧‧‧樣本資料庫
120、320‧‧‧處理模組
130、330‧‧‧產生模組
340‧‧‧學習模組
350‧‧‧結構模型
S210~S240‧‧‧本發明第一實施例之跨站腳本攻擊產生方法各步驟
S410~S440‧‧‧本發明第二實施例之跨站腳本攻擊產生方法各步驟
圖1為本發明第一實施例之跨站腳本攻擊產生系統的示意圖。
圖2為本發明第一實施例之跨站腳本攻擊產生方法的流程圖。
圖3為本發明第二實施例之跨站腳本攻擊產生系統的示意圖。
圖4為本發明第二實施例之跨站腳本攻擊產生方法的流程圖。
圖5為本發明第二實施例之結構模型的示意圖。
S210~S240...本發明第一實施例之跨站腳本攻擊產生方法各步驟
Claims (7)
- 一種跨站腳本攻擊產生方法,適用於一電子裝置,該方法包括:接收多個攻擊字串樣本,其中每一攻擊字串樣本係由多個字串文字所組成;分別分析該些攻擊字串樣本,而獲得多個第一代符序列,其中每一第一代符序列均係由多個代符所構成,且每一代符係對應該些字串文字的至少其中之一者;根據該些代符所對應的字串文字與該些第一代符序列,來產生多個跨站腳本攻擊字串;以及輸出該些跨站腳本攻擊字串,其中,產生該些跨站腳本攻擊字串的步驟包括:根據該些第一代符序列,來建立一結構模型;根據該結構模型,利用該些代符來產生多個第二代符序列;以及將該些代符所對應的字串文字代入至該些第二代符序列,以產生該些跨站腳本攻擊字串。
- 如申請專利範圍第1項所述之跨站腳本攻擊產生方法,其中分別分析該些攻擊字串樣本,而獲得該些第一代符序列的步驟包括:依據該些字串文字所對應之一跨站腳本語言規則,來分析該些攻擊字串樣本,而獲得該些第一代符序列。
- 如申請專利範圍第1項所述之跨站腳本攻擊產生 方法,其中該些第二代符序列係根據該結構模型而隨機產生。
- 如申請專利範圍第1項所述之跨站腳本攻擊產生方法,其中該結構模型係根據貝氏定理或隱藏式馬可夫鏈所建立。
- 如申請專利範圍第1項所述之跨站腳本攻擊產生方法,其中該結構模型以有向圖表示,以決定該些代符在該些第二代符序列中的順序。
- 如申請專利範圍第1項所述之跨站腳本攻擊產生方法,其中該結構模型係藉由機率以及自動機技術來進行轉換。
- 如申請專利範圍第1項所述之跨站腳本攻擊產生方法,其中該些代符所對應的字串文字,是根據一跨站腳本語言規則所隨機代入該些第二代符序列而獲得。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100130715A TWI439097B (zh) | 2011-08-26 | 2011-08-26 | 跨站腳本攻擊產生方法 |
US13/298,295 US8505080B2 (en) | 2011-08-26 | 2011-11-17 | Method for generating cross-site scripting attack |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100130715A TWI439097B (zh) | 2011-08-26 | 2011-08-26 | 跨站腳本攻擊產生方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201310954A TW201310954A (zh) | 2013-03-01 |
TWI439097B true TWI439097B (zh) | 2014-05-21 |
Family
ID=47745696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100130715A TWI439097B (zh) | 2011-08-26 | 2011-08-26 | 跨站腳本攻擊產生方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8505080B2 (zh) |
TW (1) | TWI439097B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232576A1 (en) * | 2011-11-18 | 2013-09-05 | Vinsula, Inc. | Systems and methods for cyber-threat detection |
CN103856471B (zh) | 2012-12-06 | 2018-11-02 | 阿里巴巴集团控股有限公司 | 跨站脚本攻击监控系统及方法 |
US9781145B2 (en) | 2014-11-25 | 2017-10-03 | International Business Machines Corporation | Persistent cross-site scripting vulnerability detection |
JP2017004236A (ja) * | 2015-06-10 | 2017-01-05 | 富士ゼロックス株式会社 | 情報処理装置、ネットワークシステム及びプログラム |
WO2017077847A1 (ja) * | 2015-11-02 | 2017-05-11 | 日本電信電話株式会社 | 解析装置、解析方法、および、解析プログラム |
CN106951784B (zh) * | 2017-02-23 | 2020-07-07 | 南京航空航天大学 | 一种面向XSS漏洞检测的Web应用逆向分析方法 |
US10652265B2 (en) * | 2018-01-12 | 2020-05-12 | Lianqun YANG | Method and apparatus for network forensics compression and storage |
CN108769022B (zh) * | 2018-05-29 | 2020-05-19 | 浙江大学 | 一种用于渗透测试的工业控制系统安全实验系统 |
CN111212016B (zh) * | 2018-11-21 | 2022-09-23 | 阿里巴巴集团控股有限公司 | 跨站请求处理方法、装置及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040260754A1 (en) * | 2003-06-20 | 2004-12-23 | Erik Olson | Systems and methods for mitigating cross-site scripting |
GB2444514A (en) | 2006-12-04 | 2008-06-11 | Glasswall | Electronic file re-generation |
US7933946B2 (en) * | 2007-06-22 | 2011-04-26 | Microsoft Corporation | Detecting data propagation in a distributed system |
US20090119769A1 (en) * | 2007-11-05 | 2009-05-07 | Microsoft Corporation | Cross-site scripting filter |
US8225402B1 (en) * | 2008-04-09 | 2012-07-17 | Amir Averbuch | Anomaly-based detection of SQL injection attacks |
WO2010011411A1 (en) * | 2008-05-27 | 2010-01-28 | The Trustees Of Columbia University In The City Of New York | Systems, methods, and media for detecting network anomalies |
-
2011
- 2011-08-26 TW TW100130715A patent/TWI439097B/zh active
- 2011-11-17 US US13/298,295 patent/US8505080B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8505080B2 (en) | 2013-08-06 |
TW201310954A (zh) | 2013-03-01 |
US20130055400A1 (en) | 2013-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI439097B (zh) | 跨站腳本攻擊產生方法 | |
Li et al. | A stacking model using URL and HTML features for phishing webpage detection | |
Hakak et al. | Exact string matching algorithms: survey, issues, and future research directions | |
Lee et al. | A novel method for SQL injection attack detection based on removing SQL query attribute values | |
CN113647078B (zh) | 一种管理安全事件的方法、装置和计算机可读存储介质 | |
Kamtuo et al. | Machine Learning for SQL injection prevention on server-side scripting | |
CN107862039B (zh) | 网页数据获取方法、系统和数据匹配推送方法 | |
Azodi et al. | A new approach to building a multi-tier direct access knowledgebase for IDS/SIEM systems | |
Aebersold et al. | Detecting obfuscated javascripts using machine learning | |
CN112115326A (zh) | 一种以太坊智能合约的多标签分类和漏洞检测方法 | |
CN102141959A (zh) | 一种受上下文无关文法约束的测试用例生成方法 | |
Oz et al. | On the use of generative deep learning approaches for generating hidden test scripts | |
Chida et al. | Repairing dos vulnerability of real-world regexes | |
Khalid et al. | Web vulnerability finder (WVF): automated black-box web vulnerability scanner | |
Tellenbach et al. | Detecting obfuscated JavaScripts from known and unknown obfuscators using machine learning | |
US20230222223A1 (en) | Computer-implemented method for testing the cybersecurity of a target environment | |
Manh et al. | The vault: A comprehensive multilingual dataset for advancing code understanding and generation | |
Soltani et al. | Event reconstruction using temporal pattern of file system modification | |
JP6984761B2 (ja) | 情報処理装置及び情報処理プログラム | |
Caballero et al. | Towards generating high coverage vulnerability-based signatures with protocol-level constraint-guided exploration | |
Sakaoglu | KARTAL: Web Application Vulnerability Hunting Using Large Language Models: Novel method for detecting logical vulnerabilities in web applications with finetuned Large Language Models | |
Urbanska et al. | Structuring a vulnerability description for comprehensive single system security analysis | |
Pan et al. | Efficient Model-based Fuzz Testing Using Higher-order Attribute Grammars. | |
Zhang et al. | A Survey on the Development of Network Protocol Fuzzing Techniques | |
Liljebjörn et al. | Mantis the black-box scanner: Finding XSS vulnerabilities through parse errors |