Web扫描工具-Nikto、Vega、Skipfish

WEB攻击面

  • Network
  • OS
  • Web Server
  • App Server
  • Web Application
  • Database
  • Browser

协议基础

  • 明文
    • 无内建的机密安全机制
    • 嗅探或代理截断可查看全部明文信息
    • https只能提高传输层安全
  • 无状态
    • 每一次客户端和服务端的通信都是独立的过程
    • WEB应用需要跟踪客户端会话(多步通信)
    • 不使用cookie的应用,客户端每次请求都要重新身份验证
    • Session用于在用户身份验证后跟踪用户行为轨迹
      • 提高用户体验,但增加了攻击向量
  • Cycle
    • 请求/响应
  • 重要的header
    • 响应头:
      • Set-Cookie:服务器发给客户端的SessionID(被窃取的风险)
      • Content-Length:响应body部分的字节长度(爆破时通过该字段判断页面变化)
      • Location:重定向用户到另一个页面,可识别身份认证后允许访问的页面
    • 请求头:
      • Cookie:客户端发回给服务器证明用户状态的信息(头-值,成对出现)
      • Referrer:发起新请求之前用户位于那个页面,服务器基于此头的安全限制很容易被修改绕过
  • 状态码:
    • 100s、200s、300s、400s、500s

实验环境

  • Metasploitable
    • Dvwa

侦察

  • Httrack
    • 将web上所有可访问的页面都copy下来
    • 减少与目标系统交互

扫描工具

Nikto

  • perl语言开发的开源web安全扫描器
  • web服务器使用的软件版本
  • 搜索存在安全隐患的文件
  • 服务器配置漏洞
  • WEB Application层面的安全隐患
  • 避免404误判
    • 很多服务器不遵守RFC标准,对于不存在的对象返回200
    • 依据响应文件内容判断,不同拓展名的404文件响应内容不同
    • 去除时间信息后的内容取MD5值
    • -no404
  • https://cirt.net/Nikto2
  • 操作:
    • nikto -list-plugins
    • nikto -host http://1.1.1.1
    • nikto -host 192.168.1.1 -ssl -port 443,8443,995
    • nikto -host host.txt
    • nmap -p80 102.168.1.0/24 -oG -|nikto -host -
    • nikto -host 192.168.1.1 -useproxy http://localhost:8087
    • -vhost
    • interative:
      • v -verbose mode on/off
      • d -debug mode on/off
      • e -error reporting on/off
      • p -progress reporting on/off
      • P -pause
      • r -redirect display on/off
      • c -coocie display on/off
      • a -auth display on/off
      • q -quit
      • N -next host
    • 配置文件:etc/nikto.conf
      • 修改UserAgent
      • STATIC-COOKIE=”cookie1=value”;”cookie2=value”
    • -evasion:使用LibWhisker种对IDS的躲避技术,可以使用一下几种类型
        1. 随机URL编码(非UTF-8)
        2. 子选择路径(/./)
        3. 过早结束的URL
        4. 优先考虑长随机字符串
        5. 参数欺骗
        6. 使用TAB作为命令的分隔符
        7. 使用变化的URL
        8. 使用Windows路径分隔符“\”

Vega

  • Java编写的开源Web扫描器

  • 扫描模式

  • 代理模式

  • 爬站、处理表单、注入测试

  • subgraph.com/vega

  • 先手动爬,然后跑扫描。

Skipfish

  • C语言编写
  • 实验性的主动web安全评估工具
  • 递归爬网
  • 基于字典的探测
  • 速度较快
    • 多路单线程,全异步网络I/O,消除内存管理和调度开销
    • 启发式自动内容识别
  • 误报较低
操作
  • skipfish -o test http://1.1.1.1
  • skipfish -o test @url.txt
  • skipfish -o test -S complet.wl -W a.wl http://1.1.1.1
    • dpkg -L skipfish | grep wl得到skipfish自带的字典
    • 通过-S指定使用的字典,-W保存爬的过程中发现的特殊字符,目录,到指定字典。
  • -I (大写i)只检查匹配 ‘string’ 的url
  • -X 不检查匹配 ‘string’ 的url
  • -K 不对指定参数进行Fuzz测试
  • -D 跨站点爬另外一个域,如果有链接连接到这里,就会扫。
  • -l (小写L) 每秒最大请求书
  • -m 每IP最大并发连接数
  • –config 指定配置文件
  • 身份认证
    • skipfish -A user:pass -o test http://1.1.1.1
    • skipfish -C "name=val" -C "name2=value2" -o test http://1.1.1.1
    • -auth-form -auth-user -auth-pass -auth-verify-url等,查看help
  • 扫描结束太快
    • 触发了目标站点的连接数限制,降低-m -l数值

其它

  • 代理:Hidemyass
  • 书:《Web penetration test with kali Linux》