渗透测试培训_渗透测试ip

hacker|
169

渗透测试之操作系统识别

利用TTL起始值判断操作系统,不同类型的操作系统都有默认的TTL值(简陋扫描,仅作参考)

TTL起始值:Windows xp(及在此版本之前的windows)  128 (广域网中TTL为65-128)

    Linux/Unix64(广域网中TTL为1-64)

    某些Unix:255

    网关:255

使用python脚本进行TTL其实质判断

使用nmap识别操作系统:nmap -O 192.168.45.129 #参数-O表示扫描操作系统信息,nmap基于签名,指纹,特征,CPE编号等方法去判断目标系统的信息

CPE:国际标准化组织,制定了一套标准,将各种设备,操作系统等进行CPE编号,通过编号可以查询到目标系统

使用xprobe2进行操作系统识别,专门用来识别目标操作系统:xprobe2 192.168.45.129,但结果并不是很精确

被动操作系统识别:不主动向目标主机发数据包,基于网络监听原理

通过抓包分析,被动扫描,使用kali中的p0f工具进行网络监听

p0f:p0f是一种被动指纹识别工具,可以识别您连接的机器,连接到您的盒子的机器,甚至连接在盒子附近的机器,即使该设备位于数据包防火墙后面。

p0f的使用:只要接收到数据包就可以根据数据包判断其信息,首先输入p0f,然后在浏览器里面输入目标系统的网址,便会获得目标系统的信息

或者使用p0f结合ARP地址欺骗识别全网OS

snmp扫描:简单网络管理协议,明文传输,使用网络嗅探也可获取到信息

SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。

snmp的基本思想是为不同种类、不同厂家、不同型号的设备定义一个统一的接口和协议,使管理员可以通过统一的外观面对这些需要管理的网管设备进行管理,提高网管管理的效率,简化网络管理员的工作。snmp设计在TCP/IP协议族上,基于TCP/IP协议工作,对网络中支持snmp协议的设备进行管理。

在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为管理站,负责网管命令的发出、数据存储、及数据分析。被监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。如下图

管理站与代理端通过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理操作。

已有的设备,只要新加一个SNMP模块就可以实现网络支持。旧的带扩展槽的设备,只要插入SNMP模块插卡即可支持网络管理。网络上的许多设备,路由器、交换机等,都可以通过添加一个SNMP网管模块而增加网管功能。服务器可以通过运行一个网管进程实现。其他服务级的产品也可以通过网管模块实现网络管理,如Oracle、WebLogic都有SNMP进程,运行后就可以通过管理站对这些系统级服务进行管理。

使用UDP161端口(服务端),162端口(客户端),可以监控网络交换机,防火墙,服务器等设备

可以查看到很多的信息,但经常会被错误配置,snmp里面

有一些默认的Community,分别是Public/private/manager

如果目标的community是public,那么就可以发送SNMP的查询指令,对IP地址进行查询

在kali中存在对snmp扫描的工具,为onesixtyone

在Windows XP系统安装SNMP协议:

1,在运行框输入appwiz.cpl

2,找到管理和监控工具,双击

3,两个都勾选,然后点OK

使用onesixtyone对目标系统进行查询:命令为:onesixtyone 192.168.45.132  public

  onesixtyone -c  字典文件  -I  主机  -o 倒入到的文件 -w 100

onesixtyone默认的字典在:/usr/share/doc/onesixtyone/dict.txt

使用snmpwalk查找目标系统的SNMP信息:snmpwalk 192.168.45.129 -c public -b 2c

snmpcheck -t  192.168.45.129

snmpcheck -t  192.168.45.129 -w  参数-w检测是不是有可写权限

SMB协议扫描:server message block,微软历史上出现安全问题最多的协议,在Windows系统上默认开发,实现文件共享

在Windows系统下管理员的Sid=500,

SMB扫描:nmap -v -p 139,445 192.168.45.132 --open 参数-v表示显示详细信息,参数--open表示显示打开的端口

nmap 192.168.45.132 -p 139,445 --script=smb-os-discovery.nse

smb-os-discovery.nse:这个脚本会基于SMB协议去判别操作系统,主机名,域名,工作组和当前的时间

