【渗透测试】未授权从接口FUZZ到后台getshell

admin 2025年6月13日13:02:06评论26 views字数 1851阅读6分10秒阅读模式

扫码加圈子

获内部资料

【渗透测试】未授权从接口FUZZ到后台getshell
【渗透测试】未授权从接口FUZZ到后台getshell

网络安全领域各种资源,EDUSRC证书站挖掘、红蓝攻防、渗透测试等优质文章,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。加内部圈子,文末有彩蛋(知识星球优惠卷)。

文章作者:hkhigh

文章来源:https://www.freebuf.com/articles/web/431902.html

从未授权访问到进一步的实践

一、前置背景

对公司一个看似没有任何内容的PRS系统进行渗透,中间试图放弃,但凭借更精细的信息收集和联想(利用ai+经验),最后成功拿到结果。说明:该目标为公司系统,经过授权测试。

二、实践历程

1.信息收集

拿到资产开始访问,跳转到一个登录界面如下:

【渗透测试】未授权从接口FUZZ到后台getshell

输入常规弱密码 amin:123456显示error,点击注册也是返回一个空页面,一度以为这个页面是个假页面,没有继续使用了。

【渗透测试】未授权从接口FUZZ到后台getshell

1.1 目录爆破

没有得到任何有用的目录,也是想放弃。

【渗透测试】未授权从接口FUZZ到后台getshell

1.2 JS泄露路径

发现JS泄露了一些接口信息,把它拼接起来进行访问

【渗透测试】未授权从接口FUZZ到后台getshell

其中的一个接口,返回了

【渗透测试】未授权从接口FUZZ到后台getshell

通过错误信息,知道采用了struts框架,这里只知道struts框架比较出名的RCE漏洞是通过OGNL表达式注入达到目的。这里试了几个以前别人打过的OGNL表达式传给id:

#FreeCms 命令执行 POC:(#context["xwork.MethodAccessor.denyMethodExecution"]= new java.lang.Boolean(false), #_memberAccess["allowStaticMethodAccess"]= new java.lang.Boolean(true), @java.lang.Runtime@getRuntime().exec('net user admin admin /add'))(meh)&z[(user.loginname)('meh')]=true
#2015年 struts2 POC【这里看是不是开启了debug】:?debug=command&expression=new java.io.BufferedReader(new java.io.InputStreamReader(new java.lang.ProcessBuilder({'whoami'}).start().getInputStream())).readLine()

但后面才知道,方向打偏了,该资产并没有采用struts2,可以看上面的图,

  • 查看返回堆栈:如果全是 org.apache.struts.action 开头,那是 Struts1

  • 如果出现 org.apache.struts2.interceptor, xwork 等关键词,是 Struts2而struts1是本身不支持OGNL表达式

但是同时也知道了这个站的技术栈确实很老了。

2.接口FUZZ构造

仔细观察这个接口:

/productBase.do?method=delete&id=

尝试构造了:

/user.do?method=deleteUser&id=

先是提示 删除失败

【渗透测试】未授权从接口FUZZ到后台getshell

然后返回了所有账户信息

【渗透测试】未授权从接口FUZZ到后台getshell

3.账户爆破

将上面拿到的所有账户保存下来,形成一个字典表,然后找到常用密码字典,进行爆破,成功拿到2个账户:

【渗透测试】未授权从接口FUZZ到后台getshell

成功登录,其中一个如下:

【渗透测试】未授权从接口FUZZ到后台getshell

4.垂直/水平越权

再次借助findsomething插件,找到以下接口

/user.do/user.do?method=UpdatePassword&id=/user.do?method=deleteUser&id=/user.do?method=goListIndex&current=/user.do?method=goSearch&searchtext=

访问

/user.do?method=UpdatePassword&id=1

成功重置管理员账户,这里也是猜的,并不知道id=1就是admin账户,没想到成功登录了

【渗透测试】未授权从接口FUZZ到后台getshell

登录管理员账户如下

【渗透测试】未授权从接口FUZZ到后台getshell

5.找上传点尝试getshell

借助burp,发现有KindEditor 编辑器,且该版本存在上传漏洞

【渗透测试】未授权从接口FUZZ到后台getshell

详情参阅 kindeditor<=4.1.10上传漏洞复现但是公司的站点已经没有上面文章提到的漏洞点页面了。还有一些其他的上传点

【渗透测试】未授权从接口FUZZ到后台getshell

上传东西之后,不给任何返回,虽然响应码为200,但无法判断是否上传成功,这里由于在内部,可以和研发沟通之前找到的敏感信息,猜测上传成功后文件的位置,让研发帮忙看一下。

【渗透测试】未授权从接口FUZZ到后台getshell

原文始发于微信公众号(神农Sec):【渗透测试】未授权从接口FUZZ到后台getshell

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月13日13:02:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【渗透测试】未授权从接口FUZZ到后台getshellhttp://cn-sec.com/archives/4161550.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息