渗透测试攻击_硬核渗透测试实战篇

hacker|
246

想问一下大家都是怎么做渗透测试的呢?

这个要根据个人的实际情况来决定的,比如你先要去了解什么是渗透测试:

1、渗透测试属于信息安全行业,准确的说是网络计算机/IT行业

2、现在你知道了它的行业属性,那么你是否具备一些这个行业的知识呢?

3、具备的话学习起来比较简单,直接去学习渗透测试实战就行,不具备接着往下看

4、现在知道它行业属性,你大概就能清楚需要些什么样的基础知识了;下面是我从非计算机网络相关专业的同学想要学习渗透测试必须掌握的知识。

5、前期入门大概需要掌握或者说了解以下知识点:

1)了解基本的网络知识,例如什么是IP地址(63.62.61.123)去掉点是扣扣学习群,IP地址的基本概念、IP段划分、什么是A段、B段、C段等2)广域网、局域网、相关概念和IP地址划分范围。

3)端口的基本概念?端口的分类?

4)域名的基本概念、什么是URL、了解TCP/IP协议、

5)了解开放式通信系统互联参考模型(OSI)

6)了解http(超文本传输协议)协议概念、工作原理

7)了解WEB的静态页面和WEB动态页面,B/S和C/S结构

8)了解常见的服务器、例如、Windows server2003、Linux、UNIX等

9)了解常见的数据库、MySQL、Mssql、、Access、Oracle、db2等

10)了解基本的网络架构、例如:Linux + Apache + MySQL + php

11)了解基本的Html语言,就是打开网页后,在查看源码里面的Html语言

12)了解一种基本的脚本语言、例如PHP或者asp,jsp,cgi等

然后你想学习入门,需要学习以下最基础的知识:

1、开始入门学习路线

1)深入学习一种数据库语言,建议从MySQL数据库或者SQL Server数据库、简单易学且学会了。

其他数据库都差不多会了。

2)开始学习网络安全漏洞知识、SQL注入、XSS跨站脚本漏洞、CSRF、解析漏洞、上传漏洞、命令执行、弱口令、万能密码、文件包含漏洞、本地溢出、远程溢出漏洞等等

)工具使用的学习、御剑、明小子、啊D、穿山甲(Pangolin)、Sqlmap、burpsuite抓包工具等等

2、Google hacker 语法学习

3、漏洞利用学习、SQL注入、XSS、上传、解析漏洞等

4、漏洞挖掘学习

5、想成为大牛的话、以上都是皮毛中的皮毛,但前提是以上的皮毛都是最基础的。

6、Linux系统命令学习、kali Linux 里面的工具学习、Metesploit学习

7、你也可以找一些扣扣群去和大佬交流,比如上面的IP去掉点就是,里面有很多的教程。

8、没事多逛逛安全论坛、看看技术大牛的文章、漏洞分析文章等

渗透测试的七个步骤

渗透测试的七个步骤

第一步:确定要渗透的目标,也就是选择要测试的目标网站。

第二步:收集目标网站的相关信息,比如操作系统,数据库,端口服务,所使用的脚本语言,子域名以及cms系统等等。

第三步:漏洞探测。利用收集到的信息,寻找目标的脆弱点。

第四步:漏洞利用,找到对方系统的弱点后,进一步攻克对方系统,拿到目标系统的权限。

第五步:渗透目标内网的其他主机,把获得的目标机器权限当作跳板,进一步攻克内网其他主机。

第六步:验证漏洞与修复漏洞。

第七步:清楚渗透痕迹,编写测试报告。

一个完整挖洞/src漏洞实战流程【渗透测试】

只要搞渗透,不就会听到很多行业内人前辈一直在重复:“信息搜集” 信息搜集有多重要,你搜集的到的多少资产信息,决定了你后续进行的一系列实战到什么程度!

要说SQL注入的漏洞咋找,逻辑漏洞咋找,支付漏洞咋找,越权漏洞咋找,等等

实这都一个道理,用谷歌语法,找通杀用fofa,这里演示几个类型的漏洞,其它的也是一个道理。

第一个: SQL注入漏洞

AS:首先是SQL注入的,这个漏洞说实话,基本就是谷歌语法找的快,

语法: inurl:asp?id=23公司,这时候你会问:不是inurl:asp?id= 就行了吗,当然!

