漏洞评估
确定了最可行的攻击方法之后,您需要考虑如何访问目标。在脆弱性分析过程中,您可以结合前一阶段学到的信息,并用它来了解哪些攻击是可行的。其中,漏洞分析考虑了端口和漏洞扫描,通过抓取banner收集的数据以及收集情报期间收集的信息。
评估分类 | 书签 |
---|---|
网络评估 | |
Web应用程序评估 | |
数据库评估 |
网络评估
Fuzzers-sulley
代码(fuzz_PCManftpd32.py)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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151#coding=utf-8
# 视频1使用Sulley框架的实现fuzz
# http://www.dfate.de/public/index.php/post/exploit-development-series-video-1-practical-fuzzing-basics-using-the-sulley-framework
# https://www.exploit-db.com/exploits/37731/
# -------------------------------------------------------------------
# Usage:
# C:\Fuzzing\sulley>python network_monitor.py -d 0 -f "port 21" -P audit
# C:\Fuzzing\sulley>python process_monitor.py -c audit\pcmanftpd_crashbin -p "PCManFTPD2.exe"
# -------------------------------------------------------------------
# 分析:
"""
220 PCMan's FTP Server 2.0 Ready.
USER anonymous
331 User name okay, need password.
PASS password12345
230 User logged in
PORT 192,168,1,106,206,27
200 Command okay.
STOR demo2.txt
150 File status okay; Open data connection.
226 Data Sent okay.
PORT 192,168,1,106,206,28
200 Command okay.
LIST
150 File status okay; Open data connection.
226 Data Sent okay.
PORT 192,168,1,106,206,29
200 Command okay.
RETR demo2.txt
150 File status okay; Open data connection.
226 Data Sent okay.
QUIT
"""
from sulley import *
# 总体概述
#1.创建请求(定义模糊语法)
#2.定义会话
#3.定义目标
#4.fuzz!
# s_initialize - 构建一个新的请求
# s_static ("USER") - 一个静态(未改变)的字符串,不会被fuzz
# s_delin(" ") - 可以fuzz的分隔符,将有不同的使用s_string的变动
# s_string("anonymous") - 一个将被变动的字符串。 包含比s_delim更多的变动
# -------------------------------------------------------------------
# 语法测试
s_initialize("user")
s_static("USER")
s_delim(" ", fuzzable=False)
s_string("anonymous")
s_static("\r\n")
s_initialize("pass")
s_static("PASS")
s_delim(" ", fuzzable=False)
s_string("pass12345")
s_static("\r\n")
s_initialize("put")
s_static("PUT")
s_delim(" ", fuzzable=False)
s_string("fuzz_strings")
s_static("\r\n")
s_initialize("stor")
s_static("STOR")
s_delim(" ", fuzzable=True)
s_string("AAAA")
s_static("\r\n")
s_initialize("mkd")
s_static("MKD")
s_delim(" ", fuzzable=False)
s_string("AAAA")
s_static("\r\n")
# -------------------------------------------------------------------
# 定义pre_send函数。 三次握手后会立即执行
def receive_ftp_banner(sock):
data = sock.recv(1024)
print(data)
# -------------------------------------------------------------------
# 定义会话
# 会话参数
SESSION_FILENAME = "pcmanftpd-session" # 跟踪当前的fuzz状态
SLEEP_TIME = 0.5 # 在两次fuzz尝试之间暂停
TIMEOUT = 5 # 没有连接5秒后,fuzz会超时
CRASH_THRESHOLD = 4 # 4次崩溃后,参数将被跳过
mysession = sessions.session(
session_filename=SESSION_FILENAME,
sleep_time=SLEEP_TIME,
timeout=TIMEOUT,
crash_threshold=CRASH_THRESHOLD)
mysession.pre_send = receive_ftp_banner
mysession.connect(s_get("user"))
mysession.connect(s_get("user"), s_get("pass"))
mysession.connect(s_get("pass"), s_get("stor"))
mysession.connect(s_get("pass"), s_get("mkd"))
mysession.connect(s_get("pass"), s_get("put"))
# -------------------------------------------------------------------
# 绘制代表fuzz路径的图形。
with open("session_test.udg", "w+") as f:
f.write(mysession.render_graph_udraw())
# -------------------------------------------------------------------
# 一些概述输出
print("Number of mutation during one case: %s\n" % str(s_num_mutations()))
print("Total number of mutations: %s\n" % str(s_num_mutations() * 5))
decision = raw_input("Do you want to continue?(y/n): ")
if decision == "n":
exit()
# -------------------------------------------------------------------
# 定义目标具体参数
host = "192.168.1.107"
ftp_port = 21
netmon_port = 26001
procmon_port = 26002
target = sessions.target(host, ftp_port)
target.procmon = pedrpc.client(host, procmon_port)
target.netmon = pedrpc.client(host, netmon_port)
target.procmon_options = {
"proc_name": "pcmanftpd2.exe",
"stop_commands": ["wmic process where (name='PCManFTPD2.exe') call terminate"],
"start_commands": ["C:\\PCManFTP\\PCManFTPD2.exe"]
}
# 将目标添加到会话
mysession.add_target(target)
# -------------------------------------------------------------------
# 让我们开始搞事情
print("Starting fuzzing now")
mysession.fuzz()
# 开启fuzz进程
# 也可以通过网页界面(http://127.0.0.1:26000)查看当前状态
代码分析
该代码通过sulley框架来进行fuzz测试,首先进行语法测试,构造多个新请求(包括FTP的user、pass、put、stor、mkd),设置静态字符串和FUZZ字符串,然后定义pre_send三次握手后立即执行,定义会话及会话参数,绘制udg格式的fuzz路径图形,输入一些概述后定义目标具体参数,将目标添加到会话中,直接开始搞事情。
期间可以通过网页界面(http://127.0.0.1:26000)
查看当前状态
Jenkins Hacking
- 如何部署jenkins?
- 如何利用jenkins服务器?
Jenkins是一个独立、开源的自动化服务器,可用于自动执行各种任务,如构建,测试和部署软件。Jenkins可以通过本地系统软件包Docker安装,甚至是独立运行在安装java运行环境的任何机器上。
如何部署jenkins?
这引导将使用“独立的”Jenkins发行版,该发行版要求最少使用Java 7,但建议使用Java 8。还建议使用超过512MB RAM的系统。
- 下载Jenkins.
- 在下载目录中打开终端并运行java -jar jenkins.war
- 在浏览器中打开http:// localhost:8080并按照说明完成安装。
- 许多Pipeline示例需要在与Jenkins相同的计算机上安装Docker。
请检查安装日志,如下:
1 | root@lab:~/Downloads# java -jar jenkins.war |
请注意这里,我们需要密码来完成设置。
1 | Jenkins initial setup is required. An admin user has been created and a password generated. |
如何利用jenkins服务器?
访问 http://127.0.0.1:8080/script, 并用脚本控制台pwn jenkins服务器。
脚本控制台
输入一个任意的Groovy脚本并在服务器上执行它。用于故障排除和诊断。使用’println’命令来查看输出结果(如果使用System.out,它将转到服务器的stdout,这是很难看到的。)
例如:
execmd.groovy
execmd.groovy 可以帮助你在jenkins服务器上执行os命令。
1 | # Windows |
writefile.groovy
writefile.groovy 可以将字符串写入jenkins服务器上的文件。
1 | new File("/tmp/test.sh").write(""" |
如果你更喜欢metasploit-framework,
1 | msf > use exploit/multi/http/jenkins_script_console |
链接
WEB应用程序评估
Android hacking 与 安全
- 利用保护应用程序组件
- 内容提供者泄露
- 利用广播接收机
- 利用非预期的数据泄漏端信道数据泄漏
- 使用jdb调试java应用程序
- 利用可调试的android应用程序
- 攻击android的webviews
- 根检测规避
- 不安全的本地存储共享偏好
- 不安全的本地存储
- 黑盒评估introspy
- 保护共享偏好第三方库
- drozer介绍
- 检查Android应用程序特定的数据非根设备
- 使用备份技术攻击android应用程序
- 破解密码学
- 破解Android应用程序二进制文件
- 逆向工程介绍
- 使用nosql数据库不安全的数据存储
- 使用gdb在android模拟器上调试应用程序
安卓逆向工程
- http://www.fasteque.com/android-reverse-engineering-101-part-1/
- http://www.fasteque.com/android-reverse-engineering-101-part-2/
- http://www.fasteque.com/android-reverse-engineering-101-part-3/
- http://www.fasteque.com/android-reverse-engineering-101-part-4/
- http://www.fasteque.com/android-reverse-engineering-101-part-5/
Android安全和渗透利用
- 介绍
- Android的安全性-介绍
- Android-架构
- Android-权限
- Android-应用
- Genymotion(一款安卓模拟器) 设置
- Android-应用程序组件
- Dex-分析
- Android-调试桥
- 基于日志记录的漏洞
- 应用逆向
- 分析Android的软件及恶意软件
- 流量分析
- SSL-Pinning
- 泄漏的内容提供商
- Drozer-功夫
- 基于read的内容提供商漏洞
- 进阶Drozer-功夫
- Drozer脚本
- Dropbox的脆弱性
- 基于备份的漏洞
- 客户端注入
- Hooking 介绍和不安全的设置
- 基于Andbug的Android调试
- JDB调试
- 用Introspy自动Hooking
- Cydia-基底
- 使用Xposed进行Hooking
- Androguard脚本和分析
- 基于webviews的漏洞
- 利用Metasploit工具攻击webviews
书籍推荐
- Android安全手册
- Android黑客手册
- 学习针对Android设备的测试
参考链接
- http://www.exploit-db.com/
- http://www.cvedetails.com/
- http://packetstormsecurity.com/
- http://www.securityfocus.com/bid
- http://nvd.nist.gov/
- http://osvdb.org/
- http://cve.mitre.org/
- http://sec.jetlib.com/
- http://0day.today/
- https://www.seebug.org/
- https://www.rapid7.com/db/
- http://zerodayinitiative.com/advisories/published/
- http://exploitsearch.net/
- http://nvd.nist.gov/download/nvd-rss-analyzed.xml
- http://www.intelligentexploit.com/
- https://wpvulndb.com/
- http://www.wordpressexploit.com/
- http://www.drupalexploit.com/
- http://www.openwall.com/lists/oss-security/
- http://exploitsearch.net/
- https://www.vulnerability-lab.com/