问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
【攻防渗透集锦】漏洞组合拳与JS攻击面的博弈
渗透测试
案例挑选以往攻防、SRC、渗透项目报告有启发性报告形成文章供各位读者师傅学习,漏洞思路并不局限于接口测试,利用现有信息打出组合拳也是不错的选择
> 案例挑选以往攻防、SRC、渗透项目报告有启发性报告形成文章供各位读者师傅学习,漏洞思路并不局限于接口测试,利用现有信息打出组合拳也是不错的选择 ### 转载 欢迎转载文章提供学习,但请标明社区原文地址尊重社区内原创作者劳动成果,个人公众号:月的造梦星球, 欢迎讨论学习,共同进步。 ### Actuator泄露403绕过 又又又又又又是经典的不能再经典的登录框开局,习惯性的看看雪瞳接口老师傅可能已经锁定接口了`/prod-api/`接口,此接口是`springboot`端点泄露高频接口,往往在后面就放置了`env` `heapdump`转储文件等   `dirserach`全部回显`403`应该是做了`Filter`权限校验,如果是`404`肯定是路径错了比如`/prod-api/`前置或者后置需要新的这层, 那么我想办法如何绕过`403`   让`actuator`中的`o`编码为`%6f`,但常规`url`编码是不能对`o`进行编码的,他属于 "普通字符"(不在 `URL` 特殊字符集中,不会影响 `URL` 解析所以会原样输出),因此 **标准 URL 编码工具不会对 “o” 进行编码**,会直接保留为 `o`,而不是转成 `%6F` ,我这里为了方便记忆才如此写下下,编码只会原样输出,正常情况下只能用`ASCII` 反推出值  `%6f`会解码为`o` `%6F` 是 **十六进制 ASCII 码的 URL 编码形式**(`%` 后跟着两位十六进制数,表示字符的 ASCII 码)。因为 `6F` 对应的十进制是 `111`,而 `111` 正是字符 "o" 的 `ASCII` 码,所以 `URL` 解码时,`%6F` 会被还原为 "o"  明白这一编码原理后又有读者要问了,主播主播\*\*`ASCII` \*\*反推值又自己计算十进制再转换特别麻烦,有没有简单高效的方法,有的兄弟有的,把想要编码的值交给`ai`就完事了,通过回答可以知道`r`编码后为`%72`   解码正确证明交给`ai`编码转换是可行的  `actuator`中的`o`编码后就变成了`actuat%6f`r 那么这样携带去访问,成功绕过发现路径还有`heapdump` `env` `nacosconfig` 信息可以打开新的攻击面还有`gateway`路由更可以尝试是否可以路由`rce`, 后续访问其他接口详情也是需要在编码基础上访问,不然也是`403`  ```php https://xxxxxx.com.cn:8088/prod-api/actuat%6fr/ https://xxxxxx.com.cn:8088/prod-api/actuat%6fr/env ------ 成功访问 https://xxxxxx.com.cn:8088/prod-api/actuator/env ------ 403 ```  后面发现这款工具也可以帮助我们将字符进行`ur`编码推荐师傅下载使用,工具`github`搜索`poc2jar`即可  ### 小程序Host渗透后台 小程序开局,一番测试并未发现问题,鉴权做的很安全,越权、注入、逻辑漏洞均未发现,随即转变思路,尝试是否存在`web`后台地址,打开新的攻击面  小程序一般会有后台管理页面,可能是其他子域名下放置的404页面 或者是小程序本身`host`域名其他目录下放置,这里首先尝试将`host`放置浏览器访问 ```php https://city.xxxxx.cc/ ```  根路径正常回显那么开始上`dirserach`递归目录尝试能否发现后台地址   也是很幸运字典加持下不到二分半就得到有效地址,`fuzz` 出第一层前置目录`manage` 携带访问后直接跳转到后台地址,那么可以测试的点就多起来,弱口令未授权,`JS`接口等等  ```php https://city.xxxx/manage/------> https://city.xxxxx/manage/login?redirect=/ ```   但是呢各位黑阔师傅们是否都会有先入为主的意识,我的目的就是为了找后台管理地址,现在我已经找到了,那么`dirserach`余下的会去完整的看完吗?域名下可能会设立不同的目录放置不同的登录口,耐心的看完所有信息至关重要,工具在这里又`Fuzz`出第二个前置目录,携带访问  同第一个地址一样,携带第一层后就会完整的调整到新的系统,在这里发现了第二个系统为后续渗透埋下伏笔,至此`dirserch`任务完成直接X掉 ```php https://city.xxxxxxxx/backend/-----> https://city.xxxxxx/backend/login?redirect=/ ```  回到第一个`manage`目录系统,纯粹的弱口令,后台地址藏在目录后往往也觉得这样很安全,密码设置也会相对简单,细致的信息收集找到入口漏洞往往已经呼之欲出了,查询小程序内所有用户实名信息三要素并控制余额  ```php admin/123456 ```  依旧是亲切的大头照   弱口令进后台还可以挖掘其他漏洞,更好的测试接口未授权问题,已经有了管理员权限那么调用所有一遍功能再把敏感信息接口删除`token`重发即可,当我测测时就发现了 ,第一个系统和第二个系统关联处,城市合伙人不就对应了第二个系统的名称嘛,账号大概率就是手机号了  来到这里通过合伙人的账号配合初始第一个系统进入到弱密码,纯粹拿下第二个系统,渗透本质依旧是是信息收集  ```php 手机号 123456 ```   ### Shrio721容器Rce 渗透项目拿到大量子域名资产使用`Ehole`指纹识别发现`Shiro`框架,反手掏出压箱底的反序列化梭哈工具    填入地址马上给我爆破出`aeskey` 有种淡淡不详的预感,猜测可能是`docker`容器,如果爆破的时间最长一些我还不会这么觉得,地址填入不到`2s`完成给我感觉就是等着我来测呢  爆破一波利用链,如果是有key无链工具只能用`JRMPClient`分享其他师傅的文章工具可以去了解一下;这里出现了`CommonsBeanutilsString`这条链接,可以直接在功能区调用或者是生成内存马上线冰蝎 [Shiro无依赖链—Commons Beanutils\_shiro 有key 无构造链](https://blog.csdn.net/weixin_52091458/article/details/123686578) <https://cn-sec.com/archives/2673175.html> 检测非常规利用链工具:[https://github.com/wyzxxz/shiro\_rce\_tool](https://github.com/wyzxxz/shiro_rce_tool)  为了确定是否是容器执行此命令看看初始进程,如 `systemd`、`init` 或容器中的主进程)所属的 `cgroup` 信息,如果系统运行在容器中比如`Docker`),路径中通常会包含容器 `docker/abc12345` ,根据回显判断出了确实容器是容器开启的服务,哈基W......还是办不到吗....  ```php cat /proc/1/cgroup ```  但是即使是容器不能逃逸并非没有利用价值,机器内网它可能会通其他内网网段,如`172、198、10`等典型的内网段,后续就是注入内存马冰蝎连接,但推荐各位师傅可以玩玩`Vshell C2`工具,代建正向反向代理都很方便,省去了`frp`等操作,权限够大搞还可以一键命令反弹上线,上线后交给队伍其他人员尝试内网刷分即可,地址和教程如下 [带web界面的C2工具vshell\_4.9.3](https://blog.csdn.net/2303_77176437/article/details/143504711)    有些`shrio`框架指纹识别工具并不能有效的扫描到,只有在我们对每个站点测试时通过响应和请求`rerememberMe` 字段发现,这无疑会错失很多,这里推荐一下P喵呜师傅提供的`Shiroscan`工具可以有效的识别出是否是shiro框架并进行`shiro721`测试 <https://github.com/pmiaowu/BurpShiroPassiveScan>  安装插件后在给出的配置文件内可以自己填充常见的`Shirokey` 进行补充,安装好后安心测站就行,时不时看下说不定会有意想不到的惊喜。  ### Js同域名站点接口复用 登录框`Vue`框架起手,先正常提取插件接口看看是否有信息泄露,无果可以再二次提取`webpack`接口  前端存在登录功能,调用接口后并经验应该是前置的目录`api`所以这里保留,直接放置接口作为`payload`进行爆破   很可惜只有一处信息泄露但是这么大站点怎么会泄露这么二要素呢(姓名被`unicode`编码所以识别不出明文)  这么点信息够谁交啊,让人看到还以为我挖不到洞呢,直接上控制页面参数拿下全部的信息,将近`7k`也够交差了,这也是在接口泄露中提升危害的小技巧,至于具体应该跟上什么页码参数如果其他接口响应能返回一部分信息那么利用响应包的信息拿到请求包使用尝试是否可行,如果不可行只能是`Fuzz` 下面给出我常用的页码组合参数,平时在渗透过程中也可以自己记录并填充,形成自己的渗透字典  ```php /api/users/error_list ?page=1&limit=10000 页码组合参数: ET page=1&size=10000 page=1&page_size=100 pageSize-10&pageIndex=1& pageNum=1&pageSize=10 POST {"pageNum": "1","pageSize": "100"} {"pageNo"1","pageSize":100,} {"pn":1,"size":10} ```  常规`JS`并没有有效接口,那么最后一步提取`chunk`异步`JS`,也就只发现了一个有效接口所造成的信息泄露,和第一个接口一样泄露了二要素姓名电话还有一项家庭住址就去挖掘此域名下其他子域名了 ```php /api/test/test_user_list?page=1&limit=10000 ```   `hunter`测绘到一处新站点,很明显二次一模一样,大家可以通过域名观察,第一个网站是我新发现的主域名站点,第二个网站`test`则是上文我进行挖掘的,那么可以进行最原始的利用方式了,同类似站点接口复用 ```php 新发现站点: 根域名.com 已挖掘站点: test.xxxx.com ```  复用倒是可以复用,但只有复用一个接口且经过处理信息量还是较少,不如第一个站点一根  ```php /api/test/test_user_list?page=1&limit=10000 # 复用成功 /api/users/error_list?page=1&limit=10000 # 复用失败 ```  除了复用第一个站点接口,同时也要跟往常测站一样提当前站接口测试,但也只找到一个有效接口信息泄露也是量太少 ```php /api/users/search?page=1&limit=10000 ```  ### 业务功能注入+越权覆盖 `JS`接口虽然是实用性较强的技巧,但是对于功能点挖掘也不容忽视,进入一处站点登录并注册,我会代理着`BP`大致浏览调用一整个页面的功能,然后在历史记录里稍微看看哪些接口可能会出现问题   熟悉业务结束后如果直接出漏洞当然最好不过,但没有也没关系,毕竟第一步也只是为了熟悉一下业务功能点而已,后续针对每个功能点发的每一个才应该去细细测试,在一处显示列表出发现`tagId`参数,加入单双引号都不行返回的都是`500` ```php tagId=119 ```  ```php tagId=119'--+ -----> 500 tagId=119" --+ ----> 500 ```  字段行不通,尝试测试数字型,利用`and`两边都满足看看是否拼接到了数据库内,`1=1`正常返回 ```php tagId=119+and+1=1 ```  我们设定的条件为假所以肯定是不正常的,响应`500`不返回东西,确定了这个点肯定是有注入的,这种无回显情况除了典型的布尔测试,还可以利用延时函数等等 ```php tagId=119+and+1=2 ```  通过布尔注入在`and`后面利用`if`来判断出数据库的长度后续再判断具体的值,数据库长度确实大于某个数字则为真走`exp`报错,不是的话则是为假,正常返回 ```php tagId=119+and+if(length(schema())>7,exp(999),1) ```  那么大于`6`呢.确实大于6 那么就为真,根据上面的信息,数据库长度是大于`6`小于8的,确定了数据库的长度就是`7`了(少截一张图,但确定了数据库的长度就是7) ```php tagId=119+and+if(length(schema())=7,exp(999),1) ```  有了数据库长度再来测试具体的值`substr`函数截取数据库长度,从第一位开始,如果是`a`则是报错,不是则是返回正常,遍历26位字母和数字伴随其他标点符号,设置好两个`payload`位置这样可以快速出来,只跑7次就可以了,爆破的模式需要选择为集束炸弹  ```php tagId=119+and+if(substr(schema(),1,1)='a',exp(999),1) tagId=119+and+if(substr(schema(), 爆破点 ,1)=' 爆破点 ',exp(999),1) ``` 最好成功的得出当前数据库名称为`chatgpt` 倒也符合这个站点业务基本都是`ai`生成相关  一个站点存在无任何过滤的注入,那么肯定不值一个注入,带着这样的想法继续测试;被动扫描显示`modeIType`参返回了数存在`XPATH`报错信息,这不典型的报错注入嘛,后续就是朴实无华跟上一首`Payload`成功爆出数据库名称,也没有任何`WAF` ;有`WAF`的话主播也只是会简单的替换函数、注释、编码这样,高难度的绕过组合拳只能白嫖朋友套  ```php modeIType=video' and extractvalue(1,concat(char(126),database())) and ' ```  ```php %23 == # %0A == 换行 & == 连接符 %20 == 空格 version()——> @@version hex()、bin() ==> ascii() sleep() ==>benchmark() concat_ws()==>group_concat() mid()、substr() ==> substring() @@user ==> user() user() system_user() session_user() current_usercurrent_user() database() schema() 数据库名 @@datadir ==> datadir() 1、十六进制绕过 eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name=0x61645F6C696E6B 2、ascii 编码绕过 eg:Test =CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116) 3、Unicode 编码 常用的几个符号的一些 Unicode 编码: 单引号: % u0027、% u02b9、% u02bc、% u02c8、% u2032、% uff07、% c0%27、% c0% a7、% e0%80% a7 空格:% u0020、% uff00、% c0%20、% c0% a0、% e0%80% a0 左括号:% u0028、% uff08、% c0%28、% c0% a8、% e0%80% a8 右括号:% u0029、% uff09、% c0%29、% c0% a9、% e0%80% a9 ``` 往往一个站出现`SQL`注入就会伴随着多个,后面也是在此站点发现了多个注入,报错注入直接回显毕竟也是少数,大部分还是通过布尔页面利用页面回显不一样来判断,发现后和上文手住方法一样先测试出长度再遍历库名    测试到头像上传功能点时,图片上传到存储桶,虽然无法打出一些`webshell`操作,但仍可以对存储桶进行列桶,`htmlxss` 、`put`上传等测试,不过这里我却发现了不寻常的地方,响应包上传后生成的图片名称回显在了请求包,经过测试上传文件名可控,并且下方目录也可控   数据包内出现文件名,经过大小号替换图片地址测试,可通过文件名覆盖对方同名上传文件,文件内容也由自己控制,但是这个漏洞利用较难,因为受害者的文件名是固定的,只要可以一直爆破原理上是肯定可以覆盖掉任意人的,但是利用难度较大没有意义  转而寻找可以带出用户信息的功能点,类似排行榜评论区这类,可惜一无所获,但是测试页面发现网站内的图片也是全部存储在存储桶的路径内,上传头像和网站图标只是目录不一致,但桶也是同一个桶  保留下原始的`svg` 到本地为了测试后还原,不破坏网站;然后在头像上传处再次上传,将上传地址改为得到的图标目录地址   成功覆盖证明危害即可后面靠备份图片进行还原,如果写脚本爬到网站内所有图片名称,遍历上传也是可以覆盖全站图片的  ### API接口组合拳Actuator `Vue`站点正常利用插件提取接口,正常跑跑看接口反馈什么情况再选择寻找前置目录还是进行`Fuzz`  发现全部重定向回到前台,那么盲猜会有前置目录情况   老方法调用登录功能触发接口,依旧是熟悉的`api` 那么尝试固定此为前置目录在这个基础上爆破接口,`GET POST`均可以尝试 ```php /api/sys/login ```  如此操作后虽然没有和第一次一样重定向会首页,但接口怎么看着这么奇怪呢一半响应`401`缺少`token`余下一半报错从上游服务器收到无效响应,继续在接口方面进行测试,最终通过两处信息让我确定接口处理有误  ```php /api/gcwms-boot/packing/cylinder/basCylinder/list ```  上文我提到测试前置目录我一般会进行调用功能点的操作,我得到的接口全称是如下,那么我将插件接口放到一处记事本,搜索后置接口`/sys/login/`是否被我插件所提取,这个插件是我确定不了前置接口的惯用操作,只要登录口可以调用功能对比接口快速确定 ```php /api/sys/login ```  搜索后置接口发现确实被插件所提取,但是前置的目录却是`/gcwms-boot/`那么不难猜出这个`/gcwms-boot/`接口对应的正是`/api` 想要正确的爆破需要将提取到的接口存在`/gcwms-boot/`的地方全部替换为`api` ```php /gcwms-boot/sys/login ```  并且像这种前后端架构出现了`Vue`框架那么基本上可以确定为`Vue+Springboot`开发,我也习惯会去利用`dirserach`字典爆破,或者利用`Onescan` `TsojanScan`等被动扫描插件辅助测试,在这个场景下插件就帮我扫描出了经典的`actuator`端点泄露以及`swagger` `druid`等捡漏三件套  当我浏览器访问`actuator`端口目录时,虽然没有出现`env` `heapdump`等接口,但观察到页面显示的第一层目录为`gcwms-boot`但是浏览器对应的是`api` 既然我让`gcwms-boot`作为第一层目录会直接重定向会首页,那么全局修改提取到的接口,将前置目录修改为`api`再测试 ```php /gcwms-boot/actuator /api/actuator/ gcwms-boot=api ```   全局搜索替换`gcwms-boot`为`api`   接口全部正常响应没有出现`502`情况并且也出现了一些不痛不痒的配置信息,证明上文我的处理方式是正常的,但是大量接口响应`401`后端存在鉴权,无法获取有价值信息,依旧办不到。。。 ```php https://xxxxx.com/api/bas/basWarehouse/childList ```    大家基本上都主要是关注`env`、`heapdump`,还有容易造成命令执行的、`gateway`、`hystrix.stream`、`jolokia`等等,`httptrace`和`logfile` 这类记录信息的接口却很容易被忽视,通常这二次不会一起出现,包括这里也只出现了`httptrace`,简单来说会记录登录鉴权信息,`JWT cookie`等 `httptrace`可以记录每一个HTTP请求的信息,包括请求路径、请求参数、响应状态、返回参数、请求耗时等信息。一般会随着`SpringBoot Actuator`未授权同时出现   鉴权可能会过期所以下拉找到时间段最新的`JWT` ```php x-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjA5Mjk4MjAsInVzZXJuYW1lIjoiYWRtaW4ifQ.PuGa-Fo5o7N0mH2Dxmllov3XpLyJX5oDNGrJT-8fkz8 ```  携带`token`后再次遍历应该处理的接口,出现大量业务数据泄露,伴随很多`xls`表格记录着联系人列表供应商信息等等,拿下业务数据证明危害,已删除记录    如在攻防中,如演练手册信息泄露并不局限于公民三要素,那么通过`JS`接口拿下更多的业务数据也是一个不错的选择,各位师傅不要放过这些点  ### 民生业务信息收集思路 某一众测项目,项目是某一城市水务公司,在web信息收集一圈并未发现比较好的目标,大多需要统一认证账号,转而去向业务点更丰富的小程序资产,但是即使我利用微信登录拥有了账号后,但还需要关键的居民用水账号,否则无法测试功能点,自此便开始了互联网信息收集之旅   在小红书亦或者抖音等社交媒体发帖平台,检索对应的关键字可得到相关信息,关键字偏实用性这样检索更为精确,后续就是在众多的帖子细细发现是否出现了户号、姓名等 ```php xxx水费 xxxx水费缴纳 xxxxx水费太贵了 ```  不得不说现在的网友网络安全意识是越来越好了,基本都会把关键信息打码,这也为我们的信息收集增加了一点难度,但肯定会有漏网之鱼   应该长达两分半的小红书冲浪也是找到了一处比较全的信息,里面包含了户号还有后两位姓名等信息,但是姓名不全,接下来就是的单方面社工,浏览他的个人账号帖子、评论区、其他社交媒体,最终通过一个没打码的手机号配合`sgk`利用`lm`控制地区检索得到完整的姓名电话`sfz`三要素,各位师傅懂的都懂,不懂的慢慢学到后面也就懂了   凡事涉及大量居民日常必备的业务,如水务、电力、医院等行业均可以利用互联网公开资源进行信息收集,包括刚入门的师傅热衷于挖掘教育`edu`,见惯了谷歌语法学号密码,为何不试试看在抖音、小红书尝试检索`xxx`学校学生证掉了呢,这里我只起抛砖引玉的作用,思路有多好危害就有多大。  通过信息收集拿到完整的户号姓名后也是顺利绑定到了账号,测试到了几处越权也不算白费功夫,不要倒在信息收集这一步,有账号和没账号完全是天壤之别,如果身边有熟人那自然最好不过直接给个相关账号就行,如果没有只能老老实实信息收集   ### 结语 后续文章方法依旧还会往漏洞挖掘案例,但不局限于`JS`接口方面,会把有意思的逻辑组合拳,如何测试业务逻辑漏洞,以及发现`TOP10`漏洞等等,让大家不止只会接口这一攻击面,如文章对师傅们有帮助,请点点推荐,你的点赞就是为创作的动力,并且在文章中插入我喜欢的表情包也是创造动力之一;秋意渐浓记得一天要喝八杯水
发表于 2025-10-30 09:00:00
阅读 ( 506 )
分类:
渗透测试
4 推荐
收藏
0 条评论
请先
登录
后评论
一天要喝八杯水
大厂螺丝工
7 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!