• nmap | 一次实战记录


    这篇文章在微信公众号上发过,这里的版本比微信上的新。

    背景:偶尔需要用nmap做服务器安全扫描。流程:1. 扫描;2. 结果分析;3. 爆破、漏洞扫描和漏洞利用(可选);4. 出具报告。

    一次测试流程记录

    扫描

    典型命令和参数说明

    nmap -A -T4 -oA report <ip or domain>

    以下命令参数详细说明可以在nmap的man文档中找到。

    -A:同时执行多项扫描任务,除了基本的端口扫描,还包含版本探测,脚本扫描,OS探测以及路由跟踪

    -T4:选择速度为4的扫描。(速度从T1-T5,从慢到快)

    -oA report:生成所有三种格式的报告

    <ip or domain>:待扫描的IP或域名

    结果分析

    nmap默认扫描了前1000个TCP端口,其中有8个开放。

    举例分析扫描结果:

    22/tcp open ssh OpenSSH 6.6.1 (protocol 2.0)

    22号端口开放,提供SSH服务,使用的版本可能是OpenSSH 6.6.1。

    ​ 风险一:使用默认端口提供SSH服务,存在批量扫描22号端口并进行爆破的可能;

    ​ 风险二:OpenSSH版本较低,存在漏洞利用可能。

    5432/tcp open postgresql PostgreSQL DB 9.5.0 - 9.5.3

    5432端口开放,提供postgresql服务,使用的版本可能是PostgreSQL DB 9.5.0 - 9.5.3。

    ​ 风险一:开放数据库端口,存在被爆破的风险;

    ​ 风险二:PostgreSQL版本过低,存在可利用漏洞。

    kali@PT:~$ nmap -A -T4 -oN report scan_me.org
    
    Starting nmap 7.60 ( https://nmap.org ) at 2020-07-02 10:04 CST
    nmap scan report for scan_me.org (192.168.2.2)
    Host is up (0.0021s latency).
    rDNS record for 192.168.2.2: hello.os
    Not shown: 992 closed ports
    PORT     STATE SERVICE    VERSION
    21/tcp   open  ftp        vsftpd 3.0.2
    22/tcp   open  ssh        OpenSSH 6.6.1 (protocol 2.0)
    | ssh-hostkey:
    |   2048 f8:71:fd:56:a8:f9:94:bb:15:43:be:ca:c0:d4:8a:4f (RSA)
    |   256 9a:72:7d:00:d5:42:a3:e1:d2:f2:eb:73:44:01:80:a8 (ECDSA)
    |_  256 96:01:be:66:56:fd:03:2d:66:15:a7:3a:26:fe:88:5d (EdDSA)
    80/tcp   open  http       nginx 1.10.3
    |_http-cors: GET POST OPTIONS
    |_http-server-header: nginx/1.10.3
    |_http-title: Site doesn't have a title (text/html; charset=utf-8).
    5432/tcp open  postgresql PostgreSQL DB 9.5.0 - 9.5.3
    8011/tcp open  http       nginx 1.17.5
    |_hadoop-datanode-info:
    |_hadoop-jobtracker-info:
    |_hadoop-tasktracker-info:
    |_hbase-master-info:
    |_http-server-header: nginx/1.17.5
    |_http-title: project
    8080/tcp open  http       nginx 1.17.5
    |_http-cors: GET POST OPTIONS
    |_http-open-proxy: Proxy might be redirecting requests
    |_http-server-header: nginx/1.17.5
    |_http-title: Site doesn't have a title (text/html; charset=utf-8).
    8088/tcp open  http       Tornado httpd 4.3
    |_http-server-header: TornadoServer/4.3
    |_http-title: AVL FDFS Status
    8099/tcp open  http       BaseHTTPServer 0.3 (Python 2.7.6)
    Service Info: OS: Unix
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    nmap done: 1 IP address (1 host up) scanned in 33.97 seconds
    

    进一步分析

    对22号端口进行SSH爆破

    nmap -p 22 -sV --script ssh-brute <ip>

    从结果来看,虽然开放默认22号端口提供SSH服务,但是不允许账号密码登录,被爆破的风险低。

    PORT   STATE SERVICE VERSION
    22/tcp open  ssh     OpenSSH 6.6.1 (protocol 2.0)
    |_ssh-brute: Password authenication not allowed
    

    对5432号端口进行pgsql爆破

    nmap -p 22 -sV --script pgsql-brute <ip>

    从结果来看,5432号端口的认证策略是 Trusted authentication,也就是默认信任所有人,任意账户密码均可登录,风险很高。

    PORT     STATE SERVICE    VERSION
    5432/tcp open  postgresql PostgreSQL DB 9.5.0 - 9.5.3
    | pgsql-brute:
    |   root => Trusted authentication
    |   admin => Trusted authentication
    |   administrator => Trusted authentication
    |   webadmin => Trusted authentication
    |   sysadmin => Trusted authentication
    |   netadmin => Trusted authentication
    |   guest => Trusted authentication
    |   user => Trusted authentication
    |   web => Trusted authentication
    |_  test => Trusted authentication
    

    对5432号端口进行漏洞扫描和漏洞利用

    这里使用了metasploit framework。

    搜索相关漏洞
    # 进入msfconsole
    msfconsole
    # 搜索postgresql相关漏洞
    search postgresql
    # 搜索结果中有一个非常新并且危险等级很高的漏洞——xxx,网页搜索得知会影响11.2以下版本的PostgreSQL。
    
    漏洞利用
    # 使用该漏洞
    use xxx
    # 查看漏洞参数
    options
    # 配置参数
    set rhosts xxx
    set lhost xxx
    # 开始利用
    run
    # 这个时候,会话已经建立
    # 可以开始操作数据库
    # 可以尝试使用bash/python等工具进一步渗透
    # 可能继续渗透其他内网服务器
    

    出具报告

    通过上述分析得知:

    22号端口

    ​ 使用默认端口提供SSH服务,但未提供密码登录,风险低;

    ​ OpenSSH版本较低,但网页搜索未发现高风险漏洞,风险低;

    5432端口

    ​ 存在弱口令爆破,风险高;

    ​ 版本较低,存在可利用的高风险漏洞,风险高;

    测试报告格式

    1 概述

    1.1 扫描对象

    说明扫描对象,即目的IP或域名等

    1.2 扫描命令

    扫描时所用的命令

    1.3 扫描报告
    扫描html格式结果截图、文本格式结果附件,简述此次扫描结果

    2 安全问题
    列举安全问题

    2.1 SSH端口弱口令
    简述问题作为标题例如 SSH端口弱口令

    2.1.1 风险等级
    分为高、中、低

    2.1.2 触发方式
    说明是如何发现的,如果有利用方式,如何利用的

    2.1.3 加固建议
    提供加固建议,例如升级软件到最新版本等

    安全建议

    下面是个人做了多次测试后的总结。

    想获得更高的安全性就会牺牲便捷性,想要获得更多便捷性那就会牺牲安全性,便捷和安全是矛盾的,具体情况按需选择。

    1. 服务器只开放必须的端口,例如作为http服务器只开放提供http服务的80和443端口;
    2. 开放端口提供服务的软件尽量使用最新版本,如果升级代价太高而选择不升级,那么要关注公开情报来及时修复漏洞,一定不能使用有公开高危漏洞的软件提供服务;
    3. 如果必须要提供SSH远程登录:
      1. 不要使用默认的22端口;
      2. 禁止root组远程登录;
      3. 禁止账号密码登录,只允许密钥登录,并妥善保管私钥;
      4. 使用最新版本的SSH软件;
    4. 开启防火墙,具体如何配置看需求;
    5. 版本混淆,有需要的话,混淆软件版本信息,例如Nginx、Linux distribution等,不提供或提供错误的版本信息。
  • 相关阅读:
    TensorFlow入门教程
    用Tensorflow搭建网络
    Keras 从入门到精通
    卷积神经网络(CNN)
    机器学习中的python常用函数
    Shell教程快速入门
    python做语音信号处理
    全连接神经网络(DNN)
    超简单部署ELK附安装包
    讨论Spring整合Mybatis时一级缓存失效得问题
  • 原文地址:https://www.cnblogs.com/jamesnpu/p/13598012.html
Copyright © 2020-2023  润新知