Linux Commands for Penetration Testers

Linux Commands for Penetration Testers

Linux Commands for Penetration Testers

Linux 网络命令

命令 描述
netstat -tulpn 显示linux网络端口以及进程id(pid)
watch ss -stplu 实时观察TCP,UDP开放的官方和socket总结
lsof -i 显示建立的链接
macchanger -m MACADDR INT 在Kail linux上修改mac地址
ifconfig eth0 192.168.2.1/24 设置linux的ip地址
ifconfig eth0:1 192.168.2.3/24 在linux中添加ip地址到现有的网络接口
ifconfig eth0 hw ether MACADDR 使用ifconfig在linux上修改mac地址
ifconfig eth0 mtu 1500 在linux上使用ifconfig修改mtu大小
dig -x 192.168.1.1 使用dig反向查询ip地址
host 192.168.1.1 反向查询ip地址(dig没有安装的情况下使用)
dig @192.168.2.2 domain.com -t AXFR 使用dig执行dns zone transfer[1]
host -l domain.com nameserver 使用host执行dns zone transfer
nbtstat -A x.x.x.x 获取ip地址的主机名
ip addr add 192.168.2.22/24 dev eth0 添加一个隐藏ip地址到linux,不执行ifconfig时显示
tcpkill -9 host google.com 阻止从主机访问google.com
echo "1" > /proc/sys/net/ipv4/ip_forward 打开核心的封包转递 (IP forward) 功能[2]
echo "8.8.8.8" > /etc/resolv.conf 将dns修改为8.8.8.8[3])

获取系统信息命令

命令 描述
whoami 在linux上显示当前登录的用户
id 显示当前登录的用户和组
last 显示上次登录的用户
mount 显示挂载的设备
df -h 显示硬盘使用情况
echo "user:passwd" | chpasswd 重置密码
getent passwd 在linux上显示所有用户
strings /usr/local/bin/blah 显示文件中的可打印字符
uname -ar 显示运行中的内核版本
PATH=$PATH:/my/new-path 添加一个新的path[4]
history 显示bash命令执行历史

Redhat / CentOS / 基于RPM的发行版

命令 描述
cat /etc/redhat-release 显示Redhat / CentOS版本号
rpm -qa 在rpm发行版linux上显示已安装的RPM包
rpm -q --changelog openvpn ?

YUM 命令

命令 描述
yum update 更新所有的rpm包并且显示哪些包过时了
yum update httpd 更新单个包,这个例子中使用HTTPD(Apache)
yum install package 使用yum安装包
yum --exclude=package kernel* update 排除某个package包更新
yum remove package 使用yum移除一个包(保留配置文件和数据文件)
yum erase package 使用yum移除一个包(不保留配置文件和数据文件)
yum list package 显示所有包信息
yum provides httpd 检测软件包中包含的文件以及软件提供的功能
yum info httpd 显示包信息,程序结构,版本等
yum localinstall blah.rpm 使用yum安装本地rpm文件
yum deplist package 显示包依赖信息
yum list installed | more 显示所有已安装的包
yum grouplist | more 显示所有yum组包
yum groupinstall ''Development Tools'' 安装yum组包

Debian / Ubuntu / 基于deb的发型版

