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
22
和80
显然攻击机会很大
先进入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
文件打。这里需要将受害机器的shadow
和passwd
文件dump
下来,在bash
当中使用的就是scp
命令,这里需要开启kali
(攻击机)的ssh
服务,这样才能将文件传输回来。
开启之前,首先需要更改ssh
配置文件,文件位置在/etc/ssh/sshd_config
你需要去掉注释,更改出:
PermitRootLogin yes
PasswordAuthentication yes
开启服务
scp [待传输文件] [传输目标位置]
传出passwd
传出shadow
这里就是使用john
破解shadow
文件,这个在破解前最好使用unshadow
工具合并shadow
, passwd
文件,这里的破解原理仍然是暴力破解原理,所以成功与否仍看字典。
破解成功,此时我们可以以合法的身份登录服务器了,不要忘了它开启的22
端口,可以正常登录,后续提权方式和思路一相同就省略了