今天突然发现,网站被主页莫名奇妙的出现了陌生的广告。
通过排查发现是跨站脚本攻击XXS(Cross Site Scripting)。以下为解决方案。
漏洞类型: Cross Site Scripting 漏洞描述:跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。 恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容, 使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,使用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
- <strong>漏洞详情:</strong>参数: s, 可被注入:
- {"assertList":[{"express":"htmlscripttext","source":"","val":"8976","var":"BODY"}],"inputIndex":4,"lockKey":"${FILENAME}${ARGNAME}101_para_reflect_xss","message":"para_reflect_xss","otherProperty":{},"pluginName":"","postBody":"","requestHeaders":{"Accept":"*/*","Connection":"keep-alive","Content-Type":"text/html","Host":"www.neterwork.com","Referer":"http://www.zihao123.com/","User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;Alibaba.Security.Heimdall.937988)"},"ruleItemName":"para_reflect_xss","ruleName":"sts"}
- POC重现:http://www.zihao123.com/?s=
修复方案:
一:避免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤 ,可以利用下面这些函数对出现xss漏洞的参数进行过滤
- 1.PHP的htmlentities()或是htmlspecialchars()。
- 2.Python的cgi.escape()。
- 3.ASP的Server.HTMLEncode()。
- 4.ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
- 5.Java的xssprotect(Open Source Library)。
- 6.Node.js的node-validator。
二:使用开源的漏洞修复插件。
实例:
避免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤,许多语言都有提供对HTML的过滤: 可以利用下面这些函数对出现xss漏洞的参数进行过滤:
- PHP的htmlentities()或是htmlspecialchars()。
- Python的cgi.escape()。
- ASP的Server.HTMLEncode()。
- ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
- Java的xssprotect(Open Source Library)。
- Node.js的node-validator。
ASP漏洞代码示例:
- <%
- Dim param
- Set param=Request.QueryString(“dd”)
- response.write param
- %>
修复范例:
- <%
- Dim param
- Set param=Request.QueryString(“dd”)
- response.write Server.HTMLEnCode(param)
- %>
PHP漏洞代码示例:
- <?php
- $aa=$_GET['dd'];
- echo $aa.”123″;
- ?>
- <strong>修复范例:</strong>
- <?php
- $aa=$_GET['dd'];
- echo htmlspecialchars($aa).”123″;
- ?>