螣龙安科笔记:内网渗透测试(三)

经过前两篇文章的介绍,相信大家对于内网渗透测试的一些基础知识已经有了足够的了解,这篇文章就将带你一起来了解内网渗透测试的全过程。

(四)内网渗透流程

1.渗透工具准备

1.1扫描工具

1.1.1主动扫描工具

  • web应用漏洞扫描器:用于web项目的安全测试工具,扫描网站所有url,自动测试是否存在各种类型的漏洞。如:AWVS、appscan
  • 综合漏洞扫描器:集合了多种功能的漏洞扫描器。如Fux iscanner,具有如下功能:漏洞检测和管理,验证测试程序,IT资产发现和管理,端口扫描器,子域扫描器,Acunetix扫描仪集成Acunetix API)
  • 巡航扫描系统:巡航扫描系统可以通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。如巡风。
  • 系统和应用层漏洞的扫描器:提供完整的电脑漏洞扫描服务, 并随时更新其漏洞数据库。如Nessus。
  • 自动化sql注入工具:简单来说,这就是一个sql注入攻击的工具。如sqlmap。
  • 端口扫描器:用于探测服务器或主机开放端口情况的工具。如masscan(号称最快的端口扫描器)。

1.1.2被动扫描工具

被动漏洞扫描工具:被动分析是指一个漏洞扫描工具在扫描漏洞时不会对现有系统产生任何破坏。

1.2渗透框架

主要有pocsuite、溯光等漏洞利用和测试框架。

1.3信息收集

主要有wydomain、bit4woo等工具,扫描端口,收集子域。

1.4信息泄露

利用lijiejie、svnhack等平台来利用泄露的信息来利用漏洞。

2.代码审计

2.1PHP

2.1.1SQL注入

未加过滤拼接SQL、宽字节注入、注意二次注入。

2.1.2逻辑漏洞

安装相关:

  • 安装后未自动删除目录或加锁导致可再次重装
  • 通过文件删除或移动漏洞操作锁文件,来达到重装
  • 安装展示页被加锁,但实际上处理安装业务的文件没有则可绕过重装
  • 加了锁,但只是js跳转,并没有exit或die结束代码,导致可绕过重装

2.2JAVA

2.2.1反序列化

搜索readObject-->使用Serializable 接口-->使用反序列化工具类-->使用 alibaba  fastjson-->shiro rememberMe-->XSTREAM-->Jackson -->dubbo

2.2.2文件读取

使用 File 相关工具类,使用 URLConnection 没有指明协议时可用 file://etc/passwd。

2.2.3命令执行

使用 Runtime.exec-->使用 ProcessBuilder-->使用命令行相关工具类-->Spel \ ognl 表达式可控

2.2.4SQL注入

ORM框架:Mybatis 使用 $-->hibernate 拼接查询

jdbc:使用 statement 类

3.信息收集

3.1业务相关

  • github泄露
  • 网盘泄露
  • 敏感路径扫描
  • QQ群文件泄露

3.2域名相关

3.2.1域名商

  • 找域名商漏洞,越权影响目标域名
  • 欺骗域名商客服,影响目标域名
  • 社工账号,篡改解析地址

3.2.2DNS

  • 渗透DNS服务器,和社工DNS服务商
  • DNS域传送漏洞
  • 子域名接管漏洞

3.2.3CDN

  • censys.io 等网络空间引擎查找关键字
  • SSRF漏洞
  • 服务器信息泄露
  • 探测子域名IP
  • cloudflare(HatCloud)
  • 看邮件发送者源IP
  • APP客户端
  • DOS CDN可能会成回源模式

3.2.4WHOIS

  • 注册者邮箱
  • 手机号
  • 地址
  • 注册者名称
  • DNS

3.2.5子域名

 

  • 搜索引擎
  • 暴力破解
  • 网页爬虫
  • DNS查找

3.3服务器主机

3.3.1端口

nmap/zenmap:nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。

3.3.2系统识别

​​​​​​​

  • nmap-O
  • 大小写敏感
  • TTL:TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。
  • banner
  • 信息泄露
  • 特殊端口 如(22 / 139 / 445 / 1433 / 3389)
  • HOSTNAME

