1. CSP Bypass
CSP를 우회하고 페이지의 자바스크립트를 실행하라.
low때와 비교를 위해 소스코드를 보았다.
<?php
$headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';";
header($headerCSP);
// Disable XSS protections so that inline alert boxes will work
header ("X-XSS-Protection: 0");
# <script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script>
?>
<?php
if (isset ($_POST['include'])) {
$page[ 'body' ] .= "
" . $_POST['include'] . "
";
}
$page[ 'body' ] .= '
<form name="csp" method="POST">
<p>Whatever you enter here gets dropped directly into the page, see if you can get an alert box to pop up.</p>
<input size="50" type="text" name="include" value="" id="include" />
<input type="submit" value="Include" />
</form>
';
$headerCSP를 보면 unsafe-inline과 nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA= 라는 값을 줘서 이 값을 가지고있어야만 인라인 스크립트가 실행되도록 설정되어있다.
그렇다면 인라인 스크립트에 위 해시값을 넣어 진행해보자.
<script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(document.cookie);</script>
위와 같이 쿠키값을 획득할 수 있었다.
2. JavaScript
페이지에 포함된 자바스크립트를 분석하고 조작하여 보호를 우회하여 success를 제출하라.
자바스크립트 코드를 먼저 보았다.
function do_something(e){
for(var t="",n=e.length-1;n>=0;n--)
t+=e[n];
return t
}
setTimeout(function(){do_elsesomething("XX")},300);
function do_elsesomething(e){
document.getElementById("token").value=do_something(e+document.getElementById("phrase").value+"XX")
}
위 코드는 자바스크립트 코드를 임의로 보기좋게 분리해놨다.
코드를 보면 do_somthing함수를 볼 수 있는데 뭔지 몰라서 알아봤더니 인자로 받은 문자열을 역순으로 재배치하는 함수였다. chageme를 인자로 받으면 emegahc로 재배치하는 함수인 것이다.
do_elsesomething을 보면 XX + 인자로 받은 문자열 + XX 이렇게 합친 후 마지막에 do_something함수를 사용하는 것을 알 수 있다. 즉 token의 값이 XX인자로받은문자열XX 의 역순으로 재배치된 값임을 알 수 있었다.
change를 문자열로 보내보자.
토큰이 hidden으로 value="XXeMegnahCXX임을 확인할 수 있었다. 위에 분석한 내용과 일치한다. 그러면 value값에 문자열이 success입력된 것처럼 바꾸면 XXsseccusXX이다. 버프슈트로 패킷을 잡고 변조하여 보내보았다.
성공적으로 실행됨을 알 수 있었다.
'Webhacking-Write-Up > DVWA' 카테고리의 다른 글
DVWA(medium) - DOM XSS, Reflected XSS, Stored XSS (0) | 2023.01.20 |
---|---|
DVWA(medium) - SQL Injection, Blind SQL Injection, Weak Session IDs (0) | 2023.01.20 |
DVWA(medium) - File Inclusion, File Upload, Insecure CAPTCHA (0) | 2023.01.18 |
DVWA(medium) - Brute Force, Command Injection, CSRF (0) | 2023.01.18 |
DVWA(LOW) - CSP Bupass, JavaScript (0) | 2023.01.17 |