使用Python检测HTML页面上的JavaScript

3 投票
3 回答
3100 浏览
提问于 2025-04-16 07:30

我现在正在做一个网络安全项目,主要是检查网站是否存在XSS漏洞,希望这个工具能帮助到渗透测试人员(如果你不相信我,觉得我只是个小白,这里有我们班的项目网站:http://netsec.cs.northwestern.edu/projects/)。

不过,我在检测某个HTML页面上的JavaScript时遇到了麻烦。我花了很多时间安装PyV8和V8,发现它们能处理一些简单的JavaScript语句。但是,对于一些更“复杂”的JavaScript问题,比如弹出警告框,PyV8似乎不支持。所以,我在想,能不能把一些任意的JavaScript代码给PyV8,然后期待它能给我相应的JavaScript输出。

我在DrEval中找到了一个JS服务器/客户端,但在最新版本的V8/PyV8中似乎无法使用。

请帮帮我!我的项目大约一周后就要交了,而班上没有人能帮我,因为这个问题有点奇怪……

嗯……如果这个问题之前已经有人回答过,我先在这里道个歉。我至少搜索了这个话题两个小时……

谢谢大家的回复!

3 个回答

0

PyV8 是 V8 JavaScript 引擎在 Python 中的一个接口。它可以执行非常复杂的 JavaScript 代码,而且 Google Chrome 也在使用这个引擎。

不过,要让它正常工作,你需要做一些准备。首先,PyV8 只是一个JavaScript 引擎,它并不负责构建网页的 DOM(文档对象模型)。所以,你需要自己创建一个 DOM,并在这个 DOM 上运行 PyV8 的环境。

另外,你提到 alert 函数不工作。alert(); 函数是 DOM 的一部分,实际上它是 window.alert(); 的简写。因此,你需要在 DOM 中指定每个函数和属性。

PyV8 的源代码中附带了一个简单的 DOM。你可以从 http://code.google.com/p/pyv8/source/browse/ 下载它。

0

我不太确定你想做什么,但这里有一些想法:

  1. 如果你想在网页上运行JavaScript代码,你需要一个浏览器或者一个模拟浏览器的工具。可以试试envjs。不过,它需要Java,因为它需要一个JavaScript解释器来运行代码。

    我不知道有没有类似功能的库可以用在Python上。也许你可以尝试去做这个。envjs主要是用JavaScript写的,但它需要一些来自解释器的支持功能,比如打印到控制台、下载数据和打开文件。

  2. XSS漏洞发生在你可以把JavaScript代码注入到网页中时,不管网页上已经有什么代码。所以你需要检查表单的所有字段,提交表单到服务器,然后确保在下一个页面上所有的值都被正确处理和转义。

0

一种非常不靠谱的方法是去网页的源代码里找“text/javascript”。

import urllib2
if urllib2.urlopen('http://www.google.co.uk').read().find('text/javascript') == 0:
    print "It has js."

这并不是最好的答案,如果有人知道正确的方法,我很乐意听听。

撰写回答