이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A3 - XSS - Stored (User-Agent)
난이도 하
xss_stored_4.php 페이지는 접속한 정보를 테이블 형태로 출력하고 있습니다. 테이블에는 시간, IP, User-Agent의 정보를 확인할 수 있고, download 글씨를 클릭하면 새로운 페이지에서 접속한 사용자의 정보를 표시하고 있는 것을 확인할 수 있습니다.
User-Agent 헤더에 값을 변경후 값을 확인하기 위하여 프록시 툴을 사용하여 확인해 보도록 하겠습니다.
프록시 툴을 사용하는 방법은 앞에서도 계속 설명을 하였기 때문에 따로 설명을 하지 않도록 하겠습니다. 프록시 툴을 통하여 User-Agent 값을 "XSS TEST"로 변경 후 Forward 버튼을 눌러 주었습니다.
버프 스위트에서 Forward 버튼을 누른 후 페이지를 확인해 보면 User-Agent 값에 변경된 값이 저장되는 것을 확인할 수 있습니다. 그럼 여기서 테스트를 해보시는 분들은 User-Agent 값에 직접 스크립트 코드를 입력하여 테스트를 해보신 후 결과 값을 확인해 보시기 바랍니다.
스크립트 코드를 입력하셨다면 다른계정으로 XSS - Stored (User-Agent) 페이지를 접속하여 결과 값을 확인해 보시기를 추천드립니다. BEE 계정으로 스크립트 코드에 경고창 또는 쿠키값이 저장되는 스크립트 코드를 입력하셨다면 다른 계정으로 접속 시 접속한 계정에 경고창 또는 쿠키값이 표시될 것입니다. 해당 이유는 Bee 계정으로 User-Agent 헤더에 입력한 스크립크 코드가 테이블에 저장이 되었고 그로 인해 다른 계정으로 접속 시 스크립트 코드가 실행되어 동작하는 것입니다.
여기서 확인해야 할 부분은 접속 횟수가 세번이 지나면 스크립트가 실행되지 않는다는 점입니다. 테이블에는 최근 접속한 순서대로 3개의 정보면 출력하기 때문에 그 이상으로 지속 접속을 하게 되면 스크립트 코드가 저장된 테이블은 사라져 스크립트가 실행되지 않습니다.
난이도 중/상
난이도 중에서는 xss_check_4 함수를 사용하는 것을 알 수 있으며 xss_check_4 함수는 functions_external.php에 정의되어 있고 addslashes() 함수를 이용하여 입력 데이터를 우회합니다. addslashes() 함수는 데이터베이스 쿼리에서 필드 값으로 저장하기 전에 사용되는 함수입니다. 만일 문자열에 작은따옴표('), 큰따옴표("), 백 슬래시(\), NULL 문자(%00)가 포함되어 있다면, 이 문자들 앞에 백 슬래시(\)를 붙여 특수 문자가 순수한 하나의 문자로 인식되도록 해줍니다.
난이도 하 - 모든 스크립트 코드 실행
난이도 중 - ', ", \, NULL 문자를 포함하지 않는 스크립트 코드 실행
난이도 상에서는 xss_check_3 함수를 사용하는 것을 알 수 있으며 xss_check_3 함수는 functions_external.php에 정의되어 있고 htmlspecialchars() 함수를 호출하여 문자열에서 특수문자를 HTML 코드 형식으로 변환합니다. htmlspecialchars 함수를 살펴보면 두 번째 인자에 ENT_QUOTES를 추가하여 XSS에 사용되는 문자들을 HTML 엔티티 코드로 변환하기 때문에 스크립트 코드를 입력하여도 웹 브라우저에서는 문자로 인식하게 됩니다.
- htmlspecialchars() 함수 : '&', 작은따옴표('), 큰따옴표("), '<', '>'를 필터링해주는 함수입니다.
download 버튼을 클릭하면 접속한 사용자 정보가 저장되어 있는 로그 파일(visitors.txt)을 확인할수 있는데 이는 데이터베이스에 저장되는 내용이기 때문에 소스코드에서는 sqli_check_3 함수를 사용하고 그 반환 값을 다시 xss 함수에 입력하여 SQL Injection과 XSS 공격을 동시에 방어하고 있습니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A4 Insecure DOR (Reset Secret) (0) | 2022.08.30 |
---|---|
비박스(bWAPP) A4 Insecure DOR (Change Secret) (0) | 2022.08.30 |
비박스(bWAPP) A3 XSS - Stored (Cookies) (0) | 2022.08.23 |
비박스(bWAPP) A3 XSS - Stored (Change Secret) (0) | 2022.08.22 |
비박스(bWAPP) A3 XSS - Stored (Blog) (0) | 2022.08.12 |