这可以!如果你想找到一些奇奇怪怪的站可以用这个,比如:

这时候明白接公司的重要性了吧,这里找的是asp的站,为啥找asp的站?

其中一一个最重要的原因就是因为他,好挖!

当然这里只是找了一小部分站点的, 如果突然发现重复了咋办?

这个简单,换个id就行了同学!

inurl:asp?id-34公司,这里的id 值不断的变变变就行了,你们也可以对比一下

这是不是就不一样了,当然如果有兴趣的话,也可以搜搜inurl :php?id=12公司

这也是可以找到很多站的,不过加WAF的几率很大

我找了10个9个都加过,所以说要想上分上的快,asp 的站绝对不能落下!

这里我就不多叙述,因为这站好找,真的特别好找,但是要想能弱密码进去的却很少

直接上镜像站一放inurl:什么牛鬼蛇神都出来了,这后台管理的站可以说是非常多了

当然如果不想找到国外其它奇奇怪怪的站点的话,建议加个关键词公司

可以看到这里一堆后台,当然要渗透这些后台弱密码很少能进去了

你看到我打inur1: 它自动给我补齐关键词了吗,说明这玩意很多人挖

一般搞后台,先信息收集,这个等会说,反正我是没搞到过几个

这种漏洞咋找?商城,积分商城。

试试谷歌语法: info:商城AND积分商城

这不全是商城吗,当然对于一些大厂, 建议不要去搞

因为防护也会比一般的站点比较严格,况且现在做在线网上商城的站点也很少了

其实可以在漏洞挖掘的时候注意一下站点是否有paypal这个功能,有的话,可以搞一搞的,这还是有搞头的

再来就是逻辑漏洞,比如说平行,垂直越权,任意密码重置啊什么的。这类漏洞还是很多的,大家也可以去慢慢测的!

最后一个,通杀的漏洞咋找?

这时候就是要靠我们万能的fofaQ了,首先我们要知道有哪些cms有漏洞

这里大家可以去找网上的漏洞库,里面- -般都会有漏洞合集和这里我稍后会给大家推荐一两个

看到没有,就是这么多cms,杀一个准,上分必备漏洞

不过有些重复提交了,可以给你们看看学员们的战果!

当然,重复了几个,但还是相当不错了。

看完开头,相信你已经知道怎么找漏洞了,那我们就说说漏洞如何挖掘,这里分事件型和通用型漏洞

首先来的,肯定是我们的sq1注入了,首先使用我们的通用语法inurl:asp?id=xx 公司

直接点进去,不要害怕,只要不违法,咱不干坏事就行

看到报错了,说明啥,说明可能存在注入啊朋友,直接and 1=1 |and 1=2插进去

经过一番寻找,我们来到了这个网站:

看到网站直接插单引号,看他报不报错

看到效果十分明显,这种情况直接丢sqlmap9 ,反正我是丢的sqlmap , 大家如果时间充足的话可以上手

下一个站,这个站存在的漏洞是任意密码重置和CSRF漏洞

首先是CSRF漏洞,相信不用我说你们也应该会了,这里就是这点出现漏洞

你们可以自己去测测,这里说我主要说的是任意密码重置漏洞

(这个漏洞现在也已经被修复了)

在这一步的时候, 抓个包

这里再改成自己的邮箱,这样自己的邮箱就能接收到验证链接,直接点击就好

看到这里,支付漏洞 和验证码绕过之类的逻辑漏洞是不是感觉+分的好挖,有没有这种感觉!

这里类型比较多,篇幅太长不好阅读。举例这两种做参考~

三、提交报告

例如baidu.com发现了SQL注入

第一步:“标题”和“厂商信息”和“所属域名”

站长工具icp.chinaz.com/baidu.co...

查询域名备案信息,看到这个公司名了吗

这样写

漏洞类别啥的,如果不是0day的话,像图中一样就行了

所属域名要写该公司的“网站首页”或者“官网”

看到这个了吗

漏洞类型: -般都是Web漏洞,然后漏洞是什么写什么,这里是一个SQL注入。

漏洞等级: SQL注入-般都是高危,但如果厂商比较小的话,会降级,降成中危。

漏洞简述:描述一下SQL注入是什么、 有什么危害之类的。

漏洞url:出现漏洞的URL。

影响参数:哪个参数可以注入就写哪个

漏洞POC请求包: Burp抓个包复制粘贴。