3.3.3相关资产

同服网站   备案反查

3.3.4C段业务

可能会有其他相关业务,如交换机、机房后台、监控系统等

3.3.5指纹识别

  • 特有文件MD5:一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
  • 包含字符
  • cookie:是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
  • 响应头

4.Bypass

4.1Upload

4.1.1操作系统特性

  • 在shell.php后加上%80到%99,系统不识别这个范围内的字符
  • Windows会去除尾部的. shell.php
  • shell.php::$DATA

4.1.2处理方法

4.1.2.1处理方式

拦截:不会通过应用

过滤:会经过应用,但会在其中的一个环节被替换为一些安全的字符

4.1.2.2检查部分

​​​​​​​

  • 文件扩展名
  • 文件contenttype
  • 文件内容
  • 图片是否完整

4.1.3一些其他绕过办法

  • 双上传
  • 在boundary 加一些字符
  • 在content-disposition中添加字符
  • 超长文件名
  • 修改content-length
  • 文件名中夹杂小语种或非英语字符

4.2XSS

4.2.1常用操作

​​​​​​​

  • 大小写绕过
  • DOM XSS无视后端过滤
  • 替换为HTML实体编码
  • AJAX中的响应为JSON可以考虑使用Unicode编码
  • 字符串拼接
  • 字符串反转
  • 利用WEB容器特性

4.2.2限制长度

  • 多段提交 part1:
  • 短域名
  • 短连接 //t.cn/xxxx

4.2.3<>被过滤

在可执行事件标签中或 script内无需绕过

4.3SQL注入的bypass方法

1.添加一个换行符在第一行

GET /login HTTP/1.1

Host: favoritewaf.com

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

2.用小写的方法(Apache)

get /login HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

3.在方法之前写加一个TAB

GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

4.使用绝对URL

GET http://localhost/login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

5.双HOST头

GET /login.php HTTP/1.1
Host: favoritewaf.com
Host: localhost
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

6.小写HOST

GET /login.php HTTP/1.1
host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

7.multipart插入脏数据

Content-Type: multipart/form-data; boundary=x
--x
Content-Disposition:
test1;
--x
test2;
--x--
test3;
name="hello"
world

5.弱点检测

5.1常见漏洞

5.1.1文件操作

5.1.1.1文件上传

  • %00截断
  • 畸形文件名
  • 目录穿越
  • 文件头绕过
  • 修改上传类型 Content-Type
  • 双文件上传
  • 超长截断:长文件名、长Content-Disposition、上传html、htm 可以 XSS
  • 特殊文件:上传html、htm 可以 XSS、swf 可以XSS、pdf 在 chrome 里可以做跳转、cer、asa、jspx、php5、phtml等可能会被当做动态语言解析、.htaccess .user.ini  web.config web.xml  等
  • 无大小和次数限制:无限上传制造垃圾数据堵死硬盘
  • imagemagick命令执行

5.1.1.2文件读取

读取系统敏感文件 如配置文件

5.1.1.3文件包含

可读取文件或代码执行

5.1.1.4文件删除

删除配置文件可破坏网站    删除安装锁可重装

5.1.2代码执行

5.1.2.1表达式

freemarker   OGNL    Spel     jsel    eval

5.1.2.2非表达式

1.php:

assert      

call_user_func() / call_user_func_array()

preg_replace()

create_function()

array_map()

array_filter()

usort() / uasort()

反序列化

php 源文件拼接写入

2.java:

反序列化

远程 jar 加载

反射机制

jsp 源文件拼接写入

5.1.3SSRF

5.1.3.1利用姿势

1.http/s协议:

获取真实IP

内网主机 / 端口探测

攻击redis、memcache等

2.file协议:

读取文件

5.1.3.2绕过

IP换成域名

IP换成10进制

302 跳转

5.1.4无恶意特征的漏洞

1.整数溢出:数字超出限定大小则会为负数。如:在购买商品时填写超长数字,造成溢出,最终乘以金额变为负数

2.并发修改数据(如提现)

3.网站重装

