端口渗透
端口渗透过程中我们需要关注几个问题:
1、 端口的banner信息
2、 端口上运行的服务
3、 常见应用的默认端口
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;
注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;
动态/私有:49152-65535,不为服务分配这些端口;
当然这些端口都可以通过修改来达到欺骗攻击者的目的
端口号 | 端口说明 | 攻击技巧 |
---|---|---|
21/22/69 | ftp/tftp:文件传输协议 | 爆破 嗅探 溢出 后门 |
22 | ssh:远程连接 | 爆破 OpenSSH |
23 | telnet:远程连接 | 爆破 嗅探 |
25 | smtp:邮件服务 | 邮件伪造 |
53 | DNS:域名系统 | DNS区域传输 DNS劫持 DNS缓存投毒 DNS欺骗 深度利用: 利用DNS隧道技术刺透防火墙 |
67/68 | dhcp | 劫持 欺骗 |
110 | pop3 | 爆破 |
139 | samba | 爆破 未授权访问 远程代码执行 |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | ldap | 注入攻击 未授权访问 |
512/513/514 | linux r | 直接使用rlogin |
873 | rsync | 未授权访问 |
1080 | socket | 爆破:进行内网渗透 |
1352 | lotus | 爆破:弱口令 信息泄漏:源代码 |
1433 | mssql | 爆破:使用系统用户登录 注入攻击 |
1521 | oracle | 爆破:TNS 注入攻击 |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权访问 |
3306 | mysql | 爆破 拒绝服务 注入 |
3389 | rdp | 爆破 后门 |
4848 | glassfish | 爆破:控制台弱口令 认证绕过 |
5000 | sybase/DB2 | 爆破 注入 |
5432 | postgresql | 缓冲区溢出 注入攻击 爆破:弱口令 |
5632 | pcanywhere | 拒绝服务 代码执行 |
5900 | vnc | 爆破:弱口令 认证绕过 |
6379 | redis | 未授权访问 爆破:弱口令 |
7001 | weblogic | Java反序列化 控制台弱口令 控制台部署 webshell |
80/443/8080 | web | 常见web攻击 控制台爆破 对应服务器版本漏洞 |
8069 | zabbix | 远程命令执行 |
9090 | websphere控制台 | 爆破:控制台弱口令 Java反序列化 |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcacache | 未授权访问 |
27017 | mongodb | 爆破 未授权访问 |
文件共享服务端口渗透
ftp服务
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter 以及msf中ftp爆破模块;
search type:auxiliary ftp
auxiliary/scanner/ftp/anonymous
auxiliary/scanner/ftp/ftp_login
auxiliary/server/ftp
auxiliary/scanner/tftp/tftpbrute
匿名访问:用户名:anonymous 密码:为空或任意邮箱
用户名:FTP 密码:FTP或为空
用户名:USET 密码:pass
当然还有不需要用户名密码直接访问的,一般出现在局域网中;
嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)
后门技术:在linux的vsftp某一版本中,存在着一个后门程序,只要在用户名后面加上 就会在6200上打开一个监听Shell,我们可以使用telnet直接连接;详细请点击
远程溢出漏洞:6.10.1 IIS FTP远程溢出漏洞,在IIS FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能是攻击者在服务器运行一条非法命令。
跳转攻击:(Bounce Attacks)攻击者发送一个FTP”PORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。(注:此种情况小白并没有遇到过,只是总结一下,欢迎大牛指教)
案例分享:
NFS服务
nfs:网络文件系统,允许网络中的计算机通过TCP/IP网络共享资源。基于Linux系统,配置方面很简单,详细配置请参考案例分享。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!
默认端口:2049
攻击方式:
未授权访问:未限制IP以及用户权限设置错误
案例分享:
Samba服务
Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点;samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。
SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口
默认端口:137(主要用户NetBIOS Name Service;NetBIOS名称服务)、139(NetBIOS Session Service,主要提供samba服务)
攻击方式:
爆破:弱口令(爆破工具采用hydra)hydra -l username -P
PassFile IP smb
爆破出以后
windows \\ip\share(共享目录名)
linux smbclient //192.168.xxx.xxx/test -U student
未授权访问:给予public用户高权限
远程代码执行漏洞:CVE-2015-0240等等
案例分享:
加固:
https://post.smzdm.com/p/akxwkxqk/
LDAP协议
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
默认端口:389
攻击方式:
-
注入攻击
https://www.anquanke.com/post/id/212186
它的攻击手法和SQL注入的原理非常相似,在有漏洞的环境中,这些查询参数没有得到合适的过滤,因而攻击者可以注入任意恶意代码。由于比较简单,我这里就走马观花的方式来过一遍LDAP注入的不同类型。
AND注入
这种情况,应用会构造由”&”操作符和用户引入的的参数组成的正常查询在LDAP目录中搜索,例如:
(&(parameter1=value1)(parameter2=value2))
这里Value1和value2是在LDAP目录中搜索的值,攻击者可以注入代码,维持正确的过滤器结构但能使用查询实现他自己的目标。
比如说,为了验证客户端提供的user/password对,构造如下LDAP过滤器并发送给LDAP服务器:
(&(USER=Uname)(PASSWORD=Pwd))
如果攻击者输入一个有效地用户名,如r00tgrok,然后再这个名字后面注入恰当的语句,password检查就会被绕过。
使得Uname=slisberger)(&)),引入任何字符串作为Pwd值,构造如下查询并发送给服务器:
(&(USER= slisberger)(&)(PASSWORD=Pwd))
OR注入
这种情况,应用会构造由”|”操作符和用户引入的的参数组成的正常查询在LDAP目录中搜索,例如:
(|(parameter1=value1)(parameter2=value2))
这里Value1和value2是在LDAP目录中搜索的值,攻击者可以注入代码,维持正确的过滤器结构但能使用查询实现他自己的目标。
类似的,加入现在用于展示可用资源的查询为:
(|(type=Rsc1)(type=Rsc2))
Rsc1和Rsc2表示系统中不同种类的资源。如果攻击者输入
Rsc=printer)(uid=*)
,则下面的查询被发送给服务器:(|(type=printer)(uid=*))(type=scanner)
这样也会造成注入的产生。
盲注
SQL注入中有盲注,LDAP中也存在这种问题,包括下面介绍到的靶机用到的也是盲注的手法。
假设攻击者可以从服务器响应中推测出什么,尽管应用没有报出错信息,LDAP过滤器中注入的代码却生成了有效的响应或错误。攻击者可以利用这一行为向服务器问正确的或错误的问题。
还是用一个例子来说明。
假设一个Web应用想从一个LDAP目录列出所有可用的Epson打印机,错误信息不会返回,应用发送如下的过滤器:
(&(objectClass=printer)(type=Epson*))
使用这个查询,如果有可用的Epson打印机,其图标就会显示给客户端,否则没有图标出现。如果攻击者进行LDAP盲注入攻击
*)(objectClass=*))(&(objectClass=void
Web应用会构造如下查询:
(&(objectClass=*)(objectClass=*))(&(objectClass=void)(type=Epson*))
仅第一个LDAP过滤器会被处理:
(&(objectClass=*)(objectClass=*))
那么这样就和我们查询的初衷相违背了。
接下来就是这篇文章的重头戏了,我们主要从这个靶机中学到两点:
- 怎么发现LDAP注入漏洞
- 如何利用LDAP注入漏洞
-
允许匿名访问
未对LDAP的访问进行密码验证,导致未授权访问。
这一般是大部分LDAP服务出现此漏洞的主要原因,导致可以使用ldapbrowser直接连接,获取目录内容。
-
爆破弱口令
https://nmap.org/nsedoc/scripts/ldap-brute.html
连接:ADExplorer.exe
漏洞修复 ● 修改ldap的acl,禁止匿名访问。 ● 根据业务设置ldap访问白名单或黑名单;
案例分享:
远程连接服务端口渗透
SSH服务
SSH服务:这个服务基本会出现在我们的Linux服务器,网络设备,安全设备等设备上,而且很多时候这个服务的配置都是默认的;对于SSH服务我们可能使用爆破攻击方式较多。
默认端口:22
攻击方式
爆破:弱口令
漏洞:OpenSSL漏洞
案例分享:
ssh爆破
对手未更改默认密码或者存在其他账户,可以使用Msfconsole中的ssh_login模块去进行弱口令攻击
ssh_login模块可以设定ip段作为目标 Example: 172.16.1.1-172.16.1.10 or 172.16.1-10.102
use auxiliary/scanner/ssh/ssh_login
set rhos
set USER_FILE <用户名文件路径>
set PASS_FILE <密码文件路径>
查看已创建的Sessions
sessions
连接对方的服务器
sessions -i Id
查看flag
cat /flag*
hydra
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh
hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh
hydra -l root -P password.txt 192.168.1.111 ssh
hydra -l user.txt -P pass.txt 10.38.3.1 ssh
Telnet服务
Telnet服务:在SSH服务崛起的今天我们已经很难见到使用telnet的服务器,但是在很多设备上同样还是有这个服务的;比如cisco、华三,深信服等厂商的设备;我就有很多次通过telnet弱口令控制这些设备;
默认端口:23
攻击方式
爆破:弱口令
msf search telnet_login
配置参数RHOSTS目标IP,PASS_FILE 密码字典,USERNAME 用户名,THREADS 线程 配置完后 run 开始爆破
或者
使用hydra
嗅探:此种情况一般发生在局域网;
案例分享:
Windows远程连接
远程桌面连接:作为windows上进行远程连接的端口,很多时候我们在得到系统为windows的shell的时候我们总是希望可以登录3389实际操作对方电脑;这个时候我们一般的情况分为两种。一种是内网,需要先将目标机3389端口反弹到外网;另一种就是外网,我们可以直接访问;当然这两种情况我们利用起来可能需要很苛刻的条件,比如找到登录密码等等;
默认端口:3389
攻击方式:
-
爆破:3389端口爆破工具就有点多了
hydra [目标主机IP] rdp -L [用户名字典] -P[密码字典] -V -F 连接:rdesktop ip
-
3389漏洞攻击:利用ms12-020攻击3389端口,导致服务器关机
VNC服务
VNC:一款优秀的远控工具,常用语类UNIX系统上,简单功能强大;也
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破:弱口令
msf5 > use auxiliary/scanner/vnc/vnc_login
msf5 auxiliary(scanner/vnc/vnc_login) > set RHOSTS 192.168.0.118
msf5 auxiliary(scanner/vnc/vnc_login) > set RPORT 5900
msf5 auxiliary(scanner/vnc/vnc_login) > run
成功以后会到下面这个session
msf auxiliary(vnc_login) > vncviewer 192.168.150.133
或者使用vncviewer连接
认证口令绕过:
拒绝服务攻击:(CVE-2015-5239)
权限提升:(CVE-2013-6886)
案例分享:
Pcanywhere服务
PyAnywhere服务:一款远控工具,有点类似vnc的功能;这个服务在以前很多黑客发的视频里面都有,利用pcanywhere来进行提权;
默认端口:5632
攻击方式:
提权控制服务:
拒绝服务攻击:
代码执行:请参考
案例分享:
黑龙江物价局多处安全漏洞可能导致服务器沦陷(pcAnywhere提权+密码突破)
Web应用服务端口渗透
HTTP服务:对于http服务其实是我们目前这几年比较常见的攻击入口,所以这里会针对http服务进行一个详细的详解;
注:这个板块的所有攻击方式,如果涉及到常规的web漏洞不会提出来,除非是特定的服务器才会产生的漏洞;
IIS服务
默认端口:80/81/443
攻击方式:
IIS PUT写文件:利用IIS漏洞,put方法直接将文件放置到服务器上
短文件名泄漏:这种一般没啥影响
解析漏洞:详细见apache服务
案例分享:
用友软件IIS写权限(PUT)导致可获取webshell控制服务器
Apache/Tomcat/Nginx/Axis2
默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager后台)
HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
解析漏洞:请参考
案例分享:
安卓开发平台存在上传漏洞和Apache解析漏洞,成功获取webshell
WebLogic
默认端口:7001
攻击方式:
爆破:弱口令 用户名密码均一致:system weblogic(密码可能weblogic123) portaladmin guest
Congsole后台部署webshell
Java反序列化
泄漏源代码/列目录:这个太老了,估计网上都没有了吧!
SSRF窥探内网:央视网SSRF可窥探内网
案列分享:
Jboss
默认端口8080;其他端口1098/1099/4444/4445/8080/8009/8083/8093
攻击方式:
爆破:弱口令(爆破jboss系统后台)
远程代码执行:由于配置不当造成
Java反序列化:
案例分享
Websphere
默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
攻击方式:
爆破:弱口令(控制台)
任意文件泄漏:(CVE-2014-0823)
Java反序列化
案例分享:
中国电信某通用型业务系统(Websphere)GetShell漏洞
GlassFish
默认端口:http 8080;IIOP 3700;控制台4848
攻击方式:
爆破:弱口令(对于控制台)
任意文件读取:
认证绕过:
案例分享:
Jenkins
默认端口:8080、8089
攻击方式:
爆破:弱口令(默认管理员)
未授权访问:
反序列化:
案例分享:
Resin
默认端口:8080
攻击方式:
目录遍历
远程文件读取
案例分享:
Jetty
默认端口:8080
攻击方式:
Lotus
影响的都是一些大型的企业,特别需要注意,经过以前的测试发现弱口令这个问题经常都存在,可能是很多管理员不知道如何去修改(不要打我)。
默认端口:1352
攻击方式:
爆破:弱口令(admin password)控制台
信息泄露
跨站脚本攻击
案例分享:
中电投集团某系统弱口令直达内网涉及/OA系统/内部邮箱/财务系统/人力资源系统
中国某大型金融机构地方业务弱口令导致数万商户信息泄露&访问Lotus Domino后台
数据库服务端口渗透
针对所有的数据库攻击方式都存在SQL注入,这里先提出来在下面就不一一写了免得大家说我占篇幅;当然不同的数据库注入技巧可能不一样,特别是NoSQL与传统的SQL数据库不太一样。但是这不是本文需要介绍的重点,后面有时间会写一篇不同数据库的渗透技巧。
MySQL数据库
默认端口:3306
攻击方式:
爆破:弱口令
身份认证漏洞:CVE-2012-2122
拒绝服务攻击:利用sql语句是服务器进行死循环打死服务器
Phpmyadmin万能密码绕过:用户名:‘localhost’@’@” 密码任意
案例分享:
MSSQL数据库
默认端口:1433(Server 数据库服务)、1434(Monitor 数据库监控)
攻击方式:
爆破:弱口令/使用系统用户
案例分享:
从攻击MSSQL到提权: 使用msf针对mssql的一次完整渗透
Oracle数据库
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)
攻击方式:
爆破:弱口令
注入攻击;
漏洞攻击;
案例分享:
PostgreSQL数据库
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括我们kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术 大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
默认端口:5432
攻击方式:
爆破:弱口令:postgres postgres
缓冲区溢出:CVE-2014-2669
案例分享:
MongoDB数据库
MongoDB:NoSQL数据库;攻击方法与其他数据库类似;关于它的安全讲解:请参考
默认端口:27017
攻击方式:
爆破:弱口令
未授权访问;github有攻击代码;请点击
案例分享:
Redis数据库
redis:是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。Exp:https://yunpan.cn/cYjzHxawFpyVt 访问密码 e547
默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
案例分享:
SysBase数据库
默认端口:服务端口5000;监听端口4100;备份端口:4200
攻击方式:
爆破:弱口令
命令注入:
案例分享:
DB2数据库
默认端口:5000
攻击方式:
安全限制绕过:成功后可执行未授权操作(CVE-2015-1922)
案例分享:
总结一下:对于数据库,我们得知端口很多时候可以帮助我们去渗透,比如得知mysql的 数据库,我们就可以使用SQL注入进行mof、udf等方式提权;如果是mssql我们就可以使用xp_cmdshell来进行提权;如果是其它的数据 库,我们也可以采用对应的方式;比如各大数据库对应它们的默认口令,版本对应的漏洞!
顺便提一下:很多时候银行企业采用的都是oracle、db2等大型数据库;
邮件服务端口渗透
SMTP协议
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
爆破:弱口令
未授权访问
案例分享:
POP3协议
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令
未授权访问;
案例分享:
中国联通沃邮箱等部分Android客户端免密码登陆(可获取任意联通用户pop3密码)
中航信邮箱密码泄漏及VPN账号和大量邮箱弱口令导致可内网漫游拿到域控
IMAP协议
默认端口:143(imap)、993(imaps)
攻击方式:
爆破:弱口令
配置不当
案例分享:
网络常见协议端口渗透
DNS服务
默认端口:53
攻击方式:
区域传输漏洞
见2中的总结
案例分享:
全球Top1000Websites中存在DNS区域传送漏洞的网站列表
DHCP服务
默认端口:67&68、546(DHCP Failover做双机热备的)
攻击方式:
DHCP劫持;
见2中总结
案例分享:
SNMP协议
默认端口:161
攻击方式:
爆破:弱口令
案例分享:
其他端口渗透
Hadoop文件服务
默认端口:请参考
案例分享:
Zookeeper服务
zookeeper:分布式的,开放源码的分布式应用程序协调服务;提供功能包括:配置维护、域名服务、分布式同步、组服务等。详情请参考百度百科
默认端口:2181
攻击方式:
未授权访问;
案例分享:
网上关于这方面的案例暂时不多,但是对于大数据逐渐泛滥的今天,这些漏洞未来会在乌云上出现一大波!
Zabbix服务
zabbix:基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。监视各种网络参数,保证服务器系统的安全运营。
默认端口:8069
攻击方式:
远程命令执行:
案例分享:
网易zabbix运维不当,导致任意命令执行。(可提权、可内网渗透)
elasticsearch服务
elasticsearch:请百度(因为我觉得我解释不清楚)
默认端口:9200()、9300()
攻击方式:
未授权访问;
远程命令执行;
文件遍历;
低版本webshell植入;
案例分享:
memcache服务
默认端口:11211
案例分享:
Linux R服务
R服务:TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。
默认端口:512(remote process execution);513(remote login a la telnet);514(cmd)
攻击方式:
使用rlogin直接登录对方系统;
RMI
RMI:我们使用这两个端口很少的原因是因为必须是java,而且rmi穿越防火墙并不好穿越;这里我不会去涉及其他的东西,这里提出RMI只是因为在前段时间的java反序列化中,我们的小伙伴Bird写过一个weblogic利用工具,里面涉及到了RMI的一些东西,在有的时候使用socket不能成功时,我们可以使用RMI方式来进行利用;
默认端口:1090()、1099()
攻击方式:
远程命令执行(java反序列化,调用rmi方式执行命令)
这就是RMI的魅力了!
工具下载:请点我
Rsync服务
Rsync:类UNIX系统下的数据备份工具(remote sync),属于增量备份;关于它的功能,大家自行百度百科吧,其实上面很多大家也看到了说是端口渗透,其实就是端口对应服务的渗透,服务一般出错就在配置或者版本问题上,rsync也不例外。Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。
默认端口:873
攻击方式:
未授权访问;
本地提权:rsync默认以root运行,利用rsync上传一个文件,只要这个文件具有s权限,我们执行我们的攻击脚本就可以具有root权限。详细请参考 和 参考二
案例分享:
Socket代理
默认端口:1080
Socket代理针对代理来说没有什么漏洞,一般只是在渗透过程中作为我们的代理,进入内网,或者渗透域和林的时候有帮助。这里不做过多描述,但是可以尝试爆破一下代理的用户名和密码,万一运气好能登录,不也~~~~
案例分享: