Vulnhub | DC: 1 |【实战】

写在前面

来做做实战吧,学习攻击思路,和一些安全工具的熟悉
靶机链接:
https://www.vulnhub.com/entry/dc-1,292/

主机发现

这里使用的是arp-scan ,原理是通过arp进行主机发现,该工具kali自带
在这里插入图片描述
-l 参数表示探测该主机能够探测的所有主机,列出探测出来的所有主机

这里发现主机192.168.43.25

-sV 表示扫描service和version
-p 表示扫描端口 后面可以跟范围

端口探测,可以选择你想探测的范围,这里我指定的0-2048
在这里插入图片描述
2280显然攻击机会很大

先进入80看看
在这里插入图片描述
指纹非常明显,是一个叫drupal的系统

查一下poc
在这里插入图片描述
还是查到很多

尝试使用较新的poc
在这里插入图片描述
有一个session,说明成功了

输入shell使用shell进行攻击
在这里插入图片描述
这里就出现了flag1.txt cat一下

Every good CMS needs a config file - and so do you.

提示是查看配置文件,这个cms的配置文件在 /var/www/sites/default

在这里插入图片描述
这里得到第二个flag文件

Brute force and dictionary attacks aren't the
only ways to gain access (and you WILL need access).
What can you do with these credentials?

简单翻译就是,不仅仅只有暴力破解才能提权,现在你需要提权,但是需要利用这里的证书

上面泄露了数据库的登录信息,我们现在又有shell,所以利用shell进入数据库看看情况

注意,此时的默认shell并不是交互式的,我们需要使用 /bin/bash来进行交互,使用

shell -l 

来显示当前的所有shell
在这里插入图片描述

如果当前没有,而有python环境,可以使用

python -c "import pty;pty.spawn('/bin/bash')"

来使用 /bin/bash

像这样来指定你使用的shell

流程如下:
在这里插入图片描述
在这里插入图片描述
这个hash算法一时半会看不出来,也不像是普通的md5,不过这本就是php脚本加密后存储的,我们找到加密脚本,重放加密即可

php /var/www/scripts/password-hash.sh password

在这里会找到一个 password-hash.sh
在这里插入图片描述
注意这里有个小问题,因为网站启动是从www下启动的,所以你不能进scripts目录调用它,因为前面文件包含时是带了相对路径的,进去执行会出错

在这里插入图片描述

得到这个值,然后替换admin的密码
在这里插入图片描述
更改之后就可以从网页登录

在这里插入图片描述
翻一下仪表盘,查看到一个叫flag3的文章
在这里插入图片描述

Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.

大概就是需要更高权限的用户,希望你从shadow文件进行攻击

这里有两种思路

思路一

shadow文件先联想到passwd文件,先查看passwd文件

在这里插入图片描述
这里查看到一个比较特殊的用户 flag4用户

查看该用户的目录
在这里插入图片描述
就找到了 flag4.txt

Can you use this same method to find or access the flag in root?

Probably. But perhaps it's not that easy.  Or maybe it is?

大概意思是使用同样的方法就能在根目录就能找到flag

当然,这并不是一个简单的事

前面提到的perms是指权限相关的东西,是find命令的一个选项。

这里就需要提到find命令,suid提权相关的东西

find命令

首先介绍一下find命令:

最常见的参数如下:

path:要查找的目录路径
print:表示将结果输出到标准输出
exec:对匹配的文件执行该参数所给出的shell命令。 格式上会出现 {} \; 这个{}是代替前面查找到的文件,而这个\;则是命令结束的标志
ok:与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

除了以上的选项,还有:

options :表示查找方式,这个命令相对特殊,它有较多的选项

-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-prune #忽略某个目录

最常用的就是前几个,name可以使用string,也可以正则。

perm这里我们专门说说

1.-perm 644  				精准匹配权限

2.-perm -644 				表示所有者的权限至少是读写,群组的权限至少是读,其他人权限至少是读,表示至少及以上(权限是与关系)

3.-perm +644(-perm /644) 	这表示644只要满足一个要求,就可以匹配出来(权限是或关系,只要所有者,群或其他人权限满足一个就可以匹配出来)

4.!-perm /111  				这表示取反筛选

除了上述数字的写法,你也可以像这样:
find . -perm /u+w,g+w
find . -perm /u=w,g=w
权限和220是等价的



最特殊的就在这里,查找当前路径下全部用suid的文件
find . -perm /4000
find . -perm /u=s

查找当前路径下全部sgid文件
find . -perm /2000
find . -perm /g=s

查找当前路径下同时有SUID和SGID的文件
find . -perm /6000
find . -perm /u=s,g=s

非常特殊的4个数字,就记忆一下就好了

其他参数就是在后面跟上你需要的值即可

suid提权

SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。

常见的可用来提权的linux可行性文件列表如下:

  • nmap
  • vim
  • find
  • bash
  • more
  • less
  • nano
  • cp

其原理就是因为这些命令(工具)使用不恰当的权限运行,由于权限过高且这些命令可以被任意调用,可以执行命令,就造成了使用root权限执行命令的越权情况

当然每个工具的越权方法不尽相同。

其他

/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。

回到题目

那么这里就是首先要查找suid文件

执行如下命令:


find / -user root -perm -4000 -print 2>/dev/null

在这里插入图片描述
这里/usr/bin/find 就是一个可利用的点,使用它执行命令的参数

touch myfile

find . -name myfile -exec "/bin/sh" \;

在这里插入图片描述
稍微解释几个小问题:

1.为什么不直接使用-exec参数

如果这里直接使用exec参数,会让结果无限递归,因为并没有找到你需要的文件,所以你需要先创建一个文件,然后确保能够find到这个文件再执行命令

2.为什么不使用交互式命令"/bin/bash"而是使用"/bin/sh"

这里暂时不知道,/bin/bash的情况下仍然是www的权限,只有在使用/bin/sh的情况下才能提权
在这里插入图片描述
flag:

Well done!!!!

Hopefully you've enjoyed this and learned some new skills.

You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7

思路二

既然提示要从shadow文件入手,我们就从shadow文件打。这里需要将受害机器的shadowpasswd文件dump下来,在bash当中使用的就是scp命令,这里需要开启kali(攻击机)的ssh服务,这样才能将文件传输回来。

开启之前,首先需要更改ssh配置文件,文件位置在/etc/ssh/sshd_config

你需要去掉注释,更改出:

PermitRootLogin yes

PasswordAuthentication yes

在这里插入图片描述
开启服务
在这里插入图片描述
scp [待传输文件] [传输目标位置]

传出passwd
在这里插入图片描述
传出shadow
在这里插入图片描述
这里就是使用john破解shadow文件,这个在破解前最好使用unshadow工具合并shadow, passwd文件,这里的破解原理仍然是暴力破解原理,所以成功与否仍看字典。
在这里插入图片描述
破解成功,此时我们可以以合法的身份登录服务器了,不要忘了它开启的22端口,可以正常登录,后续提权方式和思路一相同就省略了
在这里插入图片描述

posted @ 2022-06-18 17:05  Sayo-NERV  阅读(52)  评论(0编辑  收藏  举报