暴力破解: 连续尝试+字典+自动化
安全措施: 1.复杂密码
2.安全验证码
3.对登录行为进行判断
4.双因素认证
流程: 1.确认登录接口的脆弱性
2.对字典进行优化
3.工具自动化
技巧:1.对目标网站进行注册可以得到信息
2.利用账户密码错误 和密码错误 判断账号
验证码技巧:1.先抓包,判断验证码时效性是否长期有效
2.如果有,就可是穷举账户和密码
xss:
第一步:先输入字符看是否能输出
第二步:输入js语句看看(可能有长短问题)<script>alert(1)</script> <script>alert(document.cookie)</script>
第三步:在URL中输入js语句
储存xss:只要进入页面需要加载的地方就会运行
DOM型xss
xss获取键盘
而为了安全考虑,所有的浏览器都约定了“同源策略”,同源策略规定,两个不同域名之间不能使用JS进行相互操作。比如:x.com域名下的javascrip并不能操作y.com域下的对象。
如果想要跨域操作,则需要管理员进行特殊的配置。
比如通过: header( "Access-Control-Allow-Origin:x.com”)指定。
Tips:下面这些标签跨域加载资源(资源类型是有限制的)是不受同源策略限制的。
<script src= "..”>l/js,加载到本地执行
<img src= "...”>//图片
<link href= "...” >//css
<iframe src= “..”" >//任意资源
为什么要有同源策略:
A登陆了淘宝,攻击者向A发送一个恶意链接urlb:http:// www.盗你cookie.com如果没有同源策略,即: urlb上的js可以操作A的内容(如∶获取cookie等)有了同源策略,就限制了这种情况。
再比如:
一个恶意站点A上使用了<iframe src=“B站点登陆页面”>,发送该恶意url到攻击对象,攻击对象登陆后如果没有同源策略,则A上的JS即可获取B站点的登陆信息。
XSS绕过
0,前端限制绕过,直接抓包重放,或者修改html前端代码
1.,大小写混合,比如:<SCRIPT>aLeRT(111)</sCRIpt>
2,拼凑:<scri<script>pt>alert(111)</scri</script> pt> 红色会被干掉
3,使用注释进行干扰:<scri<!--test-->pt>alert(111)</sc <!--test--> ript> 同上
XSS绕过-过滤-编码
核心思路:
后台过滤了特殊字符,比如<script>标签,但该标签可以被各种编码,后台不一定会过滤当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行.
注意:虽然后台认不出,但是输出一定要认得出
栗子∶使用事件属性onxxx();
<img src=x οnerrοr="alert('xss')”/>可以把alert('xss')进行html编码
<img src=x οnerrοr="a8l8#101;rt(8#39;xs8#115;8#39;) "/>
<img src=x
οnmοuseοver= “alert('xss')"/>
可以执行
注意,事件标签里面并不会执行<script></script>标签里面的代码.
htmlspecialchars()函数把预定义的字符转换为HTML 实体。
预定义的字符是:
&(和号)成为 &
(双引号)成为"
(单引号)成为'
(小于)成为<>
(大于)成为>
可用的引号类型:
ENT_COMPAT -默认。仅编码双引号。
ENT_QUOTES -编码双引号和单引号。
ENT_NOQUOTES -不编码任何引号。
防范措施
总的原则:输入做过滤,输出做转义
过滤︰根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字。
如果是网站就只允许http和https进行过滤
转义∶所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行js转义。
输出在a标签的href属性里面,可以使用javascript协议来执行js
javascript有个特点:不会对tag和字符实体进行解释,需要进行js转义
html实体编码只能编过去,但是js里面却不能编回来,导致前端功能无法使用
所以需要js的输出点使用\对字符进行转义。