安全矩阵

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: Grav1ty

郑嘉源的学习日记

[复制链接]

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-1-16 23:16:55 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-1-17 16:57 编辑

DC-7 Write UP



nmap



访问,给了个没啥用的提示:



尝试注入和扫后台,虽然发现几个可以的地方,但是都无果






因为是drupal cms,记忆里msf里面有一些exp

尝试,但是失败了:



后来看师傅们的思路https://blog.csdn.net/JSH_CDX/article/details/105204725,找到了账号密码:



ssh登录上去



查看目录下两个文件,一个目录里面都是加密的备份文件

另外一个里是一堆邮件..看的我真的头痛



看不明白,想去别的地方翻翻,结果偶然发现了有意思的:



里面也是mail文件,但是这个mail简短很多,看起来没那么累

发现了奇怪的路径:



查看内容:



看到这个文件就容易联想到之前做的题目

遂尝试改文件,结果发现什么权限都没有:




发现一个奇怪的命令:



查看文件所属权:

思考:最后应该还是要找webshell



没有突破口,遂搜了一下这个命令

在官网文档中有如下信息,原来可以用来改密码:



但是完全按照这个执行有问题,还是直接看help:



成功修改密码:



登录后台:



后面也是卡了很久,看了师傅们的才知道,有个插件可以用:

插件下载地址:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz

(讲道理,为什么会有这么离谱的插件存在,还有支持这个插件的cms存在...)



安装成功



就直接写shell了



连接上:





查看用户:



后面想改backups.sh,结果发现改不了,报奇怪的错:



无果,最后用echo写进去:



最后还闹了个笑话:直接执行是www的权限

只有等他定时执行才是root权限(参考前面邮件中的内容,设置了自动以root执行dump命令)

编辑到这里,差不多就上线了



最终flag:



结束




回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-1-16 23:24:30 | 显示全部楼层
今天早上一觉醒来,发现许少说以后不做安全,转开发去了...

感慨啊,又少了一位优秀的师傅
回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-1-17 21:42:49 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-1-17 21:50 编辑

DC-8 Write UP


nmap:




访问,首页啥都没有



看到contact us页面有交互功能,尝试

我还以为真会发邮件给我,结果并不是:



后面发现注入点:



尝试注入,确存在注入:



直接放sqlmap跑:



跑出表名和列名:



查看user里的内容:

爆出密码:



尝试在线解,但是没解出来

后面用john解出来了:



然后扫后台登录:



之后就像dc7一样,找能写php代码的地方:




这里有个坑浪费了我好多时间:

必须要写一句话能显示出来,这条语句才会被执行,要不然不执行

我也不知道这是做了什么限制,详情参照:



然后接shell:



拿到shell后找sudo的权限

结果发现sudo能用,但是没有给不用密码的权限:



这里就参考别的师傅的思路

找有超级权限的命令 --> exim能利用

然后再kali上搜exp



先看版本:



找的时候发现对应版本号的只有一个dos,没用

就找上面包含了4.89版本的exp --> 46996:



把他cp下来,放在/tmp目录下

开一个临时http服务:



然后尝试用靶机下载,结果发现没有下载权限



想了很久,也许是因为没有写入权限?

好像真是因为如此:



那就去上级目录里面找存在写入权限的目录:



很“巧合”的是只有一个目录有写入权限

我并不认为这是巧合,很明显这是专门留的目录

在这个目录下就能很顺利的下载下来



然后执行这个.sh

结果得到的session还是www的权限

...提权失败

一大串的东西我也不知道啥意思



翻译:



...没看明白

这里也是耽误了好多时间

按照之前的那个dc靶机(忘了是第几个了),他那个脚本要编译才能执行,这个是不是也是这样呢?

看一下这个.sh的内容,发现里面给了能用的两种参数

那就试试林外一个:



阿这..用第二个就行了:




最终flag:



结束



