实训第一天

实训第一天

GRUB2的使用

1.忘记root密码怎么办?

首先,我们先把root密码忘了,然后重启(reboot)

reboot

在GRUB2启动屏显时,按下e键进入编辑模式

编辑模式

然后我们定位到linux16开头的行,按下end键直接来这段命令的末尾,
并增加 rd.break,ctrl+x一下

定位至linux16

进入emergency mode界面
我有个信息收集的习惯,先fuzz一下
命令如下:

1
2
3
whoami
ls
mount

可以发现的是,当前是无用户情况的系统调试界面,而且xfs是只读

xfs

那就以读写的形式挂载给我改下密码:

1
2
mount -o remount,rw /sysroot      #以读写方式重新挂载系统分区至/sysroot
chroot /sysroot #改变根目录至/sysroot

挂载至/sysroot

可以发现,我们通过改变根目录方式来使用root用户,那么改变密码也成为可能
本菜鸡只会两种改变密码的命令:

1
2
echo 123 | passwd --stdin root         //本次实训所用
passwd root

修改密码

SELinux 它是一个安全增强系统, 其内部有许多安全策略
针对一些操作, 如果你做了这些操作, 没有得到策略的放行, 它会给你禁止掉
比如你使用单用修改root密码是不被策略放行的
怎么让 SELinux 策略放行呢?

1
2
"touch /.autorelabel" 创建这样一个文件其实就是在告诉SELinux放行这个策略,就是通知一下
直接关闭掉 SELinux

参考:https://blog.csdn.net/songhaixing2/article/details/109780512

由于使用了SElinux,必须运行:

1
touch /.autorelabel

否则系统无法正常使用
SElinux

退出当前用户,重启system
登录root,密码123(原密码为:qiye)

root安全登录

可以发现成功登录root,ya☆da☆ze!

2.加把安全锁

用安全角度来看,能够使用GRUB2直接修改root密码,无疑是一种提权方法,是一种安全漏洞
这就相当于,只要别人知道你家地址,便能直接进你家,所以就常识而言,为了安全,加把锁很重要

使用grub2-mkpasswd-pbkdf2 命令生成加密口令
这里密码为:qiye

grub2-mkpasswd-pbkdf2

既然是通过grub2修改的密码,那就修改他的配置文件/boot/grub2/grub.cfg
为了方便操作,新开一个终端窗口:

1
vim /boot/grub2/grub.cfg

可以看到,配置文件已经注释出界面顺序(太贴心了,嘤嘤嘤),我们把锁加到### BEGIN /etc/grub.d/10_linux ###下面,menuentry那一行的上面:
锁

保存退出,一样reboot重启,再次进入gurb2界面
grub2

  • 输入用户:qiye
  • 密码:qiye

发现可以打开GURB2命令行界面,ya☆da☆ze!

3.修复MBR

主引导记录,也叫主引导扇区

Linux是文件型的操作系统,所有的信息和数据都以文件形式保存于系统中,但是并不是所有的数据,主
引导记录就不是以文件的形式保存,无法进行备份,只能通过 dd 命令备份

  • 先进行备份,再破坏

    使用 dd 命令,将 sda 的 MBR 进行备份
    用 zero设备生成 446 字节的 “0” 写入 MBR
    重启后发现系统已坏

1
2
3
4
5
6
7
8
9
10
11
#备份
[root@localhost ~]# dd if=/dev/sda of=/root/mbr.bak count=1 bs=512
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000676292 s, 757 kB/s

