前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

命令行参数劫持的前世今生,值得好好开下脑洞了

qiguaw 2024-11-26 07:43:42 资源文章 14 ℃ 0 评论

先来说一下命令行cmd.exe的以前一个老的漏洞,cmd.exe在处理.bat文件时会将ASCII字符(代码26)视为命令分隔符(如&或|)。什么意思呢?我们正常同时运行两条cmd命令,微软给我们的参数是&分隔符。

比如运行:net user & whoami


这两条命令同时就会运行了。但在批处理中,用一个不可见的ASCII置换符(代码26,16进制为1a)也同样可以起到作用。如何做呢。把net user whoami写成批处理up.bat,然后用emeditor编辑器16进制打开,把两条命令里的空格20换成1a就行。



运行时,两条命令也会同时运行。


当年这个漏洞值五千美元。这可不是我瞎说,在下边图中可以证明(头条不让在文章中放链接)。


所以现在国外有一个黑客,同样也发现了cmd.exe的一个新的参数劫持,微软不承认,也不给钱,所以他写了篇文章忿忿不平。他的参数命令格式如下(注意要在c盘下运行):

cmd.exe /c "ping 127.0.0.1/../../../../../../../../../../windows/system32/calc.exe"


也可以cmd.exe /c "ping ;calc.exe; 127.0.0.1/../../../../../../../../../windows/system32/WindowsPowerShell/v1.0/POWERSHELL.EXE"

这个怎么利用呢?我们来看一段经典代码:

利用方式如下:

正常使用:


滥用:

我测试过很可惜不能加参数,不过结合上传什么的还是值得利用的,要好好开下脑洞了。


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表