mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/cordova-apps.md'] to ko
This commit is contained in:
parent
9cd0908230
commit
2f707b3ece
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
**자세한 내용은 [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)를 확인하세요**. 다음은 요약입니다:
|
**자세한 내용은 [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)를 확인하세요**. 다음은 요약입니다:
|
||||||
|
|
||||||
Apache Cordova는 **JavaScript, HTML, CSS**를 사용하여 **하이브리드 애플리케이션** 개발을 가능하게 하는 것으로 알려져 있습니다. Android 및 iOS 애플리케이션을 생성할 수 있지만, 애플리케이션의 소스 코드를 보호하는 기본 메커니즘이 부족합니다. React Native와 달리 Cordova는 기본적으로 소스 코드를 컴파일하지 않기 때문에 코드 변조 취약점이 발생할 수 있습니다. Cordova는 WebView를 사용하여 애플리케이션을 렌더링하며, APK 또는 IPA 파일로 컴파일된 후에도 HTML 및 JavaScript 코드를 노출합니다. 반면 React Native는 JavaScript 코드를 실행하기 위해 JavaScript VM을 사용하여 더 나은 소스 코드 보호를 제공합니다.
|
Apache Cordova는 **JavaScript, HTML, CSS**를 사용하여 **하이브리드 애플리케이션** 개발을 가능하게 하는 것으로 알려져 있습니다. Android 및 iOS 애플리케이션을 생성할 수 있지만, 애플리케이션의 소스 코드를 보호하기 위한 기본 메커니즘이 부족합니다. React Native와 달리 Cordova는 기본적으로 소스 코드를 컴파일하지 않으므로 코드 변조 취약점이 발생할 수 있습니다. Cordova는 WebView를 사용하여 애플리케이션을 렌더링하며, APK 또는 IPA 파일로 컴파일된 후에도 HTML 및 JavaScript 코드를 노출합니다. 반면 React Native는 JavaScript 코드를 실행하기 위해 JavaScript VM을 사용하여 더 나은 소스 코드 보호를 제공합니다.
|
||||||
|
|
||||||
### Cordova 애플리케이션 복제
|
### Cordova 애플리케이션 복제
|
||||||
|
|
||||||
@ -44,10 +44,82 @@ APK를 빌드하려면 다음 명령어를 사용하세요:
|
|||||||
cd bank-new
|
cd bank-new
|
||||||
cordova build android — packageType=apk
|
cordova build android — packageType=apk
|
||||||
```
|
```
|
||||||
이 명령은 디버그 옵션이 활성화된 APK를 생성하여 Google Chrome을 통한 디버깅을 용이하게 합니다. 애플리케이션에 코드 변조 감지 메커니즘이 포함된 경우, 설치 전에 APK에 서명하는 것이 중요합니다.
|
이 명령은 디버그 옵션이 활성화된 APK를 생성하여 Google Chrome을 통한 디버깅을 용이하게 합니다. 애플리케이션에 코드 변조 탐지 메커니즘이 포함된 경우 설치 전에 APK에 서명하는 것이 중요합니다.
|
||||||
|
|
||||||
### 자동화 도구
|
### 자동화 도구
|
||||||
|
|
||||||
클로닝 프로세스를 자동화하려는 경우, **[MobSecco](https://github.com/Anof-cyber/MobSecco)**가 추천되는 도구입니다. 이는 위에 설명된 단계를 간소화하여 Android 애플리케이션의 클로닝을 간편하게 합니다.
|
클로닝 프로세스를 자동화하려는 경우, **[MobSecco](https://github.com/Anof-cyber/MobSecco)**가 추천되는 도구입니다. 이는 Android 애플리케이션의 클로닝을 간소화하여 위에 설명된 단계를 단순화합니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 보안 위험 및 최근 취약점 (2023-2025)
|
||||||
|
|
||||||
|
Cordova의 플러그인 기반 아키텍처는 **대부분의 공격 표면이 서드파티 플러그인과 WebView 브리지 내부에 존재함을 의미합니다**. 지난 몇 년 동안 적극적으로 악용되거나 공개된 다음과 같은 문제가 있습니다:
|
||||||
|
|
||||||
|
* **악성 NPM 패키지.** 2024년 7월, 패키지 `cordova-plugin-acuant`가 설치 중 악성 코드를 드롭하는 것이 발견되어 NPM 레지스트리에서 제거되었습니다 (OSV-ID MAL-2024-7845). `npm install cordova-plugin-acuant`를 실행한 모든 개발자 머신은 손상된 것으로 간주해야 합니다. 예상치 못한 Cordova 플러그인을 위해 `package.json`/`package-lock.json`을 감사하고 신뢰할 수 있는 버전을 고정하십시오. [OSV advisory](/)
|
||||||
|
* **검증되지 않은 딥링크 → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507)는 딥링크 입력을 정화하지 않아 공격자가 조작된 링크가 열릴 때 메인 WebView 컨텍스트에서 실행되는 임의의 JavaScript를 주입할 수 있습니다. ≥ 2.6.3으로 업데이트하거나 런타임에 신뢰할 수 없는 URI 매개변수를 제거하십시오. [CVE-2023-2507](/)
|
||||||
|
* **구식 플랫폼 코드.** `cordova-android` ≤ 12는 targetSdk 33 이하로 제공됩니다. 2024년 5월부터 Google Play는 API 34를 요구하며, 여러 WebView 강화 기능(예: 구성 요소에 대한 자동 생성된 `exported="false"`)은 API 34+에서만 존재합니다. `cordova-android@13.0.0` 이상으로 업그레이드하십시오.
|
||||||
|
|
||||||
|
### 펜테스트 중 빠른 점검
|
||||||
|
|
||||||
|
1. **디컴파일된 `AndroidManifest.xml`에서 `android:debuggable="true"`를 찾으십시오.** 디버그 빌드는 `chrome://inspect`를 통해 WebView를 노출시켜 전체 JS 주입을 허용합니다.
|
||||||
|
2. `config.xml`에서 지나치게 허용적인 `<access origin="*">` 태그나 `www/index.html`의 누락된 CSP 메타 태그를 검토하십시오.
|
||||||
|
3. `www/`에서 `eval(`, `new Function(` 또는 CSP 우회를 XSS로 전환할 수 있는 동적으로 생성된 HTML을 grep하십시오.
|
||||||
|
4. `plugins/`에서 내장된 플러그인을 식별하고 `npm audit --production` 또는 `osv-scanner --lockfile`을 실행하여 알려진 CVE를 찾으십시오.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 동적 분석 팁
|
||||||
|
|
||||||
|
### 원격 WebView 디버깅
|
||||||
|
|
||||||
|
애플리케이션이 **디버그** 모드로 컴파일되었거나 `WebView.setWebContentsDebuggingEnabled(true)`를 명시적으로 호출하는 경우, Chrome DevTools에 연결할 수 있습니다:
|
||||||
|
```bash
|
||||||
|
adb forward tcp:9222 localabstract:chrome_devtools_remote
|
||||||
|
google-chrome --new-window "chrome://inspect/#devices"
|
||||||
|
```
|
||||||
|
이것은 라이브 JavaScript 콘솔, DOM 검사기 및 런타임에 JavaScript 함수를 덮어쓸 수 있는 기능을 제공합니다. 이는 클라이언트 측 로직을 우회하는 데 매우 유용합니다. (자세한 내용은 Google의 공식 문서를 참조하세요.)
|
||||||
|
|
||||||
|
### Frida를 사용하여 JS ⇄ Native 브리지를 훅킹하기
|
||||||
|
|
||||||
|
대부분의 플러그인의 Java 측 진입점은 `org.apache.cordova.CordovaPlugin.execute(...)`입니다. 이 메서드를 훅킹하면 JavaScript에서 호출되는 것을 모니터링하거나 조작할 수 있습니다:
|
||||||
|
```javascript
|
||||||
|
// frida -U -f com.vulnerable.bank -l hook.js --no-pause
|
||||||
|
Java.perform(function () {
|
||||||
|
var CordovaPlugin = Java.use('org.apache.cordova.CordovaPlugin');
|
||||||
|
CordovaPlugin.execute.overload('java.lang.String','org.json.JSONArray','org.apache.cordova.CallbackContext').implementation = function(act, args, ctx) {
|
||||||
|
console.log('[Cordova] ' + act + ' => ' + args);
|
||||||
|
// Tamper the first argument of a sensitive action
|
||||||
|
if (act === 'encrypt') {
|
||||||
|
args.put(0, '1234');
|
||||||
|
}
|
||||||
|
return this.execute(act, args, ctx);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
```
|
||||||
|
---
|
||||||
|
|
||||||
|
## 보안 강화 권장 사항 (2025)
|
||||||
|
|
||||||
|
* **최신 플랫폼으로 업데이트:** `cordova-android@13` (2024년 5월)은 API 34를 대상으로 하며 새로운 WebView 완화 기능을 제공합니다.
|
||||||
|
* **디버그 아티팩트 제거:** `android:debuggable="false"`를 확인하고 릴리스 빌드에서 `setWebContentsDebuggingEnabled` 호출을 피하십시오.
|
||||||
|
* **엄격한 CSP 및 허용 목록 시행:** 모든 HTML 파일에 `<meta http-equiv="Content-Security-Policy" ...>` 태그를 추가하고 `config.xml`에서 `<access>` 출처를 제한하십시오.
|
||||||
|
인라인 스크립트를 차단하는 최소 CSP 예시:
|
||||||
|
```html
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
|
||||||
|
```
|
||||||
|
* **명확한 텍스트 트래픽 비활성화:** `AndroidManifest.xml`에서 `android:usesCleartextTraffic="false"`를 설정하고/하거나 TLS를 시행하는 [network-security-config]를 제공합니다.
|
||||||
|
* **플러그인 위생:**
|
||||||
|
* `npm ci`로 플러그인 버전을 고정하고 생성된 `package-lock.json`을 커밋합니다.
|
||||||
|
* 주기적으로 `npm audit`, `osv-scanner` 또는 `cordova-check-plugins`를 실행합니다.
|
||||||
|
* **난독화:** Terser/UglifyJS로 JavaScript를 축소하고 생산 빌드에서 소스 맵을 제거하여 일반적인 리버싱 속도를 늦춥니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 참고 문헌
|
||||||
|
|
||||||
|
* Apache Cordova – Cordova-Android 13.0.0 릴리스 노트 (2024년 5월)
|
||||||
|
* OSV-ID MAL-2024-7845 – `cordova-plugin-acuant`의 악성 코드
|
||||||
|
* CVE-2023-2507 – CleverTap Cordova Plugin 딥링크 XSS
|
||||||
|
|
||||||
{{#include ../banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user