nmap -v -P 139,445 --script=smb-check-vulns  --script-args=unsafe=1 192.168.45.132

脚本smb-check-vulns:检查已知的SMB重大的漏洞

后面给脚本定义参数 --script-args=unsafe=1,unsafe可能会对系统有伤害,导致宕机,但要比safe准确

nbtscan -r 192.168.45.0/24参数-r使用本地137端口进行扫描,兼容性较好,可以扫描一些老版本的Windows

nbtscan可以扫描同一局域网不同的网段,对于局域网扫描大有裨益

enum4linux -a 192.168.45.132 :

SMTP扫描:目的在于发现目标系统的邮件账号

使用nc -nv 192.168.45.132 25

VRFY root :确定是不是有root用户

nmap扫描SMTP服务:

nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enum-

users.methods={VRFY}

脚本smtp-enum-users.nse用于发现远程系统上所有user的账户

nmap smtp.163.com -p25 --script=smtp-open-relay.nse,如果邮件服务器打开了open-relay功能,那么黑客可以拿管理员的邮箱去发送钓鱼邮件

防火墙识别:通过检查回包,可能识别端口是否经过防火墙过滤

设备多种多样,结果存在一定的误差

第一种情况:攻击机向防火墙发送SYN数据包,防火墙没有给攻击机回复,攻击机再发送ACK数据包,若防火墙返回RST数据包,那么证明该端口被防火墙过滤

第二种类似

第三种:攻击机向防火墙发送SYN数据包,防火墙返回SYN+ACK或者SYN+RST数据包,攻击者再发送ACK数据包,若防火墙返回RST数据包,那么就可以证明防火墙对于该端口没被过滤.unfiltered=open

第四种情况类似,证明该端口是关闭的,或者防火墙不允许其他用户访问该端口

使用python脚本去判定:

使用nmap去进行防火墙识别:nmap有系列防火墙过滤检测功能

nmap -sA 192.168.45.129 -p 22 参数-sA表示向目标主机发送ACK数据包,参数-sS表示向目标发送SYN数据包,通过抓包分析收到的数据包判断是否有防火墙检测功能

负载均衡识别:负载均衡可以跟为广域网负载均衡和服务器负载均衡

在kali中使用lbd命令用于识别负载均衡机制

格式:lbd +域名/IP地址,如lbd

WAF识别:WEB应用防火墙,在kali中最常用的waf检测扫描器

输入:wafw00f -l:可以检测出这个工具可以检测到的waf类别

探测微软公司的WAF:wafw00f 

使用nmap中的脚本去扫描目标网站使用的waf信息:nmap    --script=http-waf-detect.nse

脚本详情:

nmap补充:

参数:-iL:把IP地址做成文件,使用该参数扫描这个文件里面的IP! nmap -iL ip.txt

-iR:随机选取目标进行扫描,后面跟需要扫描的主机个数,例:nmap -iR  20  -p 22:随机扫描20个主机的22号端口,默认发送SYN数据包

参数-sn表示不做端口扫描

参数-Pn表示跳过主机发现,扫描所有在线的主机,扫防火墙帮助很大

参数p0表示进行IP协议ping

参数-n/-R表示不进行DNS解析

参数--dns-servers表示指定一个DNS服务器去解析

参数--traceroute表示进行路由追踪

参数-sM表示发送ACK+FIN

参数-sF发送FIN数据包

参数-sV根据特征库匹配开放的服务,加上参数--version-intensity 后面加等级,0最小,9最完善

参数--script=脚本名

参数--script=arge.脚本.脚本名

参数--script-updatedb更新脚本

参数--script-help=脚本名  查看脚本的信息

参数-O检测操作系统类型

参数--scan-delay 表示每次探测间隔多长时间,后面个时间,如nmap 192.168.45.132 --scan-delay 10s :间隔十秒

参数-f表示设置MTU最大传输单元

参数-D表示伪造源地址,增加一些虚假的扫描IP,例:nmap  -D 192.138.1.1,192.151.141.4  172.16.45.1  :扫描172.16.45.1主机,用这两个地址做干扰,防止被发现

参数-S表示伪造源地址,但要获取得到的IP地址,那么就得登陆到伪造的IP上

参数--proxies指定代理服务器

