网易白帽子黑客训练营笔记(1)

网易白帽子黑客训练营笔记(1)

web介绍

web发展史

Web是互联网的总称,全称为:World Wide Web,缩写WWW,即全球局域网,也称万维网,它是一种超文本和HTTP的,全球性的,动态交互的,跨平台的分布式图形信息系统。

web1.0:

主要安全问题包括:SQL注入,上传漏洞,文件包含,挂马,暗链,命令执行

主要针对的是WEB服务器

web2.0:

主要安全问题包括:钓鱼,URL跳转,框架漏洞,逻辑漏洞,数据劫持,逻辑漏洞,CSRF,XSS

主要针对WEB用户

web安全形势不容乐观:web安全问题数量迅速增长,种类迅速增多,开始针对web用户

什么是web安全?

web安全简单来说就是网站的安全,那么我们需要学习的是,网站上面可能出现哪些漏洞,如何寻找漏洞,如何利用这些漏洞。

web流程

image-20220525220617386

浏览器

1.通过域名获取WEB服务器IP地址(DNS解析)

2.访问WEB服务器

web通信

URL
URL是什么?

统一资源定位符,支持多种协议:HTTP,FTP……

URL有什么作用?

定位服务器的资源image-20220525222554278

eg:

image-20220525222700649

HTTP
什么是HTTP?

超文本传输协议(Hyper Text Transfer Protocol)

Web通信时使用的协议,是Web的基础

image-20220525223715508
HTTP请求—其他请求方式
  1. GET
  2. POST
  3. HEAD 与GET请求类似,不同在与服务器只返回HTTP头部信息,没有页面内容
  4. PUT 上传指定URL的描述
  5. DELETE 删除指定资源
  6. OPTIONS 返回服务器支持的HTTP方法

HTTP请求—Referer

​ 告知服务器该请求的来源(浏览器自动加上)

​ 统计流量:CNZZ,百度统计

​ 判断来源合法性:防止盗链,防止CSRF漏洞

​ 跳转的状态码:301/302

前端开发基础

HTML DOM:

​ 可以更直观的了解页面元素,通过JavaScript进行任意操作。

JavaScript DOM:

  1. 如何让获取一个HTML元素内容?

    以网易云课堂的登录界面表单为例:

    • 第一步,获取元素

      getElementByld():通过ID获取元素

      image-20220604152851687

      image-20220604152930568

    • 第二步,获取元素内容

      .innerHTML:获取元素内容

      image-20220604153003598

    • alert()方法在JavaScript中表示弹出一个警告框,可以用来展示信息

    image-20220604153018000

    可以通过给innerHTML赋值来改变网页内容。

  2. 修改一个HTML form元素内容

    通过ID设置HTML内容:登陆框架设置为iframe。

    • 第一步,选定登录框元素,找到id=login-form
      image-20220604154230341

    • 第二步,获取login-form的元素内容,并修改为一个html的iframe框架(使用Console)

    • 在这里插入图片描述

      image-20220604155304792

      提示错误,网页登录界面iframe被修改。

      查询错误原因:

      image-20220604155504945

      将http换成https后,成功。

      image-20220604155758560

      网易云课堂登陆界面iframe框架被替换成网易易盾界面。

  3. 如何创建动态的HTML元素内容

    document.write()

    通过document.write()方法动态写入HTML:写入当前时间,写入iframe

    image-20220604160605136

    image-20220604160721865

    document.write写入iframe:

    image-20220604161056769

    image-20220604161115281

  4. 如何让页面增加点互动

    当我们点击时,页面内容改变,点击事件<—>onclick

    展示登录onclick事件:为了展示效果,修改为alert(1)

    找到登录html源码,将οnclick=“return false”替换为οnclick=“alert(1)”

    此时点击登录就会变为弹出一个警示框1.

以上使用JavaScript访问和操作HTML就是JavaScript DOM的操作。

DOM本质:连接Web页面和编程语言。

JavaScript + DOM:访问和操作HTML文档的标准方法。

JavaScript BOM:

​ 操作浏览器行为。

警告弹窗alert()

确认弹窗confirm()

提示弹窗prompt()

常用于简单的调试和信息展示。如XSS漏洞的测试。

如何从浏览器获取用户的Cookie?

​ Cookie讲解:通常是服务器发放给用户客户端的一小段文本信息。

​ 常见场景:用户输入用户名和密码成功登录网站后,网站会生成一个cookie给用户,当作用户凭证。

​ 这个凭证cookie就相当于我们的钥匙,我们每次访问网站的时候浏览器都会带上钥匙(cookie)。

获取Cookie:document.cookie

image-20220604181956322

写入Cookie:document.cookie=“写入值”

image-20220604182156066

image-20220604182227124

1.通过chrome开发者扩展展示cookie信息;

image-20220604182540232

2.Network里找到dun.163.com,点击Cookies,里面的cookie与JavaScript获取到的cookie一致。

通过JavaScript获取和设置cookie:

​ document.cookie查看和设置cookie;

​ alert(document.cookie);

image-20220604182843379

获取到网页cookie的一个弹窗:

image-20220604182855868

其他浏览器获取和操作行为:

