VulnHub渗透实战--hacknos

Hacknos


0X01 Main Point

1.KaliLinux的字典生成工具-Cewl(爬取页面)
2. 反弹shell连接
3. docker容器提权
4. cpulimit提权
5. hydra http-post-from的爆破

0X02 前期嗅探和端口探测

arp-scan -l #得到靶机IP 172.20.10.3

VulnHub渗透实战--hacknos_第1张图片

namp -sV -A -p- 172.20.10.3  #探测靶机端口

VulnHub渗透实战--hacknos_第2张图片
开放80、22端口,访问http://172.20.10.3
VulnHub渗透实战--hacknos_第3张图片
dirsearch跑目录发现:VulnHub渗透实战--hacknos_第4张图片
没有任何有效信息,这里我又在kali上dirb了目录,换了一个超大字典,还是只有这两个目录,想到给的hint:websec

访问:http://172.20.10.3/websec发现新大陆:以为是什么框架,其实就是PHP搭建的,这里在同样扫一遍目录,发现了登录页面/websec/login.php,SQL注入了半天根本没有用,这个地方不看walkthrough我根本想不到,需要在页面上爬取关键词充当字典,介绍一下cewl:

Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。

输入下列命令之后,爬虫会根据指定的URL和深度进行爬取,然后打印出可用于密码破解的字典:

cewl www.test.com -d 3 -w pass.txt #-d表示爬取深度,-w表示指定输出到文本

如果你想生成指定长度的密码字典,你可以使用-m选项来设置:

cewl www.test.com -m 9 -w pass.txt #-m后接的数字表示生成密码的长度

这里我们使用cewl爬取/websec生成pass.txt:

cewl http://172.20.10.3/websec/ -d 3 -w pass.txt

利用hydra进行爆破密码,不过注意此处它限制了IP多次访问:
VulnHub渗透实战--hacknos_第5张图片
可以利用burpsuite的intruder模块进行爆破,但是这里想更多了解一下hydra这款工具:

hydra -U http-post-form #了解POST提交表单爆破的格式
Examples:
 "/login.php:user=^USER^&pass=^PASS^:incorrect"
 "/login.php:user=^USER64^&pass=^PASS64^&colon=colon\:escape:S=authlog=.*success"
 "/login.php:user=^USER^&pass=^PASS^&mid=123:authlog=.*failed"
 "/:user=^USER&pass=^PASS^:failed:H=Authorization\: Basic dT1w:H=Cookie\: sessid=aaaa:h=X-User\: ^USER^:H=User-Agent\: wget"
 "/exchweb/bin/auth/owaauth.dll:destination=http%3A%2F%2F%2Fexchange&flags=0&username=%5C^USER^&password=^PASS^&SubmitCreds=x&trusted=0:reason=:C=/exchweb"

用户名提示要邮箱,而页面有唯一一个已知邮箱,应该就是账号。
我们需要知道:请求的参数名,登录成功或失败时返回信息的区别
具体用法参考:https://blog.csdn.net/ivuqiumei/article/details/46939687

hydra -l [email protected] -P pass 192.168.56.104 http-post-form "/websec/login:username=^USER^&password=^PASS^:Wrong email or password" -V

在这里插入图片描述
得到密码,进行登录后在/admin页面下有:
VulnHub渗透实战--hacknos_第6张图片直接构造反弹shell,也可以先PHP一句话然后蚁剑连上后再反弹shell,得到shell。
VulnHub渗透实战--hacknos_第7张图片
找了半天也没看出怎么做,sudo -l发现www-data可以执行的文件只是作者告诉你not easy,内核版本也很高,find查SUID文件也没有新发现,这里是第二个脑洞点。

/var/local/database这个文件中有:

Expenses
Software Licenses,$2.78
Maintenance,$68.87
Mortgage Interest,$70.35
Advertising,$9.78
Phone,$406.80
Insurance,$9.04
Opss;fackespreadsheet

发现一种新的加密方式:Spreadsheet
解密网站:http://www.spammimic.com/spreadsheet.php
解密得到Security@x@
发现这是blackdevil用户的密码,直接su blackdevil

sudo -l发现可以是ALL:
VulnHub渗透实战--hacknos_第8张图片
其实在这里就已经可以得到root了:
sudo su切换到root用户即可

docker 提权

在这里插入图片描述
blackdevil是docker用户组的,默认情况下使用docker必须要有sudo权限,对于一台机器多用户使用,往往很多用户只有普通权限,只需要管理员将需要使用docker的用户添加到docker用户组。

于是参考了文章:普通用户借助Docker容器提权思路分享

在我们创建容器的时候,docker提供了一个-v选项,提供用户将容器外的host目录映射进容器内,方便的进行容器内外的文件共享。然而便利倒是有了,但潜在了风险也是可想而知。结合上面的两点便利,原作者想到一种普通用户借助docker突破权限的限制,达到本地提权的目的。

所以我们先要有一个运行的容器,下载一个docker镜像,然后运行起来:
具体方法参考:https://www.cnblogs.com/cocowool/p/make_your_own_base_docker_image.html

先创建Dockerfile:

echo 'FROM scratch ADD alpine-minirootfs-3.8.0_rc8-x86_64.tar.gz / CMD["/bin/sh"] ' >Dockerfile

接着built docker:

docker build -t alpine:3.8 .

提升权限:

docker run -it -v /etc:/etc alpine:3.8 /bin/sh

VulnHub渗透实战--hacknos_第9张图片
可以看到容器内的/etc已经被外部/etc完全映射,现在我们就可以添加用户并且提升用户权限

adduser -g root -G root xbc #创建一个root组的用户

su xbc即可,发现是root用户组:
在这里插入图片描述

你可能感兴趣的:(CTF实践)