《Web安全深度剖析》.docx
- 文档编号:25413163
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:34
- 大小:33.63KB
《Web安全深度剖析》.docx
《《Web安全深度剖析》.docx》由会员分享,可在线阅读,更多相关《《Web安全深度剖析》.docx(34页珍藏版)》请在冰豆网上搜索。
《Web安全深度剖析》
《Web安全深度剖析》
《Web安全深度剖析》●简介、协议、抓包不再赘述略●信息探测与收集
●GoogleHack(baidu等爬虫)
●搜索子域名,示例:
【site:
baidu.】
●搜集Web信息●Google常用语法
●【site】:
指定域名●【nte_t】:
正文中存在关键字的网页●【intitle】:
标题中存在关键字的网页●【inurl】:
url中存在关键字的网页●【info】:
一些基本信息●【filetype】:
搜索指定文件类型●案例一:
【intitle:
管理登录filetype:
php】
●查询网页标题中含有【管理登录】且为【php类型】的网站(后台或指定类型的目标扫描)
●案例二:
【inte_t:
PowerbyDiscuz】
●Discuz搭建的论坛正文里基本都有个PowerbyDiscuz(熟悉CMS特征),配合最新的Dis_uz漏洞危害严重。
●google的局限性,robots.t_t,所以有时候需要自己写爬虫来获取某些信息
●防御:
●Nmap(扫描)
●简介:
window图形界面的:
Zenmap;命令行和kali下的差不多,略●参数
●案例:
-Pn:
将所有主机视为在线;;跳过主机发现
●Nmap脚本引擎●.nse脚本,Script目录下,--script=脚本名称
●官方脚本文档:
nmap.org/nsedoc
●案例●案例一:
扫描Web敏感目录【-enum.nse】
●-p80--script=-enum.nse
●案例二:
扫描SqlInjection【-sql-injection.nse】
●-p80--script=-sql-injection.nse●案例三:
使用所有的脚本进行扫描【--scriptall】,最好保存为文档-oN●案例四:
使用通配符选择多个脚本扫描●nmap--script;;-_;;127.0.0.1,注意脚本名称用双引号避免shell误解
●还可以漏洞检测和密码暴力破解,更多参考s:
//nmap.org/book/nse-usage.,包括基本用法和脚本分类等
●DirBuster(目录、隐藏文件扫描)
●简介
●kali自带
●概览:
●使用案例以及基本步骤:
●爆破目录,也有爬虫功能
●类似功能的工具还有【Scan】【御剑后台扫描珍藏版】等●需要递归式的扫描,拿着扫描结果进一步地扫描
●针对性扫描
●指纹识别
●简介:
最重要的就是特征库
●工具●Nmap:
●【nmap-O】:
操作系统指纹
●【Nmap-A/sV】:
端口服务版本等详细信息●【御剑指纹识别】:
可快速识别国内的一些主流CMS(仅限国内)
●【AppPrint】:
Web容器指纹识别工具,可针对单个IP、域名或IP段进行Tomcat、WebLogic、WebSphere、IIS等Web容器识别
●kali自带的【whatweb】【rint】等Web服务器指纹识别工具等●在线指纹识别的网站:
【云悉、shodan】等●浏览器插件【Wapplyzer】等●经验:
●指纹伪造(少见)
●子域名爆破
●lijiejie、layer挖掘机等●漏洞扫描
●概述:
●概览
●BurpSuite
●各个模块:
●【Pro_y】:
代理模块,数据包拦截
●【Target】:
站点地图,Filter过滤,Scope目标范围,Issuedefinitions问题的定义
●基本使用方法:
●【Spider】:
爬虫,默认被动进行漏洞扫描,高版本没有。
pro_y抓包sendtospider
●基本使用方法:
●【Scanner】:
扫描漏洞
●基本使用方法:
●【intruder】:
入侵模块,自动化攻击、爆破等。
Attacktype,程序变量,字典设置等。
●基本使用方法:
●【Repeater】:
重放模块,拦截到的包sendtorepeater,修改后“Go”发送请求,Response区域显示响应
●【Decoder】:
解码模块●基本使用方法:
解码、编码、hash、智能解码
●【parer】:
比较模块●基本使用方法:
●其他小问题:
●中文乱码:
UserOptions调成中文字体即可
●恢复默认选项
●使用插件:
独立运行或者BP中添加或安装
●AWVS(Acui_)
)
●自动化Web漏洞扫描工具
●10以及以下为客户端,10以上为web●AWVS超详细中文手册:
s:
//blog.csdn./madao1o_o/article/details/88548681】
●基本使用方法(版本不同差别不大):
●基本的一次扫描(webscanner)
●Web端扫描服务
●创建扫描
●AWVS小工具
●AppScan
●简介
●基本使用方法●界面:
●AppScan的全面扫描:
探索和测试
●示例:
●处理结果
●AppScan辅助工具:
可以在菜单栏工具“��”PowerTool“中找到
●其他
●不要过分依赖工具,重在积累经验
●漏洞原理篇
●SQL注入漏洞
●SQLi原理
●用户的输入数据被SQL解释器执行●形式:
【闭合+攻击者的SQL语句+注释】
●经典实例:
【"or1=1--】
●需要推测后端程序源码的闭合方式,使SQL语句提前闭合,并能执行自己的SQL语句,注释掉或闭合后面的多余代码●注入漏洞分类
●概览
●数字型注入●判断●【"】
引号处报错●【1=1】正常【1=2】错误,页面存在布尔状态●常见于弱类型语言,自动推导变量类型
●字符型注入●关键:
如何闭合SQL语句,注释多余的代码
●判断●常见的闭合方式(需要推测后端代码):
【"】【;;】【")】
●常见的注释方式(数据库或脚本语言决定):
【--】【#】
●示例:
●select查询:
【"and1=1--】
●update更新(例如SQLServer重置密码等):
【"+(select@@version)+"】
●insert同update●SQL注入的其他分类●按出现的位置●Cookie、POST等●按反馈形式●盲注(根据页面布尔状态)、延时(根据延时)等●到了数据库都可被归纳为【数字型】和【字符型】
●常见数据库注入
●概览:
●SQLServer
●利用错误信息提取信息●对于用户不应该像对开发者一样【反馈详细的报错信息】
●枚举当前表及列:
【【groupby】【"having1=1--】
●利用数据类型错误提取数据:
●【"and1;gt;(selecttop1usernamefromusers)】
●【"and1;gt;(selecttop1usernamefromuserswhereusernamenotin("root"))】
●【"and1=convert(int,(selecttop1usernamefromusers))】
●【"and1=convert(int,(selectstuff((select","+users.username,"|"+users.passwordfromusersfor_mlpath("")),1,1,"")))】
●获取元数据●元数据库【INFORMATION_SCHEMA】
●【INFORMATION_SCHEMA.TABLES】视图:
表●【INFORMATION_SCHEMA.COLUMNS】
视图:
字段●取得当前数据库表●【selecttable_namefrominformation_schema.tables】
●取得Student表字段●【selectcolumn_namefrominformation_schema.columnswheretable_name="Student"】
●常见视图
●Orderby子句(通用)
●【orderbyN】,按第N列排序,当第N列不存在时报错,可判断列数
●UNION查询(通用)
●基本规则:
●列数相同●数据类型兼容●探测字段(列)数:
【unionselectnull,null,null】
●三列:
【unionselectnull,"_",nullfromsysobjectwhere_type="U"】
●示例:
●无辜的(系统)函数●系统函数和常用函数
●危险的存储过程●常见的危险存储过程
●角色与权限
●动态执行●e_ec,十六进制绕过防火墙过滤
●Mysql((※)
●基本思路同SQLServer,语法存在差异。
如:
SQLServer:
@@version;mysql:
version。
●Mysql中的注释●【#】【--】【/__/】【/_!
_/】
●获取元数据●【INFORMATION_SCHEMA】信息数据库●查询数据库名称●【selectSCHEMA_NAMEfromINFORMATION_SCHEMA.SCHEMATA】
●查询当前数据库表●【selectTABLE_NAMEfromINFORMATION_SCHEMA.TABLESwhereTABLE_SCHEMA=(selectDATABASE)】
●查询指定表的所有字段●【selectCOLUMN_NAMEfromINFORMATION_SCHEMA.COLUMNSwhereTABLE_NAME="Student"】
●案例:
【limit0,1】【linit1】
●UNION查询
●差别:
【Oracle】需要加【表名】,【SQLServer】和【Oracle】数据类型不确定时使用【null】
●Mysql函数利用●常用函数
●【load_file】:
读取文件
●十六进制绕过、char强制类型转换绕过、he_解决乱码问题
●【intooutfile】:
写文件
●【连接字符串】:
●【concat】:
●【concat_ws】
●【load_file】:
读取文件●权限
●Mysql显错式注入●【update_ml】【e_tractvalue】【floor】
●【update_ml】
●【andupdate_ml(1,(concat(0_7c,(select@@version))),1)】
●【e_tractvalue】
●【ande_tractvalue(1,concat(0_7c,(selectuser)))】
●【floor】
●【unionselect_
from(selectcount(_),concat(floor(rand(0)_2,(selectuser))afrominformation_schema.tablesgroupbya)b】
●宽字节注入●编码不统一导致的,gbk编码为双字节编码8140-FEFE●【\】是【5c】【%df5c】就构成了一个汉字从而绕过了转义,df可以换为81-FE之间的,让magic_es_gpc的转义反斜杠\参与构成了一个GBK编码的汉字,从而使后面的单引号或双引号之类的注入生效,s:
//mubu./doc/3ikGy9mE_Wr
●Mysql长字符截断
●配置问题:
mysql的设置中【sql_mode:
default】
●示例:
●延时注入
●基于时间差异的盲注
●【andsleep(3)】
●思路:
【length】【he_(mid(target,L,1))】,通过延时判断假设的表达式的真假,来一点点地猜解
●Oracle
●获取元数据●【user_tablespaces】视图:
查看表空间●【selecttablespace_namefromuser_tablespaces】
●【user_tables】视图:
查看当前用户的所有表●【selecttable_namefromuser_tableswhererownum=1】
●【user_tab_columns】视图:
查看当前用户的所有列,例如查看user表的所有列●【selectcolumn_namefromuser_tab_columnswheretable_name="users"】
●【all_users】视图:
查看Oracle数据库的所有用户●【selectusernamefromall_users】
●【user_objects】视图:
查看当前用户的所有对象(表名称、约束、索引)
●【selectobject_namefromuser_objects】
●UNION查询●【orderby】【unionselectnull,null,nullfromdual】
●获取敏感信息
●获取数据库表以及其内容
●Oracle中包的概念●简介
●页面不能直接回显,反弹数据
●写文件
●读文件
●执行系统命令●第一步:
创建Java执行代码包
●第二步:
赋予用户Java执行权限
●第三步:
创建函数,调用Java代码●第四步:
执行命令
●常见包
●注入工具
●概览
●SQLMap
●简介
●
●基本使用●【-u;;URL;;】:
判断是否存在注入点●【-u;;URL;;--dbs】:
获取数据库●【-u;;URL;;--current-db】:
当前数据库(假设为cdb)
●【-u;;URL;;-Dcdb--tables】:
列出cdb数据库的所有表●【-u;;URL;;-Dcdb-Ttable1--columns】:
列出cdb数据库的table1表中的所有字段●【-u;;URL;;-D;;cdb;;-T;;table1;;-C;;user,passwd,emails;;--dump】:
获得指定字在段的内容,除了回显,还会保存在SQLMap/output/目录下,名为ldquo;表名.cvs”●常用参数●测试注入点权限:
【--privileges】
●【sqlmap-u[URL]--privileges】
//测试所有用户的权限●【sqlmap-u[URL]--privileges-Usa】
//测试sa用户权限●执行Shell命令:
【--os-cmd】
●【sqlmap-u[URL]--os-cmd=;;user;;】
//执行user命令●【sqlmap-u[URL]--os-shell】
//系统交互的shell●执行SQL命令:
【--sql-shell】
●【sqlmap-u[URL]--sql-shell】
//返回SQL交互的shell,可以执行SQL语句●【sqlmap-u[URL]--sql-query=;;sql;;】
●POST提交方式:
【--data;;POST参数;;】
●显示信息的详细(程度)等级:
【-v0-6】
●【sqlmap-u[URL]--dbs-v1】
●-v参数包含以下7个等级●【0】:
只显示python的回溯、错误和关键消息●【1】:
显示信息和警告消息●【2】:
显示调试消息●【3】:
有效载荷注入●【4】:
显示请求●【5】:
显示响应头●【6】:
显示响应页面的内容●注入请求:
【-rhead.t_t】
●【sqlmap-rhead.t_t--dbs】
//head.t_t内容为请求,例如BP的抓包●直接连接到数据库●【sqlmap-d;;mysql:
//admin:
admin@192.168.1.8:
3306/testdb;;--dbs】
●注入等级:
【--level】
●【sqlmap-u[URL]--level3】
●【1】:
默认●【2】:
cookie会被测试●【3】:
user-agent/referer会被测试
●【5】:
包含的payload最多,会自动破解出cookie、_FF等头部注入,但速度也会很慢。
●【-p】指定想要测试的参数:
-p;;id,user-agent;;●【--skip=;;;;】:
level很大但有个别参数不想测试的时候使用--skip来跳过:
--skip;;user-agent.referer;;●将注入语句插入到指定位置:
【_】
●【sqlmap-u;;id/2_.;;--dbs】
●使用SQLMap插件:
【-ter】//插件都保存在sqlmap/ter下,这些插件通常用来绕过WAF(web应用防火墙)
●【sqlmap-u[URL]-ter;;space2morehash.py;;】
●其他常用参数●参考:
s:
//github./sqlmapproject/sqlmap/wiki/Usage●常用参数以及说明
●【】
●【】
●【】
●【sqlmap-u[URL]--data;;POST参数;;】
●Pangolin
●穿山甲,略●Havij
●自动化sql注入软件,略●止防止SQL注入
●概览:
●数据类型判断、特殊字符转义
●严格的数据类型●数字型注入:
Java、C#等强类型语言几乎可以忽略;PHP、ASP需要is_numeric、ctype_digit等函数判断数据类型
●特殊字符转义●还有黑白名单策略,对特殊字符整理成黑名单,统一进行转义等过滤操作。
●二次注入攻击:
利用第一次过滤后的正常输入来闭合第二次的sql语句
●使用预编译语句●JAVA:
prepareStatement、setter,动态拼接sql语句就没用了
●框架技术●对象关系映射ORM注入、HQL注入,动态拼接就可能会存在注入
●改进代码:
【?
】【setParameter(0,id)】;【:
id】【setParameter(;;id;;,id)】
●存储过程●e_ec、动态拼接等依然会造成SQL注入。
●小结●先工具,后手工辅助。
代码规范形成模板。
●上传漏洞
●概述●Web应用允许上传文件,没有做严格验证或过滤
●解析漏洞
上传漏洞常与Web容器的解析漏洞配合使用。
常见的Web容器:
IIS、Apache、Ngin_、Tomcat等
●IIS解析漏洞●IIS6.0●【.asa】【.asp】文件夹下的任意文件都会当作asp文件解析●【.asp;1.jpg】文件也会以ASP脚本执行
●WebDav
●开启后,如果支持PUT、Move、Copy、Delete等方法
●测试步骤如下:
●【OPTIONS】探测方法
●【PUT】上传脚本文件(一句话木马等)
●【Move】或【Copy】改名,至此,获取webshell
●【DELETE】还可以删除服务器上的任意文件
●WebDav漏洞检测工具:
【IISWrite】
●Apache解析漏洞●扩展名从后向前知道遇到认识的解析,【/conf/mime.type】下记录有Apache认识的扩展名
●可以绕过黑名单【1.php.rar】
●PHPCGI解析漏洞●【/1.jpg/1.php】:
1.jpg被当作php脚本来解析,通用:
【/1.jpg/___.php】
●PHP配置文件中的【cgi.fi:
__pathinfo】
选项默认开启,造成PHP向前的递归解析●常见于Ngin_+PHP●绕过上传漏洞
●概述●客户端。
服务端检测,菜刀(蚁剑)和一句话木马。
●中国菜刀、Edjpg
●客户端检测●概述●JS客户端验证,约等于无,可以通过各种方法轻易绕过。
上传文件的处理:
php脚本控制,将临时目录中的上传文件,重命名,放到指定目录下,如move_uploaded等处理。
●绕过方法●使用FireBug,已经淘汰,使用Firefo_DeveloperEditor即可
●【F12】打开开发者工具:
操作方法相同。
在保证身份认证通过的情况下,对请求页面做出自己的修改来绕过客户端检测
●中间人BP●先正常通过客户端验证,再BP截获客户端请求进行非法修改,就绕过了客户端验证。
●服务器端检测●概述●黑白名单、文件类型、文件重命名。
注意解析漏洞。
●黑白名单策略●黑名单过滤
●绕过方法
●白名单过滤
●绕过方法
●MIME验证●概述●MIME(多用途互联网邮件扩展类型),指定某种扩展名文件的打开方式
●示例●简单的一个jpg类型判断,md5文件名重命名,再move_uploaded_file将上传文件移到指定目录
●绕过:
BP拦截,修改Content-Type也就是MIME类型即可
●目录验证●上传文件的保存路径在前端暴露,参数可控,利用解析漏洞,将文件夹名称改为.asp,则IIS6.0其下的所有文件都会被解析为asp文件,包括木马。
●示例:
●截断上传攻击●【%00】:
00截断,ASP、PHP、JSP等均存在,以asp为例
●示例:
●存在00截断漏洞的典型的ASP代码
●BP拦截请求
●BP修改文件名为1.asp空格___.jpg,HE_模式下将空格20改为00,即可截断。
绕过了文件类型验证,最后得到的还是asp脚本文件
●文本编辑器上传漏洞
●概述●富文本编辑器:
品类繁多,功能丰富,漏洞危害范围大。
●敏感信息暴露●富文本编辑器的目录往往存在一些敏感文件,没有处理干净就会被攻击者获取敏感信息,详情可查看各自的官网手册等
●黑名单策略错误●过滤不干净
●任意文件上传漏洞●示例:
●upload.php,只看第一块验证阶段即可
●config.php中记录的格式配置为:
发现没有Media,这意味着可以上传任意类型文件,(绕过了Type检测,count(......);gt;0为假,故可以上传任意类型文件)
●利用
●其他漏洞:
可查阅对应的漏洞库
●修复上传漏洞
●【目录过滤】【文件重命名】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web安全深度剖析 Web 安全 深度 剖析