参数--spoof-mac欺骗mac地址 nmap 10.1.1.1  --spoof-mac=00:11:22:33:44:55

参数-6表示扫描IPv6

「Web渗透测试」第一天:基础入门-概念名词

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

阿里云:阿里云域名注册

域名级数是指一个域名由多少级组成,域名的各个级别被“.”分开,简而言之,有多少个点就是几级域名。顶级域名在开头有一个点,“一级域名”就是在“com top net org”前加一级,“二级域名”就是在一级域名前再加一级,二级域名及其以上级别的域名,统称为子域名,不在“注册域名”的范畴中。

进行渗透测试时,其主域名找不到漏洞时,就可以尝试去测试收集到的子域名,有可能测试子域名网站时会有意向不到的效果,然后可以由此横向到主网站。

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

本地HOSTS是存储的域名对应的IP地址,当我们访问一个网站输入域名时,首先会在本地的HOSTS文件查找是否有对应的IP地址,如果有就会直接解析成本地的IP进行访问。如果不能查到,那么会向DNS域名系统进行查询,找到对应的IP进行访问。

SDN全称是内容分发网络。其目的是让用户能够更快速的得到请求的数据。简单来讲,cdn就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据。

关系:通过dns服务我们可以很快的定位到用户的位置,然后给用户分配最佳cdn节点,但是这种调度方式存在一个问题,例如,当我 是北京联通的用户但是使用的却是深圳电信的ldns的话,调度服务器会给我分配到深圳电信的cdn服务器,这样就产生了错误的调度。

通常也称为域名系统投毒或DNS缓存投毒。它是利用虚假Internet地址替换掉域名系统表中的地址,进而制造破坏。当网络用户在带有该虚假地址的页面中进行搜寻,以访问某链接时,网页浏览器由于受到该虚假条目的影响而打开了不同的网页链接。在这种情况下,蠕虫、木马、浏览器劫持等恶意软件就可能会被下载到本地用户的电脑上。

DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。这类攻击一般通过恶意软件来更改终端用户TCP/IP设置,将用户指向恶意DNS服务器,该DNS服务器会对域名进行解析,并最终指向钓鱼网站等被攻击者操控的服务器。

域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。一旦您的域名被劫持,用户被引到假冒的网站进而无法正常浏览网页,用户可能被诱骗到冒牌网站进行登录等操作导致泄露隐私数据。

针对DNS的DDoS攻击通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。发送大量非法域名查询报文引起DNS服务器持续进行迭代查询,从而达到较少的攻击流量消耗大量服务器资源的目的。

所有放大攻击都利用了攻击者和目标Web资源之间的带宽消耗差异,由于每个机器人都要求使用欺骗性IP地址打开DNS解析器,该IP地址已更改为目标受害者的真实源IP地址,然后目标会从DNS解析器接收响应。为了创建大量流量,攻击者以尽可能从DNS解析器生成响应的方式构造请求。结果,目标接收到攻击者初始流量的放大,并且他们的网络被虚假流量阻塞,导致拒绝服务。

asp php aspx jsp javaweb pl py cgi 等

不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样(代码审计)。

不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样(代码审计)。

当第一次攻击之后,会留一个端口让攻击者下次从这个端口进行攻击

网页、线程插入、扩展、C/S后门

方便下次攻击进入

管道(攻击通道)

玩法,免杀

1. 网站源码:分脚本类型,分应用方向

2. 操作系统:windows linux

3. 中间件(搭建平台):apache iis tomcat nginx 等

4. 数据库:access mysql mssql oracle sybase db2 postsql等

Web应用一般是指B/S架构的通过HTTP/HTTPS协议提供服务的统称。随着互联网的发展,Web应用已经融入了我们的日常生活的各个方面。在目前的Web应用中,大多数应用不都是静态的网页浏览,而是涉及到服务器的动态处理。如果开发者的安全意识不强,就会导致Web应用安全问题层出不穷。

我们一般说的Web应用攻击,是指攻击者通过浏览器或者其他的攻击工具,在URL或者其他的输入区域(如表单等),向Web服务器发送特殊的请求,从中发现Web应用程序中存在的漏洞,进而操作和控制网站,达到入侵者的目的。

