Python滲透測試 - XSS網頁攻擊



跨站指令碼攻擊是一種注入型別,也稱為客戶端程式碼注入攻擊。在這種攻擊中,惡意程式碼被注入到合法網站中。同源策略(SOP)的概念對於理解跨站指令碼的概念非常有用。SOP是每個Web瀏覽器中最重要的安全原則。它禁止網站從具有其他來源的頁面檢索內容。例如,網頁www.tutorialspoint.com/index.html可以訪問www.tutorialspoint.com/contact.html的內容,但www.virus.com/index.html無法訪問www.tutorialspoint.com/contact.html的內容。這樣,我們可以說跨站指令碼是一種繞過SOP安全策略的方法。

XSS攻擊型別

在本節中,讓我們瞭解不同型別的XSS攻擊。攻擊可以分為以下主要類別:

  • 永續性或儲存型XSS
  • 非永續性或反射型XSS

永續性或儲存型XSS

在這種型別的XSS攻擊中,攻擊者注入一個稱為payload的指令碼,該指令碼永久儲存在目標Web應用程式上,例如資料庫中。這就是它被稱為永續性XSS攻擊的原因。它實際上是最具破壞性的XSS攻擊型別。例如,攻擊者在部落格的評論欄位或論壇帖子中插入惡意程式碼。

非永續性或反射型XSS

這是最常見的XSS攻擊型別,其中攻擊者的payload必須是傳送到Web伺服器並反射回的請求的一部分,以使HTTP響應包含來自HTTP請求的payload。這是一種非永續性攻擊,因為攻擊者需要向每個受害者傳遞payload。此類XSS攻擊最常見的示例是網路釣魚郵件,攻擊者利用這些郵件吸引受害者向伺服器發出包含XSS payload的請求,並最終執行在瀏覽器內部反射並執行的指令碼。

示例

與SQLi相同,XSS網頁攻擊可以透過操縱應用程式的輸入資料來實現。在以下示例中,我們正在修改上一節中完成的SQLi攻擊向量以測試XSS網頁攻擊。下面給出的Python指令碼有助於使用mechanize分析XSS攻擊:

首先,讓我們匯入mechanize模組。

import mechanize

現在,提供URL名稱以在提交表單後獲取響應。

url = input("Enter the full url")
   attack_no = 1

我們需要從檔案中讀取攻擊向量。

With open (‘vectors_XSS.txt’) as x:

現在我們將使用每個攻擊向量傳送請求:

For line in x:
   browser.open(url)
browser.select_form(nr = 0)
   browser[“id”] = line
   res = browser.submit()
content = res.read()

以下程式碼行將檢查列印的攻擊向量。

if content.find(line) > 0:
print(“Possible XSS”)

以下程式碼行將響應寫入輸出檔案。

output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1

當用戶輸入列印到響應而沒有任何驗證時,就會發生XSS。因此,要檢查XSS攻擊的可能性,我們可以檢查響應文字中是否存在我們提供的攻擊向量。如果攻擊向量出現在響應中而沒有任何轉義或驗證,則很有可能存在XSS攻擊。

廣告