如果你嫌每次打字麻烦,可以新建一个记事本, 把框架写好,提交的时候替换一些内容就可以了。

把标题、漏洞简述、复现步骤、修复方案,把标题、漏洞简述、复现步骤、修复方案,可以省不少时间!

今天的内容虽然偏长,但是都是干货呀!从找漏洞到提交直接一步到位! 安排的明明白白!

注:任何未经授权的渗透都是违法行为,咱们挖SRC,担心会违法,记住一点, 点到为止,不要动里面的数据,发现漏洞之后,尽快提交漏洞,联系厂商进行修复。

渗透测试应该怎么做呢?

01、信息收集

1、域名、IP、端口

域名信息查询:信息可用于后续渗透

IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常

端口信息查询:NMap扫描,确认开放端口

发现:一共开放两个端口,80为web访问端口,3389为windows远程登陆端口,嘿嘿嘿,试一下

发现:是Windows Server 2003系统,OK,到此为止。

2、指纹识别

其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:

看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)

是否使用了存在漏洞的框架(如果没有现成的就自己挖)

02、漏洞扫描

1、主机扫描

Nessus

经典主机漏扫工具,看看有没有CVE漏洞:

2、Web扫描

AWVS(Acunetix | Website Security Scanner)扫描器

PS:扫描器可能会对网站构成伤害,小心谨慎使用。

03、渗透测试

1、弱口令漏洞

漏洞描述

目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。

渗透测试

① 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破

② 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别

风险评级:高风险

安全建议

① 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等

② 定期检查和更换网站管理口令

2、文件下载(目录浏览)漏洞

漏洞描述

一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。

渗透测试

① 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径

② 看看有没有文件上传访问的功能

③ 采用…/来测试能否夸目录访问文件

风险评级:高风险

安全建议

① 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)

② 过滤【./】等特殊字符

③ 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。

示例:tomcat,默认关闭路径浏览的功能:

param-namelistings/param-name

param-valuefalse/param-value

3、任意文件上传漏洞

漏洞描述

目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。

渗透测试

① 收集网站信息,判断使用的语言(PHP,ASP,JSP)

② 过滤规则绕过方法:文件上传绕过技巧

风险评级:高风险

安全建议

① 对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式;

② 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;

③ 禁止上传目录有执行权限;

④ 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。

4、命令注入漏洞

漏洞描述

目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。

渗透测试

风险评级:高风险

安全建议

① 拒绝使用拼接语句的方式进行参数传递;

② 尽量使用白名单的方式(首选方式);

③ 过滤危险方法、特殊字符,如:【|】【】【;】【’】【"】等

5、SQL注入漏洞

漏洞描述

目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息

渗透测试

① 手动测试:判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注

② 工具测试:使用sqlmap等工具进行辅助测试

风险评级:高风险

安全建议

① 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO

② 拒绝使用拼接SQL的方式

6、跨站脚本漏洞

漏洞描述

当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。

三种XSS漏洞:

① 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。

② 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。

③ DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等

渗透测试

存储型,反射型,DOM型

风险评级:高风险

安全建议

① 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【】【】【"】【’】【】等字符做过滤

② 任何内容返回到页面显示之前都必须加以html编码,即将【】【】【"】【’】【】进行转义。

7、跨站请求伪造漏洞

漏洞描述

CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。

渗透测试

风险评级:中风险(如果相关业务极其重要,则为高风险)

安全建议

① 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;

② 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;

③ 请求头Referer效验,url请求是否前部匹配Http(s)😕/ServerHost

④ 关键信息输入确认提交信息的用户身份是否合法,比如修改密码一定要提供原密码输入

⑤ 用户自身可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;

8、内部后台地址暴露

漏洞描述

一些仅被内部访问的地址,对外部暴露了,如:管理员登陆页面;系统监控页面;API接口描述页面等,这些会导致信息泄露,后台登陆等地址还可能被爆破。

渗透测试

① 通过常用的地址进行探测,如login.html,manager.html,api.html等;

② 可以借用burpsuite和常规页面地址字典,进行扫描探测

风险评级:中风险

安全建议

① 禁止外网访问后台地址

② 使用非常规路径(如对md5加密)

9、信息泄露漏洞

漏洞描述