在做安全测试的时候,我们要从web页面层开始,因为较为方便,如果从操作系统进行,是十分不容易的。

SQL 注入、上传、XSS、代码执行、变量覆盖、逻辑漏洞、反序列化等

SQL注入

内核漏洞

如何进行Web渗透测试

什么是渗透测试?

渗透测试,是渗透测试工程师完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标网络、主机、应用的安全作深入的探测,发现系统最脆弱的环节。

如何进行Web渗透测试?

完整web渗透测试框架当需要测试的web应用数以千计,就有必要建立一套完整的安全测试框架,流程的最高目标是要保证交付给客户的安全测试服务质量。

1、立项:项目建立,时间安排,人力分配,目标制定,厂商接口人确定;

系统分析威胁分析:针对具体的web应用,分析系统架构、使用的组件、对外提供的接口等,以STRIDE为威胁模型进行对应的安全威胁分析,输出安全威胁分析表,重点关注top3威胁;

制定测试用例:根据威胁分析的结果制定对应的测试用例,测试用例按照模板输出,具备可执行性;

测试执行漏洞挖掘:测试用例执行发散测试,挖掘对应的安全问题or漏洞;

问题修复回归测试:指导客户应用开发方修复安全问题or漏洞,并进行回归测试,确保安全问题or漏洞得到修复,并且没有引入新的安全问题;

项目总结评审:项目过程总结,输出文档评审,相关文档归档。

2、Web应用的渗透测试流程

主要分为3个阶段,分别是:信息收集→漏洞发现→漏洞利用,下面仔细分析一下各个阶段流程:

一、信息收集

在信息收集阶段,我们需要尽量多的收集关于目标web应用的各种信息,比如:脚本语言的类型、服务器的类型、目录的结构、使用的开源软件、数据库类型、所有链接页面,用到的框架等

脚本语言的类型:常见的脚本语言的类型包括:php、asp、aspx、jsp等

测试方法:

1 爬取网站所有链接,查看后缀

2 直接访问一个不存在页面后面加不同的后缀测试

3 查看robots.txt,查看后缀

服务器的类型:常见的web服务器包括:apache、tomcat、IIS、ngnix等

测试方法:

1 查看header,判断服务器类型

2 根据报错信息判断

3 根据默认页面判断

目录的结构:了解更多的目录,可能发现更多的弱点,如:目录浏览、代码泄漏等。

测试方法

1 使用字典枚举目录

2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取

3 查看robots.txt是否泄漏

使用的开源软件:我们如果知道了目标使用的开源软件,我们可以查找相关的软件的漏洞直接对网站进行测试。

测试方法

指纹识别(网络上有很多开源的指纹识别工具)

数据库类型:对于不同的数据库有不同的测试方法。

测试方法

1 使应用程序报错,查看报错信息

2 扫描服务器的数据库端口(没做NAT且防火墙不过滤时有效)

所有链接页面:这个跟前面的获取目录结构类似,但是这个不只是获取网站的所有功能页面,有时候还可以获取到管理员备份的源码。

测试方法

1 使用字典枚举页面

2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取

3 查看robots.txt是否泄漏

用到的框架:很多网站都利用开源的框架来快速开发网站,所以收集网站的框架信息也是非常关键的。

测试方法

指纹识别(网络上有很多开源的指纹识别工具)

二、漏洞发现

在这个阶段我们在做测试的时候要对症下药,不能盲目的去扫描,首先要确定目标应用是否使用的是公开的开源软件,开源框架等、然后在做深一度的漏洞扫描。

关于开源软件的漏洞发现

开源的软件:常见的开源软件有wordpress、phpbb、dedecms等

开源的框架:常见的开源框架有Struts2、 Spring MVC、ThinkPHP等

中间件服务器:常见的中间件服务器有jboss、tomcat、Weblogic等

数据库服务:常见的数据库服务mssql、mysql、oracle、redis、sybase、MongoDB、DB2等

对于开源软件的测试方法

1 通过指纹识别软件判断开源软件的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试

2 对于默认的后台登录页、数据库服务端口认证等入口可以进行简单的暴力破解、默认口令尝试等操作

3 使用开源的漏洞发现工具对其进行漏洞扫描,如:WPScan

