哼哼啊啊啊啊好久没打靶了身体不太gud,今儿久违的打一个
直接开冲个上周的ez靶机
上来梭哈nmap扫一扫
└─$ sudo nmap -sS 10.10.11.211 -p- -sC --min-rate=10000
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-08 04:02 -0930
Warning: 10.10.11.211 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.11.211 (10.10.11.211)
Host is up (0.39s latency).
Not shown: 64075 closed tcp ports (reset), 1458 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 48add5b83a9fbcbef7e8201ef6bfdeae (RSA)
| 256 b7896c0b20ed49b2c1867c2992741c1f (ECDSA)
|_ 256 18cd9d08a621a8b8b6f79f8d405154fb (ED25519)
80/tcp open http
|_http-title: Login to Cacti
Nmap done: 1 IP address (1 host up) scanned in 85.15 seconds
有个web进行一个访问
看到有版本号,js一会再看,先google走起
直接RCE漏洞,js也不用看了,查一下CVE-2022-46169
漏洞详解(建议看看,蛮简单的一个洞)
https://github.com/Cacti/cacti/security/advisories/GHSA-6p93-p743-35gf
复现
https://blog.csdn.net/qq_41904294/article/details/128855445
这洞太简单懒得多说了,了解漏洞之后弹shell就完事
进来之后我习惯pty改交互式…结果意外发现没有py
打这么多靶机很少遇到不带py的,u1s1我有点怀疑环境,于是先收集一下本机信息这里sudo -l看一下
…啥情况,看下系统版本
怪事,莫不成是debian魔改后的奇怪系统…于是看下环境
…看到这个hostname乐了,我特么这十有八九是在容器里
于是验证一下…
阿这,好吧还真在容器里…
那还是收集一下信息再考虑逃逸
看下hosts先
看得出我这个容器ip是172.19.0.3…
翻了一顿网站目录,也没发现暴露啥敏感信息
再看下高权文件
我丢有个capsh…
这里简单说一下capabilities这个权限控制机制,他两个大项,分别为文件和进程,在这两个之下分别各自延伸了几组权限分类的集合。
感兴趣的可以看下这位师傅的帖子
https://blog.csdn.net/qq_55316925/article/details/128275600
而capsh呢则是依托这个方式可以作为查询 控制的工具来使用,于是我直接梭哈!
然后给bash加个s位
到这我以为结束了…然后思考了一下user和root的flag还没拿到
笑死
既然是docker看下/有没有容器预创建的数据库脚本文件,准备翻翻数据库
果不其然,打开看看
这里-e执行语句就ok(要是交互式就好了…-e用着好不习惯)
查下表
mysql --host=db --user=root --password=root -e "use cacti;show tables;"
Tables_in_cacti
aggregate_graph_templates
aggregate_graph_templates_graph
aggregate_graph_templates_item
aggregate_graphs
aggregate_graphs_graph_item
aggregate_graphs_items
automation_devices
automation_graph_rule_items
automation_graph_rules
automation_ips
automation_match_rule_items
automation_networks
automation_processes
automation_snmp
automation_snmp_items
automation_templates
automation_tree_rule_items
automation_tree_rules
cdef
cdef_items
color_template_items
color_templates
colors
data_debug
data_input
data_input_data
data_input_fields
data_local
data_source_profiles
data_source_profiles_cf
data_source_profiles_rra
data_source_purge_action
data_source_purge_temp
data_source_stats_daily
data_source_stats_hourly
data_source_stats_hourly_cache
data_source_stats_hourly_last
data_source_stats_monthly
data_source_stats_weekly
data_source_stats_yearly
data_template
data_template_data
data_template_rrd
external_links
graph_local
graph_template_input
graph_template_input_defs
graph_templates
graph_templates_gprint
graph_templates_graph
graph_templates_item
graph_tree
graph_tree_items
host
host_graph
host_snmp_cache
host_snmp_query
host_template
host_template_graph
host_template_snmp_query
plugin_config
plugin_db_changes
plugin_hooks
plugin_realms
poller
poller_command
poller_data_template_field_mappings
poller_item
poller_output
poller_output_boost
poller_output_boost_local_data_ids
poller_output_boost_processes
poller_output_realtime
poller_reindex
poller_resource_cache
poller_time
processes
reports
reports_items
sessions
settings
settings_tree
settings_user
settings_user_group
sites
snmp_query
snmp_query_graph
snmp_query_graph_rrd
snmp_query_graph_rrd_sv
snmp_query_graph_sv
snmpagent_cache
snmpagent_cache_notifications
snmpagent_cache_textual_conventions
snmpagent_managers
snmpagent_managers_notifications
snmpagent_mibs
snmpagent_notifications_log
user_auth
user_auth_cache
user_auth_group
user_auth_group_members
user_auth_group_perms
user_auth_group_realm
user_auth_perms
user_auth_realm
user_domains
user_domains_ldap
user_log
vdef
vdef_items
version
对着user_auth表狠狠出击
mysql --host=db --user=root --password=root -e "use cacti;select * from user_auth \G;"
*************************** 1. row ***************************
id: 1
username: admin
password: $2y$10$IhEA.Og8vrvwueM7VEDkUes3pwc3zaBbQ/iuqMft/llx8utpR1hjC
realm: 0
full_name: Jamie Thompson
email_address: [email protected]
must_change_password:
password_change: on
show_tree: on
show_list: on
show_preview: on
graph_settings: on
login_opts: 2
policy_graphs: 1
policy_trees: 1
policy_hosts: 1
policy_graph_templates: 1
enabled: on
lastchange: -1
lastlogin: -1
password_history: -1
locked:
failed_attempts: 0
lastfail: 0
reset_perms: 663348655
*************************** 2. row ***************************
id: 3
username: guest
password: 43e9a4ab75570f5b
realm: 0
full_name: Guest Account
email_address:
must_change_password: on
password_change: on
show_tree: on
show_list: on
show_preview: on
graph_settings: 3
login_opts: 1
policy_graphs: 1
policy_trees: 1
policy_hosts: 1
policy_graph_templates: 1
enabled:
lastchange: -1
lastlogin: -1
password_history: -1
locked:
failed_attempts: 0
lastfail: 0
reset_perms: 0
*************************** 3. row ***************************
id: 4
username: marcus
password: $2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C
realm: 0
full_name: Marcus Brune
email_address: [email protected]
must_change_password:
password_change:
show_tree: on
show_list: on
show_preview: on
graph_settings: on
login_opts: 1
policy_graphs: 1
policy_trees: 1
policy_hosts: 1
policy_graph_templates: 1
enabled: on
lastchange: -1
lastlogin: -1
password_history:
locked: on
failed_attempts: 0
lastfail: 0
reset_perms: 2135691668
这一跑就是整整一天半…还是没跑出admin的来,没办法只能尝试跑marcus的了
于是一会跑出来了…特么
拿去登录web试试…然后web登不上去
算球…大概率是要逃逸之后用到的,先找找逃逸点…啊不
桀桀桀,不用逃逸了
先看hosts
再看sudo -l
再翻家目录
咦发现userflag了
再找s位
再看进程
太长了懒得截图…没找到有用的信息
突然想起之前做搭容器环境时候,在宿主机上对应的目录下能访问容器内的东西,而且刚容器里有个s位的capsh可以拿来用,不过需要找到容器的存储挂再哪,于是看下docker的信息
啊呀我丢
没办法了只能手动搜一下了
一般都放在/var/lib/docker里…啊呀我超
不过问题不大 这里可以通过拼路径的方式访问到下面的内容…但是这个路径是咋写的我给忘了
于是本机拉个镜像起来测试下先
一顿乱翻大概知道了这个东西的位置了
这时候会有人问了
Q:“诶后面这段该怎么获取捏”
。。。我记得那个容器里没有docker-*-initdb.d这个目录
下一个!(shm不用看了是共享内存,只需要关注merged)
失败力
发现我当前环境不同导致权限变了…只有在容器内才有cap_iab_get_proc这个capsh的权限
https://man.archlinux.org/man/cap_iab_init.3.en
不过问题不大,突然想起来我上面在容器里的时候里就已经给容器的bash加了s位了…
不知道这个会不会受cap的影响,跑一下试试
我超还真行