1.学习前需要先掌握HTML,Javascript,php(或者asp)。推荐学习基础知识的网站:http://www.w3school.com.cn/index.html。不需要精通,能看懂网页代码并且简单能进行简单编辑就好了。
2.需要自己去理解Cookies的原理和特点,百度百科对Cookies解释:http://baike.baidu.com/link?url=AK-j7WsMxVN7XO52f1sBCaRTmaGlYCJIvyYAysNQ6N_g3mLka9N0VfOmJULjdC300GVlJQpqBHjxN0ZR1IXwImMR4IwIOXXEZZejpzlOKKq
3.跨站脚本(XSS)概念:可以理解为一种Web应用程序中的计算机安全漏洞。攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。
1.首先需要自己配置Web服务器,推荐的服务器环境是Apache+php,我用的是软件xampp,能够键配置Apache+php。下载xampp地址为:https://www.apachefriends.org/zh_cn/index.html
2.用到的工具有:Dreamweaver、Nodepad++、firefox浏览器。
Dreamweaver是网页编辑器:编辑的代码能够直观的在软件中看出结果,并且能够快速创建html文件,php文件等,我个人比较喜欢。可以用Notepad++来代替。Notepad++是代码编辑器:是一个文本编辑器,比Windows自带的记事本强大很多,推荐使用。
Firefox是我个人比较喜欢的浏览器,其他浏览器也行。
首先编写一个用户登录的html代码,和获得用户输入信息的php代码
testforxss
";
echo "password:",$password;
?>
为了方便挖掘XSS漏洞,我是通过“GET”方法从表单中进行消息的发送,因为通过 GET 方法从表单中发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中);而通过 POST 方法从表单发送的所有名称/值会被嵌入 HTTP 请求的主体中。
在浏览器地址栏中输入URL:”http://localhost/test1/test1.html”得到下图结果:
输入测试用的用户和密码:
提交后得到:
得到正确的账户和密码,测试成功,说明配置环境跟代码都能成功使用,下面开始我的学习之路!
(1)如果在“password”里输入的不是简单的数字和字母,而是一段XSS代码,如输入“”,提交后将弹出一个对话框警告用户。如下图:
分析:password输入的“”是一段javascript代码,两个标签之间的alert()函数将弹出一个对话框警告用户。
(2)直接在浏览器的地址栏上输入:http://localhost/test1/test1.php?usename= &password=1 。同样也能得到对话框警告。
分析:URL的对象是test1.php,而URL中已经含有test1.php文件所需要的usename和password的值,所以能够该地址是合法的,同时usename输入的是一段JS代码,这段代码能弹出一个对话框,就得到上图的结果。(通过“?”来连接php文件和输入的变量)
(3)php文件中,如果不是直接把用户名进行输出,而是先放到input元素中,代码如下
//echo "usename:",$usename,"
";注释本来的usename输出
echo '',"
";
echo "password:",$password;
?>
网页中,如果直接在usename输入: 将不会得到对话框警告,而是直接把结果进行输出:
分析一下test1.php的代码,发现用变量xss获得usename的值以后,并不是直接输出结果,而是先放到input元素的value中,这样的话输入的结果当然是“”,而不会弹出提示框。
如果我们在这段XSS代码前面加上:”> ,就是在usename输入代码 "> ,将能弹出提示框。
分析:查看一下页面源代码,发现了这段代码:"> 。发现开始输入的XSS代码中的第一个“>”直接就关闭了input标签,这样子script标签里的alert函数就能弹出提示框了!
同理,我们在挖掘其他网站的XSS漏洞时,如果能得到页面的源代码,然后分析代码中对我们输入的数据是怎样的处理,闭合其中的标签,理论上就能挖掘到相应的XSS漏洞
(4)除了使用将不会弹出提示框,如下图:
可是JS代码对大小写不敏感的,所以我们可以用“”标签来测试一下,
输入的代码为:
将能得到提示框!
或者,既然&password=1
链接分析:在usename里注入一段XSS代码,访问能盗用用户cookie的网站,即是访问test3.js,而test3.js我前面分析了将能盗取用户的cookie。
用户点击链接后,出现如下画面,此时我已经成功获得cookie。
此时我查看我的服务器,将会出现一个新的文件:cookie.txt
用Notepad++打开该文件:
发现已经得到漏洞网站上一名用户的cookie了!
接着只要利用得到的cookie去登录网站,就能进行相应的cookie会话攻击。
把这个链接放在各种论坛的评论里,并取一个吸引人的名字,只要有注册了该漏洞网站的用户点击了我的链接,他的cookie就会发送到我的服务器上!从而成功盗取用户的cookie。