以下是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历史

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

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

两个参数的意义:

  • HISTSIZE: 定义了history命令输出的命令数
  • HISTFILESIZE: 定义了.bash_history文件保存的命令数
$ HISTFILESIZE=<num>

$ HISTSIZE=<num>

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

Linux文件权限

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

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

路径描述
//也被称为“斜杠”或者根
/bin由系统、系统管理员以及用户共享的通用程序
/bootBoot文件,启动加载器(grub),内核,vmlinuz
/dev包含了对系统设备、带有特殊属性的文件的引用
/etc重要的系统配置文件
/home系统用户的主目录
/lib库文件,包括系统和用户都需要的所有类型的程序的文件
/lost+found文件操作失败会被保存在这里
/mnt外部文件系统的标准挂载点
/media外部文件系统(或者某些发行版)的挂载点
/net整个远程文件系统的标准挂载点——nfs
/opt一般都是包含一些附加的或者第三方软件
/proc一个包含了系统资源相关信息的虚拟文件系统
/rootroot用户的主目录
/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.logApache访问日志文件通常的存放路径
/etc/fstab挂载的文件系统

突破shell限制

Python小技巧:

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

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

参考

Linux爱好者