什么是漏洞?
安全漏洞是信息系统在生命周期的各个阶段(设计,实现,运维等)产生的某一类问题,这些问题会对系统的安全(机密性,完整性,可用性)产生影响
漏洞和bug的关系是什么?
漏洞不等于bug, BUG影响功能,不一定涉及安全性,不构成漏洞
大部分漏洞源于bug,漏洞和bug有一个交集
常见的web漏洞有哪些
SQL注入 (通过插入sql语句到参数中,让其后台sql服务器解析执行进行攻击)
变量类型分类 数字型(报错注入),字符型(盲注)
HTTP提交方式分类 GET注入(布尔盲注),POST注入(时间盲注),Cookie注入(堆叠注入)
SQL注入的危害
1.数据库信息泄露
2.网页篡改
3.网站挂马
4.数据库被恶意操作
5.服务器被远程控制
6.破坏硬盘数据
注:一些类型的数据库系统能让SQL指令操作文件系统,使SQL注入的危害被进一步放大
XSS漏洞 (Cross Site Scripting)跨站脚本攻击 防御措施:前端实体编码+后台特殊字符过滤
发生在用户端,发生了不可预期的JavaScript代码执行
分类:反射型XSS(非持久型XSS)
当用户访问一个带有XSS代码的URL请求时,服务器端接受数据后处理,然后把带有XSS代码的数据发生到浏览器,浏览器解析以后造成XSS漏洞
Payload:<img src=1 οnerrοr=alert(1)>
存储型XSS(持久型XSS)
允许用户存储数据的程序都可能出现存储型XSS,当攻击者提交代码以后被服务端接受并且存储,当再次访问时,被读取响应,造成XSS跨站攻击
DOM型XSS
与服务器解析响应无关系,是在javaScrip脚本动态执行的过程中产生
XSS漏洞的危害
1.网络钓鱼,盗取各类用户账号
2.窃取用户的cookie,获取用户隐私,利用用户身份进一步对网站执行操作
3.劫持用户会话,执行任意操作,非法转账,强制发表日志,发送电子邮件等
4.强制弹出广告页面,刷流量
5.网页挂马
6.进行恶意操作,任意篡改页面信息,删除文章
7.进行大量的客户端攻击,如DDOS攻击
8.获取客户端信息,例如用户的浏览历史,真实ip,开发端口等
9.控制受害者机器向其他网站发起攻击
10.结合其他的漏洞进一步扩大攻击
11.提升用户权限,包括进一步渗透网站
12.传播XSS跨站脚本蠕虫
。。。。。。。
XSS漏洞利用平台
https://github.com/samdenty/injectify
https://github.com/s0md3v/JShell
https://github.com/beefproject/beef
CSRF漏洞(Cross-Site Request Forgery)也被称为One Click Attack 或者 Session Riding
与XSS不同 ,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站
简单理解,攻击者盗用你的身份,进行非法操作,比如修改密码,使用你的账户
登录网站A,B,网站B操作网站A
完成一次CSRF攻击 ,必须要满足两个步骤
1.受信任的网站A,在本地生成Cookie
2.不登出A 的情况下,访问恶意网站B
3.必须使用同一个浏览器访问
需要了解XSS和CSRF漏洞的区别
命令注入
当应用需要调用一些外部程序去处理内容的情况下,需要执行系统命令的函数。
可以注入恶意系统命令,造成命令执行攻击
代码注入
调用一些字符转换的函数时,没有考虑用户是否控制这个字符串,造成代码执行漏洞
区别
命令注入漏洞是调用系统的命令(如:system(),shell_exec(),exex(),passthru())
代码注入漏洞是依靠脚本代码调用操作系统命令(如:eval(0,create_function(),call_user_func.call_user_func_arry)
危害
1.继承web服务程序的权限去执行系统命令或读写文件
2.反弹shell
3.控制网站或者服务器
4.进一步渗透内网
文件上传漏洞
web应用程序通常会有文件上传的功能(只要存在允许上传的地方,就可能出现文件上传漏洞)
导致上传漏洞的原因
1.服务器配置不当(当服务器配置不当时,在不需要上传页面的情况下便可导致任意文件上传,参考HTTP请求方法(PUT)。)
2.开源编辑器上传漏洞(很多开源的编辑器历史上都有不同的上传漏洞,参考编辑器漏洞)
3.本地文件上传限制被绕过(只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改数据包就可以轻松绕过限制)
4.过来不严或被绕过(有些网站上使用了黑名单过滤掉了一些关键的可执行文件脚本后缀等,但黑名单不全或者被绕过,导致可执行脚本文件被上传到服务器上执行。 如在服务器后端过滤掉了后缀为.php的文件,但并没有过滤掉.php3等其他可执行文件脚本后缀,攻击者就可以上传带有其他的可执行文件脚本本后缀的恶意文件到服务器上)
5.文件解析漏洞导致文件执行(当服务器上存在文件解析漏洞时,合法的文件名便可导致带有恶意代码的文件被执行)
6.文件路径截断(在上传的文件中使用一些特殊的符号,使得文件被上传到服务器中时路径被截断从而控制文件路径。 常用的进行文件路径截断的字符如下: 0x00、?、%00、\0 在可以控制文件路径的情况下,使用超长的文件路径也有可能会导致文件路径截断。)
7.开发人员对某些常用函数的错误认识和使用
SSRF漏洞(Server Side Request Forgery )
指攻击者在未能取得服务器所有权限的时候,利用服务器漏洞以服务器身份发送一条构造好的请求给服务器所在的内网,SSRF攻击通常正对外部无法访问的内部系统
漏洞危害
可以对外网、服务器所在的内网、本地进行端口扫描,攻击运行在内网或者本地的应用,利用File协议读取本地文件
使用效果 SSRF+redis未授权getshell
CRLF注入 又叫做(HTTP response Splitting)简称HRS
文件包含漏洞
远程文件包含
本地文件包含
PHP引发文件包涵的四个函数
include()
include_once()
require()
require_once()
文件包涵漏洞利用
文件读取
利用文件包涵漏洞getshell
配合伪协议进行一些绕过和深入利用
XXE漏洞 XML External Entity
xml外部实体注入
攻击者可以通过xml实体传递直接构造的恶意值,使xml解析器解析它。当引用外部实体时,通过构造恶意内容,导致读取任意文件、执行系统命令、探测内网信息、拒接服务等危害
变量覆盖
HTML注入
CSV注入
HOST头部攻击
会话固定
会话可预测
URL重定向
REDOS
目录遍历/穿越/任意文件下载/读取
任意文件删除
信息泄露
未授权访问
越权漏洞
硬编码
什么是硬编码? 是指在程序中编码时 对敏感信息处理为硬编码(比如密码)
引发问题
无法修改密码,可以被任意有权限的人看到代码中的密码
如果被利用反编译工具逆向,可以被轻易获取关键信息
业务逻辑漏洞
文件枚举漏洞
暴力破解漏洞
用户枚举漏洞
验证码绕过漏洞
绕过前端漏洞
密码设定漏洞
短信轰炸/邮件轰炸漏洞
密码明文传输漏洞