본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 7-9.크로스 사이트 스크립팅 [Reflected XSS-phpMyAdmin]

by Robert8478 2023. 12. 13.

phpMyAdmin이란? - 웹 상에서 MySQL을 관리하기 위한 도구이다. PHP 언어로 작성되었고 호스트 주소에 phpmyadmin을 입력 시 phpmyadmin 페이지로 이동할 수 있다.

[난이도 하,중,상]

이번 페이지는 phpMyAdmin 3.3.8.1/3.3.9.0 버전 이하에서 error.php로 XSS 취약점이 존재한다는 힌트가 제공된다.
CVE-2010-4480에 취약점에 대한 정보가 있는 듯 하다. 링크가 연결되어 있으나 저 링크는 지금은 존재하지 않는것 같다.


[CVE란? - Common Vulnerabilities and Exposures 로 알려진 보안 취약점을 정리하는 코드명 중 하나이며,
CVE 뒤에 연도와 발견된 순서를 붙여서 취약점에 대한 코드명을 생성한다.]

이 취약점은 @ 문자를 포함하여 조작된 BBCode(Bulletin Board Code) 태그를 통해 XSS가 가능하다고 한다.
BBCode는 자바 스크립트 및 HTML 인젝션 공격을 방어하기 위해서 만들어졌는데 여기서 자바스크립트나 HTML로 변환 시 XSS 공격이 가능한 취약점이 발견된 것이다. 이제 error.php 페이지로 이동해보자.

http://192.168.56.102/phpmyadmin/error.php 페이지로 이동하였다.
여기서 사용하는 변수는 두가지이다.


type - 오류의 종류를 출력
error -@ 문자를 사용해서 [a@url@page] 형태로 태그를 조작한다. @page는 비우거나 문자 값을 입력하면 된다. 하이퍼링크를 통해 @url에 입력한 주소로 리다이렉션 하므로 여기에는 클릭할 문자열을 입력하자. type에는 아무 문자열이나 넣어줄수 있다.


url 주소는 문제 페이지중 하나인 sqli_1.php 페이지를 호출하는 BBcode 태그를 입력할것이다. GET 방식으로 변수에 값을 입력해주면 된다.

http://192.168.56.102/phpmyadmin/error.php?type=hihi&error=[a@http://192.168.56.102/bWAPP/sqli_1.php@]Click%20here[/a] 와 같은 URL 주소를 넣어주면 type 변수에 들어간 오류의 종류 내용이 나오며 Click here 으로 하이퍼링크가 생성된 것을 볼 수 있다.

하이퍼링크를 클릭하면 sqli_1.php로 이동하게 된다. 이를 악성 페이지로 하였다면 악성 사이트로 이동시킬수 있을 것이다.
이 구문은 게시판에 올려도 사용이 가능한데 stored XSS를 했던 페이지인 stored_1.php 페이지로 가서 넣어보자.

<a href=http://192.168.56.102/phpmyadmin/error.php?type=Buggy&error=[a@http://192.168.56.102/bWAPP/sqli_1.php@]Click here[/a]>Don't Press</a> 코드를 넣어서 추가시켜 주면 a 태그를 이용, error.php 페이지로 이동시킬 수 있는 하이퍼 링크를 만들 수 있다.

[대응방안]
난이도 중과 상도 같은 문제기 때문에 구분이 없다. 이 취약점에 대응하기 위해서는 phpmyadmin 3.3.8.1 버전과
3.4.0-beta1 버전에서 발생하기 때문에 이 버전보다 상위 버전으로 업데이트하여 막을 수 있다.

phpmyadmin으로 이동해서 아이디:root 비밀번호:bug 로 접속해서 관리자페이지로 이동하면 우측 상단에 버전을 확인할 수 있다. 업데이트 시 설정 파일이 초기화 될 수 있기 때문에 config.inc.php를 백업 후 새로 설치해야 한다. 그 후 백업한 config.inc.php를 덮어 씌워주면 된다.