【vulnhub】——DC-9靶机

1. 主机发现

扫描kali主机C段(Kali和DC-9主机在同一个网关下):

发现主机为192.168.108.146,进行详细端口扫描:

可以看到靶机开了一个ssh和http服务。可以使用ssh弱密码爆破,但是可以看到22端口的状态是filter,这里先看web部分。

2.SQL注入

  • 打开相应网页可以发现是一个职员管理系统,进行目录爆破:

    没有什么发现

  • 观察页面发现,主要在search.php中有搜索框,manager.php中有登录界面,从这两点下手。测试后发现search.php在搜索时会请求result.php,对其中的变量用sqlmap测试:

    • 先将请求包保存到文件:

    • 用sqlmap爆破:

      查看表:

      sqlmap -l /home/jay/test.txt --dbs

      查看user表的列:

      sqlmap -l /home/jay/test.txt -D Staff --tables -T Users --colum

      说明应该是manager.php中所需要的数据,查看具体值:

      sqlmap -l /home/jay/test.txt -D Staff --tables -T Users --colum --dump

      同时这里使用sqlmap自带的字典进行md5值破解:

      这样就可以使用admin与transorbital1进行登录。

  • 登录后,管理员就可以自己添加数据到Staff表,没有什么发现。所以尝试一下使用sqlmap写shell:

    sqlmap -l /home/jay/test.txt --os-shell

    但是测试了一下,找不到网站根目录,所以无法确定文件写入的位置。

    后面经过文件读取漏洞发现,知道路径也不能get shell,因为search.php中的数据库用户的权限不够,只支持查询。查询权限使用--privileges参数。

    使用登录后的界面sql注入发现还不是管理员权限,但是竟然可以插入,有点奇怪。

