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

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

(四)内网渗透流程

1.渗透工具准备

1.1扫描工具

1.1.1主动扫描工具

web应用漏洞扫描器:用于web项目的安全测试工具,扫描网站所有url,自动测试是否存在各种类型的漏洞。如:AWVSappscan

综合漏洞扫描器:集合了多种功能的漏洞扫描器。如Fux iscanner,具有如下功能:漏洞检测和管理,验证测试程序,IT资产发现和管理,端口扫描器,子域扫描器,Acunetix扫描仪集成Acunetix API

巡航扫描系统:巡航扫描系统可以通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。如巡风。

系统和应用层漏洞的扫描器:提供完整的电脑漏洞扫描服务, 并随时更新其漏洞数据库。如Nessus

自动化sql注入工具:简单来说,这就是一个sql注入攻击的工具。如sqlmap

端口扫描器:用于探测服务器或主机开放端口情况的工具。如masscan(号称最快的端口扫描器)。

1.1.2被动扫描工具

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

1.2渗透框架

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

1.3信息收集

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

1.4信息泄露

利用lijiejiesvnhack等平台来利用泄露的信息来利用漏洞。

2.代码审计

2.1PHP

2.1.1SQL注入

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

2.1.2逻辑漏洞

安装相关:

 安装后未自动删除目录或加锁导致可再次重装

 通过文件删除或移动漏洞操作锁文件,来达到重装

 安装展示页被加锁,但实际上处理安装业务的文件没有则可绕过重装

 重装时一些内容会被写进php的配置文件里,如果知道格式,可以拼接执行php代码

 加了锁,但只是js跳转,并没有exitdie 结束代码,导致可绕过重装

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

3.2.3.1找真实IP地址

 censys.io 等网络空间引擎查找关键字

 SSRF漏洞

 服务器信息泄露

 探测子域名IP

 cloudflare(HatCloud)

 看邮件发送者源IP

 APP客户端

 DOS CDN可能会成回源模式

3.2.3.2破解CDN服务账号

3.2.4WHOIS

 注册者邮箱

 手机号

 地址

 注册者名称

 DNS

3.2.5子域名

 搜索引擎

 暴力破解

 网页爬虫

 DNS查找

3.3服务器主机

3.3.1端口

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

3.3.2系统识别

 nmap-O

 大小写敏感

 TTLTTLTime 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、上传htmlhtm 可以 XSS

 特殊文件:上传htmlhtm 可以 XSSswf 可以XSSpdf chrome 里可以做跳转、cerasajspxphp5phtml等可能会被当做动态语言解析、.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

内网主机 / 端口探测

攻击redismemcache

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

1.thinkphp

5.x:多个代码执行

3.x:代码执行    SQL注入

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

  /Application/Runtime/Log[s]/__.log

  /Runtime/Log[s]/__.log

缓存getshell

2.yii

3.Laravel

5.2.2服务器

1.nginx0.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.tomcatCVE-2017-12615 远程代码执行

 session 注册

 本地提权

5.websphereWebsphere8.5

        Websphere6-7

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

        SOAP服务有反序列化

        弱口令:admin / password

5.3常见服务弱点

 21 / FTP

匿名/暴力破解

拒绝服务

 22 / SSH:暴力破解

 23 / telnet

弱口令 / 暴力破解

 161 / snmp:弱口令

 389 / ladp

匿名访问

ladp注入

 443 / sslopenssl心脏出血

 445 / smb

                win10拒绝服务

永恒之蓝RCE

 875 / rsync:匿名访问

 1433 / mssql:暴力破解

 1521 / oracle:暴力破解

 2601 / zebra

 3128 / squid

 3306 / mysql

RCE

hash破解

waf绕过

general_log_file getshell

提权

 3312 / kanglegetshell

 3389 / rdp

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

永恒之蓝(ESTEEMAUDIT)

ms12-020

 4440 / rundeck

 4848 / glassfish

文件读取

GlassFish2 / admin:admin

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

 5432 / PostgreSQL

RCE

默认账号postgres

参考

 5672,15672,4369,25672  / RabbitMQ

 5900 / VNC

 5984 / CouchDB

 6082 / varnish CLI 未授权

 6379 / redis

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 / SAPSAP命令执行

 50070,50030 / hadoop

未授权

命令执行

5.后渗透与持续渗透

5.1权限维持与提升

5.1.1提权

1.Windows

一般情况:pr ChurrascokelongIIS6upmimikatz、第三方cmd、第三方netvbs、读hashmsf

找未安装补丁的提权漏洞

通过高权应用的RCE LCE提权,如:mssqlOracle

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.发送含有后门的附件(如:pdfExcelwordrar的代码执行漏洞)

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

5.2.5得到邮箱权限后

1.分析/劫持邮箱收信

2.个人邮箱:

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

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

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

淘宝(收货地址)

京东(收货地址)

支付宝(收货地址)

Apple账号(可定位)

各手机大厂(手机定位)

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

3.企业邮箱:

VPN相关邮件 可内网渗透

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

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

搜索关键字:password、密码、19217210. 等关键字

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.收集网站名简写、英文名、邮箱前缀等 于 adminmanagesystemlogin等常见单词组合请求

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空间、朋友圈等动态用百度识图识别照片,在微博、insTwitterfb、百度贴吧搜索相近关键字,按地域、年龄、男女、用户名等筛选

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

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

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

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

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

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

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

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

 

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

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

你可能感兴趣的:(螣龙安科笔记:内网渗透测试(三))