渗透测试之路

Kali 渗透测试基础

Kali linux是按照渗透测试的服务流程而设计的,不管出发点是白盒测试、黑盒测试还是灰盒测试,我们再用Kali或其他工具对目标渗透测试时都应遵循一定的步骤。
黑盒测试

黑盒测试(Black-box Testing)也称为外部测试( External Testing)。采用这种方式时,渗透测试团队将从一个远程网络位置来评估目标网络基础设施,并没有任何目标网络内部拓扑等相关信息,他们完全模拟真实网络环境中的外部攻击者,采用流行的攻击技术与工具,有组织有步骤地对目标组织进行逐步的渗透与入侵,揭示目标网络中一些已知或未知的安全漏洞,并评估这些漏洞能否被利用获取控制权或造成业务资产的损失。
黑盒测试还可以对目标组织内部安全团队的检测与响应能力做出评估。在测试结束之后,黑盒测试会对发现的目标系统安全漏洞、所识别的安全风险及其业务影响评估等信息进行总结和报告。
黑盒测试是比较费时费力的,同时需要渗透测试者具备较高的技术能力。在安全业界的渗透测试者眼中,黑盒测试通常是更受推崇的,因为它能更逼真地模拟一次真正的攻击过程。

白盒测试

白盒测试( White-box Testing)也称为内部测试( Internal Testing)。进行白盒测试的团队将可以了解到关于目标环境的所有内部与底层知识,因此这可以让渗透测试者以最小的代价发现和验证系统中最严重的安全漏洞。如果实施到位,白盒测试能够比黑盒测试消除更多的目标基础设施环境中的安全漏洞与弱点,从而给客户组织带来更大的价值。
白盒测试的实施流程与黑盒测试类似,不同之处在于无须进行目标定位与情报搜集;此外,白盒测试能够更加方便地在一次常规的开发与部署计划周期中集成,使得能够在早期就消除掉一些可能存在的安全问题,从而避免被人侵者发现和利用。
白盒测试中发现和解决安全漏洞所需花费的时间和代价要比黑盒测试少许多。而白盒测试的最大问题在于无法有效地测试客户组织的应急响应程序,也无法判断出他们的安全防护计划对检测特定攻击的效率。如果时间有限或是特定的渗透测试环节(如情报搜集)并不在范围之内,那么白盒测试可能是最好的选项。

灰盒测试

以上两种渗透测试基本类型的组合可以提供对目标系统更加深人和全面的安全审查,这就是灰盒测试(Grey-boxTesting),组合之后的好处就是能够同时发挥两种基本类型渗透测试方法的各自优势。灰盒测试需要渗透测试者能够根据对目标系统所掌握的有限知识与信息,来选择评估整体安全性的最佳途径。在采用灰盒测试方法的外部渗透场景中,渗透测试者也类似地需要从外部逐步渗透进人目标网络,但他所拥有的目标网络底层拓扑与架

第一步:踩点(信息收集)

找出目标定义应用和商业用途:最常用的Google Hacking,利用谷歌搜索引擎(百度、bing也可以但是效果不如谷歌好)中的高级操作来定位搜索结果中的特定字符串。
Google Hacking常用收集目标:
敏感信息
具备特殊URL关键字的目标地址
搜索已有的攻击结果
指定格式文件
其他与某一个站点相关的信息
特别提示:利用搜索引擎的网页快照功能,有时候可以发现更多的功能。

一些简单Google Hacking用法:

intext:后台登陆               #只返回正文中包含后台登陆的网页
intitle:后台登陆              # 将只返回标题中包含后台登陆的网页
allintitle:后台登陆 管理员     #用法与intitle类似,只不过可以指定多个词。
inurl:Login                  #将返回url中含有Login的网页
allinurl:Login admin         #用法和inurl类似,只不过可以指定多个词
site:baidu.com               #访问指定的站点
site:baidu.com inurl:Login   #将只在baidu.com 中查找url中含有Login的网页
filetype:text                #只返回指定文件类型的网页
link:www.baidu.com           #将返回所有包含指向www.baidu.com 的网页 

