일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Insecure CAPTCHA
- Remote File Inclusion
- 정보보안
- Web Hacking
- 빡공팟 6기
- XSS
- Dremhack
- Weak Session IDs
- 빡공팟 4기
- DreamHack
- wargame
- H4CKINGGAME
- DVWA
- Los
- 써니나타스
- sql injection
- 워게임
- SuNiNaTas
- 웹 해킹
- 해커팩토리
- 드림핵
- File Upload Vulnerability
- TeamH4C
- 정보보호
- DOM-Based XSS
- Lord of SQL Injection
- Hackerfactory
- webhacking.kr
- Cross Site Scripting
- bypass CAPTCHA
- Today
- Total
도카이트
[DVWA] Stored XSS (Medium) 본문
XSS (Cross Site Scripting)
악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면
사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나
쿠키나 세션 토큰 등의 민감한 정보를 탈취한다.
Stored XSS
악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
페이지 화면
- 소스코드를 확인하러 가보자 !
소스코드
// Sanitize message input
$message = strip_tags( addslashes( $message ) );
$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
$message = htmlspecialchars( $message );
// Sanitize name input
$name = str_replace( '<script>', '', $name );
$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- name과 message 값에 대하여 Sanitize가 적용됐다..
- name의 경우 str_replace 함수를 통하여 <script> 태그를 치환하여 필터링한다.
- message의 경우 strip_tags 함수를 통해 HTML 태그와 PHP 태그를 제거한다.
- 또한, addslashes 함수를 통해서 특수 문자를 포함하는 문자열에 역슬래쉬(\)를 삽입한다.
message의 경우 우회할 방법이 잘 생각나지 않아서, 그나마 좀 친근하고 만만한
str_replace 함수를 우회하는 방법으로 name 값에 XSS 공격 스크립트를 작성해보도록 하려 한다!
저번 XSS (Reflected) 포스팅에서 str_replace 함수가 <script> 문자열을 치환하는 것을 우회하는
XSS 스크립트 작성 방법으로 두 가지 방법을 사용했다.
1. 문자열 중첩을 활용한 str_replace 우회
2. <img> 태그를 사용한 str_replace 우회
그러나, 해당 Stored XSS 문제를 풀면서 새로운 방법을 하나 더 찾았다! 바로.. str_replace 함수가
대소문자를 구별하지 않는다.. 즉 <script>를 치환하지만, <SCRIPT>는 치환하지 않는다…
str_replace .. 너 정말 취약하구나 …. 이번 포스팅에서는 위 두 가지 방법을 제외하고, 대문자를
사용한 XSS 스크립트 작성을 통한 공격 방법으로 진행해보도록 하겠다.
위 두 가지 방법에 대해서는 이전 글인 Reflected XSS (Medium) 포스트를 참고하면 좋을 것 같다 🙂
[DVWA] Reflected XSS (Medium)
도카이트 [DVWA] Reflected XSS (Medium) 본문 Web/DVWA [DVWA] Reflected XSS (Medium) 뎐이 2022. 5. 27. 00:21 Prev 1 2 3 4 5 ··· 35 Next
dyeonee.tistory.com
대문자를 사용한 <SCRIPT> 태그 작성
- 들뜬 마음에 바로 Name 입력 폼에 스크립트를 입력하는데… 탁 하고 막힌다..
- 글자수 입력에 제한이 있는 듯 하다… 그렇지만 절대 당황하지 말자.. 우리에겐 개발자 도구가 있다!
- 한번 피식 비웃어주며 Name 입력 폼을 우클릭하여 검사를 클릭해준다.
HTML 코드 수정을 통한 최대 입력 길이 변조
- form 태그에 입력하는 데이터의 최대 길이는 Client 단에서 변조가 가능하다.
- maxlength 값을 10에서 넉넉하게 100으로 변조시켜준다.
최대 입력 길이 값 변조 후 XSS 스크립트 작성
- 스크립트를 작성한 후 Sign Guestbook을 클릭하여 데이터를 submit 해주면 …
- 성공적으로 alert 함수가 실행되는 것을 확인할 수 있다 !
'Web > DVWA' 카테고리의 다른 글
[DVWA] JavaScript (Medium) (0) | 2022.05.27 |
---|---|
[DVWA] CSP Bypass (Medium) (0) | 2022.05.27 |
[DVWA] Reflected XSS (Medium) (0) | 2022.05.27 |
[DVWA] DOM-Based XSS (Medium) (0) | 2022.05.26 |
[DVWA] Weak Session IDs (Medium) (0) | 2022.05.26 |