#破坏
[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=446
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.000305554 s, 1.5 MB/s

重启后,发现无法正常启动

无法启动

  • 连接镜像光盘,在光盘引导界面选择 Troubleshooting
    连接镜像:
    光盘连接
    使用Troubleshooting:
    Troubleshooting
  • 选择救援模式 Rescue a Centos system

Rescue a Centos system

  • 选择Continue,以 rw 模式挂载分区

Continue

grub2-install 命令重建 Bootloader,随后 sync 写入硬盘,reboot 重启系统

重建 Bootloader

进入挂载文档,重新安装 Bootloader,sync写入硬盘,reboot重启system

1
2
3
4
5
sh-4.2 chroot /mnt/sysimage  
sh-4.2 grub2-install /dev/sda
sh-4.2 sync
sh-4.2 exit
sh-4.2 reboot

完成!(我好菜,都是跟着文档来着)

完成!

4.修复GRUB

我们设想,有没有一种可能,grub配置文件丢失,开机直接登录,但显然这是不可能的,它会直接进入grub界面,
直接让你调试解决

总之,乱来前能快照就快照(不能过度依靠),然后必须备份

1
2
3
4
5
6
7
8
9
10
11
#备份
[root@localhost ~] mkdir grub2.bak
[root@localhost ~] chmod 777 grub2.bak/
[root@localhost ~] cp -rp /boot/grub2/* ./grub2.bak/
[root@localhost ~] ls grub2.bak/
device.map fonts grub.cfg grubenv i386-pc locale themes
[root@localhost ~]#
#删除
[root@localhost ~] rm /boot/grub2/grub.cfg
rm: remove regular file ‘/boot/grub2/grub.cfg’? y
[root@localhost ~] reboot

最好在确认一下,磁盘分区:

1
df -h

查看磁盘分区
重启后,进入grub状态,一下调试参数:
grub
小心版本问题啊,建议linux16 /vm 直接Tab出来就行

initrd16 /init 也一样

1
2
3
4
5
6
7
8
9
10
11
grub> insmod xfs 

grub> set root='hd0,msdos1' #你的/boot分区/dev/sda1,没错hd0对于sda,msdos1对应/dev/sda1

grub> linux16 /vmlinuz-3.10.0-123.el7.x86_64

root=/dev/sda3

grub> initrd16 /initramfs-3.10.0-123.el7.x86_64.img

grub> boot

关于root=/dev/sda3:
我的系统分区位于/dev/sda3,不能搞错绝对路径!!!!

恢复Grub

1
2
3
[root@localhost ~] cp ./grub2.bak/grub.cfg /boot/grub2/ 

[root@localhost ~] reboot

能够正常重启!

DHCP服务器的配置与使用

1.安装DHCP服务

检查是否有安装DHCP,若无提示,则未安装

1
rpm -qa dhcp

关闭防火墙及SELinux策略

1
2
3
[root@localhost ~] systemctl stop firewalld.service 

[root@localhost ~] setenforce 0

安装dhcp服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#挂载镜像
[root@localhost ~] mkdir /mnt/cdrom
[root@localhost ~] mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~] cd /mnt/cdrom/
[root@localhost cdrom] ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost cdrom] cd Packages/

#在包内查找dhcp安装包
[root@localhost Packages] ls | grep dhcp
dhcp-4.2.5-27.el7.centos.x86_64.rpm
dhcp-common-4.2.5-27.el7.centos.x86_64.rpm
dhcp-devel-4.2.5-27.el7.centos.i686.rpm
dhcp-devel-4.2.5-27.el7.centos.x86_64.rpm
dhcp-libs-4.2.5-27.el7.centos.i686.rpm
dhcp-libs-4.2.5-27.el7.centos.x86_64.rpm

#安装dhcp
[root@localhost Packages] rpm -ivh dhcp-4.2.5-27.el7.centos.x86_64.rpm
warning: dhcp-4.2.5-27.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:dhcp-12:4.2.5-27.el7.centos ################################# [100%]
[root@localhost Packages] rpm -qa dhcp
dhcp-4.2.5-27.el7.centos.x86_64

#yum下载安装也行
wget -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install dhcp

再次检查dhcp

1
2
[root@localhost Packages] rpm -qa dhcp
dhcp-4.2.5-27.el7.centos.x86_64

2.DHCP的配置

更新本地网卡ip配置(我这网卡名就很离谱。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost Packages]# dhclient
[root@localhost Packages]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.241.144 netmask 255.255.255.0 broadcast 192.168.241.255
ether 00:0c:29:e0:c1:21 txqueuelen 1000 (Ethernet)
RX packets 631 bytes 40374 (39.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18 bytes 3110 (3.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 930 bytes 80828 (78.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 930 bytes 80828 (78.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

找到dhcp配置文件

1
2
[root@localhost Packages] find /* -name dhcpd.conf
/etc/dhcp/dhcpd.conf

然后出了一堆问题,解决起来真的是。。。怀疑人生啊

1.配置静态ip

vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

静态ip

1
2
3
4
5
6
7
8
9
10
#检查ip是否正确
[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.111.111 netmask 255.255.255.0 broadcast 192.168.111.255
inet6 fe80::20c:29ff:fee0:c121 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e0:c1:21 txqueuelen 1000 (Ethernet)
RX packets 34 bytes 2994 (2.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 34 bytes 4361 (4.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2.配置dhcp文件

在/etc/dhcp/dhcpd.conf增加以下:

1
2
3
4
5
6
7
8
9
subnet 192.168.111.0 netmask 255.255.255.0 {
range 192.168.111.100 192.168.111.200;
option domain-name-servers 192.168.111.1;
option domain-name "qiye";
option routers 192.168.111.1;
option broadcast-address 192.168.111.255;
default-lease-time 600;
max-lease-time 7200;
}

subnet 后面接是的是你ip的网段,不是你的ip,且后面数值都应该是跟你同个网段的ip

1
2
#启动dhcp服务
systemctl status dhcpd
1
2
3
4
5
6
7
# 重启DHCP服务 

[root@localhost ~] systemctl restart dhcpd.service

# 查看DHCP状态
[root@localhost ~] netstat -luntp | grep dhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 12514/dhcpd

修改虚拟网络配置

虚拟网络配置

在一台被我渗透了无数遍的靶机win7上,终于。。。。。

自动分配ip
给win7配置一个nice的IP地址(192.168.111.144)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
subnet 192.168.111.0 netmask 255.255.255.0 {
range 192.168.111.100 192.168.111.200;
option domain-name-servers 192.168.111.1;
option domain-name "qiye";
option routers 192.168.111.1;
option broadcast-address 192.168.111.255;
default-lease-time 600;
max-lease-time 7200;
}

# 增加一行
host boss {
hardware ethernet 00:0C:29:5A:D5:EB;
fixed-address 192.168.111.144;
}

重启服务

1
[root@localhost ~] systemctl restart dhcpd.service

给予特定ip
未完待续~~


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!