找出系统类型找出可用端口找出运行的服务:Nmap + 站长工具
Nmap是一款网络扫描和主机检测的非常有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。Nmap是一款非常强大的实用工具,可用于:检测活在网络上的主机(主机发现)、检测主机上开放的端口(端口发现或枚举)、检测到相应的端口(服务发现)的软件和版本、检测操作系统,硬件地址,以及软件版本、检测脆弱性的漏洞(Nmap的脚本)
NMAP常用参数:

-sT     TCP connect()扫描,这种方式会在目标主机的日志中记录大批的链接请求以及错误信息。 
-sP     ping扫描,加上这个参数会使用ping扫描,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping,却实际存在。 
-sS     半开扫描,一般不会记入日志,不过需要root权限。 
-sU     udp扫描,但是一般不可靠, 
-sA     用来穿过防火墙的规则集,速度慢。 
-sV     端口服务及版本 
-A       包含了-sV,-O,全面系统检测,启动脚本检测,扫描等。 
-P0     扫描之前不使用ping,适用于防火墙禁止ping,比较有用。 
-v      显示扫描进程 
-O       探测目标系统的漏洞,容易误报 
-oN/-oX/-oG     将报告写入文件,格式分别为正常(自定义.txt),XML,grepable. 
-iL      扫描主机列表 
-sC   --script=default   默认的脚本扫描,主要是搜集各种应用服务的信息

对信息进行社会工程:这是一门大学问,合理运用搜索引擎。
记录发现的内容

第二步:漏洞探测

测试出目标的薄弱环节找出易受攻击的系统,并确定其优先级将易受攻击系统和资产所有者进行映射记录发现的内容
漏洞探测一般采用工具扫描+手工检验的方法(工具毕竟只是工具,避免不了误报,这时候就需要我们手工检验了)
十大Web扫描工具:

