Simplestory's Blog

Linux渗透测试命令

Word count: 2.7kReading time: 10 min
2018/01/20

以下是Linux机器的渗透测试备忘录,我无意间在网上看到的,便搬运到这边。

Linux机器渗透测试

命令 描述
netstat -tulpn 在Linux中显示对应于ID(PID)的网络端口
watch ss -stplu 通过套接字实时观察TCP,UDP端口
lsof -i 显示确认了的连接
macchanger -m MACADDR INTR 在KALI Linux上修改MAC地址
ifconfig eth0 192.168.2.1/24 在Linux中设置ID地址
ifconfig eth0:192.168.2.3/24 在Linux中向现有的网络接口添加IP地址
ifconfig eth0 hw ether MAC ADDR 使用ifconfig修改Linux中的地址
ifconfig eth0 mtu 1500 使用ifconfig修改MTU的大小,将1500改为想要的MTU
dig -x 192.168.1.1 对IP地址进行反向查找
host 192.168.1.1 在一个IP地址上进行反向查找,适用于没有安装dig的情况
dig @192.168.2.2 domain.com -t AXFR 使用dig执行一次DNS区域传输
host -l domain.com nameserver 使用host执行一次DNS区域传输
nbtstat -A x.x.x.x 获取IP地址对应的域名
ip addr add 192.168.2.22/24 dev eth0 添加一个隐藏的IP地址,执行ifconfig时不会显示这个IP地址
tcpkill -9 host goole.com 阻止从主机访问goole.com
echo "1">/proc/sys/net/ipv4/ip_forward 启用IP转发,将Linux盒子变成一个路由器——这样就方便通过这个盒子进行路由流量的控制
echo "8.8.8.8">/etc/resolv.conf 使用Goole的DNS

系统信息命令

对于本地的枚举检查有很大的帮助

命令 描述
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 添加一个新的路径,方便进行蹦迪文件系统(FS)操作
history 显示用户在之前执行的bash脚本历史记录,还有敲入的命令

基于Redhat/CentOS/RPM的发行版

命令 描述
cat /etc/redhat-release 显示Redhat/CentOS版本号
rpm -qa 在基于RPM的Linux上列出所有已经安装上的RPM包
rpm -q --changelog openvpn 检查已安装的RPM是否针对CVE打了补丁,可以用grep命令过滤出跟CVE有关的输出

YUM命令

命令 描述
yum update 使用YUM更新所有的RPM包,也会显示出哪些已经过时了
yum update httpd 更新单独的包,在此例中是HTTPD(Apache)
yum install package 使用YUM安装一个包
yum --exclude=package kernel* update 在使用YUM时将一个包排除在外不更新
yum remove package 使用YUM删除包
yum erase package 使用YUM删除包
yum list package 列出有关YUM包的信息
yum provides httpd 显示一个包的用途
yum info httpd 显示包信息,架构,版本等信息
yum local install 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/.deb的Linux发行版列出所有已安装的包

Linux用户管理

命令 描述
useradd new-user 创建一个新的Linux用户
passwd username 重置Linux用户密码,如果你是root用户,只要输入密码即可
userdel username 删除一个Linux用户

用户创建命令

adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码 useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本

用户删除命令

userdel:删除用户,添加选项-r可以删除与用户相关的所有文件,-f可强制删除用户,即使用户处于登录状态 deluser:将一个用户从一个组中删除(即退出用户组)deluser username usergroup

Linux解压缩命令

命令 描述
unzip archive.zip 在Linux上提取zip包中的文件
zipgrep *.txt archive.zip 在一个zip压缩包中搜索
tar xf archive.tar 在Linux上提取tar包中的文件
tar xvzf archive.tar.gz 在Linux上提取tar.gz包中的文件
tar xjf archive.tar.bz2 在Linux上提取tar.bz2包中的文件
tar ztvf file.tar.gz | grep blah 在一个tar.gz文件中搜索
gzip -d archive.gz 在Linux上提取gzip中的文件
zcat archive.gz 在Linux上以不解压缩的方式读取一个.gz文件
zless archive.gz 用较少的命令实现对.gz压缩包相同的功能
zgrep 'blah' /var/log/maillog*.gz 在Linux上对.gz压缩包里面的内容执行搜索,比如搜索被压缩过的日志文件
vim file.txt.gz 使用vim读取.txt.gz文件

Linux压缩命令

