某市级攻防一次拿shell实记
原创
zkaq- Ra1nb0w
zkaq- Ra1nb0w
掌控安全EDU
2026年10月9日 12:00
江西
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
扫码领资料
获网安教程
本文由掌控安全学院 - Ra1nb0w 投稿
来Track安全社区投稿~
千元稿费!还有保底奖励~( https://bbs.zkaq.cn )****
某次护网期间,对某平台进行了一次渗透测试。原本以为只是个平平无奇的测试,没想到一步步从信息泄露走到了内网,过程还算有意思,记录分享,也作为发布的第一篇文章。
一、信息收集— 报错中的突破口
目标地址:http://xxx:8028/
随手访问,Spring Boot 直接甩了个报错页面。经验告诉我——报错是好事,说明没做全局异常处理,信息可能泄露。
果不其然,dirsearch扫描后发现了Swagger接口文档的存在。直接访问/v2/api-docs:
返回了完整的Swagger文档,整整26个API接口全部暴露,并且没有一丝丝鉴权。
逐一翻阅,有三个接口让人眼前一亮:
/xxxx/readtxtNew、/xxxx/writeFile、/xxxx/send,最后通过不断的 fuzz 参数,终于把这三个接口跑通了,大概作用如下。
GET /xxxx/readtxtNew → 任意文件读取
POST /xxxx/writeFile → 任意文件写入
POST /xxxx/send → SSRF
二、组合利用发现接口— 形成 1+1+1>3 的效果
先试试文件读取接口/readtxtNew,参数是path和txtName,直接拼接路径,没有任何限制。
读一下 hosts 文件确认权限:
GET /xxx/readtxtNew?txtName=hosts&path=C:/windows/system32/drivers/etc/ HTTP/1.1
Host: x.x.x.x:8028
返回了hosts内容,确认是部署在华为政务云的一台Windows Server 2008 R2服务器。
再看写入接口/writeFile,直接指定路径和内容就能写文件:
POST /xxxx/writeFile?Path=C:/xxx/wwwroot/cmd.aspx&message=xxxx HTTP/1.1
Host: x.x.x.x:8028
返回true,写入成功。
同时再看 /send 接口,SSRF服务端请求伪造,可以指定任意URL让服务器去访问。
写入+ssrf 两个漏洞一组合,直接RCE:
组合利用链:任意文件写入→写ASPX CMD到IIS目录 → SSRF触发 →RCE
写个简单的ASPXcmd,通过SSRF触发:
POST /xxxx/send?url=http://127.0.0.1/cmd.aspx?cmd=whoami&message=GET HTTP/1.1
Host: x.x.x.x:8028
返回:iis apppool\defaultapppool。
但问题来了——这不是真正的shell。每次执行命令都要经过SSRF中转,返回结果裹在JSON里,而且SSRF传参有URL长度限制,带空格的命令都跑不了。更坑的是,IIS 对静态文件只接受GET请求,而SSRF发的是POST,想直接访问写进去的文件?405 Method Not Allowed。总而言之RCE能用,但难受到不行。但是毕竟命令已经能执行,这不直接上马,当即命令查看电脑环境,这里也是运气好,发现该服务器并没有杀软,不过真的要直接得吃了吗?
三、拿shell
说干就干,通过命令写马我尝试直接访问写入IIS的ASPX文件,理想是很丰满的,但是不要忘了,我们刚开始正常访问网站就是报错,果不其然访问上传的文件依旧报错,这里不死心又传了其他类型文件,依旧不行。
反复琢磨后发现——端口8028跑的是Spring Boot的嵌入式Tomcat,以java -jar ng5.jar方式运行,所有静态资源都打包在JAR里面。而端口80的IIS才是写文件的目的地,但80端口对外不通。
也就是说,Spring Boot和IIS是两个完全独立的服务,写文件只能写到IIS目录,也就是说想通过8028直接访问写进去的文件根本不行,更不要说拿shell了,除非改他jar包重启服务,不过风险太大了,果断放弃。后续想尝试搭隧道,但发现各种代理隧道文件太大传不上,分块传输合并时发现权限不够、试过在8029开新服务(外网防火墙拦了)、试过各种绕过方式全都被卡住。
难道就到此为止了吗?
四、转机— 扫描发现 7001 端口
正发愁的时候,转念一想:这个IP上会不会还有其他公网服务?
果断扫了一圈:
7001 OPEN
7002 OPEN
8000 OPEN
8028 OPEN
7001端口!这个端口默认是WebLogic的,但访问后发现是另外的一个地方的网站站点,我去!这要是给他拿下了,那不是直接爽吃,并且资产都在范围内,不过粗略测了一下,感觉没什么搞头。
但是我们已经拿下了 8028 端口的 rce, 继续探,通过之前的文件读取接口翻web.config,确认了 7001 站点的物理路径在D:\xxxx\xxxx\。更关键的是——之前那个任意文件写入接口,可以直接往这个目录写文件!
写个测试文件验证:
POST /xxxx/writeFile?Path=D:/xxxxx/xxxxx/1.txt&message=hello HTTP/1.1
Host: x.x.x.x:8028
访问http://x.x.x.x:7001/1.txt
通了!!!那还说啥了,这意味着,我写进去的ASPX文件可以直接通过7001端口访问,不需要经过SSRF中转,不需要JSON拆包,不需要忍受各种限制!
直接上传哥斯拉 ASPX 马:
POST /xxx/writeFile?Path=D:/xxx/xxx/1.aspx&message=xxx HTTP/1.1
Host: x.x.x.x:8028
、
成功上线!!!
折腾了这么久,终于拿到了真正的shell。回头一看,突破口竟然不是Spring Boot本身,而是同一台机器上另一个端口暴露的.NET站点,可惜了,这只是一台服务器,没有双网卡,也不在域内,不能进一步打内网其他主机。后面就是东翻西翻了,还记得之前说的吗,因为这个主机部署了多个区的站点,共同使用了一个 sqlserver 数据库,所以最后也是成功拿下 1T 多的数据(这里真是爽了),以及管理员主机账密,还有一些杂七杂八的就不说了。之后换了几个不同工具搭隧道,终于也是连上了远程桌面(还换了默认端口,有点淘气了),至此这个站基本上已经全拿下了。
五、小结
本次渗透从Spring Boot报错信息入手,通过Swagger泄露发现关键接口,利用文件读取+文件写入+SSRF三洞组合实现 RCE。虽然被Spring Boot的JAR包机制挡了一下,但通过端口扫描发现了额外的攻击面,最终顺利拿 shell 上线,过程是曲折的,结果是美丽的。
注:文章中涉及的相关信息均已做多层脱敏处理,内容仅作技术经验分享之用,请勿过度解读。未经授权的网络攻击行为属于违法犯罪活动,切勿以身试法。因传播或利用本文所提供的任何信息而引发的直接或间接后果及损失,概由使用者自行承担,作者及发布平台不为此承担任何法律责任,一切不良后果请自行负责。
申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
没看够~?欢迎关注!
分享本文到朋友圈,可以凭截图找老师领取
上千教程+工具+交流群+靶场账号哦
分享后扫码加我!
回顾往期内容
代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!
点赞+在看支持一下吧~感谢看官老爷~
你的点赞是我更新的动力
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论