4.未授权访问

5.水平与垂直越权

6.JSONP劫持

7.密码重置

8.点击劫持

5.2通用漏洞

5.2.1WEB

5.2.1.1Java

1.struts2

  • S2-001 ---  WebWork 2.1 (with altSyntax enabled), WebWork 2.2.0 - WebWork 2.2.5, Struts 2.0.0 - Struts 2.0.8
  • S2-003 --- Struts 2.0.0 - Struts 2.0.11.2
  • S2-005 --- Struts 2.0.0 - Struts 2.1.8.1
  • S2-007 --- Struts 2.0.0 - Struts 2.2.3
  • S2-008 --- Struts 2.1.0 - Struts 2.3.1
  • S2-009 --- Struts 2.0.0 - Struts 2.3.1.1
  • S2-012 --- Struts Showcase App 2.0.0 - Struts Showcase App 2.3.13
  • S2-013 --- Struts 2.0.0 - Struts 2.3.14
  • S2-015 --- Struts 2.0.0 - Struts 2.3.14.2
  • S2-016 --- Struts 2.0.0 - Struts 2.3.15
  • S2-019 --- Struts 2.0.0 - Struts 2.3.15.1
  • S2-029 --- Struts 2.0.0 - Struts 2.3.24.1 (except 2.3.20.3)
  • S2-032 --- Struts 2.3.20 - Struts Struts 2.3.28 (except 2.3.20.3 and 2.3.24.3)
  • S2-033 --- Struts 2.3.20 - Struts Struts 2.3.28 (except 2.3.20.3 and 2.3.24.3)
  • S2-037 --- Struts 2.3.20 - Struts Struts 2.3.28.1
  • S2-045 --- Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10
  • S2-046 --- Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10
  • S2-048 --- Struts 2.3.x with Struts 1 plugin and Struts 1 action
  • S2-052 --- Struts 2.1.2 - Struts 2.3.33, Struts 2.5 - Struts 2.5.12
  • S2-053 --- Struts 2.0.1 - Struts 2.3.33, Struts 2.5 - Struts 2.5.10
  • S2-057 --- Struts 2.0.4 - Struts 2.3.34, Struts 2.5.0 - Struts 2.5.16

2.spring

  • Spring-data-commons 代码执行
  • Spring MVC 目录穿越漏洞
  • Spring 视图注入漏洞
  • spring-messaging远程代码执行
  • Spring WebFlow 远程代码执行
  • spring-tx.jar 反序列化
  • spring-security-oauth2 RCE
  • Spring Cloud Config Server 任意文件读取漏洞(CVE-2019-3799)
  • Springboot swagger 控制台未授权
  • Spring Boot Actuator 未授权访问

5.2.1.2PHP

thinkphp:

5.x:多个代码执行

3.x:代码执行    SQL注入

日志泄漏:/App/Runtime/模块名/Log[s]/年_月_日.log

  /Application/Runtime/Log[s]/年_月_日.log

  /Runtime/Log[s]/年_月_日.log

缓存getshell

5.2.2服务器

1.nginx:0.8.* 版本以下有解析漏洞 e.g:1.jpg/.php  1.jpg%00x.php

2.apache:有解析漏洞 e.g:1.php.xx

                   HTTP 2.0 拒绝服务

                   CVE-2017-15715 解析漏洞

3.weblogic:

反序列化:CVE-2015-4852

                  CVE-2016-0638

                  CVE-2016-3510

                  CVE-2017-3248

                  CVE-2018-2628

                  CVE-2018-2893

                  CVE-2018-3252

                  CVE-2018-3191

                  CVE-2018-3245

4.tomcat:CVE-2017-12615 远程代码执行

                 session 注册

                本地提权

5.websphere:Websphere8.5

                        Websphere6-7

                        后台未授权,登录后可部署WAR包

                        SOAP服务有反序列化

                       弱口令:admin / password

5.3常见服务弱点

21/ FTP:

              匿名/暴力破解

              拒绝服务

22/ SSH:暴力破解

23/telnet:  弱口令 / 暴力破解

161/ snmp:弱口令

