关于ASP读写注册表的实现与讨论
2018-09-06 12:07
by:kevin1986
昨天下午Perl发来一个文本文档,说是用ASP建立对象来读写注册表。开始是没觉得什么,因为用Wscript.Shell可以直接读取注册表的内容的。这个应该谁都知道了,写个简单的代码:然后就拿着和Neeao讨论去
Code: [Copy to clipboard]
dim WSHShell
set WSHShell=Server.CreateObject(Wscript.Shell) 建立WSHSHELL对象
isReadstr=WSHShell.RegRead(HKLMSoftwareMicrosoftWindowsCurrentVersionRunovertime) 读取启动组里overtime的值
response.write The RegValue is:isReadstr 打印出来
set WSHShell=nothing 这个是个要养成的习惯
% >
这样就返回了注册表中的值。C:WINNTMYTIME.EXE(这个是我自己写的网络时间校对程序,没办法,BIOS电池没电了)
但是在仔细一看文章的标题:《用ASP读写注册表》
恩?写的呢?不会吧。
我们知道IIS启动的是USERS组下的IUSR_SERVERNAME和IWAM_SERVERNAME.前者的作用不太清楚,后者是IIS调用COM组件用的用户.因为他是USERS的权限,所以理论上来说不能写注册表。我们都知道在USERS权限下启动一个改写注册表的木马几乎没有能写进去的案例.
这个大概是权限的问题.我们来研究一下.
抛弃RegEdit.EXE用RegEdt32.EXE打开.然后选择HKEY_LOCAL_MACHINE,再依次打开SoftWareMicrosoftWindowsCurrentVersionRun
接着点标题栏:权限安全
我们现在能看到系统给了USERS用户一个读的权限,而完全控制是没有的....要不我们的渗透就简单多了.呵呵.
注册表中一般只有2个权限,读和写,而写就是完全控制了.所以我们不能向这个启动项里写些什么....不过聪明的你应该想到在拿到Admin的权限下的时候做个怎么样的后门了吧...嘿嘿.不要我说了.
那么真的能向注册表里写东西吗?
我大概用了半个小时的时间去找这个USERS能写的项,结果是一个没发现.倒是很多的项完全不给USERS机会.SAM项连ADMIN都不给权限的说......真是MS想的周到啊...
所以我个人认为是不能向注册表里写东西的,反而读有的时候会读到一些不错的东西.
比如VNC的密码啦.....启动的某些程序啦....开了什么服务啦,对了.还能读到Terminal Services的端口,因为我发现,HKLMSERVICES中的项都有给USERS一个读的权限的.也就是说我们可以从里面了解到很多一般ASP探针检测不到的东西...对渗透也是一大帮助......
另外还WSHShell还有其他一些对注册表的操作,毕竟我们一个一个读太不准确...用那个Mul什么的可以直接列出所以的键值来,大家自己去研究吧...我也在写一个能读注册表的ASP程序.到时候可以当木马用.呵呵
下一篇:jb51内容分页函数