经过前两篇文章的介绍,相信大家对于内网渗透测试的一些基础知识已经有了足够的了解,这篇文章就将带你一起来了解内网渗透测试的全过程。
(四)内网渗透流程
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逻辑漏洞
安装相关:
安装后未自动删除目录或加锁导致可再次重装
通过文件删除或移动漏洞操作锁文件,来达到重装
安装展示页被加锁,但实际上处理安装业务的文件没有则可绕过重装
重装时一些内容会被写进php的配置文件里,如果知道格式,可以拼接执行php代码
加了锁,但只是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
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
大小写敏感
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
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.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:匿名访问
1433 / mssql:暴力破解
1521 / oracle:暴力破解
2601 / zebra
3128 / squid
3306 / mysql:
RCE
hash破解
waf绕过
general_log_file getshell
提权
3312 / kangle:getshell
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 / 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尝试破解社保、公积金账号:大部分信息可以用来生成密码字典
介绍到这里,内网渗透测试的基本流程就介绍完了。总而言之,内网渗透测试是尽可能模拟出内网渗透攻击的真实过程,以此来尽可能避免在实战中遭遇攻击。
在网络安全领域,我们与敌手采取的手段往往都很相似,而真正决定输孰是孰非的是我们与敌手的恶意判断。因而真正的攻与防不在于手段与方式,而在于人心。