本文目录一览:
在web页面的元素中,下面哪些场景中可能存在xss
跨站脚本攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
1.在HTML标签中输出
div$var/div
a href=# $var/a
在这种场景下,XSS的利用方式一般是构造一个script标签,或者是任何能够产生脚本执行的方式。
divscriptalert(/xss/)/script/div
a href=# img src=# onerror=alert(1) //a
2.在HTML属性中输出
div id="abc" name="$var" /div
灵活构造XSS PAYLOAD
div id="abc" name=""scriptalert(/xss/)/script"" /div
3.在script标签中输出
script
var x = "$var";
/script
攻击者需要先闭合引号才能实施XSS攻击
script
var x = "";alert(/xss/);//";
/script
如何在路由器插入xss?
XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
一、HttpOnly防止劫取Cookie
HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。
我们来看下百度有没有使用。
未登录时的Cookie信息
可以看到,所有Cookie都没有设置HttpOnly,现在我登录下
发现在个叫BDUSS的Cookie设置了HttpOnly。可以猜测此Cookie用于认证。
下面我用PHP来实现下:
?php
header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly",false);
setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);
setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);
?
script
alert(document.cookie);
/script
js只能读到没有HttpOnly标识的Cookie
二、输入检查
输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如、、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。
例如网站注册经常用户名只允许字母和数字的组合,或者邮箱电话,我们会在前端用js进行检查,但在服务器端代码必须再次检查一次,因为客户端的检查很容易绕过。
网上有许多开源的“XSS Filter”的实现,但是它们应该选择性的使用,因为它们对特殊字符的过滤可能并非数据的本意。比如一款php的lib_filter类:
$filter = new lib_filter();
echo $filter-go('1+11');
它输出的是1,这大大歪曲了数据的语义,因此什么情况应该对哪些字符进行过滤应该适情况而定。
三、输出检查
大多人都知道输入需要做检查,但却忽略了输出检查。
1、在HTML标签中输出
如代码:
?php
$a = "scriptalert(1);/script";
$b = "img src=# onerror=alert(2) /";
?
div?=$b?/div
a href="#"?=$a?/a
这样客户端受到xss攻击,解决方法就是对变量使用htmlEncode,php中的函数是htmlentities
?php
$a = "scriptalert(1);/script";
$b = "img src=# onerror=alert(2) /";
?
div?=htmlentities($b)?/div
a href="#"?=htmlentities($a)?/a
2、在HTML属性中输出
div id="div" name ="$var"/div
这种情况防御也是使用htmlEncode
在owasp-php中实现:
$immune_htmlattr = array(',', '.', '-', '_');
$this-htmlEntityCodec-encode($this-immune_htmlattr, "\"script123123;/script\"");
3、在script标签中输出
如代码:
?php
$c = "1;alert(3)";
?
script type="text/javascript"
var c = ?=$c?;
/script
这样xss又生效了。首先js变量输出一定要在引号内,但是如果我$c = "\"abc;alert(123);//",你会发现放引号中都没用,自带的函数都不能很好的满足。这时只能使用一个更加严格的JavascriptEncode函数来保证安全——除数字、字母外的所有字符,都使用十六进制"\xHH"的方式进行编码。这里我采用开源的owasp-php方法来实现
$immune = array("");
echo $this-javascriptCodec-
XSS小问题
page= ;alert(document.cookie);
你没有闭合双引号,导致;alert(document.cookie); 成了变量的值了
右键网页源码中如下:var page=";alert(document.cookie);";
正确答案其实有很多种只要闭合两端的引号 中间的js代码可以有多种变化。
";\u0061lert(document.cookie);"
";alert(document.cookie);//
这是很基础的问题
慢慢学 多去wooyun知识库看看
网站漏洞危害有哪些?
SQL注入漏洞的危害不仅体现在数据库层面,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不限于:\x0d\x0a\x0d\x0a 数据库信息泄漏:数据库中存储的用户隐私信息泄露。\x0d\x0a\x0d\x0a 网页篡改:通过操作数据库对特定网页进行篡改。\x0d\x0a\x0d\x0a 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。\x0d\x0a\x0d\x0a 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。\x0d\x0a\x0d\x0a 服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。\x0d\x0a\x0d\x0a 破坏硬盘数据,瘫痪全系统。\x0d\x0a\x0d\x0a XSS跨站脚本漏洞的危害包括但不限于:\x0d\x0a\x0d\x0a 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。\x0d\x0a\x0d\x0a 网站挂马:跨站后利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。\x0d\x0a\x0d\x0a 身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取用户的Cookie,从而利用该Cookie获取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。\x0d\x0a\x0d\x0a 盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份时,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。\x0d\x0a\x0d\x0a 垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群体。\x0d\x0a\x0d\x0a 劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。\x0d\x0a\x0d\x0a XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。