389/ ladp:

               匿名访问

               ladp注入

443/ ssl:openssl心脏出血

445/ smb:

                win10拒绝服务

               永恒之蓝RCE

875/ rsync:匿名访问

1423/ mssql:暴力破解

1521/ oracle:暴力破解

3306/ mysql:

                    RCE

                    hash破解

                    waf绕过

                    general_log_file getshell

                    提权

3312/ kangle:getshell

3389/ rdp:

                shift 放大镜 输入法绕过 guest用户

               永恒之蓝(ESTEEMAUDIT)

               ms12-020

4848/ glassfish:

               文件读取

               GlassFish2 / admin:admin

               GlassFish3,4 / 如果管理员不设置帐号本地会自动登录,远程访问会提示配置错误

5432/ PostgreSQL:

               RCE

              默认账号postgres

              参考

6082/ varnish :CLI 未授权

6379/ redis:

            ssh publickey

            crontab

            webshell

            反序列化

            开机自启文件夹写bat

7001,7002/ WebLogic:

           默认弱口令:weblogic/weblogic ,weblogic/welcom ,weblogic/welcom1,weblogic1/weblogic

           反序列:CVE-2018-2628

9200,9300/ elasticsearch:

           CVE-2015-1427

           CVE-2018-17246

9043/ WebSphere:

           Websphere8.5

           Websphere6-7

           后台未授权,登录后可部署WAR包

          SOAP服务有反序列化

          弱口令:admin / password

11211/ memcache:

         未授权

         UDP反射

27017,27018/ Mongodb:

         未授权

         注入

         phpMoAdmin RCE

50000/ SAP:SAP命令执行

50070,50030 / hadoop:

         未授权

         命令执行

5.后渗透与持续渗透

5.1权限维持与提升

5.1.1提权

1.Windows:

一般情况:pr 、Churrasco、kelong、IIS6up、mimikatz、第三方cmd、第三方net、vbs、读hash、msf

找未安装补丁的提权漏洞

通过高权应用的RCE 或 LCE提权,如:mssql、Oracle

2.Linux:

通过高权应用

根据内核版本找exp

5.1.2维持

1.信息收集:

       保存用户bash history

       netstat -an 查看端口连接情况

       /etc/passwd /etc/shadow 用户相关信息

       crontab 里的定时任务

       系统变量

        lastlog & last  & who /var/log/wtmp 分析登录频次

        用户根目录的文件

        /etc/hosts 中的映射

        /.ssh/

        查看数据库SQL日志

        查看WEB服务运行日志

2.后门:

       shift 后门

       Windows $ 隐藏用户

       开机自启执行后门

       替换带有后门的敏感程序 如:ssh / mstsc

       注册表

       dll 劫持

       开启代理

5.2持续渗透和一些技巧

5.2.1得到子服务器权限后

1.探测内网存活主机/服务的指纹信息

2.ARP劫持流量

3.找到该服务器与其他服务器的关联(如:已得到redis服务器权限  web服务器会从redis中取出数据反序列化 则可以篡改redis中的数据以获取web服务器权限)

5.2.2得到域名解析权后

指向到反代至目标的服务器,记录GET POST请求日志,分析特殊URL和登录后台的POST 请求

5.2.3找到XSS后

1.如果是社交类网站,尝试寻找CSRF制造蠕虫

2.通过其他社交网站的JSONP漏洞,探测管理员的个人信息

3.打到管理员cookie后通过附带 Cookie 不断请求后台以保持会话不被销毁

4.根据浏览器、flash、等情况进行浏览器攻击。如:执行代码、种rootkit

5.canvas 截图页面

5.2.4得到邮箱地址后

1.独立邮件系统可找公开漏洞攻击

2.发送测试邮件探测对方使用邮箱系统:通过挖掘相关邮箱系统漏洞进行攻击

3.找到服务器、CDN、域名、DNS等服务商,伪造钓鱼邮件欺骗管理员登录

4.发送含有后门的附件(如:pdf、Excel、word、rar的代码执行漏洞)

5.通过社工库或搜索引擎人肉搜索得出密码后尝试登陆邮箱