回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-1-19 01:06:36 | 显示全部楼层
今天不方便码字,鸽一天
回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-1-19 18:30:58 | 显示全部楼层
DC-9 Write UP



nmap:



访问,首页没什么东西:



测试发现search界面存在注入:



放sqlmap跑,跑出了库名:

注意这里跑的时候路径不嫩是/search.php而应该是/results.php,参考上面抓包时候的请求路径

这算一个小坑吧,search跑不出来



顺着库往下找,找到一堆账号密码:



哈哈哈哈哈哈这是小彩蛋嘛夺笋啊



但是这一堆都没用,一个都登不进后台

后面在另一张表stuff里面找到了admin:



尝试在线解密...??



后面还是找到了能解的网站:



登录进去啥都没有:



查看另一个add record,似乎有交互的地方:





这应该是直接写入数据库了,但是好像没有能利用的地方..



后来观察到这底下显示的是啥??文件不存在?



所以这算很明显的提示了,文件包含,但是我验证的时候发现这个passwd居然也显示不存在..



我一度以为是我做错了,后面看师傅们的文章发现这确实是文件包含

不过这个路径应该是被改过:



然后又卡住了,虽然能包含,但是没机会写马也没能找到什么有用的文件...
然后看大佬们的思路

原来这里存在一个knockd隐藏ssh端口的东西:



这个挺有意思的,又学到了

参考这个文章:

https://cloud.tencent.com/developer/article/1005328


查看这个敲门暗号/etc/knockd.conf

然后对应nc过去

再扫端口就能发现22已经开启了



既然ssh开了,按照dc的习惯

把之前sqlmap跑出来的用户密码做成字典

然后爆破:



能跑出来三个账号:



挺没意思的,得一个一个试

每个账号的路径底下都有隐藏文件夹,但是两个用户的都是空

只有这个janitor的隐藏文件夹下面有东西

而且是个密码..又得跑


这最后一关还是真麻烦

再拿上一文件夹里面的所有用户,做个user字典,然后跑密码

可以得到一个新的用户:



这个用户目录底下也没什么有用的

倒是有sudo权限:




查看这个test是个啥

这里少了个截图,直接执行test会显示要看一个test.py的东西

然后再去find找这个test.py结果给的是python setuptools里面的东西...
这里卡了好多时间



后面还是在最开始的test目录前找到了test.py:



他也没给全所有的参数都是啥

但是依据这里面仅存的代码可以得出实现的是将文件写入的功能


我看很多师傅这里用的都是添加一个有sudo权限的新用户,写入到/etc/passwd里面

看着那些实现方法都挺麻烦,还得用openssl加密啥的

其实不用那么复杂,直接给当前用户一个执行sudo的权限就好了

也就是写入/etc/sudoers


这也是给自己主机添加用户一般会做的事情



密码忘了..重来一遍:




这里成功取到sudo权限,可以查看/root下都有啥

最后...:



结束



回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-3-10 00:19:41 | 显示全部楼层
linux 下cpu控制粗浅学习 基于debian
还是那句,富有哲学意味的话:一切皆文件

查看cpu状态(监控)
  1. sudo i7z
复制代码
  1. watch -n 0 "cat /proc/cpuinfo | grep -i mhz"
复制代码
查看cpu超频策略
  1. cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
复制代码
  • Performance. 不考虑耗电,只用最高频率。
  • Interactive. 直接上最高频率,然后看CPU负荷慢慢降低。
  • Powersave. 通常以最低频率运行,流畅度会受影响,一般不会用这个吧!
  • Userspace. 可以在用户空间手动调节频率。
  • Ondemand. 定期检查负载,根据负载来调节频率。

  1. echo "100" |sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
复制代码
100--限制cpu100%
max_perf_pct--cpu最高限制
同目录下还有min_perf_pct等文件,即限制cpu最低频率
  1. /sys/devices/system/cpu/intel_pstate/no_turbo
