基础概念补充
同源策略概念:当两个URL的协议,域名,端口相同,我们说这两个URL同源,只要协议,域名,端口中的一个不相同,那么它们就不同源,我们说这两个URL跨域。
浏览器采用同源策略,禁止页面加载或执行与自身来源不同的域的任何脚本。
比如一个恶意网站的页面通过iframe嵌入了某网站的登录页面,如果没有同源限制,恶意网站上的js脚本就可以在用户登录某网站时获取用户名和密码。
JSONP概念:利用<src>,<script>等标签(可以加载跨域资源的标签)的跨域能力实现跨域数据的访问,JSONP跨域是利用script标签来实现的
salt值:属于随机值,用户注册时用来和密码进行随机组合而生成的随机数值。
字符集:
ASCII编码:单字节编码
lantin1编码:单字节编码
gbk编码:使用一字节和双字节编码,0x00——0x7F是一位,0x81——0xFE是双字节
UTF-8编码:使用一至四字节编码,0x00–0x7F
是一位,。其它字符用二至四个字节变长表示
宽字节指的是两个以上的字节
宽字节注入:
原理:由于各种字符编码的不当操作,使得攻击值可以通过宽字节编码绕过SQL注入防御。
数据提交到MySQL数据库,是需要进行字符集的转换的,这使得MySQL数据库可以对数据进行处理。
比如:%df' 如果被PHP转义,会变成%df\' ,其中的\的十六进制是%5c,也就是说%df'经过PHP转义后变成了%5df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,那么MySQL用GBK编码时,程序就会认为%df%5c是一个宽字符,即:縗,因此单引号' 也就可以注入成功了。
Xpath注入:
原理:由于没有验证用户输入,导致攻击者提交恶意请求来修改查询语句,导致攻击者绕过逻辑认证,获取后端XML数据库内容
攻击手法:同SQL注入相似
网络协议:
ARP协议:地址解析协议,根据IP地址获取物理地址的一个TCP/IP协议。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址对应关系,添加或删除静态对应关系等
RARP协议:逆地址解析协议,功能和ARP相对,其将局域网中某个主机的物理地址转换为IP地址
TCP/IP协议:TCP/IP协议是Internet最基本的协议,用网络层的IP协议和传输层的TCP协议组成。通俗而言,TCP负责发现传输的问题,已有问题就发出信号,要求重新传输,知道所有数据安全正确的传输到目的地,而IP是给因特网的每一台联网设备规定的一个地址
TCP与UDP的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。
DNS协议:将url转换为IP地址
Net协议:将私有地址转化为合法IP地址的转换技术
DHCP协议:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段
HTTP协议:超文本传输协议
常见安全漏洞概念定义:
SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终欺骗服务器执行恶意的SQL命令。
跨站脚本(XSS):恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的目的。
文件上传:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP/ASP/JSP文件,并能够将这些文件传递给PHP/ASP/JSP解释器,就可以在远程服务器上执行任意脚本。
文件包含:在通过服务器脚本的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入。
越权:越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,导致单个用户可以操作其他人的信息。
逻辑漏洞:逻辑错误漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现在任意密码修改、越权访问、密码找回、交易支付金额。
文件下载:一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
命令执行:指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。
信息泄露:当开发者不留意开发过程中的信息泄露问题,就有可能导致网站源代码的泄露、账号密码信息的泄露从而导致更加危险的漏洞利用。
弱口令:弱口令没有严格和准确的定义,通常认为容易被别人(它们有可能对你很了解)猜测或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如 "123"、"abc"等,因为这样的口令很容易被别人破解。
暴力破解:登录口没有设置验证码或是验证码可以重复利用,导致攻击者可以通过遍历或字典爆破等手段破解用户名和密码。
命令注入:利用各种调用系统命令的web应用,通过命令拼接、绕过黑名单等方式实现在服务端实现想要实现的系统命令
cookie和session的区别:
Cookie(保存在浏览器端的)通过在客户端记录信息确定用户身份,Session(保存在服务器上)通过在服务器端记录信息确定用户身份。
水平越权和垂直越权:
水平越权:即访问控制攻击,Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或者在判断数据所属人时从用户提交的表单参数中获取了userid。导致攻击者可以自行修改userid修改不属于自己的数据。
垂直权限攻击又叫做权限提升攻击。其原理是由于Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的
X-Forwarded-For注入:
简称XFF头注入,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP]),因此可以利用X-Forwarded-For进行注入。
命令注入连接符:
command1 && command2 先执行command1后执行command2
command1 | command2 只执行command2
command1 & command2 先执行command2后执行command1
以上三种连接符在windows和linux环境下都支持
命令注入 黑名单绕过 :
Windows可以使用双引号 "" ^^ 也可以 n^et u^ser Linux 还可以使用单引号 ''