Python 침투 테스트-XSS 웹 공격

교차 사이트 스크립팅 공격은 클라이언트 측 코드 삽입 공격을 참조하는 삽입 유형입니다. 여기에서 합법적 인 웹 사이트에 악성 코드가 주입됩니다. SOP (Same Origin Policy)의 개념은 사이트 간 스크립팅의 개념을 이해하는 데 매우 유용합니다. SOP는 모든 웹 브라우저에서 가장 중요한 보안 원칙입니다. 웹 사이트가 다른 출처의 페이지에서 콘텐츠를 검색하는 것을 금지합니다. 예를 들어, 웹 페이지 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 공격에서 공격자는 대상 웹 애플리케이션 (예 : 데이터베이스 내)에 영구적으로 저장되는 페이로드라고하는 스크립트를 삽입합니다. 이것이 바로 지속적인 XSS 공격이라고하는 이유입니다. 실제로 가장 위험한 유형의 XSS 공격입니다. 예를 들어 공격자가 블로그의 댓글 필드 나 포럼 게시물에 악성 코드를 삽입했습니다.

비 영구적 또는 반사 된 XSS

공격자의 페이로드가 요청의 일부가되어야하는 가장 일반적인 유형의 XSS 공격으로, 웹 서버로 전송되고 HTTP 응답에 HTTP 요청의 페이로드가 포함되는 방식으로 다시 반영됩니다. 공격자가 각 피해자에게 페이로드를 전달해야하므로 비 지속적 공격입니다. 이러한 종류의 XSS 공격의 가장 일반적인 예는 공격자가 피해자를 유인하여 XSS 페이로드가 포함 된 서버에 요청을하고 브라우저 내에서 반영되고 실행되는 스크립트를 실행하는 피싱 이메일입니다. .

SQLi와 마찬가지로 XSS 웹 공격은 애플리케이션에 대한 입력 데이터를 조작하여 구현할 수 있습니다. 다음 예제에서는 이전 섹션에서 수행 한 SQLi 공격 벡터를 수정하여 XSS 웹 공격을 테스트합니다. 아래 제공된 Python 스크립트는 다음을 사용하여 XSS 공격을 분석하는 데 도움이됩니다.mechanize

먼저 mechanize 기준 치수.

import mechanize

이제 양식을 제출 한 후 응답을 얻기위한 URL 이름을 제공하십시오.

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

파일에서 공격 벡터를 읽어야합니다.

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

이제 각 arrack 벡터와 함께 요청을 보냅니다.

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 공격 가능성이 높습니다.