复制代码
该文件显示是否处于超频模式,0为超频,1为不可超频
  1. /sys/devices/system/cpu/cpu0/cpufreq/
复制代码
该目录下

    cpuinfo_cur_freq: 当前cpu正在运行的工作频率   
       cpuinfo_max_freq:该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)   
       cpuinfo_min_freq :该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)   
       cpuinfo_transition_latency:该文件定义了处理器在两个不同频率之间切换时所需要的时间  (单位: 纳秒)   
       scaling_available_frequencies:所有支持的主频率列表  (单位: 千赫兹)   
       scaling_available_governors:该文件显示当前内核中支持的所有cpufreq governor类型   
       scaling_cur_freq:被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率   
       scaling_driver:该文件显示该CPU正在使用何种cpufreq driver   
       scaling_governor:通过echo命令,能够改变当前处理器的governor类型   
       scaling_max_freq:显示当前policy的上下限  (单位: 千赫兹)需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq   
       scaling_setspeed:如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。

  1. /proc
复制代码
这也是个有意思的目录

/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。命令procinfo能够显示基于其中某些文件的多种系统信息。以下详细描述/proc下的文件。  
/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是 动态从系统内核读出所需信息并提交的。

cpupower

  1. cpupower --help
  2. Usage:  cpupower [-c|--cpu cpulist ] <command> [<args>]
  3. Supported commands are:
  4.         frequency-info
  5.         frequency-set
  6.         idle-info
  7.         idle-set
  8.         set
  9.         info
  10.         monitor
  11.         help

  12. Not all commands can make use of the -c cpulist option.

  13. Use 'cpupower help <command>' for getting help for above commands.
复制代码
简单的设置方法:
  1. sudo cpupower -c all frequency-set -g performance
复制代码
设置performance策略


回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-5-1 14:51:06 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-5-1 15:05 编辑

备忘

文件权限-rwxrwxrwx,转化数字777的意思
第一个“-”表示文件类型

普通文件的文件权限第一个字符为“-”
目录文件的文件权限第一个字符为“d”
字符设备文件的文件权限第一个字符为“c”
块设备文件的文件权限第一个字符为“b”
符号链接文件的文件权限第一个字符为“s”

r w x
1 1 1 -- 二进制转十进制=7

四位权限比如4777
第一个4表示设置了suid
如果设置了guid则第一个值为2
如果suid+guid就是4+2=6即6777
其实在UNIX的实现中,文件权限用12个二进制位表示:

11 10 9 8 7 6 5 4 3 2 1 0
S  G  T r w x r w x r w x

第11位为suid位,第10位为sgid位,第9位为Sticky位,第8-0位对应于上面的三组rwx位。

粘着位(Sticky bit)
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。


回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 2022-5-17 15:18:33 | 显示全部楼层
备忘
分块传输

手工:
  1. Transfer-Encoding: chunked

  2. n[下一行的字符的数目]
  3. string[分块的内容]
  4. ......
  5. ......
  6. 以0结尾,结尾后跟两个回车
复制代码
例子:

burp插件:
  1. https://github.com/c0ny1/chunked-coding-converter
复制代码


回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-5-19 01:45 编辑

学习 + 备忘

有时候自己琢磨琢磨也能学到新东西,不过当然可能琢磨错




  • rlogin允许用户从一台机器上通过网络登录另一台机器。           端口:512
    • 用法:Usage: rlogin [ -8EL] [-e char] [ -l username ] host
    • 可以不用输入用户密码
  • rexec可以用于在远端机器上执行命令。                                  端口:513
    • 用法:Usage: rexec [ -abcdhns ] -l username -p password host command
    • 需要用户名和密码。
  • rsh同时具有rlogin和rexec的功能                                            端口:514
    • 用法:Usage: rsh [-nd] [-l login] host [command]
    • 不需要输入用户密码
    • 明文传输,安全性较差




