我有一个示例网址:http://www.foo.bar/index.php?ids=111
我发现它有http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>
与普通网址和xss网址不同的是,已在浏览器中显示警告框。但是当使用python时,我怎么能看到它或者检测哪个url是漏洞?
我已经尝试过python请求库:
import requests
xss_url = 'http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>'
r = requests.get(xss_url);
print r.text
normal_url = 'http://www.foo.bar/index.php?ids=111'
t = requests.get(normal_url);
print t.text
r.text和t.text的结果相同。
答案 0 :(得分:1)
确认注射是否是您可以执行的可执行脚本,例如。
而不是alert()
使用window.exploitDetected = True
作为注入验证
等待页面加载
Run JavaScript in the context of the WebDriver,请先了解window.exploitDetected
答案 1 :(得分:1)
基本检查是要查看您的有效负载是否存在于页面的来源中而不进行转义,这样的事情可以解决问题:
payload = "<SCrIpT>alert('XSS')</ScRiPt>"
xss_url = 'http://www.foo.bar/index.php?ids=">'+payload
r = requests.get(xss_url)
if payload.lower() in r.text.lower(): print("vulnerable")
这将检查页面的源中是否存在有效负载,不区分大小写。如果网站不容易受到攻击,那么有效负载将转换为HTML entities,而浏览器中的相同内容实际上是不同的,例如<
变为<
。
注意:这可用于确认是否存在XSS但不否认存在XSS;例如,不正确的转义会使得返回false,而有效负载仍然可以在真实的浏览器中运行。