关于自主开发的应用

手动测试:这个阶段,我们需要手工测试所有与用户交互的功能,比如:留言、登入、下单、退出、退货、付款等操作

软件扫描:使用免费的软件扫描,如:appscan、wvs、netsparker,burp等

可能存在的漏洞

Owasp关键点

代码安全之上传文件

代码安全之文件包含

代码安全之SSRF

逻辑漏洞之密码重置

逻辑漏洞之支付漏洞

逻辑漏洞之越权访问

平台安全之中间件安全

三、漏洞利用

针对不同的弱点有不同的漏洞利用方式,需要的知识点也比较多。一般这个阶段包括两种方式,一种是手工测试,一种是工具测试

手工测试

手工测试是通过客户端或服务器访问目标服务,手工向目标程序发送特殊的数据,包括有效的和无效的输入,观察目标的状态、对各种输入的反应,根据结果来发现问题的漏洞检测技术。手工测试不需要额外的辅助工具,可由测试者独立完成,实现起来比较简单。但这种方法高度依赖于测试者,需要测试者对目标比较了解。手工测试可用于Web应用程序、浏览器及其他需要用户交互的程序。

这种方式对于有特殊过滤等操作,或者网络上没有成型的利用工具的时候可以使用。

工具测试

网络上有很多好用的免费利用工具,比如针对sql注入的sqlmap、针对软件漏洞的matesploit等。

渗透测试工具有哪些

1、Kali Linux

不使用Kali Linux作为基本渗透测试操作系统,算不上真正的黑客。Kali Linux是基于Debian的Linux发行版,

设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati

Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。

Kali Linux的前身是BackTrack

Linux,有进攻性安全部门的专业人士维护,它在各个方面都进行了优化,可以作为进攻性渗透测试工具使用。

2、Nmap

Nmap是发现企业网络中任何类型的弱点或漏洞的绝佳工具,它也是审计的很好工具。该工具的作用是获取原始数据包并确定哪些主机在网络的特定段上可用,正在使用什么操作系统,以及识别特定主机的数据包防火墙或过滤器的不同类型和版本正在使用。Nmap对渗透测试过程的任何阶段都很有用并且还是免费的。

3、Wireshark

Wireshark是一个无处不在的工具,可用于了解通过网络的流量。虽然通常用于深入了解日常TCP/IP连接问题,但Wireshark支持对数百种协议的分析,包括对其中许多协议的实时分析和解密支持。如果不熟悉渗透测试,Wireshark是一个必须学习的工具。

4、John the Ripper

John the

Ripper是一个很流行的密码破解工具,是渗透测试工具包中的一个很必要的补充。它可以用来确定数据库中的未知弱点,通过从传统字典中找到的复杂和流行的单词列表,获取文本字符样本,并用与正在生成的密码相同的格式,对其进行加密来达到目的。

5、Hashcat

Hashcat自称世界上最快和最先进的密码恢复应用程序,可能并不是谦虚,懂Hashcat的人肯定知道它的价值。Hashcat让John the

Ripper一筹莫展。它是破解哈希的首选渗透测试工具,Hashcat支持多种密码猜测暴力攻击,包括字典和掩码攻击。

6、Hydra

Hydra在需要在线破解密码时发挥作用,例如SSH或FTP登录、IMAP、IRC、RDP等等。将Hydra指向你想破解的服务,如果你愿意,可以给它传递一个单词列表,然后扣动扳机。像Hydra这样的工具提醒人们为什么限制密码尝试和在几次登录尝试后断开用户连接可以成功地防御攻击者。

7、Sqlmap

Sqlmap,是非常有效的开源的SQL注入工具,并且自动化检测和利用SQL注入缺陷并接管数据库服务器的过程,就像它的网站所说的那样。Sqlmap支持所有常用目标,包括MySQL、oracle、PostgreSQL、Microsoft

SQL、server等。

如何渗透测试WordPress网站

我们假设这是你的网站:hack-test.com 首先通过ping获得网站的IP地址: 现在我们得到了网站服务器的IP :173.236.138.113,这是我们的网站服务器托管IP。 接下来我们去sameip.org查找同一IP主机:

0条大神的评论

发表评论