web渗透第一步之信息搜集 [ 端口渗透 ]
0x01 扫描前奏
开始正式的说明之前,我们不妨先来简单了解下telnet,这也是到目前为止,个人认为最靠谱的tcp端口扫描工具,没有之一,如果你只是想快速地探测目标的某几个tcp端口是否开放,直接telnet一下,无疑是极好的,也根本犯不着一上来就搂着专业的端口扫描工具去一通乱扫,这样做可以有效避免因某些工具动静儿过大[如,nmap之流…],而造成一些不必要的麻烦,如,触发对方防护报警[后续再搞很可能就要换ip了,tor暂时也不是想象的那么好用],简单使用实例,如下:
0x02 关于端口扫描工具
除了用telnet对某单个机器进行快速常规高危端口探测之外,如果我们想短时间内对多个目标进行批量端口扫描,又该怎么办呢,这里就简单介绍下几款经常会用到的公网端口扫描工具,masscan和zmap,同是基于无状态的的端口扫描,这里顺便科普下什么是无状态,简单来说,普通的端口扫描工具,在发出请求包以后还有一个等待数据回应的过程,然后根据回应的数据包头标志(不同系统平台的协议栈对每种标志的数据包响应状态也是不一样的)以此来判断目标的某个端口或者服务是否开放,用的什么操作系统等等……但这样做,无疑会很大程度上拖慢扫描速度,所以,后来大牛们就搞出了无状态扫描,这也就意味着,当请求包发送以后就被不再管了,也不再等待回应,所有的验证都放在数据包本身,这可能也是它快的主要原因,另外,此类工具为了减少触发目标ids的几率,都采用了分组扫描算法[这种东西其实并不算新奇],让扫描的ip随机分布[尽可能规避目标防护],而不是密麻集中在某个点……好了,简单科普就先到这里,过深的东西,也不是我目前的能力所能企及的,关键我们能把工具用起来就行,接着就来分别介绍下两款工具的一些常规用法,实际渗透中,个人还是更推荐masscan…原因我这里不多嘴了,还是留给大家,自行慢慢体会吧
0x03 masscan [扫描速度取决于你的实际带宽,默认只扫描tcp端口,但也可扫udp]:
masscan 常用选项:
masscan 配置文件格式,如下:
masscan 实例用法[支持同时进行tcp及udp扫描]:
|
|
一句话快速锁定各类敏感服务特征:
0x04 zmap [扫描速度依然是取决于你的实际带宽,不过,在实际测试中准确率要比masscan稍差,同样的目标,masscan能扫出来,zmap却扫不出来,内部具体原因,暂未深究]:
|
|
zmap 扫描配置文件格式说明:
zmap 常规用法 [ 支持tcp,udp,icmp模式扫描,最好不要挂vpn扫,原因暂未知,即使加上–vpn貌似也不太好使 ]:
|
|
0x05 在用上面两款工具时,有些地方还是需要注意下:
0x06 最后再来看下老旧的 nmap,作为一款家喻户晓的探测工具,想必大家对它早已经非常熟悉 [一直为人诟病的是老版本速度非常慢,可能是发包然后等待验证的过程比较复杂吧,不过,新版本确实已经改进不少],一般在linux目标机器中稍微懂一些的运维都会把这个预先装上,这样反而极大的方便了我们:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0x07 如何快速对目标网站的一些基本情况做简要判断,如,对方用的什么web服务器,后端脚本是啥,数据库是啥,系统平台又是啥等……,下面就来简单熟悉一些常见的web架构:
利用httprint 识别web目标服务器指纹 [ 其实是个比较鸡肋的一个小工具,一般看下响应头中的server字段就有了,不过,这里的并不准,很容易被改掉 ]:
|
|
常用的几个相对比较实用的firefox插件,自己在配置渗透环境的时候最好都预先装上:
使用 whatweb [探测到的信息相对比较全面],返回的结果中大致包括以下内容:
如何快速判断目标使用的系统平台:
0x08 一些常见端口渗透用途汇总:
端口号 | 端口服务/协议简要说明 | 关于端口可能的一些渗透用途 |
---|---|---|
tcp 20,21 | ftp 默认的数据和命令传输端口[可明文亦可加密传输] | 允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4) |
tcp 22 | ssh[数据ssl加密传输] | 可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输,等等…常用于linux远程管理… |
tcp 23 | telnet[明文传输] | 爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令,也许会有意想不到的收获 |
tcp 25 | smtp[简单邮件传输协议,多数linux发行版可能会默认开启此服务] | 邮件伪造,vrfy/expn 查询邮件用户信息,可使用smtp-user-enum工具来自动跑 |
tcp/udp 53 | dns[域名解析] | 允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控 |
tcp/udp 69 | tftp[简单文件传输协议,无认证] | 尝试下载目标及其的各类重要配置文件 |
tcp 80-89,443,8440-8450,8080-8089 | web[各种常用的web服务端口] | 各种常用web服务端口,可尝试经典的top n,vpn,owa,webmail,目标oa,各类java控制台,各类服务器web管理面板,各类web中间件漏洞利用,各类web框架漏洞利用等等…… |
tcp 110 | [邮局协议,可明文可密文] | 可尝试爆破,嗅探 |
tcp 137,139,445 | samba[smb实现windows和linux间文件共享,明文] | 可尝试爆破以及smb自身的各种远程执行类漏洞利用,如,ms08-067,ms17-010,嗅探等…… |
tcp 143 | imap[可明文可密文] | 可尝试爆破 |
udp 161 | snmp[明文] | 爆破默认团队字符串,搜集目标内网信息 |
tcp 389 | ldap[轻量级目录访问协议] | ldap注入,允许匿名访问,弱口令 |
tcp 512,513,514 | linux rexec | 可爆破,rlogin登陆 |
tcp 873 | rsync备份服务 | 匿名访问,文件上传 |
tcp 1194 | openvpn | 想办法钓vpn账号,进内网 |
tcp 1352 | Lotus domino邮件服务 | 弱口令,信息泄漏,爆破 |
tcp 1433 | mssql数据库 | 注入,提权,sa弱口令,爆破 |
tcp 1521 | oracle数据库 | tns爆破,注入,弹shell… |
tcp 1500 | ispmanager 主机控制面板 | 弱口令 |
tcp 1025,111,2049 | nfs | 权限配置不当 |
tcp 1723 | pptp | 爆破,想办法钓vpn账号,进内网 |
tcp 2082,2083 | cpanel主机管理面板登录 | 弱口令 |
tcp 2181 | zookeeper | 未授权访问 |
tcp 2601,2604 | zebra路由 | 默认密码zerbra |
tcp 3128 | squid代理服务 | 弱口令 |
tcp 3312,3311 | kangle主机管理登录 | 弱口令 |
tcp 3306 | mysql数据库 | 注入,提权,爆破 |
tcp 3389 | windows rdp远程桌面 | shift后门[需要03以下的系统],爆破,ms12-020[蓝屏exp] |
tcp 4848 | glassfish控制台 | 弱口令 |
tcp 4899 | radmin远程桌面管理工具,现在已经非常非常少了 | 抓密码拓展机器 |
tcp 5000 | sybase/DB2数据库 | 爆破,注入 |
tcp 5432 | postgresql数据库 | 爆破,注入,弱口令 |
tcp 5632 | pcanywhere远程桌面管理工具 | 抓密码,代码执行,已经快退出历史舞台了 |
tcp 5900,5901,5902 | vnc远程桌面管理工具 | 弱口令爆破,如果信息搜集不到位,成功几率很小 |
tcp 5984 | CouchDB | 未授权导致的任意指令执行 |
tcp 6379 | redis未授权 | 可尝试未授权访问,弱口令爆破 |
tcp 7001,7002 | weblogic控制台 | java反序列化,弱口令 |
tcp 7778 | kloxo | 主机面板登录 |
tcp 8000 | Ajenti主机控制面板 | 弱口令 |
tcp 8443 | plesk主机控制面板 | 弱口令 |
tcp 8069 | zabbix | 远程执行,sql注入 |
tcp 8080-8089 | Jenkins,jboss | 反序列化,控制台弱口令 |
tcp 9080-9081,9090 | websphere控制台 | java反序列化/弱口令 |
tcp 9200,9300 | elasticsearch | 远程执行 |
tcp 10000 | webmin linux主机web控制面板入口 | 弱口令 |
tcp 11211 | memcached | 未授权访问 |
tcp 27017,27018 | mongodb | 爆破,未授权访问 |
tcp 3690 | svn服务 | svn泄露,未授权访问 |
tcp 50000 | SAP Management Console | 远程执行 |
tcp 50070,50030 | hadoop | 默认端口未授权访问 |
0x09 说了这么多,想必大家应该很清楚这些端口具体该怎么利用了
0x10 最后,在介绍个小脚本,whatportis 专门用来查询某个端口具体作用的
0x11 如果你有兴趣,想针对某个国家网段进行大规模扫描也可以把它写成这样,当然,我这里是随便写的,你要想实际用肯定是远远不够的,单单只是提供个小demo,能自动化的事情还有很多,写个shell还是比较简单的,还是留给大家根据自己的实际需求自行发挥吧,反正工具就在那里,相互配合才能出效果,各自为战是很难有所作为的
后话:
关于端口渗透,如果不是你自己写工具的情况下,其实本身使用上并没多少技术含量,至于无状态扫描的具体内部实现还是比较复杂的,至今为止,很多东西我自己也扔在学习中,如果大家真想深入去理解,非常建议自己直接拿着wireshark一边跑一边认真观察分析,没有什么比数据包更能说明问题,篇幅限制,这里我就不一一把每种扫描方式都带着大家跑一遍了,有些东西还是需要自己亲自尝试,不然,别人的东西永远都只是别的,端口这个东西,怎么说呢,有很多运气和经验敏感度的成分在里面,可能还要外加一个高质量的字典,另外,再多说一句,在没有十足的把握的情况下,直接在公网跑字典基本是不太靠谱的,实际测试中,对一些稍有防护的目标,爆破的成率还是蛮低的[虽然低,但往往非常有效,走投无路时不妨尝试],当然啦,对于端口,爆破只是很小的一个方面,比如,当我们发现某个工具或者系统服务存在远程溢出或者代码执行[不仅限于此类的可远程利用的漏洞,任何可以直接远程主动getshell的都可以],还是那句话,如果你手里有某个主流服务的通杀远程0day,不管是你自己挖的还是买的,也许只有这时才能体现端口扫描的真正价值,另外,还有多如牛毛的小工具,这里都没提到,后续涉及到内网时我们再仔细说明,对于公网扫描,有这些,暂时足矣,祝大家好运,切记不要干坏事就好!