>  기사  >  운영 및 유지보수  >  반영된 XSS를 분석하는 방법

반영된 XSS를 분석하는 방법

PHPz
PHPz앞으로
2023-05-13 20:13:042131검색

1. 반사형 XSS

반사형 XSS는 애플리케이션이 웹 요청을 통해 신뢰할 수 없는 데이터를 획득하여 데이터에 악성 코드가 포함되어 있는지 여부를 확인하지 않고 웹 사용자에게 전송하는 것을 의미합니다. Reflected XSS는 일반적으로 공격자가 악성코드 매개변수를 포함하는 URL로 구성하며, URL 주소가 열리면 HTML에 의해 고유한 악성코드 매개변수가 파싱되어 실행되는 특징이 있으며 사용자가 클릭을 요구합니다. 특정 매개변수와 연결하면 발생할 수 있습니다. 편집자는 CWE ID 80: 웹 페이지에서 스크립트 관련 HTML 태그의 부적절한 중립화(기본 XSS)

2를 분석하기 위해 JAVA 언어 소스 코드를 사용합니다. 서버는 데이터를 받아 처리한 후 XSS 코드가 포함된 데이터를 브라우저로 전송합니다. 브라우저가 XSS 코드로 데이터를 구문 분석한 후 XSS 취약점이 발생하여 대상 도용으로 이어질 수 있습니다. 웹사이트의 데이터를 공격자의 서버로 전송하여 이용자의 미공개 정보를 읽거나 하이재킹을 클릭하여 피싱 공격 등을 수행합니다. 2018년 1월부터 11월까지 CVE에는 이와 관련된 취약점 정보가 총 126개 있었습니다. 일부 취약점은 다음과 같습니다.

CVEVulnerability 개요CVE-2018-19091tianti는 Java로 작성된 무료 경량 CMS 시스템이며 현재 다음을 제공합니다. 합계 백엔드 관리부터 프런트엔드 디스플레이까지 솔루션을 제공합니다. 그 중 tianti 2.3은 tianti-module-admin /user /list userName 매개변수를 통해 사용자 관리 모듈에 반영된 XSS 취약점이 있습니다. CVE-2018-14929Matera Banco 1.0.0은 /contingency/web/index.jsp(홈페이지라고도 함) url 매개변수에서 알 수 있듯이 여러 반영된 XSS에 취약합니다. CVE-2018-12996 ZohoManageEngine 애플리케이션 관리자는 J2EE 기본 구조 및 J2EE 애플리케이션을 모니터링하고 관리하기 위한 솔루션을 제공합니다. Zoho ManageEngine 애플리케이션 관리자 13(Build13800)에 반영된 XSS(교차 사이트 스크립팅) 취약점으로 인해 원격 공격자가 'method' 매개변수를 통해 임의의 웹 스크립트나 HTML을 GraphicalView.do에 삽입할 수 있습니다. CVE-2018-12090LAMS는 호주 Macquarie University, LAMS International Ltd. 및 LAMS Foundation이 공동 개발한 차세대 JAVA 기반 학습 소프트웨어입니다. 인증되지 않은 반사 XSS(교차 사이트 스크립팅)가 3.1 이전 LAMS에 존재하여 ForgetPasswordChange.jsp에서 원격 공격자가 허용됩니까? 키 = 비밀번호 변경 중에 지정되지 않은 GET 매개변수를 조작하여 임의의 JavaScript를 도입합니다.

3. 샘플 코드