命令 描述
cat /etc/debian_version 显示debian版本号
cat /etc/*-release 显示ubuntu版本号
dpkg -l 在Debian / Ubuntu / 基于deb的发型版上显示所有安装的包

Linux 用户管理

命令 描述
useradd new-user 创建一个新的linux用户
passwd username 重置linux用户密码
deluser username 删除linux用户

Linux解压命令

命令 描述
unzip archive.zip 在linux上解压zip文档
zipgrep *.txt archive.zip 在zip文档中进行搜索
tar xf archive.tar 解压tar文件
tar xvzf archive.tar.gz 解压tar.gz文件
tar xjf archive.tar.bz2 解压bz2文件
tar ztvf file.tar.gz | grep blah 在tar.gz文件中搜索
gzip -d archive.gz 解压gzip文件
zcat archive.gz 显示gzip文件解压缩后的文件内容
zless archive.gz 通过less命令显示gzip文件解压缩后的文件内容
zgrep ''blah'' /var/log/maillog*.gz 在gzip文件里面搜索
vim file.txt.gz 使用vim读取.txt.gz文件
upx -9 -o output.exe input.exe 使用upx压缩文件

Linux压缩命令

命令 描述
zip -r file.zip /dir/* 在linux上压缩dir目录下的所有文件到file.zip
tar cf archive.tar files 在linux上创建tar文件
tar czf archive.tar.gz files 在linux上创建tar.gz文件
tar cjf archive.tar.bz2 files 在linux上创建tar.bz2文件
gzip file 在linux上创建gz文件

Linux 文件相关命令

命令 描述
df -h blah 显示文件/目录的大小
diff file1 file2 比较/显示两个文件之间的差别
md5sum file 生成MD5SUM[5]
md5sum -c blah.iso.md5 检查文件的md5sum,假设这两个文件和.md5在同一个目录
file blah 在linux上找出文件的类型
dos2unix 将DOS格式文本文件转换成UNIX格式
touch -r ref-file new-file ?
rm -rf 强制删除某个文件/目录,不经过确认

Samba命令

从linux连接到一个samba 共享

$ smbmount //server/share /mnt/win -o user=username,password=password1
$ smbclient -U user \\\\server\\share
$ mount -t cifs -o username=user,password=password //x.x.x.x/share /mnt/share

绕过shell的限制

python -c ''import pty;pty.spawn("/bin/bash")''
echo os.system(''/bin/bash'')
/bin/sh -i

其他命令

命令 描述
init 6 重启linux到命令行界面
gcc -o output.c input.c 编译c语言代码
gcc -m32 -o output.c input.c 交叉编译c语言代码,编译32位二进制代码在64位linux上
unset HISTORYFILE 禁用bash历史日志记录
rdesktop X.X.X.X 在linux上链接RDP server[6]
kill -9 $$ 强制结束当前会话
chown user:group blah 修改目录或者文件所属组和用户
chown -R user:group blah 递归目录或者文件所属组和用户
chmod 600 file 修改文件目录权限

清理bash历史日志记录:

$ ssh user@X.X.X.X | cat /dev/null > ~/.bash_history

Linux文件系统权限

所代表含义
777 rwxrwxrwx没有限制,所有用户都能对此文件/目录进行任何操作
755 rwxr-xr-x所有者具有完全访问权限,其他人可以读取和执行该文件
700 rwx------
666 rw-rw-rw-所有人用户都能读取并且写该文件,但不能执行
644 rw-r--r--所有者可以读取并写此文件,其他用户只能读取
600 rw------所有者可以读取并写此文件,其他用户没任何权限

Linux 文件系统

目录 描述
/bin binary二进制文件,可执行的命令,非管理的命令
/boot 引导文件,系统启动,kernel,bootloader(grub)
/dev 设备文件所在目录
/etc 系统管理和配置文件
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/lost+found 个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/mnt 系统管理员临时安装(mo nnt)文件系统的安装点。程序并不自动支持安装到/mnt /mnt 下面可以分为许多子目录,例如/mnt/dosa 可能是使用m s d o s文件系统的软驱,而/mnt/exta 可能是使用ext2文件系统的软驱,/mnt/cdrom 光驱等等
/media (挂载便携性设备),/mnt,挂载点
/net 远程文件系统挂载点
/opt 有些第三方软件,把此目录当作默认安装位置
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/root root用户的家目录
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/usr 类似于windows的program file系统日常管理软件的安装路径
/var 存放日志 pid 用户邮件等信息

Linux敏感的文件/目录

目录 描述
/etc/passwd 包含本地所有linux用户信息
/etc/shadow 包含本地所有zhang

  1. DNS架构下常需透过更新的动作来更新Zone区域内的资料,DNS主机与主机间Zone Date (辖区资讯)是经常在进行比对与交换的,如此才能确保查询到的资料为正确。

  2. 就如同路由表是由Linux 的核心功能所提供的,这个转递封包的能力也是Linux 核心所提供

  3. google所提供的dns

  4. 环境变量

  5. md5sum 是一种计算机程序,用于计算与校验RFC1321所描述的128位MD5哈希值,此处MD5散列值(或校验和)作一个文件的数字指纹使用。

  6. 远程桌面协议(英语:Remote Desktop Protocol,缩写:RDP)