网络安全知识笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011975363/article/details/87901095

网络安全笔记

代理

  • 正向代理:和客户端一组
  • 反向代理:和服务器一组
  • 透明代理:自动配置

Kali linux中的代理工具

  • mitmproxy: mitmproxy -p 8800
  • burp suite:用于攻击web应用程序的集成平台,本身带有一个代理,通过默认端口8080上运行,使用该代理可以截获并修改从客户端到web应用程序的数据包。
  • owasp-zap 会话类调试工具,调试功能对网站不会发起大量请求,对服务器影响较小
  • proxystrike
  • vega一个开放源代码的web应用程序安全测试平台,能够帮助验证SQL注入,跨站脚本(XSS),敏感信息泄露和其他一些安全漏洞。
  • webscarab:代理软件,包括HTTP代理,网络爬行,网络蜘蛛,会话ID分析,自动脚本接口,模糊测试工具,WEB格式的编码/解码,WEB服务描述语言和SOAP解析器等功能模块。
  • Fiddler:使用代理获取管理员权限

一个asp站点sql注入

  • 测试数字型注入点

kali sql注入:sqlmap

  • sqlmap -u url --dbs --current-user 获取当前用户和所有数据库
  • sqlmap -u url --dbms mysql -D 数据库名 --tables 获取某mysql数据库中的所有表
  • sqlmap -u url --tables拆解表得到表名
  • sqlmap -u url -T 表名 --columns得到表属性名称
  • sqlmap -u url -T 表名 -C col1,col2,… -dump 得到相应属性对应的值

一个asp站点的sql注入

  • 在浏览器中输入“公司 inurl:asp/php?id=” 查找包含‘公司’的asp/php 数字型页面

步骤

  • 测试数字型注入点
  • sqlmap拆解数据库和表名
  • dump表数据
  • 登陆后台

一个php站点的sql注入

  • 测试数字型注入点
  • sqlmap拆解数据库和表名
  • dump表数据
  • 破解加密用户的密码
  • 利用nikto帮助寻找隐藏目标: nikto -host 域名
  • 利用网页源代码中的隐藏信息寻找管理后台
  • 利用编程漏洞提升用户管理权限

社会工程学

  • SET 开源社会工程学利用套件
  • kali linux中输入:setoolkit会出现各种工具,利用不同的工具可进行不同的攻击
  • 二维码攻击:将某个链接生成二维码,ORCode Generator Attack Vector
  • 邮箱攻击:将相关链接通过邮箱发送给别人,链接被点击则触发。

网络扫描

1、定义:发现并收集网络上活跃主机相关信息过程,比如操作系统,开启的端口号,服务和运行的应用。

网络扫描技术

主机发现: 确定网络中活跃主机的数量及其相应的IP,进一步确定了对象,主要方法有:
  1. ICMP ECHO Rquest 通过Ping命令发送ICMP类型为8的包,如果主机是活跃的,会回复一个ICMP类型为0的包。
  2. ICMP Timestamp通过Ping命令发送ICMP类型为13的包,如果主机是活跃的,会回复一个ICMP类型为14的包。
  3. ICMP Address Mask Request通过Ping命令发送ICMP类型为17的包,如果主机活跃,回复一个ICMP类型为18的包.
  4. TCP Ping 通过Ping命令发送TCP SYN或TCP ACK的包,如果主机活跃,会对请求包进行回复,具体回复内容取决于包的类型,主机的操作系统,防火墙策略等。
  5. UDP Ping 通过Ping命令向主机的UDP端口发送UDP包,如果主机是活跃的,但UDP端口是关闭的,会回复一个ICMP Port Unreachable包。由于UDP的无连接特性,如果主机不回复任何内容,主机和UDP端口也有可能是活跃的.
端口和服务扫描:查找活跃的端口和服务,端口和服务的活跃意味着漏洞存在的可能性
  1. Connect scan 通过正常的TCP连接和主机建立连接,如果主机的TCP端口是活跃的而且没有被防护墙过滤,会回复一个SYN/ACK包,否则回复一个RST/ACK包。这种扫描方法由于是建立正常的连接,所以很容易被发现或记录。
  2. Half-open scan 故名思议,当主机回复第一个SYN/ACK包的时候,扫描器就认为端口是活跃的,所以就用一个RST包来结束此次连接,并不完成完整的三次握手。
  3. Stealth scan 通过发送报头带有各种标志的包,比如,SYN/ACK、FIN、ACK、NULL等,同时结合其他的规避技术来进行扫描。