샘플은 Samate Juliet Test Suite for Java v1.3(https://samate.nist.gov/SARD/testsuite.php)에서 가져온 것입니다. 소스 파일 이름: CWE80_XSS__CWE182_Servlet_URLConnection_03.java.

3.1 결함 코드

반영된 XSS를 분석하는 방법반영된 XSS를 분석하는 방법

위 예제 코드 연산은 사용자의 나이를 구하고, 40행에서 연결 객체를 생성하고, 44행에서 입력 스트림을 생성하여 urlConnection 객체 응답 콘텐츠, 52행의 버퍼 스트림에서 데이터 한 줄을 읽고, 52행에서 얻은 데이터에서 <script></script> 태그를 지정하고 <script></script> 태그가 필터링되더라도 처리된 데이터를 페이지에 출력합니다. , 그러나 여전히 다른 html 태그를 사용할 수 있습니다. 여기서 악성 url 하지만 웹사이트가 보호되지 않는 경우 페이지는 document.cookie의 내용을 읽어서 페이지에 입력합니다. 이렇게 하면 반영된 XSS가 생성됩니다. urlConnection对象响应的内容,在第52行从缓冲流中读取一行数据,在第100行中,将获得的数据去除所有的<script></script>标签并向页面输出处理后的数据,即使过滤了<script></script>标签,但仍然可以使用其他html标签,在这里构造了恶意的url,但网站未做防护时,页面会读取到document.cookie的内容并输入到页面。这样就造成了反射型 XSS。

使用360代码卫士对上述示例代码进行检测,可以检出“反射型XSS”缺陷,显示等级为高。从跟踪路径中可以分析出数据的污染源以及数据流向,在代码行第100行报出缺陷,如图1所示:

반영된 XSS를 분석하는 방법图1:反射型 XSS 检测示例

3.2 修复代码

반영된 XSS를 분석하는 방법

在上述修复代码中,由于页面输出的内容为用户的年龄,在第96行,对响应的内容转换为数字,这样就过滤了其它 html 的字符,即使存在字符,代码会报出异常,并不会造成反射型 XSS 的发生。

使用360代码卫士对修复后的代码进行检测,可以看到已不存在“反射型XSS”缺陷。如图2:


반영된 XSS를 분석하는 방법

图2:修复后检测结果

4 、如何避免反射型 XSS

要避免反射型 XSS,需要注意以下几点:

(1) 对用户的输入进行合理验证(如年龄只能是数字),对特殊字符(如 、'、"等)以及<script></script>javascript 等进行过滤。

(2) 根据数据将要置于 HTML 上下文中的不同位置(HTML 标签、HTML 属性、JavaScript 脚本、CSS、URL),对所有不可信数据进行恰当的输出编码。

(3) 设置HttpOnly属性,避免攻击者利用XSS漏洞进行Cookie劫持攻击。在 JavaEE 中,给Cookie添加HttpOnly

360 코드 가드를 사용하여 위의 샘플 코드를 감지하면 "반사된 XSS" 결함을 감지할 수 있으며 표시 수준이 높습니다. 추적 경로를 통해 데이터 오염의 원인과 데이터 흐름 방향을 분석할 수 있으며 그림 1과 같이 코드의 100번째 라인에 결함이 보고됩니다.

반영된 XSS를 분석하는 방법반사된 XSS를 분석하는 방법그림 1: 반사된 XSS 감지 예

🎜🎜3.2 복구 코드🎜🎜🎜반영된 XSS 분석 방법🎜🎜위 복구 코드에서는 페이지에서 출력되는 내용이 사용자 연령의 96페이지 줄에서 응답 내용을 숫자로 변환하여 다른 HTML 문자를 필터링합니다. 문자가 존재하더라도 코드는 예외를 보고하고 XSS를 반영하지 않습니다. 🎜🎜360 코드가드를 이용해 복구된 코드를 검출해 보면 '반영된 XSS' 불량은 없는 것을 확인할 수 있습니다. 그림 2와 같이: 🎜🎜
반영된 XSS를 분석하는 방법 🎜🎜그림 2: 수리 후 감지 결과🎜🎜🎜4. 반사 XSS를 방지하는 방법🎜🎜🎜반사를 방지하려면 숫자를 사용할 수 있으며 특수 문자(예: , ', " 등) .) 및 <script></script>, javascript 등을 사용하여 필터링합니다. 🎜🎜(2) HTML 컨텍스트(HTML 태그, HTML 속성, JavaScript 스크립트, CSS, URL)에서 데이터가 배치될 다양한 위치에 따라 필터 신뢰할 수 없는 모든 데이터가 올바르게 출력됩니다. 🎜🎜(3) 설정합니다. 공격자가 XSS 취약점을 사용하는 것을 방지하기 위한 HttpOnly 속성은 쿠키 하이재킹 공격 JavaEE에서는 쿠키를 추가하는 코드를 제공하세요. class="prettyprint code-in-text Prettyprinted">HttpOnly는 다음과 같습니다: 🎜🎜🎜🎜

위 내용은 반영된 XSS를 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제