900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 网易白帽子黑客训练营笔记(1)

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

时间:2024-01-27 03:05:41

相关推荐

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

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

文章目录

网易白帽子黑客训练营笔记(1)web介绍web发展史web1.0:web2.0:什么是web安全?web流程浏览器web通信URLURL是什么?URL有什么作用?HTTP什么是HTTP?HTTP请求—其他请求方式前端开发基础HTML DOM:JavaScript DOM:JavaScript BOM:Web服务端环境SQLPHP常见的安全事件XSSCSRF点击劫持URL跳转漏洞SQL注入命令注入文件操作类漏洞

web介绍

web发展史

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

web1.0:

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

主要针对的是WEB服务器

web2.0:

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

主要针对WEB用户

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

什么是web安全?

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

web流程

浏览器

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

2.访问WEB服务器

web通信

URL

URL是什么?

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

URL有什么作用?

定位服务器的资源

eg:

HTTP

什么是HTTP?

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

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

HTTP请求—其他请求方式
GETPOSTHEAD 与GET请求类似,不同在与服务器只返回HTTP头部信息,没有页面内容PUT 上传指定URL的描述DELETE 删除指定资源OPTIONS 返回服务器支持的HTTP方法

HTTP请求—Referer

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

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

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

​ 跳转的状态码:301/302

前端开发基础

HTML DOM:

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

JavaScript DOM:

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

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

第一步,获取元素

getElementByld():通过ID获取元素

第二步,获取元素内容

.innerHTML:获取元素内容

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

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

修改一个HTML form元素内容

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

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

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

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

查询错误原因:

将http换成https后,成功。

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

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

document.write()

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

document.write写入iframe:

如何让页面增加点互动

当我们点击时,页面内容改变,点击事件<—>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

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

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

work里找到,点击Cookies,里面的cookie与JavaScript获取到的cookie一致。

通过JavaScript获取和设置cookie:

​ document.cookie查看和设置cookie;

​ alert(document.cookie);

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

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

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

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

window.location.href=“”

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

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

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

​ 打开新网页:

​ 只能打开不能关闭:

以上使用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语言的私有扩展

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

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

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

创建数据库:

查看数据库:

使用数据库:

删除数据库:

DROP DATABASE webscurity;

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

创建数据表:

查看数据表:

插入数据表:

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源码导入,配置数据库文件

常见的安全事件

钓鱼

诱惑性标题仿冒真实网站骗取用户账号骗取用户资料

“纂改”网页

搜索技巧:

​ 关键字:Hacked by

​ 搜索引擎语法:

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

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

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

暗链

隐藏在网站当中链接

网游/医疗/博彩/色情

提高网站排名(SEO)

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

webshell

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

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

XSS

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

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

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

cookie=web站点的钥匙

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

存储型:

访问网站,触发XSS弹窗

查看源码,了解详细

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

从数据库中提取出XSS内容

反射型

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

查看源码,了解详细

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

从URL中提取XSS内容

DOM型

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

查看源码,了解详细

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

CSRF

全称:Cross-site request forgery

中文名称:跨站请求伪造

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

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

CSRF原理分析:

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

点击劫持

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

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

URL跳转漏洞

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

实现方式:

Header头跳转

JavaScript跳转

META标签跳转

原理分析:

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

SQL注入

万能密码

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

万能密码:

一次SQL注入的过程:

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

SQL注入的必备条件:

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

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

SQL注入的危害:

获取数据库信息:

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

获取服务器权限

植入Webshell,获取服务器后门

读取服务器敏感文件

万能密码

……

命令注入

如何打开DOS命令:

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

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

DOS可以做什么?

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

复合命令:

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

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

命令注入解析:

命令注入过程:

文件操作类漏洞

常见的文件操作:

文件上传

上传头像上传附件

文件下载

下载应用下载附件

你所不知道的文件操作:

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

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

文件上传

产生原因:

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

漏洞利用:

文件下载

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

产生原因:

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

漏洞利用:

文件包含

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

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

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

测试远程文件包含时:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。