本人在这发表文章只是记录一下学习笔记,方便日后观看。
文章目录
前言
渗透测试分为 白盒测试 和 黑盒测试
- 白盒测试就是在知道目标网站源码和其他一些信息的情况下对其进行渗透,有点类似于代码分析
- 黑盒测试就是只告诉我们这个网站的url,其他什么都不告诉,然后让你去渗透,模拟黑客对网站的渗透
我们现在就模拟黑客对一个网站进行渗透测试,这属于黑盒测试,我们只知道该靶机,其他什么的信息都不知道。给大家分享下黑盒渗透测试的流程和思路!
一,信息收集
1.确定目标
设置靶机和攻击机为同一个网段。
2.主机扫描
(1)扫描某个网段内存活的主机
(2)扫描主机开放的端口和服务
(3)扫描主机的操作系统和版本号
(4)扫描主机可能存在的已知漏洞
3.Web扫描
(1)查询域名和子域名信息
(2)查询whoid信息
(3)扫描web应用的URL路径
(4)扫描Web应用的后台管理入口
(5)常规漏洞扫描
4.功能分析
(1)分析前台页面的登录和注册功能
(2)根据用户注册提示确定可用账号
(3)尝试进行注册并登录,确认各项功能
(4)确定前台页面的URL转跳,用户评论,文件引用,文件上传,文件下载等强互动功能点
(5)确定后台是否存在文件上传,查询功能,命令功能,系统配置等
(6)确定用户是否存在密码重置功能,确认是否存在逻辑漏洞
4.抓包分析
(1)对前端页面的源代码进行分析,确定是否存在敏感信息或者接口
(2)对关键功能进行抓包分析,预判后台基本实现逻辑
(3)对系统功能交互过程的编码和加密进行分析,如是否使用base64编码,时间戳,hash加密
(4)对通信过程的Session和Cookie进行分析,判断为什么此处要这么用
5.使用的工具
(1)主机扫描:nmap,nessus
(2)web扫描:XRay+Rad,AVWS,AppScan,SQLmap,XSStrike,dirb,御剑等
(3)在线搜索:zoomeye.org,fofa.so,shodan.io,微步,域名注册商如万网等
二,漏洞利用
1.已知exp使用
根据信息收集结果,直接网上寻找对应开发框架或者CMS的成熟漏洞利用工具,如struts2的全家桶。
2.暴力破解
适用于验证码可绕过,使用top1000等各类字典,也可以根据搜集到的密码规则匹配相应的账号使用hashcat自行创建字典,burpsuite的暴力破解破解模块也提供了多样化的字典生成功能,或使用专有工具如Hydra、SNetCracker等,或根据业务需要自己编写Python脚本
3、逻辑漏洞
尤其是密码重置,很关键。根据经验来看,至少可从七个方面攻击密码找回功能:重置凭证接收端可算改、重置凭证泄漏、重置凭证未校验、重置凭证可暴破、用户混淆、应答中存在影响后续逻辑的状态参数、token可预测。在逻辑漏洞的找寻中,重点观察跟你用户名有关的请求,尝试在各种请求中将你的用户名或身份认证替换成他人的。
4、JS信息泄露
一般内部系统的网站S可能会存有用户接口,我们可以通过接口发现用户信息。也可以分析is的代码,构造出后台路径和参数逻辑
5、后台WEB漏洞
除了在信息搜集中提到的上传功能(上传webshell)查询功能(sql注入)、命令功能(命令注入)外,其他web安全漏洞都最好根据
功能逐一尝试。
6、代码审计
如果拿到源码,可以根据审计结果构造payload
7、使用到的工具:
(1)渗透测试:Hydra,Medusa,MetaSploit Framework,反序列化工具、各类专项工具
(2)代码审计:RIPS、Fortify SCA
(3)Shell管理:菜刀、冰蝎、蚁剑、哥斯拉、PSTool等
三、建立据点
1、反弹shellI
漏洞利用成功时,通常会在目标机上获得一个webshell,但是webshell虽然能执行命令和管理文件,但毕竟不是真正的shell,而且也不稳定,因此就需要反弹shell到一个稳定的环境中。
2、反弹shell时候可能遇到的问题
反弹命令不存在、禁止出口流量、限定向外访问端口、流量审查
(1)反弹命令不存在:命令有很多,常用命令有nc/nc.openbsd/nc.traditional、bash/sh/dash、python/perl/PHP/ruby、exec,因此命令不存在的概率很小;在服务器上使用'whereis nc bash php perl python ruby'就能知道命令是否存在;
(2)禁止出口流量:某些目标在防火墙上限制了出口流量,禁止目标主动向外发起网络请求,可以通过带外(Out OfBand)的方式进行验证。大致逻辑是,在攻击者自己的VPS 上监测某种协议的网络请求,在目标上用这种协议访问VPS,若在VPS 上看到该协议的请求日志,则可推断出目标允许出口流量;
(3)限定向外访问端口:某些目标限定访问外部端口,常见黑名单和白名单两种方式。黑名单,比如,禁止目标机器向外访问MSF默认的4444端口;白名单,比如,只允许向外访问web常见的80端口。黑名单的情况好绕过,随便指定一个端口号就行,白名单的话就只能探测可允许端口,常见就是80和443,需要想办法利用。
(4)流量审查:目标环境会对所有流量进行检查,检查的时候会发现流量中的恶意代码信息。这种情况可以结合上面的443端口,使用攻击者的VPS创建ssl证书公钥/私钥对,VPS开启openssl监听,然后使用openssl对反弹shell的流量进行加密,这样就能防止流量审查反弹成功。
3、确认环境并制作木马
(1)确认具体的操作系统版本和已经安装的服务,可以运行的脚本环境,可以通过的端口等(具体根据权限而定)。
(2)根据当前环境,按照需要制作复杂木马,甚至想办法保持连接的稳定,不被防火墙和管理员发现和封锁等,
4、使用的工具:
MetaSploit Framework,Cobalt Strike等
四、权限提升和内网渗透
1、权限提升
Webshell中的90%都是www-data权限,需要想尽办法提升至root权限,可以用的办法有利用内核栈溢出提权、搜寻配置文件中的明文密码、环境变量劫持高权限程序、不安全的服务、借助权能(POSIXcapabilities)提权、sudo误配、SUID滥用等等。这些可以查阅网上相关资料和方法,下载对应的exp完成。
2、权限维持
在获取了超级管理员权限后,还得想办法要将权限维持住,
3、内网穿透
在后渗透阶段,攻击进入一台目标主机是远远不够的,还需要通过内网横向移动来完成对核心目标的访问和渗透,此时通过内网穿透保持一个可靠连接,随时可以通过穿透功能进入目标主机。这一过程同样需要注意如何规避防病毒软件或防火墙的发现。
4,内网渗透
当能够保持超级管理员的权限并进行维持后,此时便可以开展内网渗透工作,整体过程与外网渗透比较类似,但是面临的实际情况并不完全一样,需要借助各类工具和经验进行处理。作为渗透测试的工作而非红方攻击来说,内网渗透并非最必要的一步,但是可以一试,进一步确定目标主机的漏洞及影响范围。
5、使用的工具
(1)权限提升:MSF、漏扫、各类专项渗透工具等
(2)内网渗透:Cobalt Strike、Ladon、PSTools等
(3)内网穿透:Frp、冰蝎、Cobalt Strike代理等