命令 描述
zip -r file.zip /dir/* 在Linux上创建一个.zip文件
tar cf archive.tar files 在Linux上创建一个.tar文件
tar czf archive.tar.bz2 files 在Linux上创建一个tar.gz文件
tar cjf archive.tar.bz2 files 在Linux上创建一个tar.bz2文件
gzip file 在Linux上创建一个.gz文件
upx -9 -o output.exe input.exe 在Linux上使用UPX压缩.exe文件

Linux文件命令

命令 描述
df -h blah 在Linux上显示文件/目录的大小
diff file1 file2 在Linux上对比/显示两个文件之间的差别
md5sum file 在Linux上生成MD5摘要
md5sum -c blah.iso.md5 在Linux上检查文件的MD5摘要,这里假设文件和.md5处在相同的路径下
file blah 在Linux上查找出文件的类型,也会将文件是32还是64位显示出来
dos2unix 将Windows的行结束符转成Unix/Linux的
base64 input-file output-file 对输入文件进行Base64编码,然后输出一个叫做output-file的Base64编码文件
base64 -d input-file output-file 对输入文件进行Base64解码,然后输出一个叫做output-file的Base64解码文件
touch -r ref-file new-file 使用来自应用文件的时间戳数据创建一个新文件,放上-r以简单地创建一个文件
rm -rf 不显示确认提示就删除文件和目录

Misc命令

命令 描述
init 6 从命令行重启Linux
gcc -o output.c input.c 编译C代码
gcc -m32 -o output.c input.c 交叉编译C代码,在64为Linux上将编译出32位的进制文件
unset HISTORYFILE 关闭bash历史日志记录功能
rdesktop x.x.x.x 从Linux连接到RDP服务器
kill -9 $$ 关掉当前的会话
chown user:group blah 修改文件或者目录的所有者
chown -R user:group blah 修改文件或者目录,以及目录下面文件/目录的拥有者——递归执行chown
chmod 600 file 修改文件/目录的权限设定,详情见Linux文件系统权限

清除bash历史

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

.bash_history文件可保存多条历史记录,可通过设置HISTFILESIZE和HISTSIZE参数来减少保存的命令数。

两个参数的意义: * HISTSIZE: 定义了history命令输出的命令数 * HISTFILESIZE: 定义了.bash_history文件保存的命令数

1
2
3
$ HISTFILESIZE=<num>

$ HISTSIZE=<num>

命令history -c可以清空本次输出的命令,但不清空.bash_history文件,所以下次登陆后,旧命令还将出现。

Linux文件权限

取值 意义
777 rwxrwxrwx 没有限制,完全可读可写可执行(RWX),用户可以做任何事情
755 rwxr-xr-x 拥有这可完全访问,其他人只能读取和执行
700 rwx------ 拥有者可完全访问,其他人都不能访问
666 rw-rw-rw- 所有人可以读取和写入,但不可执行
644 rw-r--r-- 拥有者可以读取和写入,其他人只可以读取
600 rw------- 拥有者可以读取和写入,其他人都不能访问

Linux文件系统的渗透测试备忘录

路径 描述
/ /也被称为“斜杠”或者根
/bin 由系统、系统管理员以及用户共享的通用程序
/boot Boot文件,启动加载器(grub),内核,vmlinuz
/dev 包含了对系统设备、带有特殊属性的文件的引用
/etc 重要的系统配置文件
/home 系统用户的主目录
/lib 库文件,包括系统和用户都需要的所有类型的程序的文件
/lost+found 文件操作失败会被保存在这里
/mnt 外部文件系统的标准挂载点
/media 外部文件系统(或者某些发行版)的挂载点
/net 整个远程文件系统的标准挂载点——nfs
/opt 一般都是包含一些附加的或者第三方软件
/proc 一个包含了系统资源相关信息的虚拟文件系统
/root root用户的主目录
/sbin 由系统和系统管理员来使用的程序
/tmp 供系统使用的临时空间,重启时会被清空
/usr 供所有用户相关程序使用的程序、库、文档等等
/var 存储所有由用户创建的可变文件和零食文件,比如日志文件、邮件队列、后台打印程序、Web服务器、数据库等等

Linux中一些有趣的文件/目录

对特权升级/执行后期开发有较大帮助

路径 描述
/etc/passwd 包含了本地Linux的用户
/etc/shadow 包含了哈希过的本地账户密码
/etc/group 包含了本地账户分组
/etc/init.d/ 包含了服务网初始化脚本——具体都安装了写什么值得一看
/etc/hostname 系统的hostname
/etc/network/interfaces 网络接口
/etc/resolv.conf 系统的DNS服务
/etc/profile 系统的环境变量
~/.ssh/ SSH密钥
~/.bash_history 用户的bash历史日志
/var/log/ Linux系统的日志文件一般被存放在这里
/var/adm/ UNIX系统的日志文件一般就被存放在这里
/var/log/apache2/access.log /var/log/httpd/access.log Apache访问日志文件通常的存放路径
/etc/fstab 挂载的文件系统

突破shell限制

Python小技巧:

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

Samba命令

从Linux连接到Samba共享:

1
2
3
$ 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

致谢

Linux爱好者

CATALOG
  1. 1. Linux机器渗透测试
  2. 2. 系统信息命令
    1. 2.1. 基于Redhat/CentOS/RPM的发行版
    2. 2.2. YUM命令
    3. 2.3. 基于Debian/Ubuntu/.deb的发行版
  3. 3. Linux用户管理
    1. 3.1. 用户创建命令
    2. 3.2. 用户删除命令
  4. 4. Linux解压缩命令
  5. 5. Linux压缩命令
  6. 6. Linux文件命令
  7. 7. Misc命令
    1. 7.1. 清除bash历史
    2. 7.2. Linux文件权限
  8. 8. Linux文件系统的渗透测试备忘录
  9. 9. Linux中一些有趣的文件/目录
  10. 10. 突破shell限制
  11. 11. Samba命令
  12. 12. 致谢