CVE 목록
리뷰
(1) XSS의 경우 간단한 Adminstrator의 관리자 페이지에서 발생하는 XSS도 CVE ID가 발급되기 때문에 대부분 필터링 로직을 신경쓰지 않은 플러그인들에서 발생이 가능하다.
또한 테마에서 로직에 필터링을 누락시켜 XSS 포인트를 발견할 수 있었다.
(2) 민감한 정보 노출의 경우 아래 PoC 목록 내의 내용처럼 Apply 관련해 직업, 학교 관련 플러그인들 중 파일명을 난독화 시키지 않고 그대로 저장, 디렉토리 접근이 가능한 경우 민감한 정보가 담긴 파일을 발견할 수 있었다.
(3) 파일 업로드의 경우 보통 필터링이 잘 되어있어 비인기 플러그인 중 로직이 누락되어 있는 플러그인을 발견할 수 있었다. 보통 이중 확장자나 패킷 변조로 간단하게 우회가 되는 경우가 아니면 발견이 어렵다고 생각이 든다.
참고 PoC 목록
1. XSS
- Stored XSS
- 관리자 권한을 가진 사용자가 설정 페이지에서 XSS가 작동할 시 취약점 인정
- 기여자 이상의 권한을 가진 사용자가 글 작성 시 쇼츠 코드에 이벤트 핸들러가 삽입되어 XSS를 발생시킬 수 있음
- 관리자 도구로 id를 조사해 함께 적용해야 하는 경우도 있음.
- 다양한 이벤트 핸들러를 적용시킬 수 있음
- theme='" onmouseover="alert(1)" style="background:red;width:100px;height:100px;"'
- autofocus onfocus=alert(1)
- class='" onmouseover="alert(1)"'
- [droit-dark-mode class='" onmouseover="alert(1)"']
- 예시 PoC https://wpscan.com/vulnerability/c85ceab3-7e79-402d-ad48-a028f1ee070c
- reflected XSS
- GET 방식의 파라미터 전송에서 XSS가 가능한 경우
- print_url=%2522%253E%253Cscript%253Ealert%28document.domain%29%253C%252Fscript%253E%253Cp%252Bid%253D 이중 인코딩을 사용해서 XSS가 허용된 경우
- 관리자 이상의 권한으로 발생하는 XSS도 인정
- WP 테마에서 추가적으로 검색에 관한 기능을 취약하게 개발했을 시 발생할 수 있음
SQLI
- URL의 GET 파라미터에서 취약점이 발생
- sleep(10) 으로 취약점 판별
- wp_user_id=1+AND+(SELECT+7394+FROM+(SELECT(SLEEP(5)))UrUZ)
2. 인가/인증
- Sensitive Data Exposure
- 권한이 없는 사용자가 민감한 정보를 열람하는 경우(Simple Jop Board 과거 CVE: 권한이 없는 사용자가 이력서를 경로로 열람 가능)
- 우측 예시와 같이 플러그인 디렉토리내 중요정보가(ex.이력서)가 저장되는지 확인
- (경로: http://localhost:8088/w/wp-content/plugins/droit-dark-mode/)
- 업로드 목록 내 중요정보가(ex.이력서)가 저장되는 지 확인
3. 테마 취약점
다른 CVE 예시
Ex) ThemeMaker의 여러 테마를 사용하면 원격 공격자가 /wp-content/uploads/tmm_db_migrate/wp_users.dat 파일에 대한 직접 요청을 통해 민감한 정보(예: user_login, user_pass 및 user_email 값)를 얻을 수 있습니다.
EX) /wp-content/themes/Grimag/go.php?https://example.com → 오픈 리디렉션
4. Openredir 확인
소스코드를 살필때 redirect 등의 키워드로 공격포인트가 있는지 확인
https://guleum-zone.tistory.com/77
5. SQL Injection
소스 코드 내 공격 포인트(쿼리) 검색
- 경로
C:\xampp\htdocs\w\wp-content\themes
C:\xampp\htdocs\w\wp-content\plugins
esc_sql → 99%의 경우 $wpdb->prepare()를 대신 사용이 가능.
6. PHP 파일 업로드
PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
Working in PHPv8: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp