정보보안(구버전)/ bWAPP 2019. 2. 25. 16:06
웹 해킹 bWAPP - 100. A8 - Cross-Site Request Forgery(CSRF) - Cross-Site Request Forgery(Change Secret)
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
1. Cross-Site Request Forgery(CSRF)
- OWASP Top10 A8 - 크로스 사이트 요청 변조
- 공격자가 서버에 백드라운드에서 실행되는 악의적인 파일/스크립트를 업로드 한 이후, 클라이언트가 이를 실행하여
공격자 대신 웹 서버에게 악의적인 요청을 전송하는 취약점이다.
- 그럼 웹 서버는 클라이언트에게 응답을 실시하기 때문에 정보 유출 및 획득이 가능하다.
- 타켓 주체가 클라이언트가 아니라 서버라는 것에 XXS와 차이가 있다.
- Ex) 패스워드 변경, 패스워드 유출, 계좌 정보 변경
2. Cross-Site Request Forgery(CSRF) - Cross-Site Request Forgery(Change Secret)
- 이 시나리오는 CSRF 취약점을 이용한 인젝션을 실시하여 패스워드 힌트를 다른 힌트로 변경하는 내용이다
Ex1) Cross-Site Request Forgery(CSRF) - Cross-Site Request Forgery(Change Secret) 이해
보안 레벨 선택 및 시나리오 선택
Intercept -> 'Intercept is on' 으로 변경 실시
'Any bugs?' 입력 -> 'Change' 버튼 클릭
버프슈트 Intercept 내용 확인 -> 마우스 우클릭 -> 'Copy URL'을 클릭하여 URL 주소 복사 실시 -> 메모장에 붙여넣기
Body 내용 복사 실시 -> 메모장에 붙여넣기
'Intercept is on'를 클릭하여 off 실시
'Intercept is off' 확인
'HTML Injection - Stored(Blog)' 시나리오 선택
HTTP 이미지 인젝션 실시 -> 'Submit' 버튼 클릭
'height=0 width=0'을 사용했기 때문에 기록된 내용 안보이지만, 인젝션은 완료됨
'SQL Injection(Login Form/User)' 시나리오 선택
'bee/bug' 로그인 실시 -> 패스워드 힌트 정보(cisco1234) 확인
Ex2) 'csrf_3.php' 파일 내용 확인
bee@bee-box:/var/www/bWAPP$ ls -l csrf_3.php
-rw-rw-r-- 1 root www-data 8434 2014-11-02 23:52 csrf_3.php
bee@bee-box:/var/www/bWAPP$ vi csrf_3.php
~ 중간 생략 ~
// If the security level is not MEDIUM or HIGH
if(isset($_REQUEST["login"]) && $_REQUEST["login"])
$login = $_REQUEST["login"];
$secret = mysqli_real_escape_string($link, $secret);
$sql = "UPDATE users SET secret = '" . $secret . "' WHERE login = '" . $login . "'";
// Debugging
$recordset = $link->query($sql);
if(!$recordset)
~ 중간 생략 ~
else
// If the security level is MEDIUM or HIGH
$message = "<font color=\"red\">Invalid token!</font>"; }
else
$secret = mysqli_real_escape_string($link, $secret);
$sql = "UPDATE users SET secret = '" . $secret . "' WHERE login = '" . $login . "'";
// Debugging
$recordset = $link->query($sql);
if(!$recordset)
die("Connect Error: " . $link->error);
}
// A random token is generated when the security level is MEDIUM or HIGH
$token = sha1(uniqid(mt_rand(0,100000)));
}
?>
:q! |
Ex3) 보안 레벨 'High' 변경
보안 레벨 및 시나리오 선택
Intercept -> 'Intercept is on' 으로 변경 실시
'Any bugs?' 입력 -> 'Change' 버튼 클릭
버프슈트 Intercept 내용 확인-> 'Forward' 버튼 클릭
(토큰을 사용하기 때문에 CSRF 취약점 공격 불가능)
'Intercept is on'를 클릭하여 off 실시
'Intercept is off' 확인
패스워드 힌트 변경 성공
'SQL Injection(Login Form/User)' 시나리오 선택
'bee/bug' 로그인 실시 및 패스워드 힌트 정보 확인
'HTML Injection - Stored(Blog)' 시나리오 선택
'Add' 체크 해지 -> 'Delete' 체크 실시 -> 'Submit' 버튼 클릭
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 100. A8 - bWAPP Cross-Site Request Forgery(CSRF) - Cross-Site Request Forgery(Change Secret)