Nikto:这是一个开源的Web 服务器扫描程序,它可以对Web 服务器的多种项目(包括3500个潜在的危险 文件/CGI,以及超过900 个服务器版本,还有250 多个服务器上的版本特定问题)进行全面的测试。其扫描项目和插件经常更新并且可以自动更新(如果需要的话)。Nikto 可以在尽可能短的周期内测试你的Web 服务器,这在其日志文件中相当明显。不过,如果你想试验一下(或者测试你的IDS系统),它也可以支持LibWhisker 的反IDS方法。 不过,并非每一次检查都可以找出一个安全问题,虽然多数情况下是这样的。有一些项目是仅提 供信息(“info only” )类型的检查,这种检查可以查找一些并不存在安全漏洞的项目,不过 Web 管理员或安全工程师们并不知道。这些项目通常都可以恰当地标记出来。为我们省去不少麻烦。
Paros:这是一个对Web 应用程序的漏洞进行评估的代理程序,即一个基于Java 的web 代理程序,可以 评估Web 应用程序的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段 等项目。它包括一个Web 通信记录程序,Web 圈套程序(spider),hash 计算器,还有一个可以 测试常见的Web 应用程序攻击(如SQL 注入式攻击和跨站脚本攻击)的扫描器。
WebScarab:它可以分析使用HTTP 和HTTPS 协议进行通信的应用程序,WebScarab 可以用最简单地形式记录 它观察的会话,并允许操作人员以各种方式观查会话。如果你需要观察一个基于HTTP(S)应用程 序的运行状态,那么WebScarabi 就可以满足你这种需要。不管是帮助开发人员调试其它方面的 难题,还是允许安全专业人员识别漏洞,它都是一款不错的工具。 
WebInspect:这是一款强大的Web 应用程序扫描程序。SPI Dynamics 的这款应用程序安全评估工具有助于确 认Web 应用中已知的和未知的漏洞。它还可以检查一个Web 服务器是否正确配置,并会尝试一些 常见的Web 攻击,如参数注入、跨站脚本、目录遍历攻击(directory traversal)等等。
Whisker/libwhisker:Libwhisker 是一个Perla 模块,适合于HTTP 测试。它可以针对许多已知的安全漏洞,测试HTTP 服务器,特别是检测危险CGI 的存在。Whisker 是一个使用libwhisker 的扫描程序。 
Burpsuite:这是一个可以用于攻击Web 应用程序的集成平台。Burp 套件允许一个攻击者将人工的和自动的 技术结合起来,以列举、分析、攻击Web 应用程序,或利用这些程序的漏洞。各种各样的burp 工具协同工作,共享信息,并允许将一种工具发现的漏洞形成另外一种工具的基础。 
Wikto:可以说这是一个Web 服务器评估工具,它可以检查Web 服务器中的漏洞,并提供与Nikto 一样的 很多功能,但增加了许多有趣的功能部分,如后端miner 和紧密的Google 集成。它为MS.NET 环境编写,但用户需要注册才能下载其二进制文件和源代码。 
Acunetix Web Vulnerability Scanner:这是一款商业级的Web 漏洞扫描程序,它可以检查Web 应用程序中的漏洞,如SQL 注入、跨站脚 本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面,并且能够创建专 业级的Web 站点安全审核报告。
Watchfire AppScan:这也是一款商业类的Web 漏洞扫描程序。AppScan 在应用程序的整个开发周期都提供安全测试, 从而测试简化了部件测试和开发早期的安全保证。它可以扫描许多常见的漏洞,如跨站脚本攻击、HTTP 响应拆分漏洞、参数篡改、隐式字段处理、后门/调试选项、缓冲区溢出等等。
N-Stealth:这是一款商业级的Web 服务器安全扫描程序。它比一些免费的Web 扫描程序,如 Whisker/libwhisker、Nikto 等的升级频率更高,它宣称含有“30000个漏洞和漏洞程序”以及  “每天增加大量的漏洞检查”,不过这种说法令人质疑。还要注意,实际上所有通用的VA 工具, 如Nessus, ISS Internet Scanner, Retina, SAINT, Sara 等都包含Web 扫描部件。(虽然这些 工具并非总能保持软件更新,也不一定很灵活。)N-Stealth 主要为Windows 平台提供扫描,但并不提供源代码。 

PS: 前期看自己情况先熟悉3-4个工具即可。
常见的Web漏洞:
一、SQl注入

SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。

二、跨站脚本漏洞

跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。
XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。 

三、CSRF

CSRF(Cross-site request forgery)跨站请求伪造,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。

四、弱口令

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。

五、文件上传漏洞

文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。 

六、敏感信息泄露漏洞

SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同

七、未加密登录请求

由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。

八、HTTP报头追踪漏洞

HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。

九、Struts2远程命令执行漏洞

ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。
网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。 

第三步:漏洞利用

漏洞利用拿到权限攻击其他系统或应用记录发现的信息
漏洞利用方法:
SQL注入
一种将SQL代码插入或添加到应用(用户)的输入参数中,再将这些参数
传递给后台的SQL数据库加以解析并执行的漏洞,具体过程如下:

注入类型有get、post、cookie型,所有的用户参数都可以尝试注入。
利用的方法:手工+工具
现在的各种扫描软件几乎都有sql漏洞的扫描能力,也可以尝试使用代理拦截修改参数手工注入。
当发现漏洞后,手工脱裤或者sqlmap跑。如果万一真没有还可以旁注。

XSS

XSS的类型:存储型、反射型、DOM型。
利用方法: XSSer + 手工、XSS+CSRF、XSS蠕虫

CSRF

