zoukankan      html  css  js  c++  java
  • 渗透测试一般思路和手法

     [toc]

    # 一.信息搜集

    ## 1.1 端口

    扫描是否开放其他端口

    ## 1.2 目录

    扫描是否存在敏感路径,尝试发现管理登陆入口

    ## 1.3 域名查询

    扫描是否存在其他子域名

    ## 1.4 常规漏洞扫描

    使用漏扫工具查看扫描结果

    ## 1.5 默认查询

    查看是否有后台,数据库的默认登录密码,查看默认的配置文件路径。

    ## 1.6 前台功能

    查看使用的语言类型,对业务功能进行基本使用测试,最好能发现url跳转,用户评论,文件引用,文件上传,文件下载等交互性强的功能点。

    ## 1.7 登陆口功能

    查看验证码是否可绕过,查看用户登录检查是否可枚举,注册查看密码规则(大小写,数字字母组合),查看密码重置功能,分析其逻辑以及认证方式。

    ## 1.8 后台功能

    如果能注册进入,后台主要查看3种功能,上传功能(上传webshell),查询功能(sql注入),命令功能(命令注入),系统配置(在配置文件中写入shell)。

    ## 1.9 前端JS分析

    使用F12打开控制台,分析其前端JS功能,尝试找到可能使用js来编写的前端逻辑并分析。

    ## 1.10 抓包分析

    使用burp的时候,一定要注意每处参数的意义,多思考为什么这个参数会出现在这里,结合cookie、session、token的原理机制,多分析账号认证的流程。

    ## 1.11 编码分析

    在请求包中很多消息不会明文传递,编码方式主要有url,unixtime,hash,base64,自定义编码等等,前4个我们应该尽量去还原编码内容,最后一种可以多观察逻辑,尝试分析编码算法。

    # 二.漏洞利用

    ## 2.1 已知exp使用

    根据信息搜集结果,直接网上寻找对应开发框架或CMS的成熟漏洞利用工具,如struts2的全家桶。

    ## 2.2 暴力破解

    适用于验证码可绕过,使用top1000,中国人名全拼等字典,也可以根据搜集到的密码规则匹配相应账号使用hashcat自行创建字典。burpsuite的暴力破解模块也提供了多样化的字典生成功能。

    ## 2.3 逻辑漏洞

    尤其是密码重置,很关键。根据经验来看,至少可从七个方面攻击密码找回功能:重置凭证接收端可篡改、重置凭证泄漏、重置凭证未校验、重置凭证可暴破、用户混淆、应答中存在影响后续逻辑的状态参数、token 可预测。在逻辑漏洞的找寻中,重点观察跟你用户名有关的请求,尝试在各种请求中将你的用户名或身份认证替换成他人的。

    ## 2.4 JS信息泄露

    一般内部系统的网站JS可能会存有用户接口,我们可以通过接口发现用户信息。也可以分析js的代码,构造出后台路径和参数逻辑。

    ## 2.5 后台WEB漏洞

    除了在信息搜集中提到的上传功能(上传webshell)、查询功能(sql注入)、命令功能(命令注入)外,其他web安全漏洞都最好根据功能逐一尝试。

    ## 2.6 代码审计

    如果拿到源码,可以根据审计结果构造payload

    # 三.建立据点

    ## 3.1 反弹shell

    漏洞利用成功时,通常会在目标机上获得一个webshell,但是webshell虽然能执行命令和管理文件,但毕竟不是真正的shell,而且也不稳定,因此就需要反弹shell到一个稳定的环境中。

    ## 3.2 反弹shell时候可能遇到的问题

    反弹命令不存在、禁止出口流量、限定向外访问端口、流量审查

    - 反弹命令不存在:命令有很多,常用命令有nc/nc.openbsd/nc.traditional、bash/sh/dash、python/perl/PHP/ruby、exec,因此命令不存在的概率很小;在服务器上使用'whereis nc bash php perl python ruby' 就能知道命令是否存在;
    - 禁止出口流量:某些目标在防火墙上限制了出口流量,禁止目标主动向外发起网络请求,可以通过带外(Out Of Band)的方式进行验证。大致逻辑是,在攻击者自己的 VPS 上监测某种协议的网络请求,在目标上用这种协议访问 VPS,若在 VPS 上看到该协议的请求日志,则可推断出目标允许出口流量;
    - 限定向外访问端口:某些目标限定访问外部端口,常见黑名单和白名单两种方式。黑名单,比如,禁止目标机器向外访问 MSF 默认的 4444 端口;白名单,比如,只允许向外访问 web 常见的 80 端口。黑名单的情况好绕过,随便指定一个端口号就行,白名单的话就只能探测可允许端口,常见就是80和443,需要想办法利用。
    - 流量审查:目标环境会对所有流量进行检查,检查的时候会发现流量中的恶意代码信息。这种情况可以结合上面的443端口,使用攻击者的VPS创建ssl证书公钥/私钥对,VPS开启openssl监听,然后使用openssl对反弹shell的流量进行加密,这样就能防止流量审查反弹成功。

    ## 3.3 使用python建立真正的交互式shell

    ```python
    python -c 'import pty; pty.spawn("/bin/bash")'
    ```

    # 四.权限提升

    webshell中的90%都是www-data权限,需要想尽办法提升至root权限,可以用的办法有利用内核栈溢出提权、搜寻配置文件中的明文密码、环境变量劫持高权限程序、不安全的服务、借助权能(POSIX capabilities)提权、sudo 误配、SUID 滥用等等。这些可以查阅网上相关资料和方法,下载对应的exp完成。

  • 相关阅读:
    【原创】Javascript-获取URL请求参数
    【原创】Javascript-显示系统时间
    【转载】ASP.NET 生成验证码
    【转载】Word2010编号列表&多级列表
    VirtualBox命令更改虚拟硬盘空间
    查看应用程序或服务端口号
    【原创】设置EXCEL2010打开多个独立窗口
    【原创】Word2010 清除样式
    【原创】打开Excel时提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致"
    【转载】SQL Server XML Path
  • 原文地址:https://www.cnblogs.com/kyooo/p/14028605.html
Copyright © 2011-2022 走看看