获取浏览器屏幕信息:(window.)screen

image-20220604190023938

获取/控制用户页面URL:(window.)location

image-20220604190150322

image-20220604190238100

window.location.href=“http://aq.163.com”

​ 网页刷新后,跳转到新地址

image-20220604190515788

获取访问者浏览器信息:(window.)navigator

操作浏览器窗口:window open,close

image-20220604190819013

​ 打开新网页:

image-20220604190839619

​ 只能打开不能关闭:

image-20220604191109882

以上使用JavaScript获取浏览器信息和操作浏览器就是JavaScript BOM。

BOM 浏览器对象模型,Browser Object Model

本质:连接浏览器和编程语言。

通过修改HTTP请求,绕过了前端JavaScript验证,并成功地向服务器提交了敏感数据,造成了XSS跨站漏洞。

JavaScript属于前端验证,在浏览器未提交数据时进行验证,而我们是在通过验证,并拦截HTTP请求后修改数据,javascript的验证根本起不了任何作用,由此可见,前端验证是不靠谱的。

作为一名web开发人员一定要牢记,前端JavaScript验证是为了防止用户输入错误,服务端验证是为了防止恶意攻击。

Web服务端环境

目前流行的架构有哪些?

WEB服务端:操作系统 WEB服务 解释执行环境 数据库服务

Windows server :IIS + ASP(.NET) + SQL Server (.NET)

Linux: Apache + PHP +MySQL (LAMP)

UNIX/Windows:Tomcat + JSP+ Oracle (J2EE)

localhost (基于本地访问时) = 本地主机 = 127.0.0.1 = 本机IP = 域名(DNS服务器,HOSTS文件)

设置hosts:使用记事本打开:C: \\Windows\System32\driver\etc\HOSTS

打开hosts文件,自定义域名,保存关闭,重启浏览器

l.php文件在哪里?网站路径,文件

我们可以写入自己的文件到l.php文件下,创建我们自己的网页,html

SQL

SQL是一门ANSI的标准计算机语言,用来访问和操作数据库

数据库软件主要包括SQL server,MySQL,Oracle等

数据库软件兼容一些主要的SQL关键词操作,SQL语言的私有扩展

image-20220615091612593

使用phpstudy自带的数据库命令行(软件:MySQL 服务接口: 端口/本地 用户:root等)

phpstudy自带的数据库,账号密码都是root

还可以使用phpMyAdmin,使用该方法操作具有可视化的效果。

image-20220615091919762

创建数据库:

image-20220615092035085

查看数据库:

image-20220615092314669

使用数据库:

image-20220615092455764

删除数据库:

DROP DATABASE webscurity;

SQL语句对大小写不敏感;分号作为语句的结束,程序中会自动补充。

创建数据表:

image-20220615093647551

查看数据表:

image-20220615093820608

插入数据表:

image-20220615094012916

oreder by 句子:

​ select 你要的信息 from 数据表 oreder by 字段 ASC/DESC

​ 当order by 后的数字大于当前列数(字段数)时会报错。

LIMIT5; 5代表限制条数。

LIMIT0,5; 0代表偏移量,5代表限制条数。

union句子:

​ select 你要的信息 from 数据表1 union select 你要的信息 from 数据表2

常见的内置环境:

