- 基础知识
- 常见Web漏洞(包括XSS CSRF 劫持等介绍)
- 其他了类型漏洞介绍(包括Sql注入,Webshell)
- 真实案例
基础知识
从浏览器中输入url,到最终页面展示,中间发生了什么?
常见的Web漏洞(包括XSS CSRF 劫持等)
XSS(Cross Site Scripting)
可以通俗的总结为:想尽一切办法,将你的脚本内容在目标网站中的目标客户的浏览器上解析执行。
XSS类型
- 反射性XSS
- 存储性XSS
- DOM XSS
demo1:DOM型XSS漏洞
http://safe.hack.com/xss/demo1/#document.write("<script/src=//safe.hack.com/xss/demo1/alert.js><\/script>");
demo2:反射型XSS漏洞1
http://safe.hack.com/xss/demo2/reflect1.php?x=%3Cscript%3Ealert(1)%3C/script%3E
demo2:反射型XSS漏洞2
http://safe.hack.com/xss/demo2/reflect2.php?x=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ%2b
demo3: 存储型XSS漏洞
有何危害?
- 挂马
- 盗取用户cookie
- 钓鱼攻击
- 恶意篡改数据
- 劫持用户行为
- 蠕虫攻击
如何防护?
- HTML标签之间:编码转换
- HTML属性:使用引号包裹属性,且对内容属性进行转码
- javaScript :小心输入的 闭合之前的script标签
- XSS:过滤js伪协议,表达式及各种变形 @import及各种变形
- URL:对特殊字符使用%HH形式编码。过滤data:/javaScriopt 等伪协议
- X-XSS-Protection
什么是XSRF(Cross-site request forger) ?
CSRF攻击攻击原理及过程如下:
- 用户C打开浏览器,防护受信用的网站A输入用户名和密码请求登陆网站
- 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登陆网站A成功,可以正常发送请求到网站A
- 用户未退出A之前,在同一浏览器中,打开一个TAB页访问网站B
- 网站B接受到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
- 浏览器在没收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发送请求。网站A并不知道该请求其实是B发起的,所以会根据用户的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
攻击类型
- HTML CSRF 攻击
- JSON HiJacking攻击
- FLash CSRF 攻击
demo1:HTML攻击
1、safe.hack.com 网站登录
http://safe.hack.com/csrf/demo1/login.php?pwd=123
2、safe.hack.com API访问
http://safe.hack.com/csrf/demo1/safe.php?action=add
3:danger.hack.com 钓鱼网站
http://danger.hack.com/csrf/demo1/danger.html
demo2:JSON 劫持攻击
1、safe.hack.com 网站登录
http://safe.hack.com/csrf/demo1/login.php?pwd=123
2、safe.hack.com API访问
http://safe.hack.com/csrf/demo2/response.php?cb=__callback
3、danger.hack.com 钓鱼网站
http://danger.hack.com/csrf/demo2/index.html
有何危害?
- 修改目标网站用户数据
- 盗取用户隐私数据
- 传播SCRF蠕虫
- 其他攻击方法的辅助手段
如何防护?
- 效验Referer
- 限制Session Cookie的声明周期
- 使用验证码
- 使用一次性Token
- X-Content-Security-Policy(内容安全政策)
什么是劫持?
可以通俗的总结为:将你想看的内容,替换为劫持者想让你看的内容
常见劫持类型
HTTP劫持
当你打开360当好的页面时,右下角出现了运营商的广告
DNS劫持
当你输入360导航网站时,出现的是hao123的页面
页面操作劫持
当你以为点击的是A页面的普通链接,但实际上点击的可能是支付宝的登陆按钮
3:其他类型的漏洞介绍(包括sql注入 Webshell 等)
Sql 注入
所谓的SQL注入,就是通过SQL命令插入到Web表单提交活折辱域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意饿SQL命令
select * from ysers where name='??' and pwd='??'
输入 name: 'or 1=1#'
select * from users where name=" or 1=1#" and pwd ="
select * from users where name=" or 1=1"
越权漏洞
越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为:一个正常的用户A通过还恩那个够对自己的一些信息i 进行增删改查,但是由于程序员疏忽,对信息进行增删改查的时候没有进行一个判断,判断所需要的操作的信息是否属于对应的用户,可以导致用户A可以操作其他人的信息
文件上传漏洞
大部分的网站和系统上都有上传功能,一些文件上传功能没有严格限制用户上传文件的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上产任意的PHP文件,并能够将这些文件传递给PHP解释器,就可以在远程服务器上执行任意PHP脚本。
当系统存在文件上传漏洞是攻击这可以将病毒,木马,WebShell ,其他恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供遍历,根据具体漏洞的差异,此处上传的脚本可以是正常后缀的PHO,ASP以及JSP脚本,可以是篡改后缀后的这几类脚本
其他常见的攻击手段
AEP攻击
CDN渗透
DHCP钓鱼
WIFI钓鱼
DDOA攻击
参考书记
- 《HTTP权威指南》
- 《web前端-黑客技术揭秘》
- 《白帽子将Web安全》
- 《黑客攻防技术宝典-web实战篇》