记一次一波三折的众测SRC经历

admin 2025年2月14日13:42:55评论44 views字数 2654阅读8分50秒阅读模式
本文由掌控安全学院 -   郑居中 投稿

Track安全社区投稿~  

千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

前言

先谈个人SRC心得体会吧,我虽然很早前就体验过挖掘SRC来锻炼自己,但真正坚持下来大概是从去年3月初开始。一开始主要是逛公益SRC平台和教育SRC,动作有点慢,经常遇到报告提交前人吃肉后人喝汤的局面,而且赚不到米,慢慢进入补天SRC开始挖掘小企业和众测。因为之前算是做过几个渗透测试的项目,所以自始至终我都把关注重点放在”交互”上,而且,关键也在于”信息收集”上,只要足够细心和耐心慢慢就有了产出。

本文下面记录一次不断碰到难题不断解决难题的的众测SRC实战,为期三四天,文章不算长,请耐心看完。开局发现是一个搞外贸的企业的信息发布网站。

记一次一波三折的众测SRC经历

波折一:RCE漏洞利用失败

通过信息搜集发现网站框架为thinkphp。作为曾经的程序员,我知道ThinkPHP是一个广泛使用的PHP开发框架,但历史上存在多个安全漏洞,尤其是远程代码执行(RCE)漏洞非常好利用。

记一次一波三折的众测SRC经历

于是第一反应就是祭出神器Liqun工具箱-1.5进行漏洞扫描与利用,奇怪的是,虽然利用exp工具能够扫描出来确实存在rce漏洞,但是无法成功利用执行命令whoami,多次尝试反弹shell到我的vps也是没有成功。

记一次一波三折的众测SRC经历

记一次一波三折的众测SRC经历

分析问题出现原因:

  • 可能是工具误报,目标系统并未真正存在该漏洞。
  • 可能是目标系统部署了WAF(Web应用防火墙),拦截了攻击请求。

时间宝贵啊于是只能放弃这里的进攻点,去寻找新的突破口。

波折二:SQL时间盲注

这里必须要安利一个好用的burpsuite插件,xia_sql,能够被动检测SQL注入漏洞。通过前端不断点击与后台交互的功能点,找到一处存在注入点,但坑的是没有数据回显,只能使用时间盲注。

记一次一波三折的众测SRC经历

更坑的是后台居然过滤了OR 和 AND 关键字,还有空格字符,or可以用||替代,而and可以用&&替代,对于空格字符常见的绕过思路是:

  1. space2plus
    • 将空格替换为+
    • 示例:UNION SELECT -> UNION+SELECT
  2. space2hash
    • 将空格替换为%23(即#,URL编码)。
    • 示例:UNION SELECT -> UNION%23SELECT
  3. space2blank
    • 将空格替换为其他空白字符(如%09%0A等)。
    • 示例:UNION SELECT -> UNION%09SELECT
  4. space2randomblank
    • 将空格替换为随机的空白字符(如%09%0A%0C等)。
    • 示例:UNION SELECT -> UNION%0ASELECT

如下图,因为网站有关键字符过滤,所以sqlmap跑不出任何信息

记一次一波三折的众测SRC经历

补充一个知识点:Tamper脚本是SQLMap中用于修改请求数据的脚本,能够对注入语句进行编码、混淆或其他处理,以绕过WAF或其他过滤机制。

最终编写了一个sqlmap的tamper脚本space2randomblank_and_keywords,成功绕过,获取到数据库信息,尤其是管理员账号密码

  1. #!/usr/bin/env python
  2. """
  3. Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)
  4. See the file 'LICENSE' for copying permission
  5. """
  6. import random
  7. from lib.core.enums import PRIORITY
  8. __priority__ = PRIORITY.NORMAL
  9. def dependencies():
  10. pass
  11. def tamper(payload,**kwargs):
  12. """
  13. 将空格替换为随机的空白字符(如 %09, %0A, %0C 等)
  14. 例如:UNION SELECT -> UNION%0ASELECT 或 UNION%09SELECT
  15. """
  16. if payload:
  17. # 定义可用的空白字符
  18. blank_chars =["%09","%0A","%0C","%0D"]
  19. # 替换空格为随机的空白字符
  20. payload = payload.replace(" ", random.choice(blank_chars))
  21. # 替换 OR 和 AND 关键字
  22. payload = payload.replace("OR","||")# 替换 OR 为 ||
  23. payload = payload.replace("AND","&&")# 替换 AND 为 &&
  24. return payload

利用tamper脚本跑出banner

记一次一波三折的众测SRC经历

利用tamper脚本跑出数据库中所有表名,重要的是admin表和user表

记一次一波三折的众测SRC经历

最终成功利用sqlmap跑出管理员账户密码为XXXX/XXXX888(因为数据敏感所以这里不放图了)

波折三:寻找管理后台

经常打SRC的大佬都知道接下来要扩大战果就是进管理后台了,但是我死活找不到该thinkphp网站的管理后台:

先是通过常规路径尝试,因为一般thinkphp框架的后台路径默认是/admin/但是这里报错显示无法加载模块admin

记一次一波三折的众测SRC经历

接着通过路径扫描工具,如dirsearch/御剑等路径扫描工具fuzz后台路径,还是无果

记一次一波三折的众测SRC经历

用了五六款工具和一个小时了,还是搞不进去,有点“难受香菇”啊。

只要努力奇迹还是可能出现的哈哈,最终通过C段扫描找到该公司下属的其他业务系统(即OA办公系统)管理后台。

记一次一波三折的众测SRC经历

记一次一波三折的众测SRC经历

利用之前获取的管理员账号密码是企业名称简写/企业名称简写+888,进一步生成若干组合弱口令攻击和撞库,成功进入OA办公系统后台。在获取管理后台权限后,可以进一步探索系统内部,寻找更多敏感信息或漏洞。

打完~~~~收工,最后提一句厂家给了中危300大洋,谢谢厂家审核大大哈哈!

总结

目标系统存在SQL注入漏洞,而且是比较难利用的时间盲注,过滤了or/and/空格等关键字符。在实际渗透测试中,Tamper脚本是非常有用的工具,能够显著提高SQL注入攻击的成功率。后台路径隐藏较深,增加了攻击难度。通过C段扫描和组合口令攻击,成功进入管理后台,暴露了系统的防御问题。

我觉得,渗透测试中要心平静气,仔细观察每一个服务器/客户端交互的数据包,一条道走不通灵活地换一条道,山穷水复疑无路,柳暗花明又一村。为了提高渗透效率,还要不断地提高工具编写能力,平时多学习网站前后台交互的底层原理。

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

记一次一波三折的众测SRC经历

 

原文始发于微信公众号(掌控安全EDU):记一次一波三折的众测SRC经历

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月14日13:42:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次一波三折的众测SRC经历https://cn-sec.com/archives/3740637.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息