操作系统发现:指纹识别,通过指纹来判断主机运行的系统类型。
  • 指纹:被扫描的主机回复的一些特征信息,比如TCP/IP栈,TCP窗口大小,TCP初始序列号等。

网络扫描工具

Nmap

  • nmap [扫描类型] [相关参数] {目标主机}

扫描类型:

  • -sL(列表扫描),
  • -sP(Ping 扫描),
  • -P0(无Ping),
  • -PS[portlist][TCP SYN Ping],
  • -PA[portlist][TCP ACK Ping],
  • -PU[portlist][UDP Ping],
  • -PE,-PP,-PM(ICMP Ping Types),-PR(ARP Ping)
  • 参数: -n (不用域名解析), -R(为所有目标解析域名)
  • nmap -Pn ip 不使用ping扫描,更适合internet
  • nmap -sP ip 快速ping扫描
  • nmap -sT -p 3390 -O --ossan-limit 10.8.14.104如果主机10.8.14.104的端口3390开放的话,则探测它的操作系统。
  • nmap --iflist 查看本地路由与接口

Zmap

安装

  • apt-get install build-essential cmake libgmp3-dev libpcap-dev gengetopt byacc flex git dwarfdump
  • git clone git://github.com/zmap/zmap.git
  • cd zmap/
  • cmake -DENABLE_HARDENING=ON
  • make
  • make install

websploit

  • 一个综合性的,高级的中间人漏洞攻击框架
  • 由python 编写的开源项目
  • 源代码
  • 项目地址

基本使用流程

  • 确定攻击目标
  • 查找可用模块
  • use使用模块
  • show options显示配置项
  • set 配置选项
  • run 开始执行
  • 如果成功,权限获取

嗅探,arp欺骗,会话劫持

arp欺骗

ettercap

浏览器安全

  • 挂马:在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的方式。
  • Sandbox(沙箱):为了让不可信的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。
  • XSS:(Cross Site Script)跨站脚本攻击,一种“HTML”注入,用户的数据被当成了HTML代码一部分来执行,从而混淆了原本的语义,产生了新的语义。
  • 存储型CSS:保存在服务器上,有可能会跨页面存在,不改变页面URL的原有结构,只需让用户查看一个正常的URL链接即可触发。
  • 反射型CSS:一般要求用户点击一个包含XSS代码的URL链接。
  • 富文本:网站需要允许用户提交一些自定义的HTML代码。

Web 安全实践

嗅探器(Sniffer程序)

  • 利用以太网的特性把网络适配卡(NIC)设置为混杂模式(能接收传输在网络上的每一个信息包)
  • 可监听任何网络信息
  • 防范:加密传输数据

会话劫持(假冒通信的一方A,执行A可以执行的操作)

  • 中间人攻击:使用ARP或DNS欺骗,在通信双方不知情的情况下,改变会话双方的通讯流
  • 注入式攻击:在双方正常通讯流中插入恶意数据,伪造数据包发送,通过"ip欺骗”(隐藏自己的ip地址,利用通信双方的间的信任关系) 和“预测TCP序列号”实现(ACK风暴,通信双方都收到一个序号不对的数据包,循环以自己期望)。
  • 被动劫持:在后台监视双方会话的数据流,从中获得敏感数据
  • 主动劫持:将会话中的某一台机器踢下线,取而代之

TCP 劫持

  • SEQ序列号:当前数据包中第一个字节的序号(数据包,而非数据部分)
  • ACK:期望收到对方数据包中第一个字节的序号。
  • Window:会话窗口
  • A,B通信时,攻击者C根据监听推测出A/B将要发送的数据包的SEQ,ACK,WINDOW,假冒它发送数据包,与B/A建立连接

HTTP会话劫持

  • WEB应用程序通过Cookie(存储在本地计算机,过期时间长),Session(会话型Cookie存在于服务端,随着会话的注销和失效,安全性更高)来判断和跟踪不同的用户
  • 可通过盗取用户Cookie,和通过程序获得Session,来进行会话劫持。
  • 工具:SSCLone