​ database():打印当前的数据库名称(select database()😉

​ current_user:打印当前的用户(select current_user;)

​ load_file():返回一个文件内容(select load_file(‘文件路径’)😉

​ version():数据库版本

​ into + outfile:写入文件

连接数据库:mysql -u root -p

注释符:1.# 2.——+ ——空格 3./* */

当前数据库:SELECT database();

把数据库中的某列数据或某几列数据合并:group_concat()

数据库路径:SELECT @@datadir;

information_schema:MYSQL5.0以上的版本自带information_schema这个数据库,5.0以下是没有的。

PHP

php代码在服务器上执行,以html文件返回

脚本范围:<?php ?>

注释://(单行注释) , # (单行注释) , / / (多行注释)

echo和print:echo语句能一次输出多个,print为函数,有返回值

串接: . (点)

函数:function 函数名()

$符开头的代表一个变量,变量大小写敏感

除了$_POST,$_GET接收传值外,还可以用$_REQUEST

$_FILES:文件上传:file传输到php文件里,打印出文件的信息,存储到upload_file下

$_SERVER
$GLOBALS
$_ENV
$_REQUEST
$_COOKIE
$_SESSION

include/require:包含文件

include:警告,脚本继续

require:错误,停止脚本

连接MySQL服务:mysql_connect(“localhost”,”root”,”root”)

设定编码:mysql_query(“SET NAMES UTF8”)

选择数据库:mysql_select_db(“websecurity”,$con)

操作数据库:mysql_query(“SELECT * FROM teacher”)

关闭连接:mysql_close($con)

MYSQLi扩展,PDO扩展(PHP Data Objects)

PHP实例:数据库导入MySQL,demo源码导入,配置数据库文件

常见的安全事件

  1. 钓鱼

    • 诱惑性标题
    • 仿冒真实网站
    • 骗取用户账号
    • 骗取用户资料
  2. “纂改”网页

    搜索技巧:

    ​ 关键字:Hacked by

    ​ 搜索引擎语法:

    ​ intitle:keyword 标题中含有关键字的网页

    ​ intext:keyword 正文中含有关键字的网页

    ​ site:domain 在某个域名和子域名下的网页

  3. 暗链

    隐藏在网站当中链接

    网游/医疗/博彩/色情

    提高网站排名(SEO)

    攻击者通过攻击获得网站的控制权,然后在网页下面添加网页链接,但是这些链接正常时看不见的

  4. webshell

    攻击者通过各种技术或非技术手段获得网站控制权,然后上传一个webshell作为一个后门

    • 网页
    • 功能强大
    • asp/php/jsp
    • 后门程序

    image-20220708163246585

XSS

中文名:跨站脚本,全称:Cross Site Script

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

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

cookie=web站点的钥匙

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

  1. 存储型:

    访问网站,触发XSS弹窗

    查看源码,了解详细

    XSS脚本内容存储在数据库中

    image-20220708180535673 image-20220708180604829

    从数据库中提取出XSS内容

  2. 反射型

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

    查看源码,了解详细

    原理解析:获取参数后,直接输出到客户端,导致XSS

    image-20220708180442788

    从URL中提取XSS内容

  3. DOM型

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

查看源码,了解详细

XSS脚本在URL的哈希中,DOM型通过JavaScript将XSS脚本写入DOM中

image-20220708180930676

CSRF

全称:Cross-site request forgery

中文名称:跨站请求伪造

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

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

CSRF原理分析:image-20220709083843505

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

image-20220709084318113

点击劫持

点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的,不可见的iframe,覆盖在一个网页上,然后诱导使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱导用户恰巧点击在iframe页面的一些功能性按键上

特点:隐蔽性高,骗取用户操作,”UI-覆盖攻击“,利用iframe或者其他标签的属性

image-20220709085743713

URL跳转漏洞

定义:借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题

image-20220709090623992

实现方式:

  1. Header头跳转

    image-20220709091140455
  2. JavaScript跳转

    image-20220709091234178
  3. META标签跳转

    image-20220709091307020

    原理分析:

    image-20220709091508559

    image-20220709091605230

    通过官网,跳转到伪装成官网的网站,更具迷惑性。

SQL注入

万能密码

image-20220709103708811

SQL注入又叫SQL Injection,是一种常见的web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

image-20220709103952234 image-20220709104034656 image-20220709104046370

万能密码:image-20220709104203884

一次SQL注入的过程:

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

SQL注入的必备条件:

  1. 可以控制输入的数据
  2. 服务器要执行的代码拼接了控制的数据

image-20220709104446342

SQL注入的本质就是数据和代码未分离,即数据当作了代码来执行

SQL注入的危害:

  1. 获取数据库信息:

    • 管理员后台用户名和密码
    • 获取其他数据库敏感信息:用户名,密码,手机号码,身份证,银行卡信息……
    • 整个数据库:脱库
  2. 获取服务器权限

  3. 植入Webshell,获取服务器后门

  4. 读取服务器敏感文件

  5. 万能密码

    ……

命令注入

image-20220709105309711

如何打开DOS命令:

win+R代开运行窗口,输入cmd

image-20220709105454473

也可以通过文件资源管理器在C:\Windows\System32中找到cmd.exe打开运行

image-20220709110431355

DOS可以做什么?

  • 查看本地网络 ——ipconifig
  • 查看系统用户 ——net user
  • 查看当前目录 ——dir
  • 字符串查找 ——find

复合命令:

命令拼接&,依次执行拼接的命令

image-20220709110045167

管道符|,前面命令的输出作为后面命令的输入

image-20220709110341387

命令注入解析:

image-20220709110813036 image-20220709110945310 image-20220709111039497 image-20220709111549986

命令注入过程:

image-20220709111658122

文件操作类漏洞

常见的文件操作:

  • 文件上传

    • 上传头像
    • 上传附件
  • 文件下载

    • 下载应用
    • 下载附件

你所不知道的文件操作:

  • 文件上传
    • 上传Webshell
    • 上传木马
  • 文件下载
    • 下载系统任意文件
    • 下载程序代码

常见的文件操作漏洞:文件上传漏洞,任意文件下载,文件包含漏洞

  1. 文件上传

    产生原因:

    • 可以上传可执行脚本
    • 脚本拥有执行权限(在服务器层面来说,上传文件所在的目录需要拥有执行权限)

    漏洞利用:image-20220709115547660

  2. 文件下载

    任意文件下载危害:系统任意文件被下载从而导致:代码泄露,数据库配置文件泄密,系统文件泄密等

    产生原因:

    • 未验证下载文件格式
    • 未限制请求的路径

    漏洞利用:image-20220709120319088

  3. 文件包含

    为了节约代码量,让程序美观,通常我们会将重复代码写入一个文件,根据不同业务需求来请求业务文件

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

    常用的文件包含函数:include(),require(),include_once(),require_once()…

    测试远程文件包含时:image-20220709120920252

    这俩个参数一定要打开,否则会导致测试失败

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游子无寒衣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值