5.2.5得到邮箱权限后

1.分析/劫持邮箱收信

2.个人邮箱:

搜搜:password、找回密码、重置密码、忘记密码等关键字

找服务器、CDN、域名、DNS等服务商的邮件,如果无法登陆尝试重置等操作

找到有关地理位置软件的邮件

淘宝(收货地址)

京东(收货地址)

支付宝(收货地址)

Apple账号(可定位)

各手机大厂(手机定位)

找发件箱中的原始图片(找exif的GPS定位)

3.企业邮箱:

找VPN相关邮件 可内网渗透

找OA,ERP,SCM,CRM,BRP,OMS,WMS相关系统邮件

找Git,SVN,自动化测试相关邮件

搜索关键字:password、密码、192、172、10. 等关键字

5.2.6引入了外部资源

1.搞定外部网站

2.如果是JS 可以考虑XSS攻击

3.IMG LINK 可以401认证钓鱼

4.IFRAME bgsound EMBED source object等可以挂可执行文件或跳转钓鱼页

5.2.7找后台

1.一般在后台添加友联时会展示logo图片,如果可以填写远程URL 可以尝试和站长沟通交换友联,添加成功后,对方则会发起一个refer为后台的请求到你的LOGO

2.收集网站名简写、英文名、邮箱前缀等 于 admin、manage、system、login等常见单词组合请求

3.IIS 短文件名漏洞

4.Windows 下的 >> 特性

5.找列目录漏洞

6.XSS

7.收集子域名资产及其C段端口

8.二级域名 如:admin.xxx.com

9.google fofa censys等引擎搜索关键字

10.爬虫爬取所有链接 提取出目录部分 按目录层级穷举

5.2.8绕过验证码

1.只请求一次验证码,然后用同样的验证码暴力破解

2.知道验证码在session中的参数,找类似 Tomcat example session重置的漏洞填充同一验证码

3.云打码平台识别

4.自己训练OCR识别

5.3社会工程学技巧

5.3.1社交搜索

1.查看注册的网站:0xreg reg007:

   知道账号去已注册的网站找回密码,可以看到打码后的用户名、邮箱、真实姓名等信息,如果运气好没准能从数据包或html中找到未被打码的信息

   可以从这些方面判断用户是否注册过:

找回密码    输入账号,如果进入下一步了则该账号存在

登录           输入账号和密码,如果提示密码错误,则表示该用户已存在

注册           填写账号时一般网站会去检测该账号是否已存在,如果已存在则会提示不可重复注册

2.知道QQ:

  通过QQ邮箱搜索支付宝、淘宝账号

  去腾讯微博搜索

  通过微信搜索

  查看QQ空间:通过说说、留言、日志找到其好友

  知道手机号:搜索QQ、微信、钉钉等社交账号

  在比较火的一些APP和网站上注册或忘记密码来判断是否注册过账号

  查询支付宝账号,尝试输入常见姓氏获取名字

  通过对方的职业、兴趣找到该领域知名度较高的社交网站反查

  根据在QQ空间、朋友圈等动态用百度识图识别照片,在微博、ins、Twitter、fb、百度贴吧搜索相近关键字,按地域、年龄、男女、用户名等筛选

  留意社交动态:发布时间线

  使用什么客户端 iPhone Android还是浏览器

  注意每一条链接  / 图片 / 视频

  从最早发布的动态看起,会有很大收获

  一般得到一个账号的密码就相当于得到了其他账号的密码

 一般人不同账号的用户名都是相同或相近的

 一般人的社交账号头像用的都是一样的

5.3.2尝试破解社保、公积金账号:大部分信息可以用来生成密码字典

 

介绍到这里,内网渗透测试的基本流程就介绍完了。总而言之,内网渗透测试是尽可能模拟出内网渗透攻击的真实过程,以此来尽可能避免在实战中遭遇攻击。

在网络安全领域,我们与敌手采取的手段往往都很相似,而真正决定输孰是孰非的是我们与敌手的恶意判断。因而真正的攻与防不在于手段与方式,而在于人心。

 

你可能感兴趣的:(螣龙安科笔记)