系统指纹识别
方式一:
通过TCP/IP数据包发到目标主机,由于每个操作系统类型对于处理TCP/IP数据包都不相同,所以可以通过之间的差别判定操作系统类型
识别方法:nmap -sS -Pn -O ip
nmap识别操作系统是通过端口识别的,也就是说在识别操作系统的时候不能使用-sn(不识别端口)。
方式二:端口服务识别
每个操作系统都有特有的服务和端口,如:
- windows 桌面连接使用的3389RDP协议
- 445端口,windows的smb协议开启端口
- iis80端口
识别方法:
nmap -sV -Pn -sS -n 10.60.17.30
中间件指纹识别
方法:
- 通过http返回消息中提取server字段(可以抓包获取)
- 通过端口服务探测中间件
- 通过构造错误界面返回信息查看中间件(感觉只有nginx和Tomcat能爆出中间件的版本信息)
命令:
nmap -sS -sV -p 80 10.60.17.19/24
可以扫描出所有开放80端口的主机下所开启的中间件。
可以根据中间件所开发的端口来定向IP扫描。
Tomcat开放端口:8080
Jboss开放端口:8080
weblogic开放端口:7001
apache开放端口:80
nginx开放端口:80
方法三、通过构造错误界面返回信息查看中间件
主要构造不存在的路径和畸形数据
Web程序指纹识别
识别目标
- 开发语言
- 开发框架
- 第三方组件
- CMS程序
- 数据库
nmap扫描waf指纹支持大厂,小厂的waf指纹识别不是很好
命令:
nmap -sS -p 80 --script http-waf-fingerprint.nse www.shodan.io
sqlmap也可以进行waf指纹识别,实现waf指纹识别的脚本如下:
开发语言:
- 后缀名识别:.asp、.php、.jsp
- 如果无法通过后缀名识别,可以通过抓包查看与后台交互点,如:登录,查询
- http返回消息头x-Powered-By
- cookie:PHPSESSIONID->php、JSPSESSIONID->jsp 、ASPSESSIONIDAASTCACQ->asp
开发框架:
- php的thinkphp框架识别方法特定ico图标
- Action后缀90%几率struts2或者webwork
- do后缀50%几率spring mvc
- url路径/action/xxx70%几率struts2
- form后缀60%几率spring mvc
- Vm后缀90%几率VelocityViewServlet
- jsf后缀99%几率Java Server Faces
第三方组件:
一般包括流量统计、文件编辑器、模板引擎
识别方法:一般目录扫描
- FCKeditor
- CKEditor
CMS程序
特定文件夹:
- dede/
- admin/
- admin_Login.aspx
Powered by ***
网站favicon图标
数据库
- 常规判断:asp->sql server,php->mysql,jsp-oracle
- 网站错误信息
- 端口服务:1443->sql server,3306->mysql,oracal->1521
在线探测
游览器在线插件wappalyzer
可以探测内容管理系统,平台,开发语言,框架甚至更多
在线自动探测目标网站的数据库,开发语言,操作系统,web容器,CMS,开发框架