本文已发于《非安全》
小谈WIN系统Hacking中提权前的小命令 NP (NetPatch)
从本文你可以了解系统命令的一些小细节
老习惯,先说说题外话(骗点稿费),其实我是个懒人,实在不喜欢去写什么文章,不过LCX大哥下死命令了,咱就硬着头皮上吧。反正文笔不好,也有他这个编辑在!^_^ 今天就给大家谈谈我在Hacking中用到的一些小命令吧,算是经验之谈了。OK,题外话唠叨完了,咱就进入主题吧。
我们来谈下提权前的,(WIN系统)服务器内部信息探测!(因为现在机器基本上都是2K3以上了,所以我们的话题主要围绕2K3谈)我们拿到一个低权限的WEBSHELL后,一般都是先探测服务器内部信息,以找到可以提权的条件或桥梁。(当然,也有一些WEBSHELL上去了就直接是管理员权限,甚至是SYSTEM权限,但是这个已经不在我这个话题的讨论范围了。) 因为不知道大家是如何探测目标服务器的总体环境的,所以我这边就全当讲给新手朋友听的,老鸟略过。什么叫服务器的总体环境呢?例如:目标服务器开启的端口、进程、系统服务,安装了哪些程序,系统安全的大体设置。我们这边谈的探测,基本上都是建立在可以执行基本命令的WEBSHELL上的。(我们的主题本就是提权前的小命令嘛,咱不能跑题不是^_^)
一、首先,探测端口。 我们一般都用 netstat -an ,这个是在WIN系统上常用命令。但微软在WINXP以后,就加强了此命令。
★ -b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件拥有多个独立组件,并且在这些情况下包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名以及其调用的组件,等等,直到 TCP/IP 部分。注意此选项可能需要很长时间,如果没有足够权限可能失败。 -o 显示与每个连接相关的所属进程 ID。 -v 与 -b 选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。 ★
因此2K3上加上这些参数后,我们可以在服务器上获得更多的信息。比如端口所对应的进程名和进程PID、其调用的组件以及相对系统路径。
netstat -anb 的结果如图1所示
netstat -ano 的结果如图2所示
图1 图2
而我们为了能获得更详细的信息,一般都会用netstat -anvb 这时,你看到的信息包括 进程名、相对应的进程PID、端口所用的协议、调用的可执行组件、相对的组件和第三方进程的系统路径。
二、其次,进程信息的获取。
tasklist /svc //此命令可以获取每个进程中主持的服务,如图3所示:
这个命令我想,大部分的安全技术爱好者都会。我们再来了解一个命令。 ●start /wait msinfo32.exe /report c:\windows\temp\list.txt /categories swenv+SWEnvRunningTasks●运行结果如图4所示。
msinfo32.exe是什么呢?记得LCX大哥也有介绍过相关的信息(《黑客手册200801》“我在入侵过程中注意到的细节(一)”, 此程序可以显示计算机中的有关系统信息,可用其诊断、解决计算机问题并查看远程系统所生成的系统报告。用此程序的命令行用法可以获得更详细的进程信息。当然,此命令在低权限的WEBSHELL下,只能看其有权限看的进程信息。不过获取的信息比Tasklist获取的要详细很多。
三、再次,系统服务信息的获取。 由于2K3默认设置限制了WEBSHELL查看“系统服务信息”,所以我们需要配合SC命令来获取我们需要的系统服务相关信息! 首先,我们可以用net start 来获得已经运行的服务,如图5所示。
通过Tasklist和net start命令获得了相关服务后,我们就要开始找自己感兴趣的服务了。 例如,我们要找SERV-U服务相关的信息,我们可以用以下命令来获取。由于我们从net start命令中获取的系统服务信息显示的是系统服务的“显示名称”而sc的qc参数和query参数,都没办法直接从系统服务的“显示名称”获得信息,如图6所示:
于是我们需要用sc的getkeyname参数,先从系统服务的“显示名称”获得其服务名(当然,如果你知道其系统服务名称,就不必要那么麻烦了,直接查询即可) sc getkeyname "Serv-U FTP Server" 命令执行后的结果如图7所示。获得了系统服务名称后,我们就可以用qc或query查询其相关信息了 如图8、图9所示。
我们再次派msinfo32.exe出场!嘿嘿,这个可是好家伙呀,Hacking必备。 ●start /wait msinfo32.exe /report c:\windows\temp\service.txt /categories swenv+SWEnvServices●,命令结果,如图10所示:
再再次,我们详细了解下如何用msinfo32.exe来获取更多的信息:
★ Msinfo32.exe 的用法 /? - 显示“帮助”对话框
/msinfo_file=文件名 - 打开指定的 .nfo 或 .cab 文件
/nfo 或 /s 文件名 - 将 .nfo 文件输出到指定的文件
/report 文件名 - 将文本格式的文件输出到指定的文件
/computer 计算机名 - 连接到指定的计算机
/categories (+|-)(all | 类别名) +|-(类别名)...- 显示或输出指定的类别
/category 类别名 - 在启动时将焦点设置到特定类别
由于我们一般只需要获取软件环境信息,所以我们这边就只了解下此程序的软件环境的子类别开关名称 软件环境的子类别 子类别标题 子类别开关 =================================================== 驱动程序 SWEnvDrivers 环境变量 SWEnvEnvVars 作业 SWEnvJobs 网络连接 SWEnvNetConn 正在运行任务 SWEnvRunningTasks 加载的模块 SWEnvLoadedModules 服务 SWEnvServices 程序组 SWEnvProgramGroup 启动程序 SWEnvStartupPrograms OLE 注册 SWEnvOLEReg ★
示例: 获取环境变量: ●start /wait msinfo32.exe /report c:\windows\temp\Startup.txt /categories swenv+SWEnvEnvVars● 获取程序组信息(可以获取到目标服务器所安装的软件信息): ●start /wait msinfo32.exe /report c:\windows\temp\programs.txt /categories swenv+SWEnvStartupPrograms● 获取启动程序相关信息: ●start /wait msinfo32.exe /report c:\windows\temp\Startup.txt /categories swenv+SWEnvStartupPrograms●
注意:示例中使用了 start /wait 开关,以便从 Cmd.exe 命令提示符处执行批处理文件和/或命令行。要启动 Msinfo32.exe,必须使用 start 开关;如果使用 /wait 开关,则在当前项目完成之前,将不会处理下一个项目。使用 start /wait 开关可以确保计算机不会因为某些 Msinfo32.exe 类别占用大量 CPU 时间而发生过载。
最后,我们顺带一下系统权限配置的查看。很多人都知道cacls命令,只要cacls 然后目录或文件的路径即可,如图11所示。
写了那么多,可能一些人都看烦咯,怎么讲的都是基础的命令,不是在浪费我们的时间么?呵呵,太臭的我也不敢写出来,再着我们要照顾新手朋友呀。
四、下面我们来做做总结。 为什么要获取服务器的这些总体信息呢? 1.端口信息,可以让我们知道服务器开了哪些端口?哪些端口可以利用?哪些端口对应的服务或程序可以利用?或是对方还开了哪些我们不知道的服务(比如对方又开了一些不常用的端口来运行高权限的WEB服务,如tomcat等)。 比如,SERV-U修改了本地管理端口,我们也可以通过端口和进程信息进行了解。 2.进程信息,可以让我们知道服务器运行了哪些程序,管理员喜欢开什么程序,或正在运行什么程序。有哪些防护(比如杀毒软件,防火墙等信息) 3.系统服务信息,可以让我们了解,哪些服务是运行的,哪些服务可以利用。第三方服务的路径以及启动方式等信息。 如果第三方服务,是装在某些特殊目录,我们可以通过查询系统服务信息获得后,用CACLS命令查询其是否有权限进行修改或写入等操作。若可以写入,或修改,我们就可以替换或修改服务程序来达到提权的目的。 4.系统环境变量,也可以让我们获得一些信息,比如安装了哪些程序,哪些变量我们可以利用。(可以参照我以前写的《谈环境变量在Hacking中的利用》) 5.系统权限的设置的探测,我们可以通过一些疏漏的地方进行利用,以达到提权的目的。
服务器中细微的信息,都可能对我们的提权帮助很大。所以我们都不能放过。啰嗦了那么多,不知道大家是否学到了东西呢?如果你有更好的建议和方法。希望能与我分享,我会非常感谢的。欢迎到www.nspcn.org与我讨论交流。
编辑点评:大家也许有这样一个感觉,看到某人拿下一个难度有点大的网站,而自己却无能为力,对此感到惊奇,询问对方入侵流程后却发现入侵者用的都是自己已掌握的知识。为什么会这样呢?其实就是一个对基础知识掌握能力是否扎实的问题了。
|