百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

网络安全日常学习之渗透测试思路总结

zhezhongyun 2024-12-16 17:34 72 浏览

一、说明

《Metasploit渗透测试魔鬼训练营》等书已经对渗透测试的步骤流程划分得比较合理透彻了,但感觉在多次通读该类书藉之后仍总感觉不得要领----要对一台给定的主机进行渗透还是不懂到底该如何着手。想来主要是存在以下两个问题。

第一个是在渗透操作系统时,最为关键的是从漏洞分析到渗透攻击这一步很难跨越。因为按书中漏洞分析基本只有openvas等漏洞扫描器一条途径,漏洞利用只有Metasploit搜索一条途径;而漏洞扫描器扫出漏洞Metasploit中又正好有利用模块更是少之又少。

第二个是在渗透web系统时,还是和其他很多书籍一样只讲漏洞,而并不能很明确地指出面对一个web系统我怎么知道在哪我应该检测哪些漏洞。

本文一是肯定和总结现在主流的渗透测试的步骤,二是拓展渗透操作系统时从漏洞分析到渗透攻击的途径,三是指出渗透web系统可采用“功能–功能对应检测点”这种触发式渗透方式。

渗透流程可参考下图

二、渗透操作系统

操作系统类漏洞一般都是大神们通过代码审计/逆向分析挖掘的漏洞,这需要高深的知识储备,对于一般的渗透而言利用已知漏洞即可,不用也不要自己去挖掘这类漏洞。而查找操作系统类漏洞最关键的操作就是确定端口后边的软件及软件版本,然后得用得到的软件名+软件版本到各漏洞库去查找其存在的漏洞乃至exp。

2.1 获取正在监听端口的软件及该软件的版本号

比如假设我们探测到8080端口为tomcat监听,版本号为8.5.14

2.2 搜索已有漏洞库,获取该软件及相应版本存在的漏洞列表

2.2.1 搜索CVE漏洞库,获取软件及相应版本存在的漏洞列表

http://www.cvedetails.com/version-search.php

就这样我们就找到了tomcat 8.5.14版本存在的几个漏洞,后边以CVE-2017-12617为例

【一>所有资源关注我,私信回复“资料”获取<一】
1、很多已经买不到的绝版电子书
2、安全大厂内部的培训资料
3、全套工具包
4、100份src源码技术文档
5、网络安全基础入门、Linux、web安全、攻防方面的视频
6、应急响应笔记 7、 网络安全学习路线
8、ctf夺旗赛解析
9、WEB安全入门笔记

2.3 查看CVE具体信息

2.3.1 在cvedetails查看CVE具体信息

https://www.cvedetails.com/

2.3.2 在mitre查看CVE具体信息

http://cve.mitre.org/cve/search_cve_list.html

2.4 通过CVE查找EXP

2.4.1 在上边的cvedetails或mitre结果中拉到后边的References For CVE-xxx参考区里边有可能有exp链接

在上边已经可看到CVE-2017-12617对应的exploit-db和metasploit中的exp链接

2.4.2 在上边的cvedetails中直接点击搜索twitter/youtube/google

2.4.3 到metasploit数据库查找exp(msfconsole中search可能需要更新)

https://www.rapid7.com/db/modules/

2.4.4 到exploit数据库查找exp(不爬墙验证码一般出不来,那只能kali中searchsploit了)

https://www.exploit-db.com/search/](https://www.exploit-db.com/search/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OlE2RQqa-1651670529886)(https://upload-images.jianshu.io/upload_images/26472780-a5b1f827d89de94b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

2.4.5 到github查找exp

https://github.com/search](https://github.com/search

2.4.6 openvas等系统漏洞扫描器

三、渗透web系统(功能触发式检测法)

web系统也可以利用现成的漏洞,如各类CMS的漏洞(比如ecshop)、各类插件的漏洞(比如wordpress的各类插件漏洞)、各类框架的漏洞(比如struts反序列化)、各类中间件漏洞(比如weblogic反序列化),这类漏洞在确认web系统使用了该CMS、该插件、该框架、该中间件之后和操作系统类漏洞一样到各漏洞库去找利用方式即可。web渗透更多地是自己去挖掘出其存在的漏洞。

web漏洞我个个喜欢分为业务逻辑漏洞和技术性漏洞两类,业务逻辑漏洞的定性是每套系统都有自己实现无统一的漏洞签名无法使用通用扫描器发现的漏洞,技术型漏洞的定性是因一致的实现或使用一致的第三方组件导致有相对统一的漏洞签名可以使用通用扫描器发现的漏洞(其实看下也没分得那么清还没想得很清楚)。