漏洞利用方法:  Burpsuite + 手工
漏洞分类:
(1)第一种:请求直接是个GET请求,然后请求中没有token验证参数,然后还有一个固定的变量可以被控制。这种是比较常见的一种CSRF漏洞。这种漏洞的检测方法很简单:网页操作某功能,抓包后,如果发现满足上面条件,然后再去页面测试下,基本就可以确定存在不存在CSRF漏洞了。
(2)第二种:请求是个POST请求,post请求中没有token参数,然后请求也没有验证referer信息。这种是存在CSRF情况最多的一种。这种漏洞的检测方法也很简单:网页操作某功能,抓包后,如果发现没有token等参数,然后就将referer信息设置为空,再次发包请求,如果请求成功了,就说明这里有CSRF漏洞。
如果有token等参数,可以尝试将token去掉,然后再将referer也去掉,进行验证。这种CSRF漏洞的利用,是需要在自己服务器构造一个form表单的,然后将服务器form表单的URL作为CSRF攻击进行利用的,或者用js代码生成form表单,或者用ajax实现。
(3)第三种:请求是POST,post请求中没有token参数,但是验证了referer信息。然而可以将post请求改写为get请求,然后通过第一种情况下的那个方法利用。这种的检测方法,就是先执行了第二种的验证后,发现有对CSRF进行防御。
然后将post请求改写为GET请求,发现仍然可以成功执行。漏洞成因是因为服务器端接收请求参数的时候,没有严格的用$_POST 而是用的类似于 $_REQUEST这种post,get请求的参数都可以接收的写法。

弱口令

  利用方法:Burpsuite + 字典

漏洞类型
(1)普通型: 普通型弱口令就是常见的密码,比如,目前网络上也有人特地整理了常用的弱口令
对于网站后台而言,一般为:

admin

manager

admin123

admin888

admin666

...

具体来说,不同的后台类型拥有不同的弱密码:

数据库(phpmyadmin)

账号:root

密码:root、root123、123456

tomcat

账号:admin、tomcat、manager

密码:admin、tomcat、admin123、123456、manager

jboss

账号:admin、jboss、manager

密码:admin、jboss、manager、123456

weblogic

账号:weblogic、admin、manager

密码:weblogic、admin、manager、123456

(2)条件型:条件型弱口令就是和用户信息相关的密码,比如生日+手机号、姓名首字母+生日、爱人姓名首字母+生日+常用字母(520、1314 等)

文件上传漏洞

漏洞利用方法:菜刀 + 一句话、webshell上传
上传主要就是绕过,绕过前端的 js检测、绕过文件内容检测、绕过文件名检测
绕过方法:代理、构造特殊文件名、大小写、0x00截断、.htaccess文件解析、本地文件包含解析、apache解析漏洞、IIS解析漏洞、Nginx解析漏洞。。。

敏感信息泄露

漏洞成因:一些网站的业务需求,可能提供文件下载和查看的功能,如果对用户查看或者下载的文件不做限制,就可以查看或者下载任意的文件,可以是源代码、敏感文件等。
漏洞发现: 
          inurl:" readfile.php?file= "
          inurl:" read.php?filename= "
          inurl:" download.php?file= "
          inurl:" down.php?file= "

漏洞利用:

    readfile.php?file=/etc/passwd
    readfile.php?file=../../../../../../../../etc/passwd
    readfile.php?file=../../../../../../../../etc/passwd%00
    readfile.php?file=./index.php
    readfile.php?file=../index.php

未加密登陆请求

顾名思义,未加密的敏感信息(如登录凭证,用户名、密码、电子邮件地址、社会安全号等)发送到服务器时,任何以明文传给服务器的信息都可能被窃,攻击者可利用此信息发起进一步攻击。

HTTP报头追踪漏洞

目标网站支持trace/track web服务器http连接方式调试功能。当该调试功能开启时,包含敏感信息的http报头可能被恶意人员追踪截获。恶意人员该漏洞,通过构造恶意script脚本追踪http报头,可能获得http报头中包含的敏感资讯,如cookie或认证证书等。

Struts2远程命令执行漏洞

第四步:提升权限

获得更高级别的访问系统和网络权限获取其他用户的账户信息使用提升过的权限访问其他系统记录发现的信息

第五步:保持访问(清理痕迹,后门)

建立到目标网络地多种访问方法删除未授权访问的证据修复在漏洞利用中影响的系统如果有必要注入假数据通过加密或其他方式隐藏通信方式记录发现的信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值