以下是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爱好者