很多教程都是东一榔头西一棒槌讲各类漏洞也讲得挺清楚,但要去渗透时总感觉一是给定一类漏洞不知道可以去哪些位置找二是给定一个位置又不知道可能会存在哪些漏洞。结合自己的经验我觉得可以自己构建一个“功能----功能对应检测点”的表,以后自己去渗透只要看到web系统有某个功能就去检测其对应检测点即可。这里暂且称之为“功能触发式检测法”。

3.1 信息收集(信收集的目地是锁定可用手段的范围)



网站真实IP

站长、nslookup、dig、www.cz88.net、tcroute

操作系统

TTL、index.PHP、访问不存在页面

网站语言

index等一众页面的后缀、respone包头

服务器

访问不存在页面、respone包头、whatweb

数据库

注入报错、telnet端口

主机端口

Nmap、arp_swwep、portscan

子域名查询

subdomain.chaxun.la

网站CMS

Power By、site+“CMS”;百度”xxx CMS漏洞“

攻击面解析

awvs等爬虫式发现页面、御剑/dirb等爆破式发现隐藏页面、如果是某种标准协议则查看协议查找隐藏接口或隐藏参数

3.2 业务漏洞检测(各项业务都可攻击)

阶段

功能

功能对应检测点

身份认证

用户注册

是否可以重复注册

身份认证

密码修改

修改密码逻辑是否有问题

身份认证

密码重置

重置密码逻辑是否有问题

身份认证

短信验证码

短信炸弹

身份认证

短信验证码

短信验证码是否可爆破

身份认证

图片验证码

验证码是否可以重复使用

身份认证

登录

登录逻辑是否有问题

身份认证

用户凭证存储

登录凭证是否存在localStore或sessionStore中

会话管理

登录

会话ID生成机制是否有问题

会话管理

登录

是否有自动退出机制

会话管理

退出

退出后会话ID是否真的失效

访问控制

用户信息查看

是否可以水平越权访问其他用户页面

访问控制

具有管理员界面

是否可以垂直越权访问管理员页面

访问控制

具有管理员接口

普通用户直接发包是否也会响应

业务逻辑

购买

修改价格后端是否会再次校验

业务逻辑

多步功能

能否跳过其中某些步

业务逻辑

请求次数限制

服务端如何限制是否可以绕过

业务逻辑

好友查询类

查询自己好友是否把好友的密码等都返回来

3.3 技术型漏洞检测

功能

功能对应检测点

测试基本代码

相关工具

从数据库读取数据

是否存在sql注入

and ‘1’ ='1

sqlmap

用户输入被返回前端页面

是否存在xss


awvs等

功能使用的是请求/响应模式

是否存在csrf


awvs等

文件上传

是否有文件类型、大小限制



文件下载

是否存在目录遍历

…/etc/passwd


文件浏览

是否存在目录遍历

…/etc/passwd


调用系统命令

是否存在命令注入

;cat /etc/passwd


重定向

是否存在重定向注入



参数

参数超长是否会导致溢出

01234567890123456789


参数

参数有特殊字符是否会导致程序报错



参数

参数缺失是否会导致程序报错



四、其他类型渗透

4.1 客户端攻击

原理:利用软件的解析错误溢出执行装于文件中的exp
browser_autopwd模块构造网页自劝溢出攻击浏览器
ms10_087模块配置生成畸型文件弄到靶机打开
adobe_cooltype_sing生成畸型pdf攻击adobe

4.2 社会工程学

利用msfvenom生成各平台的包含了payload的木马
利用setoolkit制作钩鱼网站或有畸形文件的邮件
UitraISO+Hacksaw制作木马启动盘
拿着姓名/手机/邮箱等到各网站搜一圈看注册信息

4.5 无线安全

aircrack-ng破解wifi密码
Airmom-ng假冒ap,并利用karma架设假冒服务

4.6 后渗透攻击

所谓后渗透就是拿到主机shell后,提权/清除日志/增加更稳定后门/内网渗透等工作
Meterpreter可以理解为是windows的cmd,linux的shell
日志–C:\Windows\System32\winevt\Logs、/var/log

相关推荐

Python入门学习记录之一:变量_python怎么用变量

写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...

python变量命名规则——来自小白的总结

python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...

Python入门学习教程:第 2 章 变量与数据类型

2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...

绘制学术论文中的“三线表”具体指导

在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...

Python基础语法知识--变量和数据类型

学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...

一文搞懂 Python 中的所有标点符号

反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...

Python变量类型和运算符_python中变量的含义

别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...

从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序

在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...

Python中下划线 ‘_’ 的用法,你知道几种

Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...

解锁Shell编程:变量_shell $变量

引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...

一文学会Python的变量命名规则!_python的变量命名有哪些要求

目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...

更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for

src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...

C++第五课:变量的命名规则_c++中变量的命名规则

变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....

Rust编程-核心篇-不安全编程_rust安全性

Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...

探秘 Python 内存管理:背后的神奇机制

在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...