Fork me on GitHub

web安全基础知识

一、常见的安全事件

1. 钓鱼 Phishing

  • 往往使用诱惑性的标题,比如:账号出问题了,中奖了
  • 仿冒真实知名站点
  • 为了骗取用户账号和资料,如:银行卡,身份证,住址…

2. 网页篡改 Tampering

这种技术,主要是黑客入侵后,对网页进行更改,主要是为了炫耀技术,有时是为了政治行为。

下面介绍下搜索引擎的小技巧

  1. 关键字
    *   Hacked by
    
  2. 搜索引擎语法

    *   Intitle:keyword 标题中含有关键词的网页
    
    • Intext:keyword 正文中含有关键词的网页
    • Site:domain 在某个域名和子域名下的网页

一种看不见的链接,黑客入侵后,把链接信息植入代码。

据不完全统计,中文互联网网站安全隐患严重,73%的网站被黑的类型为植入暗链,12%植入网马,15%是网页篡改。 因为这个暗链,产业法律风险小,黑客收入比较高,已经成为非常成熟的产业。

小结:

  • 隐藏在网站当中链接,不能为正常用户点击,也就是为了爬虫引擎准备的,提高网站排名
  • 主要是 网游/医疗/博彩/色情

4. Webshell

  • 网页 一种web后门,一个可执行环境
  • 功能强大,一旦植入,可以执行大部分的命令操作,获取服务器的各种权限
  • 存在的形式有很多, 像 asP/php/jsp
  • 通常他会以文件和正常网页混在一起的形式存在,通过浏览器来访问这个后门,已达到控制目标服务器的目的,控制流量又是像正常访问网站的流量混在一起,所以一般的入侵检测系统很难发现

二、 WEB安全

主要分成2类:

客户端:XSS CSRF 点击劫持 URL跳转

服务端:SQL注入 命令注入

1. XSS

(Cross Site Script) 跨站脚本

危害: 盗取用户信息,钓鱼,制造蠕虫。。等

概念: 黑客通过HTML注入篡改网页,插入了恶意脚本,当用户在浏览网页时,实现控制用户浏览器行为的一种攻击方式。

分类:存储型,反射型,DOM型

  • 存储型

访问网站,触发XSS

关键点: 是XSS脚本内容是存储在数据库中

  • 反射型

访问携带XSS脚本的链接触发XSS

关键点: 直接从url中提取xss脚本内容

  • DOM型

访问携带XSS脚本的链接触发XSS

关键点: 通过js从url获取脚本内容,并使用例如innerHTML方法,将xss写入DOM中,触发XSS

区别:DOM型XSS是通过前端js,将xss脚本写入DOM中触发,而反射型XSS是通过后端WEB应用程序将XSS脚本执行到响应页面中,浏览器渲染响应页面时,才触发XSS

2. CSRF

(Cross-site request forgery) 跨站请求伪造

危害: 执行恶意操作(被转账,被发垃圾评论),制造蠕虫。。。等

概念: 利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作

原理principle: 通常Cookie当中会存放用户凭证信息,浏览器在发送请求时,会自动带上已有的cookie,通过cookie识别用户身份,执行转账操作。

例如,黑客构造转账服务的攻击代码,假如用户已经登陆,只要访问这个页面,就会自动将钱转到另一个用户。

3. 点击劫持

通过覆盖不可见的框架误导受害者点击而造成的攻击行为。

特点: 隐蔽性比较高,骗取用户操作,UI-覆盖攻击, 利用iframe或者其他标签的属性(如:display:none)

iframe: 是可以创建另一个包含另一个文档的内联框架

4. URL跳转

定义: 借助为验证的url跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。例如:在互联网中,恶意的网站通常会设计成目标网站会经常访问的样子,这样才更具诱惑性。

实现方式: Header头跳转,js跳转,META标签跳转

5. SQL注入

首先举个万能密码的例子:我们登陆网站要输入账号密码,错误将登陆失败,然后,我们在账号输入admin’ –,密码不输入,结果登陆成功。

定义: SQL Injection,是一种常见的WEB安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

解释: 登陆发送一个POST请求,提交参数是账号和密码,然后后台执行SQL时,利用代码 ‘ –, 闭合注释,达到登陆成功。

    1. 获取用户请求参数
    1. 拼接到代码当中
    1. SQL语句按照我们构造参数的语义执行成功

本质就是 数据与代码未分离,即数据当做了代码来执行

危害: 获取数据库信息,获取服务器权限,植入webshell,获取服务器后门,读取服务器敏感文件,万能密码。。。

6. 命令注入 Command Injection

windows: DOS命令, linux: Bash命令

命令拼接&,依次执行拼接的命令,echo hello & echo world

管道符|,前面命令的输出作为后面命令的输入, ipconfig | find “IPv4”

例如: PHP可执行命令的函数:system,exec, eval,shell_exec,。。。。。

过程: 黑客构造命令提交给web应用程序,程序提取被构造的命令,拼接到被执行的命令中,导致web应用程序执行了额外的命令,将执行结果显示到响应页面中。

7. 文件操作漏洞 file operation

  • 文件上传: 上传webshell, 上传木马

    文件上传不当:例如可以上传可执行脚本,脚本拥有执行权限

  • 文件下载: 下载系统任意文件,下载程序代码

    会导致代码泄露,数据库配置文件泄露,系统文件泄露。。。

    文件处理不当导致:未验证下载文件格式,为限制请求的路径

  • 文件包含

    解决代码量,重复代码写入一个文件

    本地文件包含,远程文件包含

    下面是一些php中常见的文件包含函数:include()、require()、include_once()、require_once()….

-------------本文结束感谢您的阅读-------------