1. 개요
Apache Software Foundation(ASF)이 후원하는 오픈소스 프로젝트는 Struts입니다. 이 프로젝트는 자카르타 프로젝트의 포크로 시작되었으며 이후 ASF의 최상위 프로젝트로 승격되었습니다. Java Servlet/JSP 기술을 사용하여 Java EE 웹 애플리케이션의 MVC(Model-View-Controller) 디자인 패턴을 기반으로 애플리케이션 프레임워크[웹 프레임워크]를 구현합니다. MVC 클래식 디자인 패턴의 고전적인 제품입니다.
Java EE 웹 애플리케이션 개발 초기에는 Servlet 기술을 사용하는 것 외에 일반적으로 JSP(JavaServer Pages) 소스 코드에 HTML과 Java 코드를 혼합하여 개발했습니다. 이 두 가지 방법은 성능과 비즈니스 로직 코드를 혼합하는 데 불가피하므로 초기 개발과 이후 유지 관리에 엄청난 복잡성을 가져옵니다. 위의 제약과 한계를 없애고 비즈니스 로직 코드를 프리젠테이션 계층에서 명확하게 분리하기 위해 2000년 Craig McClanahan은 MVC 디자인 패턴을 채택하여 Struts를 개발했습니다. 이 프레임워크 제품은 한때 가장 광범위하고 인기 있는 JAVA 웹 애플리케이션 프레임워크로 간주되었습니다
Struts2는 MVC 디자인 패턴을 기반으로 하는 웹 애플리케이션 프레임워크로 MVC 디자인 패턴에서 기본적으로 Struts2는 컨트롤러 역할을 합니다. .(컨트롤러) 모델과 뷰 간의 데이터 상호 작용을 설정합니다. Struts 2는 Struts 1과 WebWork의 기술을 통합한 새로운 Struts 2 프레임워크입니다. 점점 더 많은 기업에서 고위험 취약점을 사용하고 있습니다. 최근 몇 년간 여러 차례 노출되었습니다. 예를 들어 2016년 12월에는 사용자 이름, 비밀번호, 이메일, QQ 번호를 포함한 JD.com 12G 사용자 데이터가 유출되었습니다. 그 이유는 2013년 Struts 2의 보안 취약점 때문이었습니다. 당시 국내 거의 모든 인터넷 기업과 다수의 은행, 정부 기관이 영향을 받아 대량의 데이터 유출이 발생했습니다. Struts2 취약점이 발생할 때마다 주요 인터넷 취약점 플랫폼도 다음과 같은 여러 피드백을 받았습니다.
Struts2의 코드 실행 문제는 2010년으로 거슬러 올라갑니다. 당시 Google 보안팀의 Meder Kydyraliev는 유니크드 인코딩을 사용하면 매개변수 인터셉터의 특수 문자 "#" 필터링을 우회할 수 있다는 사실을 발견했습니다. 코드 실행 문제. 공식 취약점 번호 S2-003,
Struts2 취약점의 역사를 되돌아보면, 우선 개발자들이 기본적인 보안 조치를 취하지 않았음에도 불구하고 공식적으로 책임이 없는 것으로 나타났습니다. 취하면 효과가 없었습니다. 둘째, 우리는 공식적인 수리 조치가 힘이 부족하고 문제의 근본 원인을 진정으로 해결하지 못한 채 형식적일 뿐이라고 생각합니다. 게다가 공식적인 공개 정신은 정말 충격적입니다. 심지어 공식 웹사이트에 취약점에 대한 PoC를 직접 게시하기도 했습니다. 이는 많은 사람들에게 취약점 악용에 대해 더 자세히 연구할 수 있는 기회를 제공하기도 했습니다. 더 심각합니다.
2.2. Struts2 취약점 목록
기타 자세한 내용은 struts2 공식 홈페이지에서 제공하는 취약점 내역을 참고하시기 바랍니다. :
https://cwiki.apache.org/confluence/display/WW/Security+Bulletins3. Distribution 취약점이 자주 발생하는 Struts2 프레임워크에 대해 설문 조사를 실시했습니다. 지방에서 사용되는 Struts 프레임워크의 분포 통계를 통해 각 현과 시의 사이트에 대한 지문 식별을 통해 지방의 여러 도시에서 Strust2 프레임워크 사용의 분포 차트를 다음과 같이 그려냅니다.
결합 빅데이터 분석 및 키워드 식별을 통해 Strust2를 사용하여 사이트 위치를 수집했습니다. 업계 상황을 분석하고 다음 차트를 그립니다.
특정 테이블 데이터:
일련 번호 | 업종 유형 | 수량 | 백분율 |
1 | 정부부 | 447 | 28.29% |
2 | 교육기관 | 155 | 9.80% |
3 | 금융산업 | 110 | 6.96% |
4 | 보험 산업 | 28 | 1.77 % |
5 | 증권 산업 | 14 | 0.88% |
6 | 에너지 산업 | 8 | 0.50% |
7 | 운송 산업 | 93 | 5.88% |
8 | 통신 사업자 | 114 | 7.21% |
9 | 인터넷 회사 | 398 | 25.18% |
10 | 기타업체 | 213 | 13.48% |
위 사진에서 볼 수 있듯이 상위 3개(참고: 기타 기업 제외)는 정부 부처(28.29%), 인터넷 기업(25.18%), 교육 기관(9.8%)입니다
를 모아봤습니다 취약점 탐지를 위해 Struts2 미들웨어 사이트를 이용합니다. 이번에는 검증을 위해 인터넷에 상대적으로 큰 영향을 미치는 여러 가지 고위험 취약점을 사용하여 취약점의 존재를 탐지합니다(S2-045, S2-037, S2-032, S2). -016)을 통해 이를 수리 및 강화하였으며, 1580개의 사이트 샘플을 테스트한 결과 Struts2 취약점이 아직 복구되지 않은 사이트가 있는 것으로 확인되었습니다. 해당 취약점이 발견된 사이트의 통계 정보는 다음과 같습니다.
산업 | 취약점 있음 수량 | |
---|---|---|
정부 부서 | 3 | |
교육 기관 | 2 | |
Financial Industry | 1 | |
Internet Enterprise | 2 | |
Others | 2 |
4. 보안 제안
1. 정보 시스템 개발에는 좋은 개발 습관을 길러야 합니다. 대부분의 허점은 개발 단계부터 존재하며, 개발 과정에서의 부주의로 인해 시스템에 큰 보안 위험을 가져오기도 합니다.
2. 웹사이트 데이터는 적시에 백업됩니다. 시스템이 공격을 받은 경우, 공격받은 시스템을 최대한 빨리 복원할 수 있습니다.
3. 백그라운드 서비스에 바이러스 백신 소프트웨어를 설치하고 서버에서 바이러스 검사 및 기타 보안 검사를 정기적으로 수행합니다.
4. 최신 인터넷 취약점을 실시간으로 파악하고 정보시스템의 취약점을 적시에 개선합니다.
5. 시스템에 대한 침투 테스트, 취약점 테스트 및 기타 작업을 정기적으로 수행하여 적시에 문제를 발견하고 적시에 복구하여 취약점이 인터넷에 노출되는 것을 방지합니다.
6. 더 이상 사용하지 않는 시스템을 적시에 오프라인으로 전환하세요. 일반적으로 오래된 시스템에는 보안 문제가 더 많으며 관리가 부실하면 대량의 민감한 정보가 유출될 수 있습니다.
위 내용은 Struts2 프레임워크 사이트 위험 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!