3. 文件包含

  • 可以看到上面的界面中存在File does not exist,猜测是不是存在文件包含漏洞(LFI),测试一下命名变量发现是file(变量名可以使用burp中的字典进行测试),同时测试文件路径../../../../../etc/passwd。

    这里使用../../../../../proc/self/cmdline来发现网站的根目录,但是只发现了启动程序(因为/usr/sbin/文件夹下通常包含了一些管理员命令)。

  • 从上面可以看到22端口被过滤,网上的wp说是因为安装了knockd敲门服务。这是网上对其的解释:

    端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。简单来说,就是其可以通过敲门的方式来打开某些端口,同时不使用的时候可以关闭。

    在这里我们就需要使用敲门的方式将SSH对应的22端口打开,从而进行SSH的连接。knockd服务默认的配置文件路径为/etc/knockd.conf。使用LFI读取:

    [options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

    从配置文件中可以看出,openSSH对应的敲击序列为7469,8475,9842。说明需要连续发送对这三个端口的请求,才能打开openSSH服务。关闭服务的端口号为9842,8475,7469。

  • 使用Nc命令分别对不同端口进行敲击,可以看到SSH服务开启(注意敲击间隔不能超过25s,在配置文件中有说明):

4. SSH爆破

  • 为了登录靶机,想到前面存在一个User数据库,查看一下:

    sqlmap -l /home/jay/test.txt -D users -T UserDetails -C password,username --dump

    将其分别存储在passwd.txt和username.txt中。

  • 使用Hydra爆破

    hydra -L /home/jay/username.txt -P /home/jay/passwd.txt 192.168.108.146 ssh -V

    -L参数指定登录名,-P参数指定登录密码。

    这样得到了三组用户名密码:

    [22][ssh] host: 192.168.108.146   login: chandlerb   password: UrAG0D!
    [22][ssh] host: 192.168.108.146 login: joeyt password: Passw0rd
    [22][ssh] host: 192.168.108.146 login: janitor password: Ilovepeepee

    分别进行登录,发现只有janitor中存在一个特别的.secrets-for-putin文件。

    打开后发现还有几个密码,我们将其添加到passed.txt中继续使用hydra爆破。发现新增了一个可登录用户。

    [22][ssh] host: 192.168.108.146   login: fredf   password: B4-Tru3-001

    登录后发现,fredf用户可以不输入密码执行sudo命令,所以查看一下其可执行命令列表:

    这说明:fredf可以以 root 用户的身份执行 /opt/devstuff/dist/test/test 命令。

5. 提权

  • 执行:

    发现有个test.py文件,那么我们使用find命令查找一下:

    find / -name "test.py"  2>/dev/null

    这句命令是表示从根目录搜寻文件名为test.py的文件,并将错误信息定向到空文件/dev/null中,避免了错误信息出现在终端。

    进入这些路径中看看:

    在devstuff文件夹中存在test.py。该代码是将命令行中的第三个参数代表的文件追加到第二个参数代表的文件中。

  • 提权:为了获取root权限,我们可以构造一个具有root权限的用户,然后将其写入到/etc/passwd中,这样就能够使用root权限登录了。

    先介绍一下/etc/passwd文件夹下的格式:

    username:password:UID:GID:GECOS:home_directory:shell

    其中password在文件中通常用*代替,UID为用户标识符,GID为用户组标识符,GECOS表示用户的注释信息,剩下两个参数则为主目录和启动时的shell。

  • 写入:

    因为系统的中密码是存储的哈希值,所以先用openssl生成一个密码'123'的哈希值(这里注意要是数字,不然后续会无法登录):

    openssl passwd -1 123

    生成的hash为(其中$1$用于表示哈希算法,1代表md5):

    $1$dhO.TLzj$DK6Lv71CxSKoWQ6xIROeo/

    将对应格式的passwd条目写入一个文件:

    echo 'jay:$1$dhO.TLzj$DK6Lv71CxSKoWQ6xIROeo/:0:0:0:root:/bin/bash' >> /tmp/DC

  • 利用:

    使用之前的python文件将/tmp/test中的文件写入/etc/passwd中,但是因为fredf用户只在/opt/devstuff/dist/test目录下有root权限,所以进入到对应目录使用下面命令:

    sudo ./test /tmp/DC /etc/passwd

    此时查看/etc/passwd已经存在对应的用户条目了。

6. 登录

  • 切换用户:

    su jay
  • 在root目录中查找:

7. 总结

  • sqlmap的使用。包括POST注入,getshell命令。
  • 文件包含常见查看/etc/passwd。
  • 通过root授权文件对/etc/passwd插入,从而进行登录。

【vulnhub】——DC-9靶机的更多相关文章

  1. Vulnhub实战-JIS-CTF_VulnUpload靶机👻

    Vulnhub实战-JIS-CTF_VulnUpload靶机 下载地址:http://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 你可以从上面地址获取靶 ...

  2. Vulnhub实战-doubletrouble靶机👻

    Vulnhub实战-doubletrouble靶机 靶机下载地址:https://www.vulnhub.com/entry/doubletrouble-1,743/ 下载页面的ova格式文件导入vm ...

  3. Vulnhub实战-DockHole_1靶机👻

    Vulnhub实战-DockHole_1靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-1,724/ 1.描述 我们下载下来这个靶机然后在vmware中打 ...

  4. Vulnhub实战-Dockhole_2靶机👻

    Vulnhub实战-Dockhole_2靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/ 1.描述 hint:让我们不要浪费时间在蛮力上面! ...

  5. Vulnhub实战-grotesque3靶机👻

    Vulnhub实战-grotesque3靶机 靶机地址:http://www.vulnhub.com/entry/grotesque-301,723/ 1.靶机描述 2.主机探测,端口扫描 我们在vm ...

  6. Vulnhub实战-FALL靶机👻

    Vulnhub实战-FULL靶机 下载地址:http://www.vulnhub.com/entry/digitalworldlocal-fall,726/ 1.描述 通过描述我们可以知道这个靶机枚举 ...

  7. Vulnhub实战-rtemis靶机👻

    Vulnhub实战-rtemis靶机 下载地址:http://www.vulnhub.com/entry/r-temis-1,649/ 描述 通过描述我们知道这个靶机有两个flag 主机发现 通过nm ...

  8. 【Vulnhub】DC-2靶机

    Vulnhub DC-2 靶机 信息搜集 访问web端发现访问不了,可以观察到相应的URL为域名而不是IP,需要在hosts文件种添加一条DNS记录. host位置:C:\Windows\System ...

  9. vulnhub DC:1渗透笔记

    DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...

  10. vulnhub之GoldenEye-v1靶机

    靶机:virtualbox  自动获取 攻击:kali linux    自动获取 设置同一张网卡开启dhcp ifconfig攻击IP是那个网段(也可以netdiscpver,不过毕竟是自己玩懒得等 ...

随机推荐

  1. C# - ConcurrentDictionary 并发场景使用注意事项

    1 自身作为 Enumerable 的遍历 自身作为可遍历对象,键值对为元素进行遍历,是线程安全的,但不提供快照,遍历过程中集合产生变更会直接反馈至此次遍历过程中.但并不一定能够保障获取数据的过程中, ...

  2. 从钢铁行业数字化管控与超自动化融合,看华为WeAutomate能力进化

    文/王吉伟 钢铁行业的数字化转型,历来都是值得探讨的热点话题. 2022年,我国粗钢产量10.13亿吨,占据了全球钢铁供给市场的半壁江山. 这组数据可谓非常抢眼,但仍旧难掩诸多企业的各种经营问题. 钢 ...

  3. matlab gui .mat数据读取

    在matlab的gui中用load函数读取.mat等类型数据 %定义全局变量 global img_correct %读取数据名称及位置 [filename,pathname]=uigetfile({ ...

  4. Solon v2.4.0 发布,Java 生态的新星燃起

    Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢 ...

  5. expect: telnet2switch

    #!/usr/bin/expect if {$argc != 1} { puts "usage: ./telnet2sswitch <r2|r3>" exit } if ...

  6. [prometheus]基于consul的服务发现

    前言 prometheus默认使用静态配置文件监控服务,每次添加服务都要重载,比较麻烦.好在官方提供多种动态服务发现的方法,常用的一般有基于文件服务发现.基于consul服务发现和基于dns服务发现, ...

  7. 使用文件批量find

    有时候需要找一批文件传到本地,文件名都不一样.可以先把文件名写到文件里面,一个文件名为一行. 比如: file1.wav file2.wav file3.wav 在命令行执行: for i in `c ...

  8. PHP秒杀面试题

    什么是秒杀系统:秒杀系统是一个处理大量并发用户请求的系统,通常用于限时促销或特定活动中,用户可以在特定时间内以抢购的方式购买商品或服务. 秒杀系统可能面临的挑战是什么?秒杀系统可能面临以下挑战: 高并 ...

  9. nlp入门(五)隐马尔科夫模型

    源码请到:自然语言处理练习: 学习自然语言处理时候写的一些代码 (gitee.com) 一.马尔科夫模型概念 1.1 马尔科夫模型:具有马尔可夫性质并以随机过程为基础的模型 1.2 马尔科夫性质:过去 ...

  10. 每日一库:gosec

    gosec 是一个用于在 Go 代码中查找安全问题的开源工具,它可以帮助发现可能的漏洞和潜在的安全风险.以下是关于 gosec 的详细介绍: 1. 工具概述: gosec 是一个静态分析工具,用于扫描 ...