0x00 xss简介
跨站脚本攻击(Cross site script ),为了避免和样式CSS混淆,所以简称XSS;
XSS是一种经常出现在Web应用上的计算机安全漏洞,也是web中最主流的攻击方式;
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS是指攻击者利用网站没有对用户提交的数据进行转义或者过滤不足,然后进而添加一些代码,嵌入到web应用中,使别的用户访问会执行相应的恶意代码;从而窃取用户资料,获取用户身份,或者对访问者进行病毒侵害的一种攻击方式。
XSS的危害:
- 盗取各类用户账号,如机器登录账号,用户网银账号,各类管理员账号
- 控制企业数据,包括篡改,读取,添加,删除企业敏感数据的能力
- 窃取企业重要的具有商业价值的资料
- 非法转账
- 强制发送电子邮件
- 网站挂马
- 控制受害机器向其他网站发动攻击
XSS reflected
反射型XSS一般不存储信息,
好像是让你输入东西,
然后把输入的东西再回显出来。
哦, 发现,代码被执行了
http://192.168.153.139/dvwa/vulnerabilities/xss_r/?name=hello+%3Cscript%3Ealert%28%22xss%22%29%3C%2Fscript%3E#
这个链接,一旦被其他用户点开,那么其他的用户就会中招;
<?php if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){ $isempty = true; } else { echo '<pre>'; echo 'Hello ' . $_GET['name']; echo '</pre>'; } ?>
XSS Stored
<?php if(isset($_POST['btnSign'])) { $message = trim($_POST['mtxMessage']); $name = trim($_POST['txtName']); // Sanitize message input $message = stripslashes($message); $message = mysql_real_escape_string($message); // Sanitize name input $name = mysql_real_escape_string($name); $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');"; $result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' ); } ?>
这是一个留言框,我们依然测试一下,上面的代码;
代码依然被执行了;
我们换一个浏览器登录;
打开那个东西,依然可以显示出来那段代码;这说明这个代码成功的被挂在这个界面;
DOM型xss
DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
XSS 的主要原因是因为,服务器对客户端的过度信任。