内网安全
提起网络安全,人们自然就会想到病毒破坏和黑客攻击,其实不然。常规安全防御理念往往局限在网关级别、网络边界(防火墙、漏洞扫描、防病毒、IDS)等方面的防御,重要的安全设施大致集中于机房或网络入口处,在这些设备的严密监控下,来自网络外部的安全威胁大大减小。相反,来自网络内部的计算机客户端的安全威胁却是众多安全管理人员所普遍反映的问题。
一、内网安全检查/渗透介绍
攻击思路
有2种思路:
攻击外网服务器,获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板,攻击内网其他服务器,最后获得敏感数据,并将数据传递到攻击者,看情况安装长期后门,实现长期控制和获得敏感数据的方式;
攻击办公网的系统、办公网电脑、办公网无线等方式,一般是采用社工,实现控制办公电脑,再用获得的办公网数据,可能是内网的各种登录账号和密码,再获取办公网或者生产网的有用数据。
一般内网安全检查使用第一种思路,实际的攻击2种思路结合实现。
敏感资料/数据/信息
高管/系统管理员/财务/人事/业务人员的个人电脑
文件服务器/共享服务器
邮件服务器
OA服务器
数据库服务器
攻击过程
按照第一种思路,个人认为可以分为4个阶段:
信息收集
漏洞验证/漏洞攻击
后渗透
日志清理
第二种思路,社工的比重更大一些,本篇不多做介绍。
二、信息收集
该阶段识别内网存活的主机 IP, 运行端口扫描和漏洞扫描获取可以利用的漏洞
主机发现
使用端口扫描工具可以实现主机发现的功能,但也有些动作小的主机发现工具(Kali),可以有效的发现存活主机。自己写个 ping 的循环脚本也可以。
不受限的测试直接端口扫描了。
端口扫描
有授权的情况下直接使用 nmap 、masscan 等端口扫描工具直接获取开放的端口信息。
作为跳板机可以使用 Metasploit 做端口扫描,也可以在跳板主机上上传端口扫描工具,使用工具扫描。
入侵到服务器上也可以根据服务器的环境使用自定义的端口扫描脚本扫描端口。
python 3 的端口扫描脚本
# This runs on Python 3
importsocket, threading
defTCP_connect(ip, port_number, delay, output):
TCPsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
TCPsock.settimeout(delay)
try:
TCPsock.connect((ip, port_number))
output[port_number] = 'Listening'
except:
output[port_number] = ''
defscan_ports(host_ip, delay):
threads = [] # To run TCP_connect concurrently
output = {} # For printing purposes
# Spawning threads to scan ports
fori inrange( 10000):
t = threading.Thread(target=TCP_connect, args=(host_ip, i, delay, output))
threads.append(t)
# Starting threads
fori inrange( 10000):
threads[i].start()
# Locking the until all threads complete
fori inrange( 10000):
threads[i].join()
# Printing listening ports from small to large
fori inrange( 10000):
ifoutput[i] == 'Listening':
print(str(i) + ': '+ output[i])
defmain():
host_ip = input( "Enter host IP: ")
delay = int(input( "How many seconds the socket is going to wait until timeout: "))
scan_ports(host_ip, delay)
if__name__ == "__main__":
main()
有个使用 Python 端口扫描的介绍
https://thief.one/2018/05/17/1/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
Windows 下基于 Powershell 的端口扫描脚本。
https://github.com/BornToBeRoot/PowerShell_IPv4PortScanner/tree/master/s
发现端口后使用客户端连接工具或者 nc 连接,获取服务端的 banner 信息。
漏洞扫描
有授权的情况下,使用绿盟极光、Nessus、Nexpose 等漏扫工具直接扫描目标,可以直接看到存活主机和主机的漏洞情况。
识别内网环境
获取目标的主机存活信息和端口开放信息后,就可以尝试分析目标的网络结构,安全防御策略。按照办公网和生产网分别说一下:
1.办公网
按照系统区分:
OA系统
邮件系统
财务系统
文件共享系统
域控
企业版杀毒系统
上网行为管理系统
内部应用监控系统
按照网络区分:
管理网段
内部系统网段
按照部门区分的网段
按照设备区分:
个人电脑
内网服务器
网络设备
安全设备
办公网的安全防护水平一般较差(相对),能绕过杀毒软件基本上就畅通无阻了,利用信任关系容易扩大攻击面,获取数据也比生产网简单。
2.生产网
按照系统区分:
业务系统
运维监控系统
安全系统
按照网络区分:
各不同的业务网段
运维监控网段
安全管理网段
根据目标开展的不同业务,对应的服务器可能存在不同的网段上,分析服务器上运行的服务和进程可以推断目标使用的运维监控管理系统和安全防护系统,可以大概推断出入侵目标的 IT 运维水平和安全防护水平,在接下来的入侵考虑采用什么样的方法。
三、漏洞验证/漏洞攻击
使用端口扫描、漏洞扫描验证扫描目标开放的端口,在对应端口上开放的服务,运行该服务的软件和版本号。
如果只是使用端口扫描,只是发现开放的端口,接着使用 nc 可以获取端口上服务的 banner 信息,获取 banner 信息后需要在漏洞库上查找对应 CVE,后面就是验证漏洞是否存在。如果是使用漏洞扫描工具可以直接获取对应端口上的漏洞,后面也是验证漏洞。
安全检查一般是尽可能的发现所有漏洞,对漏洞的风险进行评估和修复。入侵的话只关注高危远程代码执行和敏感信息泄露漏洞等可以直接利用的漏洞。
漏洞验证可以找对应的 CVE 编号的 POC、EXP,利用代码在 ExploitDB 、seebug上查看或者在 github 上搜索是否有相关的漏洞验证或利用的工具。
Web
1.自定义 Web 应用
从公网直接攻击目标对外的 Web 应用,或者在授权的情况下在内网进行渗透测试,如果是入侵目的可以直接寻找注入、上传、代码执行、文件包含等高危漏洞,尝试获取系统权限,或者直接能拿到敏感数据。
2. Web 中间件
a. Tomcat
Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。
端口号:8080
攻击方法:
默认口令、弱口令,爆破,tomcat5 默认有两个角色:tomcat和role1。其中账号both、tomcat、role1的默认密码都是tomcat。弱口令一般存在5以下的版本中。
在管理后台部署 war 后门文件
远程代码执行漏洞
参考:
https://paper.seebug.org/399/
http://www.freebuf.com/column/159200.html
http://liehu.tass.com.cn/archives/836
http://www.mottoin.com/87173.html
b. Jboss
是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的 J2EE 的一个Web 操作系统(operating system for web),它体现了 J2EE 规范中最新的技术。
端口:8080
攻击方法:
弱口令,爆破
管理后台部署 war 后门
反序列化
远程代码执行
参考:
http://www.vuln.cn/6300
http://mobile.www.cnblogs.com/Safe3/archive/2010/01/08/1642371.html
https://www.zybuluo.com/websec007/note/838374
https://blog.csdn.net/u011215939/article/details/79141624
c. WebLogic
WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
端口:7001,7002
攻击方法:
弱口令、爆破,弱密码一般为weblogic/Oracle@123 or weblogic
管理后台部署 war 后门
SSRF
反序列化漏洞
weblogic_uac
参考:
https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf
https://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cve-2014-4.html
https://fuping.site/2017/06/05/Weblogic-Vulnerability-Verification/
https://bbs.pediy.com/thread-224954.htm
d. WebSphere
IBM公司一套典型的电子商务应用开发工具及运行环境。
端口:默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方法:
控制台登录爆破
很多内网 websphere 的控制台存在弱口令 / 默认口令,可以使用 admin/admin 以及 webshpere/webshpere 这种口令登录。 通过该口令登录控制台后,可以部署 war 包,从而获取到 WEBSHELL 。
反序列化
任意文件泄露
参考:
https://loudong.sjtu.edu.cn/?keyword=WebSphere&serverity=%E9%AB%98%E5%8D%B1
http://www.fr1sh.com/wooyun_1/bug_detail.php?wybug_id=wooyun-2013-036803
https://gist.github.com/metall0id/bb3e9bab2b7caee90cb7
e. Glassfish
3.Web 框架
a. Struts2
Struts2是一个优雅的,可扩展的框架,用于创建企业准备的Java Web应用程序。出现的漏洞也着实的多每爆一个各大漏洞平台上就会被刷屏。
可利用漏洞
S2-046 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
S2-045 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
S2-037 CVE-2016-4438 Struts 2.3.20-2.3.28.1
S2-032 CVE-2016-3081 Struts 2.3.18-2.3.28
S2-020 CVE-2014-0094 Struts 2.0.0-2.3.16
S2-019 CVE-2013-4316 Struts 2.0.0-2.3.15.1
S2-016 CVE-2013-2251 Struts 2.0.0-2.3.15
S2-013 CVE-2013-1966 Struts 2.0.0-2.3.14
S2-009 CVE-2011-3923 Struts 2.0.0-2.3.1.1
S2-005 CVE-2010-1870 Struts 2.0.0-2.1.8.1
参考:
https://github.com/hktalent/myhktools
https://github.com/Lucifer1993/struts-scan
https://github.com/SecureSkyTechnology/study-struts2-s2-054_055-jackson-cve-2017-7525_cve-2017-15095
b. Spring 框架
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本。Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
可利用漏洞
CVE-2010-1622
CVE-2018-1274
CVE-2018-1270
CVE-2018-1273
反序列化
目录穿越
参考
http://www.inbreak.net/archives/377
https://www.secpulse.com/archives/71762.html
http://www.open-open.com/news/view/1225d07
https://xz.aliyun.com/t/2261
https://xz.aliyun.com/t/2252
4. Web 服务器
a.IIS:Windows 的 WWW 服务器
端口:80
攻击方法:
IIS,开启了 WebDAV,可以直接详服务器 PUT 文件
短文件名枚举漏洞
远程代码执行
提权漏洞
解析漏洞
参考:
https://masterxsec.github.io/2017/06/07/IIS-write-%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/
http://www.freebuf.com/articles/4908.html
https://www.anquanke.com/post/id/85811
b.Apache
端口:80
攻击方法:
解析漏洞
目录遍历
c.Nginx
端口:80
攻击方法:
解析漏洞
目录遍历
CVE-2016-1247:需要获取主机操作权限,攻击者可通过软链接任意文件来替换日志文件,从而实现提权以获取服务器的root权限。
参考:
https://www.seebug.org/vuldb/ssvid-92538
d.lighttpd
端口:80
攻击方法:
目录遍历
常见运维系统
一般分自动化部署和运维监控相关的的工具。漏洞可以通过搜索引擎搜索,github搜索,ExploitDB搜索,官网上的安全通告获取。
内网的通用类应用比较常见的问题是弱口令,如果一个管理员可以登录几个系统,那在这几个系统的账号、密码也基本上是一样的。
1. Gitlab
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的项目仓库,可通过Web界面进行访问公开的或者私人项目。
可利用漏洞:
任意文件读取漏洞
意用户 token 泄露漏洞
命令执行漏洞
参考:
http://blog.knownsec.com/2016/11/gitlab-file-read-vulnerability-cve-2016-9086-and-access-all-user-authentication-token/
http://rinige.com/index.php/archives/577/
2. Jenkins
Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大量的测试和部署技术。
可利用漏洞:
远程代码执行漏洞
反序列化漏洞
未授权访问漏洞
登录入口爆破
参考
https://www.cnblogs.com/backlion/p/6813260.html
https://www.anquanke.com/post/id/86018
https://paper.seebug.org/199/
3. Puppet
Puppet Enterprise专门管理基础设施即代码(IAC),在这种类型的IT基础设施配置过程中,系统用代码而不是脚本流程来自动构建、管理和配置。由于它是代码,整个过程易于重复。Puppet有助于更容易控制版本、自动化测试和持续交付,可以更快速地响应问题或错误。
可利用漏洞,很少公开的POC
反序列化
远程命令执行
4. Ansible
Ansible是一种配置和管理工具,面向客户端的软件部署和配置,支持Unix、Linux和Windows。它使 用JSON和YAML,而不是IAC,根本不需要节点代理就可以安装。它可以通过OpenStack在内部系统上使用,也可以在亚马逊EC2上使用。
可利用漏洞
远程代码执行
5.Nagios
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
可利用漏洞
代码执行
SQLi
参考
http://www.bugku.com/thread-87-1-1.html
http://www.mottoin.com/93936.html
6.Zabbix
Zabbix 是一款强大的开源分布式监控系统, 能够将SNMP、JMX、Zabbix Agent提供的数据通过WEB GUI的方式进行展示.
可利用漏洞(具体参考 ExploitDB):
远程代码执行
SQLi
shell 命令注入
认证绕过
默认账户与密码,默认口令 admin/zabbix,或者是guest/空
参考
https://blog.csdn.net/ytuo1223/article/details/45937981
http://vinc.top/2017/04/18/zabbix%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/
http://www.mottoin.com/87570.html
7.Cacit
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
可利用漏洞
任意代码执行
SQLi
登录爆破
默认密码admin/admin
参考:
http://wooyun.jozxing.cc/static/bugs/wooyun-2011-02674.html
8.Splunk
Splunk Enterprise 可以从任何来源监控和分析机器数据,以提供操作智能,从而优化您的 IT、安全和业务绩效。Splunk Enterprise 具有直观的分析功能、机器学习、打包应用程序和开放式 API,是一个灵活的平台,可从重点用例扩展到企业范围的分析主干。
可利用漏洞
信息泄露
命令注入
服务端请求伪造
参考
ExploitDB 搜索
常见 Web 应用
还有常见邮件应用、CMS 应用,在搜索引擎上查找对应的漏洞,利用已知漏洞进行攻击。
1. 邮件系统
一部分是使用腾讯企业邮箱、阿里企业邮箱的,很难有可利用的漏洞,另外一种是能独立部署的邮件系统,政企常用的邮箱应用:
Coremail
亿邮
35互联
TurboMail
Exchange
IBM Lotus
2. CMS 应用
未完待续……
文:白河愁
来源:https://xz.aliyun.com/t/2354#toc-33