越来越多的网站以及app手机端客户注重安全渗透测试服务,上线前必须要对平台进行全面的预渗透测试找出安全漏洞以及BUG,很多客户找我们,做渗透测试服务的时候对具体的流程可能不太了解,下面我们把具体的渗透测试方法流程大体写的全面一点给大家呈现。
渗透测试
一、渗透流程
信息收集
漏洞验证/漏洞攻击
提权,权限维持
日志清理
信息收集
一般先运行端口扫描和漏洞扫描获取可以利用的漏洞。多利用搜索引擎
端口扫描
有授权的情况下直接使用nmap、masscan、自己写py脚本等端口扫描工具直接获取开放的端口和获取服务端的banner信息。
漏洞扫描
使用北极熊扫描器、Nessus、awvs等漏扫工具直接扫描目标,可以直接看到存活主机和主机的漏洞情况。
二、漏洞攻击
2.1Web应用
可以直接寻找注入、上传、代码执行、文件包含、跨站脚本、等漏洞,来进行攻击。一般可以使用AWVS直接扫描常见漏洞。
2.1.2Web中间件
(1)Tomcat
Tomcat是ApacheJakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(JavaServerWebDevelopmentKit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。
端口号:8080
攻击方法:
默认口令、弱口令,爆破,tomcat5默认有两个角色:tomcat和role1。其中账号both、tomcat、role1的默认密码都是tomcat。弱口令一般存在5以下的版本中。
在管理后台部署war后门文件
远程代码执行漏洞
(2)Jboss
是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个Web操作系统(operatingsystemforweb),它体现了J2EE规范中最新的技术。
端口:8080
攻击方法:
弱口令,爆破
管理后台部署war后门
反序列化
远程代码执行
参考:
(3)WebLogic
WebLogic是美国Oracle公司出品的一个ApplicationServer,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和JavaEnterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
端口:7001,7002
攻击方法:
弱口令、爆破,弱密码一般为weblogic/Oracle@123orweblogic
管理后台部署war后门
SSRF
反序列化漏洞
weblogic_uac
(4)WebSphere
IBM公司一套典型的电子商务应用开发工具及运行环境。
端口:默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方法:
控制台登录爆破
很多内网websphere的控制台存在弱口令/默认口令,可以使用admin/admin以及webshpere/webshpere这种口令登录。通过该口令登录控制台后,可以部署war包,从而获取到WEBSHELL。
反序列化
任意文件泄露
(5)Glassfish
2.1.3Web框架
(1)Struts2
Struts2是一个优雅的,可扩展的框架,用于创建企业准备的JavaWeb应用程序。出现的漏洞也着实的多每爆一个各大漏洞平台上就会被刷屏。
可利用漏洞
,
,
(2)Spring框架
SpringFramework是一个开源的Java/JavaEE全功能栈(full-stack)的应用程序框架,以开源许可协议的形式发布,也有.NET平台上的移植版本。SpringFramework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
可利用漏洞
CVE-2010-1622
CVE-2018-1274
CVE-2018-1270
CVE-2018-1273
反序列化
目录穿越
2.1.4Web服务器
IIS:Windows的WWW服务器
端口:80
攻击方法:
IIS,开启了WebDAV,可以直接详服务器PUT文件
短文件名枚举漏洞
远程代码执行
提权漏洞
解析漏洞
Apache
端口:80
攻击方法:
解析漏洞
目录遍历
Nginx
端口:80
攻击方法:
解析漏洞
目录遍历
CVE-2016-1247:需要获取主机操作权限,攻击者可通过软链接任意文件来替换日志文件,从而实现提权以获取服务器的root权限。
lighttpd
端口:80
攻击方法:
目录遍历
2.2常见运维系统
渗透测试运维
一般分自动化部署和运维监控相关的的工具。漏洞可以通过搜索引擎搜索,github搜索,ExploitDB搜索,官网上的安全通告获取。内网的通用类应用比较常见的问题是弱口令,如果一个管理员可以登录几个系统,那在这几个系统的账号、密码也基本上是一样的。
2.2.1Gitlab
GitLab是一个利用RubyonRails开发的开源应用程序,实现一个自托管的项目仓库,可通过Web界面进行访问公开的或者私人项目。
可利用漏洞:
任意文件读取漏洞
意用户token泄露漏洞
命令执行漏洞
2.2.2Jenkins
Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大量的测试和部署技术。
可利用漏洞:
远程代码执行漏洞
反序列化漏洞
未授权访问漏洞
登录入口爆破
2.2.3Puppet
PuppetEnterprise专门管理基础设施即代码(IAC),在这种类型的IT基础设施配置过程中,系统用代码而不是脚本流程来自动构建、管理和配置。由于它是代码,整个过程易于重复。Puppet有助于更容易控制版本、自动化测试和持续交付,可以更快速地响应问题或错误。
可利用漏洞,很少公开的POC
反序列化
远程命令执行
2.2.4Ansible
Ansible是一种配置和管理工具,面向客户端的软件部署和配置,支持Unix、Linux和Windows。它使用JSON和YAML,而不是IAC,根本不需要节点代理就可以安装。它可以通过OpenStack在内部系统上使用,也可以在亚马逊EC2上使用。
可利用漏洞
远程代码执行
2.2.5Nagios
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
可利用漏洞
代码执行
SQLi
2.2.6Zabbix
Zabbix是一款强大的开源分布式监控系统,能够将SNMP、JMX、ZabbixAgent提供的数据通过WEBGUI的方式进行展示.
可利用漏洞(具体参考ExploitDB):
远程代码执行
SQLi
shell命令注入
认证绕过
默认账户与密码,默认口令admin/zabbix,或者是guest/空
2.2.7Cacit
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
可利用漏洞
任意代码执行
SQLi
登录爆破
默认密码admin/admin
2.2.8Splunk
可利用漏洞
信息泄露
命令注入
服务端请求伪造
参考
ExploitDB搜索
2.3常见Web应用
还有常见邮件应用、CMS应用,在搜索引擎上查找对应的漏洞,利用已知漏洞进行攻击。
2.3.1邮件系统
一部分是使用腾讯企业邮箱、阿里企业邮箱的,很难有可利用的漏洞,另外一种是能独立部署的邮件系统,政企常用的邮箱应用:
Coremail
亿邮
35互联
TurboMail
Exchange
IBMLotus
2.3.2CMS应用
2.4数据库/缓存/消息服务
2.4.1MySQL数据库
默认端口:3306
攻击方法:
爆破:弱口令
身份认证漏洞:CVE-2012-2122
拒绝服务攻击
Phpmyadmin万能密码绕过:用户名:‘localhost’@’@”密码任意
提权
2.4.2MSSQL数据库
默认端口:1433(Server数据库服务)、1434(Monitor数据库监控)
攻击方法:
爆破:弱口令/使用系统用户
注入
2.4.3Oracle数据库
默认端口:1521(数据库端口)、1158(OracleEMCTL端口)、8080(OracleXDB数据库)、210(OracleXDBFTP服务)
攻击方法:
爆破:弱口令
注入攻击;
漏洞攻击;
2.4.4PostgreSQL数据库
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
默认端口:5432
攻击方法:
爆破:弱口令:postgrespostgres
缓冲区溢出:CVE-2014-2669
2.4.5MongoDB数据库
MongoDB,NoSQL数据库;攻击方法与其他数据库类似》
默认端口:27017
攻击方法:
爆破:弱口令
未授权访问;github有攻击代码;请点击
2.4.6Redis数据库
Redis是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。
攻击方法:
爆破:弱口令
未授权访问+配合sshkey提权;
2.4.7SysBase数据库
默认端口:服务端口5000;监听端口4100;备份端口:4200
攻击方法:
爆破:弱口令
命令注入:
参考
2.4.8DB2数据库
默认端口:5000
攻击方法:
安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)
2.5常见服务/协议
2.5.1FTP服务
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter以及msf中ftp爆破模块;
匿名访问:用户名:anonymous密码:为空或任意邮箱
嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)
后门vsftp
远程溢出
跳转攻击
2.5.2NFS服务
NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。如今NFS具备了防止被利用导出文件夹的功能,但遗留系统中的NFS服务配置不当,则仍可能遭到恶意攻击者的利用。
攻击方法
未授权访问
2.5.3Samba服务
Samba是linux和unix系统上实现SMB/CIFS协议的一个免费软件,由服务器和客户端程序构成。而SMB是局域网支持共享文件和打印机的一种通信协议,为局域网内不同计算机之间提供文件及打印机等资源的共享服务。
攻击方法
远程代码执行
弱口令
未授权访问(public)
2.5.4SSH服务
SSH是协议,通常使用OpenSSH软件实现协议应用。SSH为SecureShell的缩写,由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
端口:22
攻击方法:
爆破
后门
漏洞:28退格漏洞、OpenSSL漏洞
2.5.5Telnet服务
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在終端使用者的电脑上使用telnet程序,用它连接到服务器。終端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。
默认端口:21
攻击方法:
爆破
嗅探
2.5.6Windows远程连接
默认端口:3389
攻击方法
爆破
Shift粘滞键后门:5次shift后门
利用ms12-020攻击3389端口
2.5.7VNC服务
VNC(VirtualNetworkComputing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的显示屏画面。
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破:弱口令
认证口令绕过:
拒绝服务攻击:(CVE-2015-5239)
权限提升:(CVE-2013-6886)
2.5.8SMTP协议
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
爆破:弱口令
未授权访问
2.5.9POP3协议
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令
未授权访问;
2.5.10DNS服务
默认端口:53
攻击方式:
区域传输漏洞
2.5.11IMAP协议
默认端口:143(imap)、993(imaps)
攻击方式:
爆破:弱口令
配置不当
2.5.12SNMP协议
默认端口:161
攻击方式:
爆破:弱口令
2.5.13DHCP服务
默认端口:6768、546(DHCPFailover做双机热备的)
攻击方式:
DHCP劫持;
2.6云环境
2.6.1VMware
使用VMwarevCloud可将现有数据中心内的虚拟基础架构资源池化,并将其作为基于目录的服务交付。通过与云计算基础架构的最佳平台VMwarevSphere配合使用,VMwarevCloudDirector可为客户提供构建安全的私有云,从而改变IT部门交付和管理基础架构服务以及用户访问和使用这些服务的方式。一般组织中很多独立安装的Esxi形式的私有云,或独立部署的虚拟化系统。
端口(很多)
漏洞
主机逃逸
CVE-2017-5638
参考:
2.6.2OpenStack
OpenStack是基础设施即服务(IaaS)软件,让任何人都可以自行创建和提供云计算服务。此外,OpenStack也用作创建防火墙内的“私有云”(PrivateCloud),提供机构或企业内各部门共享资源。
漏洞,有漏洞但是POC基本没有。检查时候可以参考安全的配置实践。
权限绕过漏洞
信息泄露
代码执行漏洞
参考:
2.6.3Docker
Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制[1]。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(namespace),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、内存、blockI/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd–nspawn提供界面的基础上,开始包括libcontainer函数库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施。
安全问题(很少有漏洞的POC,安全检查也是基于最佳实践和官方安全建议进行):
安全绕过漏洞
和DockerEngine权限许可和访问控制漏洞
安全绕过漏洞
目录遍历漏洞
权限许可和访问控制漏洞
权限许可和访问控制漏洞
和docker-py代码注入漏洞
内核漏洞(Kernelexploits)容器是基于内核的虚拟化,主机(host)和主机上的所有容器共享一套内核。如果某个容器的操作造成了内核崩溃,那么反过来整台机器上的容器都会受到影响。
拒绝服务攻击(Denial-of-serviceattacks)所有的容器都共享了内核资源,如果一个容器独占了某一个资源(内存、CPU、各种ID),可能会造成其他容器因为资源匮乏无法工作(形成DoS攻击)。
容器突破(Containerbreakouts)Linux的namespace机制是容器的核心之一,它允许容器内部拥有一个PID=1的进程而在容器外部这个进程号又是不一样的(比如1234)。现在问题在于如果一个PID=1的进程突破了namespace的限制,那么他将会在主机上获得root权限。
有毒镜像(Poisonedimages)主要是考虑到镜像本身的安全性,没太多好说的。
2.7大数据
2.7.1Elsaticsearch
Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch基于Lucene开发,现在是使用最广的开源搜索引擎之一,Wikipedia、StackOverflow、GitHub等都基于Elasticsearch来构建他们的搜索引擎。
默认端口:9200()、9300()
攻击方法:
未授权访问;
远程命令执行;
文件遍历;
低版本webshell植入;
2.7.2hadoop
2.7.3Hive
Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作。
2.7.4Sqoop
ApacheSqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在Sqoop的帮助下,轻松地把关系型数据库的数据导入到Hadoop与其相关的系统(如HBase和Hive)中;同时也可以把数据从Hadoop系统里抽取并导出到关系型数据库里。除了这些主要的功能外,Sqoop也提供了一些诸如查看数据库表等实用的小工具。
2.7.5HBase
HBase建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于NoSQL和RDBMS之间,仅能通过行键(rowkey)和行键序列来检索数据,仅支持单行事务(可通过Hive支持来实现多表联合等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与Hadoop一样,HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
2.7.6Spark
Spark是UCBerkeleyAMPlab所开源的类HadoopMapReduce的通用的并行计算框架,Spark基于mapreduce算法实现的分布式计算,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS。参考:
3.1提权
SecWiki总结了:
3.2建立后门/端口转发
端口转发及代理类工具
LCX:windows下面的端口转发软件。
sockscap:主要针对windows平台的端口转发和代理转发。
proxifier:跨平台的端口转发和代理工具,适用windows,linux,Macos平台,代理转发利器
Rsscoks:*nix平台下的端口转发和代理工具,配合proxychains好用到不行。
Proxychains:*nix平台下老牌的socks代理工具,一般的系统都会自带,谁用谁知道。
sshproxy:通过ssh做端口代理和转发,一般*nix系统都自带。
netcat:socat,hping,在很多情况下可以做端口转发和数据代理转发。
metasploit:metasploit的后渗透模块中有不少代理模块和端口转发模块。
在中转服务器上下载端口转发工具(加密压缩):
能连接互联网下载
通过mstsc的磁盘加载
通过入口服务器中转
通过远程控制软件上传
3.3传输文件
3.3.1文件打包
关于打包
Rar文件打包,压缩d:\data\目录下所有2013-01-01后修改的doc文件,100M/包密码为Pass,-x为排除选项
–r––ta200–hpPass–n*.doc–x*.exed:\data\
7z加密,压缩d:\data下所有文件,密码为Pass,分卷100M/包
7:\:\data-v100m
Linux用tar打包文件是可以加密码,要跟openssl结合使用。
tar-zcvf-pma|openssldes3-salt-kpassword|ddof=
使用tar对加密文件解压:
ddif=|openssldes3-d-kpassword|tarzxf-
#3.4.2文件传输几个思路
使用端口转发直接传送数据;
搭建FTP、HTTP协议;
上传到云端再下载;
3.4制作后门/木马程序
一般用Matisploit的msfvenom
在做日志清理前需要了解以下的内容:
攻击和入侵很难完全删除痕迹,没有日志记录本身就是一种入侵特征;
删除或清理入侵系统的本地日志不代表删除了痕迹,在网络设备、安全设备、集中化日志系统上仍然留存记录;
留存的后门本身会有攻击者的信息;
使用的代理或跳板可能会被反向入侵;
在操作前检查是否有管理员登录;
删除上传的工具,使用磁盘覆写的功能删除;
Windows日志类型
web日志:IIS、Apache以及其它web日志
操作日志:3389登录列表、最近访问文件、IE等浏览器访问日志、文件访问日志
登陆日志:系统应用日志-安全日志等
攻击前和状态还原,尽量保持一致
Linux操作日志
Linux历史操作
unsetHISTORYHISTFILEHISTSAVEHISTZONEHISTORYHISTLOG;exportHISTFILE=/dev/null;
SSHD登陆记录删除~/.ssh/known_hosts中记录
修改文件时间戳touch–r原文件要修改文件
删除临时使用文件,尤其是tmp目录
logtamper
渗透测试工具
1.内网使用工具渗透的一些原则
使用适合自己的工具,工具没必要收集太多,够用就行;
能根据实际情况编写适用的工具;
不能确保安全的工具均要在虚拟机中运行(很多捆绑病毒木马);
做安全检查的话,尽量使用GitHub上开源的工具。
工具介绍个人习惯使用kali自带工具,特定POC先从Github上搜索。
渗透注意事项
检查内网监控防范系统
谨慎使用ARP软件和大面积扫描软件
使用目标网络中无空闲机器,作为打包对象
使用临时机器打包、数据传输,不要使用已控机器,可利用wmi脚本或wmic远程操作渗透注意事项
禁止使用
打包时避开用户工作时间
控制卷包大小100M
选择用户常用压缩软件
错峰下载数据
控制传输流量
清除所有操作日志
登录主机前先看看管理员是否在
渗透测试服务需要很多的实战经验来保障网站的安全稳定运行防止被攻击被篡改等危险行为避免给客户带来更多的损失,把安全风险降到最低,如果对此有渗透需求可以联系专业的网站安全公司来进行全面的渗透服务检测。
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。