重放攻击

  • 攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。主要用于身份认证
  • 过程:攻击者利用网络监听或其他方式盗取认证凭据,把它重新发给认证服务器。
  • 防御(让发送的消息具有唯一性,不可重复利用):时间戳(通信双方计算机保持时钟同步),序号:通过消息中的序列号来判断消息的新鲜性,提问-应答:A事先给B发一个现时N,B给A回复N或者f(N),f为A,B事先约定的函数。

局域网断网攻击

  • DHCP(dynamic host configuration protol)动态主机配置协议,一个局域网的网络协议,UDP协议,集中管理,分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息。

分配IP的机制

  • 自动分配方式(AutomaticAllocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  • 动态分配方式(DynamicAllocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  • 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

arp攻击:假冒网关或正常主机,提供错误的mac地址。

  • arp协议:将IP地址解析成MAC地址(二层以太网交换设备并不能识别32的IP地址,它们以48的MAC地址传输以太网数据包。)
  • 特点:建立在信任局域网所有节点,不能跨子网或者网段传播,不管是否合法的应答,只要收到目标MAC地址是自己的ARP Reply 或者 ARP广播包(arp reply/request),都会接受并缓存。
  • arpspoof -i 网卡 -t 目标ip 目标ip所在网关
  • aspspoof攻击原理:冒充网关,使内网计算机发送的数据无法到达真正的路由器网关,导致内网计算机断网。
  • 查局域网中的ip : fping -arg ip范围
  • 通过冒充网关或其他主机得到达到网关和主机的流量通过攻击进行转发。

arp攻击形式

  • arp欺骗:a广播本来要找ip地址为b的主机的mac地址,c收到广播包后,大量回复,我的ip地址为b,mac为 c ,于是a缓存c的mac地址,之后原本发给b的数据会发送到c
  • 冒充网关:c不停的发送ARP欺骗广播,说我的ip地址是网关ip,mac地址是c,于是局域网中的其他主机以为c是网关,c将会监听到整个局域网发送给互联网的数据报。

具体表现

  • 协议内部
    1、假冒ARP reply包(单波或广播),向单台主机或多台主机发送虚假的IP/MAC地址
    2、假冒ARP request包(单播或广播),实际上是单播或广播虚假的IP、MAC映射。
    3、假冒中间人,启用包转发向两端主机发送假冒的ARP reply,由于ARP缓存的老化机制,有时还需要做周期性连续性欺骗。
  • 从影响网络连接通畅方面
    1、对路由ARP表的欺骗:ARP病毒截获网关数据,让路由器获得错误的内网MAC地址,导致路由器把数据发送给错误的mac,是内网内的主机断网
    2、ARP病毒通过冒充网关,是内网计算机发送的数据无法到达真正的路由器网关,导致内网计算机断网

防范

  • 防范工具:Nbtscan 查看局域网Mac地址和主机IP匹配显示。
  • 在主机和网关都进行IP和MAC的静态绑定
  • 采用支持arp过滤的防火墙
  • arp -a查看arp缓存表

XSS (Cross Site Script)跨站脚本攻击

  • 攻击者通过“HTML 注入”篡改了网页,插入了恶意脚本,从而在用户浏览网页时,控制用户浏览器

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

  • 攻击者诱使用户访问一个页面,以该用户的身份在第三方站点里执行其他操作,利用攻击者身份操作。
  • 攻击过程:往往在用户不知情的情况下构造了网络请求。
  • 防范:验证码:强制用户必须与应用进行交互,才能最终完成请求。
  • 本质:重要操作的所有参数都是可以被攻击者猜测到的。
  • Token: 使用安全的随机生成器生成,为用户与服务器所共同持有,不能被第三方知晓。可以放在用户的Session中,或浏览器的COOKIE中,具有有效生命周期内。
  • XSRF攻击,Xss可以模拟客户端浏览器执行任意操作,读出页面中Token值,然后在构造出一个合法请求。

点击劫持(ClickJacking)

  • 视觉上的欺骗手段,攻击者使用一个透明的,不可见的iframe,覆盖在一个网页上,诱使用户在该网页上进行操作,让用户在不知情的情况下点击透明的iframe页面,实现相关功能。
  • FLASH点击劫持:通过flash构造点击劫持。
  • 图片覆盖攻击(Cross site image overlaying) XSIO:通过调整图片的style使得图片覆盖在任意指定的位置。
  • 拖拽劫持:诱使用户从隐藏的不可见的iframe中“拖拽”出攻击者希望得到的数据,然后放到攻击者控制的另外一个页面中,窃取数据。
  • 触屏劫持:将不可见的iframe覆盖到当前网页上,劫持用户的触屏操作。

防御ClickJacking

  • frame busting :写一段Javascript代码,禁止iframe的嵌套(怎么写)
  • X-Frame-Options:在HTTP头中,可取值:DENY(拒绝加载任何frame页面),SAMEORIGIN(frame页面的地址只能为同源域名下的页面),ALLOW-FROM(定义允许frame加载的页面地址)
  • firefox:CONTENT SECURITY POLICY, NoScript

注入攻击

  • 本质:把用户输入的数据当做代码执行
  • 关键: 用户能够控制输入, 原本程序要执行的代码,拼接了用户输入的数据

盲注

  • 在服务器没有错误回显的时候能够验证注入的SQL语句是否得到执行
  • 常见方法:构造简单的条件语句,根据返回页面是否发生变化判断。
  • Timg Attack:利用BENCHMARK()函数,可让同一个函数执行若干次,让结果返回的时间比平时长,通过时间长短的变化,来判断注入语句是否执行成功

SQL注入常用的攻击技巧

  • 猜解
  • 命令执行,利用UDF(user-defined function)执行命令:流行的数据库中,一般都支持从本地文件系统中导入一个共享库文件作为自定义函数
  • 攻击存储过程(大型数据库中,完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要编译,通过指定存储过程的名字并给出参数来执行):某些存储过程提供的操作可被攻击者利用。
  • 编码问题:开发者利用“\”转义单引号和双引号等特殊字符,使攻击者构造的输入能够达到攻击者的目的。

SQL注入的防御:辨别攻击者的非法输入,使非法输入无效

  • 使用预编译语句:使用预编译的SQL语句语义不会发生改变
  • 使用存储过程:在存储过程中尽量避免使用SQL动态语句,使用严格的输入过滤或者编码函数来处理用户的输入数据
  • 检测数据类型
  • 使用安全函数:根据数据库厂商的指导,编写安全的编码的函数。
  • 使用最小权限:不要给用户太高的权限。

XML(一种常用的标记语言,通过标签对数据进行结构化表示)注入

  • 用户能控制数据的输入
  • 程序拼凑了数据

代码注入:由不安全的函数或者方法引起

CRLF注入

  • CR Carriage Return(\r), LF:Line Feed(\n) \r\n表示换行
  • CRLF:不同语义的分隔符,通过注入CRLF可改变原有的语义。

文件上传漏洞

  • 定义:用户上传了一个可执行的脚本文件,获得了执行服务器端命令的能力。
  • 关键在于:服务器怎么处理,解释上传的文件。

文件上传后导致的常见的安全问题

  • 上传Web脚本语言文件,服务器的Web容器解释并执行了该文件,导致代码执行
  • 上传文件是Flash策略文件crossdomain.xml,攻击者利用控制Flash在该域下的行为
  • 上传文件是病毒,木马文件,黑客用以诱骗用户或者管理员下载执行
  • 上传钓鱼图片或包含脚本图片,被当做脚本执行,用于钓鱼和欺诈

攻击成功应满足的条件

  • 上传的文件能够被Web容器解释执行,即文件上传后所在目录要为Web容器所覆盖到的路径
  • 用户能从web访问这个文件
  • 上传的文件要绕过安全检查

设计安全的文件上传功能

  • 文件上传的目录设置为不可执行,使Web容器无法解析该目录下的文件
  • 判断文件类型,使用白名单检查文件类型
  • 使用随机数改写文件名和文件路径,增大用户访问文件的难度
  • 单独设置文件服务器的域名,利用浏览器同源策略关系,避免XSS攻击

猜你喜欢

转载自blog.csdn.net/u011975363/article/details/87901095