XSS之httponly绕过以及靶场通关笔记(三)

httponly以及绕过思路

httponly概念以及作用

概念

如果您在 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到 cookie 信息,这样能有效的防止 XSS 攻击。

作用

防止xss攻击盗取cookie,这里要注意他只能防止盗取cookie并不是防止xss攻击。

开启httponly

我们这里查资料得知php如果开启httponly需要添加以下代码:

PHP5.2以上版本已支持HttpOnly参数的设置,同样也支持全局的HttpOnly的设置,在php.ini中session.cookie_httponly =

设置其值为1或者TRUE,来开启全局的Cookie的HttpOnly属性,当然也支持在代码中来开启:

<?php ini_set("session.cookie_httponly", 1);

// or session_set_cookie_params(0, NULL, NULL, NULL, TRUE);

?>

这里我们使用后者,在管理页面php代码添加这个代码。

开启httponly

接下来我们再来复刻一下昨天窃取cookie的方法:

上传xss

然后管理页面去触发,再回来看平台:

cookie为0

cookie被保护了,为空。

绕过思路

既然没办法采用cookie的方式进行登录后台,那么还能怎么登录后台,那就是获取他的账号密码了。

这里分两种,如果对方浏览器没有保存账密,登录后台采用手动输入的方式,那么我们可以劫持他的表单。

自己输入

这时候如果他登录页面存在xss,你把响应xss打到他登录页

我们就能劫持登录的账密,但是有点鸡肋,一般这个地方没什么xss利用点。

如果对方浏览器保存了账密,那么我们可以利用xss读取对方浏览器保存的账密

浏览器记住的

这个就不要求在登录页面了,只要对方登录状态后台也是可以获取的,前提是这些参数都要输对。

靶场笔记

这里注重解释payload,原理不做赘述。

less-1

less-1

这个很简单,就是前面说原理用的,get型xss反射,url输入就行。

less-2

less-2.0

这里审查元素,发现我们输入显示的值被当作value了,想办法闭合就行

构造keyword=”><script>alert(1)</script>  闭合前面value 成功xss

less-2.1

less-3

less-3.0

第三关用了转义函数,这是php专门防御xss的函数,就是把我们输入的< 这种符号进行转义, 所以要想办法不输入<> 执行xss 。

想到了onclik 这个是鼠标点击会触发xss,于是先观察vlue值 观察闭合 ,前面加一个’ 进行闭合

构造 keyword=’onclick=’alert(1)’

less-3.2

然后我们点击一下搜索框进行触发,成功触发。

less-4

less-4.0

他这关会把输入的<> 删去,但是我们用onclick 并不需要这两个符号,于是输入,然后点击搜索框触发。

less-5

less-5.0

这关还尝试一下刚才的方式发现on变成了o_n 看来他会对关键字进行转义。经过测试还会对script变成sc_ript

然后没有过滤<> 符号, 那方法就多了 

构造<a href=’javascript:alert(1)’>  就是构造一个超链接 点击就弹窗

还要闭合前面value的符号 于是    “><a href=’javascript:alert(1)’> 

less-5.1

成功触发。

less-6

less-6.0

发现这关过滤的更严了,href ,on,srcipt,data都过滤。

尝试绕过进行大小写 发现大小写能绕过于是:

“><a hRef=’javascript:alert(1)’> 

less-6.1

less-7

less-7.0

这里发现他会对关键字删除 ,双写绕过即可

“><scscriptript>alert(1)</scscriptript>

他把script删除了剩下的依然构成一个script。

less-7.1

less-8

less-8.1

这里我们输入的值会加到下面的超链接里,刚才我们就构造了一个超链接

“><a href=’javascript:alert(1)’>  那么我们只写javascript:alert(1) 行不行。

less-8.2被转义那么只能进行编码绕过。

less-8.3

less-8.4

less-9

这关就没意思了,不看源码过不去 他就是检查你输入的内容有没有http://

第八关的payload+上这个就行了

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41; //http://  这里的//是把后面给注释掉,防止干扰

less-9

less-10

less-10.0

这里可以看到type=hidden 也就是说这个表单被隐藏起来了。

我们想办法让他给显示出来 我们自己在url里面给t_sort传参数,t_sort=” type=”text” onclick=”alert(‘xss’)

于是构造keyword=&t_sort=” type=”text” onclick=”alert(‘xss’)

less-10.1

less-11

这个直接看源码:

less-11.0

str33也就是value的值来自数据包里的refer ,有点像头部注入。

先依照第十关方法把那几个隐藏参数都写入值

&t_link=”type=”text&t_history=”type=”text&t_sort=”type=”text&t_ref=”type=”text

然后抓包写入

referer:”type=”text” onclick=”alert(‘xss’)

less-11.2

less-11.3

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论