HTML 주입은 웹 페이지가 사용자가 제공한 입력을 삭제하거나 출력의 유효성을 검사하지 못할 때 발생하는 네트워크 공격 유형인 취약성입니다. 이를 통해 공격자는 자신의 페이로드를 위조하고 취약한 필드 애플리케이션을 통해 악성 HTML 코드를 주입하여 수정할 수 있습니다. 웹페이지 콘텐츠를 수집하고 일부 민감한 데이터도 얻을 수 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, HTML5 버전, Dell G3 컴퓨터.
HTML 주입(Hypertext Markup Language 주입) 중국어는 "Hypertext Markup Language 주입"을 의미합니다. 우리 모두 알고 있듯이 HTML에는 다양한 태그가 포함되어 있습니다. 웹 응용 프로그램이 사용자가 입력한 데이터를 철저히 처리하지 않으면 일부 불법 사용자가 발생합니다. 제출된 데이터에는 다른 HTML 태그가 포함될 수 있으며 이러한 데이터는 서버에서 일반 HTML 태그로 표시됩니다. 최종 결과는 불법 태그가 구문 분석되어(피싱, 사회 공학 등에 적용될 수 있음) 큰 피해를 입힐 수 있습니다. 다른 사용자에게 큰 영향을 미칩니다.
공격자는 자신의 페이로드를 위조하고 취약한 필드를 통해 애플리케이션에 악성 HTML 코드를 삽입하여 웹 페이지의 콘텐츠를 수정하고 일부 민감한 데이터를 얻을 수도 있습니다.
XSS(Cross-site Scripting) 중국어 번역은 "크로스 사이트 스크립팅 공격"입니다. XSS는 본질적으로 HTML 인젝션 공격이지만 XSS가 스크립트를 사용하는 것과는 다릅니다. JavaScript를 실행하기 위한 태그 JavaScript와 같은 스크립트 프로그램은 JavaScript를 통해 기밀 데이터와 일련의 위험한 작업을 얻을 수 있는 반면, HTML 주입은 HTML 태그만 사용하여 페이지 콘텐츠를 수정합니다.
반영된 HTML 삽입(GET 방법)
이름 html을 입력하세요. test 에서 html 글자가 빨간색으로 변한 것을 발견했는데, 이는 우리가 작성한 html 코드가 성공적으로 실행되었음을 의미하며, 이 웹사이트에 html 주입이 있다는 것을 의미합니다.
반사된 HTML 삽입(POST 메서드)
참고: GET 메서드로 데이터를 제출한 후 브라우저 주소 표시줄에 제출된 데이터가 표시되고 POST에서는 제출된 데이터가 표시됩니다. 메소드가 표시되지 않습니다.
위의 GET 메소드와 동일
First name에
html2
을 입력하고 Last name에 test를 입력하고 html2 문자가 녹색으로 바뀌는 것을 확인하면 우리가 작성한 html 코드가 성공적으로 실행되었음을 나타냅니다. 이 웹사이트에는 html 삽입이 있습니다.
반사된 HTML 주입(현재 URL)
먼저 소스 코드를 분석해 보겠습니다
핵심 코드
<div> <h1>HTML Injection - Reflected (URL)</h1> <?php echo "<p align=\"left\">Your current URL: <i>" . $url . "</i>";?> </div>
PHP 조각이 들어있습니다. 이 코드 이 코드는 html 문을 실행하고 "현재 URL:" 문자 섹션을 출력하며 $url 변수를 호출하여 출력 내용을 따릅니다.
보호 코드
$url= ""; switch($_COOKIE["security_level"]) { case "0" : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; //$url= ''接受的参数来自请求头HOST和URL break; case "1" : $url = "<script>document.write(document.URL)</script>"; break; case "2" : $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]); break; default : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; break; } <select name="security_level"> <option value="0">low</option> <option value="1">medium</option> <option value="2">high</option> </select>
디펜스 코드를 읽어보시면 설정 난이도에 따라 호출되는 디펜스 코드가 다르다는 것을 아실 수 있습니다.
레벨을 낮음으로 설정하는 경우 다음 명령문을 실행하세요
$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
여기서 $_SERVER["HTTP_HOST"]는 현재 도메인 이름을 가져오는 것을 의미합니다.
$_SERVER["REQUEST_URI" ] 여기" 도메인 이름 뒤에 있는 전체 주소 경로를 가져오는 것입니다
트림 패킷 캡처를 통해 호스트 매개 변수를 수정하면 페이지에서 변경 사항을 확인할 수 있습니다
때 수준을 중간으로 설정하고 다음 명령문을 실행합니다.
$url = "<script>document.write(document.URL)</script>";
여기의 문서 개체는 전체 HTML 문서를 나타내며 페이지의 모든 요소에 액세스하는 데 사용할 수 있습니다.
document.write()는 콘텐츠를 동적으로 작성하는 것입니다. 페이지
document.URL은 같은 창에서 다른 페이지를 열도록 URL 속성을 설정하는 것입니다
레벨을 high로 설정할 때 다음 명령문을 실행하세요
$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
xss_check_3 호스트 뒤에 있는 부분을 필터링하기 위해 여기에서 함수가 호출되므로
Store HTML 주입
을 주입할 수 없습니다.
참고: 새로 고친 후에는 반사 페이지가 더 이상 존재하지 않지만, 저장소 유형은 서버 데이터베이스에 기록되고 새로 고친 후에도 계속 존재합니다. HTML
그러므로 반사형보다 보관형이 훨씬 더 해롭습니다.
p 태그를 성공적으로 구문 분석하려면 텍스트 필드에
추천 튜토리얼: "html 비디오 튜토리얼"
위 내용은 HTML 주입이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!