① 备份信息泄露:目标网站未及时删除编辑器或者人员在编辑文件时,产生的临时文件,或者相关备份信息未及时删除导致信息泄露。

② 测试页面信息泄露:测试界面未及时删除,导致测试界面暴露,被他人访问。

③ 源码信息泄露:目标网站文件访问控制设置不当,WEB服务器开启源码下载功能,允许用户访问网站源码。

④ 错误信息泄露:目标网站WEB程序和服务器未屏蔽错误信息回显,页面含有CGI处理错误的代码级别的详细信息,例如SQL语句执行错误原因,PHP的错误行数等。

⑤ 接口信息泄露:目标网站接口访问控制不严,导致网站内部敏感信息泄露。

渗透测试

① 备份信息泄露、测试页面信息泄露、源码信息泄露,测试方法:使用字典,爆破相关目录,看是否存在相关敏感文件

② 错误信息泄露,测试方法:发送畸形的数据报文、非正常的报文进行探测,看是否对错误参数处理妥当。

③ 接口信息泄露漏洞,测试方法:使用爬虫或者扫描器爬取获取接口相关信息,看目标网站对接口权限是否合理

风险评级:一般为中风险,如果源码大量泄漏或大量客户敏感信息泄露。

安全建议

① 备份信息泄露漏洞:删除相关备份信息,做好权限控制

② 测试页面信息泄露漏洞:删除相关测试界面,做好权限控制

③ 源码信息泄露漏洞:做好权限控制

④ 错误信息泄露漏洞:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因

⑤ 接口信息泄露漏洞:对接口访问权限严格控制

10、失效的身份认证

漏洞描述

通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。

渗透测试

① 在登陆前后观察,前端提交信息中,随机变化的数据,总有与当前已登陆用户进行绑定的会话唯一标识,常见如cookie

② 一般现在网站没有那种简单可破解的标识,但是如果是跨站认证,单点登录场景中,可能为了开发方便而简化了身份认证

风险评级:高风险

安全建议

① 使用强身份识别,不使用简单弱加密方式进行身份识别;

② 服务器端使用安全的会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储,在登出、闲置超时后使其失效。

11、失效的访问控制

漏洞描述

未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

渗透测试

① 登入后,通过burpsuite 抓取相关url 链接,获取到url 链接之后,在另一个浏览器打开相关链接,看能够通过另一个未登入的浏览器直接访问该功能点。

② 使用A用户登陆,然后在另一个浏览器使用B用户登陆,使用B访问A独有的功能,看能否访问。

风险评级:高风险

安全建议

① 除公有资源外,默认情况下拒绝访问非本人所有的私有资源;

② 对API和控制器的访问进行速率限制,以最大限度地降低自动化攻击工具的危害;

③ 当用户注销后,服务器上的Cookie,JWT等令牌应失效;

④ 对每一个业务请求,都进行权限校验。

12、安全配置错误

漏洞描述

应用程序缺少适当的安全加固,或者云服务的权限配置错误。

① 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)。

② 默认帐户的密码仍然可用且没有更改。

③ 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。

④ 对于更新的系统,禁用或不安全地配置最新的安全功能。

⑤ 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行相关安全配置。

渗透测试

先对应用指纹等进行信息搜集,然后针对搜集的信息,看相关应用默认配置是否有更改,是否有加固过;端口开放情况,是否开放了多余的端口;

风险评级:中风险

安全建议

搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。在所有环境中按照标准的加固流程进行正确安全配置。

13、使用含有已知漏洞的组件

漏洞描述

使用了不再支持或者过时的组件。这包括:OS、Web服务器、应用程序服务器、数据库管理系统(DBMS)、应用程序、API和所有的组件、运行环境和库。

渗透测试

① 根据前期信息搜集的信息,查看相关组件的版本,看是否使用了不在支持或者过时的组件。一般来说,信息搜集,可通过http返回头、相关错误信息、应用指纹、端口探测(Nmap)等手段搜集。

② Nmap等工具也可以用于获取操作系统版本信息

③ 通过CVE,CNVD等平台可以获取当前组件版本是否存在漏洞

风险评级:按照存在漏洞的组件的安全风险值判定当前风险。

安全建议

① 移除不使用的依赖、不需要的功能、组件、文件和文档;

② 仅从官方渠道安全的获取组件(尽量保证是最新版本),并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;

③ 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。

详细学习可参考:

0条大神的评论

发表评论