rsh和ssh功能类似。

  • rsh 采用明文传输密码和数据,安全性较差。
    • rsh 可以用于局域网内部这类安全性要求相对较低的场合
  • ssh 的功能类似于rsh,但具有更好的安全性。
    • 对于数据需要经过公众网络的连接,自然还是要使用ssh安全一些。

telnet也可以用于远端机器的登录,需要输入用户名和密码。而rsh和ssh都可以不用输入用户密码实现远程登录。

但“登录”只是telnet功能的用法之一。

telnet本是一个通用的网络连接程序,可以用于连接任何网络主机和端口。

telnet也是明文数据传输,因此安全性也较差。





使用rlogin和rsh的关键是合理的配置的文件。

有两个文件可以控制rlogin或者rsh的权限。

  • /etc/hosts.quiv : 系统级的配置文件
  • ~/.rhosts : 用户本人的配置文件

两个配置文件的内容格式相同:每行一条记录,形如hostname [username],方括号表示用户名是可选项。

文件 "/etc/hosts.equiv"的内容通常为 "+",表示允许用户从任何别的机器rsh到当前机器。

下面是一些".rhosts"文件内容的例子


  1. host1
  2. host2 +
  3. host3 user1
  4. host2 -user2
  5. + user3
  6. -host3 user3
复制代码


上面的配置文件的含义如下:

  • 允许用户自己从host1上rlogin/rsh本机
  • 允许任何用户从host2上以自己的身份rlogin/rsh本机
  • 允许用户user1从host3上以自己的身份rlogin/rsh本机
  • 不允许用户user2从host2上以自己的身份rlogin/rsh本机
  • 允许用户user3从任何机器上rlogin/rsh本机
  • 不允许用户user3从机器host3上rlogin/rsh本机


参考文章:rexec/rlogin/rsh介绍


回复

使用道具 举报

111

主题

153

帖子

795

积分

高级会员

Rank: 4

积分
795
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 Grav1ty 于 2022-5-19 01:47 编辑

学习 + 备忘

好记性不如烂笔头+1




inittab
    路径:/etc/inittab    
  inittab为linux初始化文件系统时init初始化程序用到的配置文件。这个文件负责设置init初始化程序初始化脚本在哪里;每个运行级初始化时运行的命令; 开机、关机、重启对应的命令;各运行级登录时所运行的命令。





基本格式

  id:runlevels:action:process  前两个参数可为空





id

  1~2个字符,配置行的唯一标识,在配置文件中不能重复。





runlevels

配置行适用的运行级别,在这里可填入多个运行级别,比如12345或者35等。
Linux有7个运行级别,如下:
0:关机。
1:单用户字符界面。
2:不具备网络文件系统(NFS)功能的多用户字符界面。
3:具有网络功能的多用户字符界面。
4: 保留不用。
5:具有网络功能的图形用户界面
6:重新启动系统。




action

行为
描述
respawn
启动并监视第4项指定的process,若process终止则重启它
wait
执行第4项指定的process,并等待它执行完毕
once
执行第4项指定的process
boot
不论在哪个执行等级,系统启动时都会运行第4项指定的process
bootwait
不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备
off
关闭任何动作,相当于忽略该配置行
ondemand
进入ondemand执行等级时,执行第4项指定的process
initdefault
系统启动后进入的执行等级,该行不需要指定process
sysinit
不论在哪个执行等级,系统会在执行boot 及bootwait之前执行第4项指定的process
powerwait
当系统的供电不足时执行第4项指定的 process,且一直等它执行完毕
powerokwait
当系统的供电恢复正常时执行第4项指定的process,且一直等它执行完毕
powerfailnow
当系统的供电严重不足时执行第4项指定的process
ctrlaltdel
当用户按下【Ctrl+Alt+Del】时执行的操作
kbrequest
当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义






process

  所要执行的shell命令。任何合法的shell语法均适用于该字段。


来自:inittab_百度百科




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2022-5-26 13:30 , Processed in 0.033464 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表