使用C#winform编写渗透测试工具--敏感目录扫描

由于之前在做渗透测试的时候,发现使用的工具较多,切换起来较麻烦,便萌生了开发一个包含各种渗透测试工具的小程序,包括敏感目录扫描、端口查询、子域名挖掘、旁站查询、密码暴力破解、SQL注入等功能。这一篇主要介绍敏感目录扫描部分的原理和设计,软件的整体效果如下图所示。


目录

  1. 使用C#winform编写客户端软件
  2. 使用python编写脚本实现网站敏感目录扫描
  3. C#调用脚本的方法
  4. 效果展示

一、使用C#winform编写客户端软件

网上有许多这方面的教程,这里简单介绍一下操作步骤。

  • 首先打开Visual Studio软件,创建新项目。

如上图,选择Windows窗体应用,修改名称、位置、所用框架,最后点击确定。

  • 下面是我创建的一个用于DNS域名解析的项目。一个客户端软件通常由许多控件构成,左边②这一栏是Windows窗体的控件,点击需要的控件,拖动到窗口③中,③相当于是一个放置控件的容器。

  • 鼠标左键双击按钮可以进入“button_Click”这一触发事件当中,从而可以编写我们自定义的事件,如下图。

在“button_Click”这一触发的事件当中,编写代码,实现域名的解析。

  • 运行后,输入域名,点击“转换”按钮,完成从域名-->IP地址的转换。

二、使用python编写脚本实现网站敏感目录扫描

在渗透测试过程中,通过目录扫描,有可能会扫描出一些敏感目录或者文件,比如说后台登录页面,保存账户和密码的文件等,再通过暴力破解,SQL注入等方式,可以登录到后台、获取PHP版本信息、网站指纹等信息。

实现原理

  • 基于python强大的模块功能库,我们可以通过使用requests库进行访问,当code_status返回值为200时则可判断出该站点目录或者文件存在,若返回404,403则表示不存在;
  • 但在实际操作中,很多网站都存在反爬机制,故在实际应用中应当添加多线程的访问,同时也应更改添加header信息绕过网站反爬机制;
  • 在实际工具开发中,需要配合一个强大的url字典进行url爆破。这个字典包含可能的敏感文件或者目录后缀。

代码实现

# conding=utf-8
import sys
import math # 向上取整 math.ceil()
import threading
import requests # 给每个线程分任务(字典中大列表分成小列表)
def muti_scan(url, threads, dic):
with open(dic, "r") as f:
# 读取字典文件
dic_list = f.readlines()
# 确定每个线程读取的行数向上取整
thread_read_line_num = math.ceil(len(dic_list) / int(threads))
# 制作每一个线程读取的字典列表[[t1],[t2],[t3]]
i = 0
result_list = []
temp_list = []
for line in dic_list:
i = i + 1
# 每一次读取到取余为零就是一个新线程任务的开始
if i % thread_read_line_num == 0:
temp_list.append(line.strip())
result_list.append(temp_list)
temp_list = []
else:
temp_list.append(line.strip()) # 线程执行
threads_list = []
for i in result_list:
# 创建thread类
# 传入的参数是大列表result_list中的每一个小列表
threads_list.append(threading.Thread(target=scan, args=(url, i))) # 所有线程运行
for t in threads_list:
t.start() # 线程代码:扫描实现 发送get请求查看状态码
def scan(url, dic):
r = requests.get(url)
for line in dic:
r = requests.get(url + '/' + line)
if r.status_code == 200:
print(r.url + " : " + str(r.status_code)) muti_scan(sys.argv[1], sys.argv[2], sys.argv[3])

三、C#调用脚本的方法

首先需要安装python的环境

  1. 对于python脚本中不包含第三方模块的情况,在nuget管理包上下载的ironPython安装包,有兴趣的可以看看https://www.cnblogs.com/shiyingzheng/p/6054835.html这一片博客,讲的很详细
  2. 对于python脚本中包含第三方模块的情况,直接通过创建Process进程,调用python脚本,返回扫描结果。

代码实现

  • 创建按钮按下事件button1_Click,运行“调用python脚本”函数runPythonP()
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
runPythonP();//运行python函数
label5.Text = "开始扫描...";
}
  • 实例化一个python进程 调用.py 脚本
void runPythonP()
{
string th = comboBox1.Text;
string url = textBox1.Text;
p = new Process();
string path = "test.py";//待处理python文件的路径,本例中放在debug文件夹下
string sArguments = path;
ArrayList arrayList = new ArrayList();
arrayList.Add(url);//需要渗透的网站
arrayList.Add(th);//线程数
arrayList.Add("ASPX.txt");//调用字典
foreach (var param in arrayList)//拼接参数
{
sArguments += " " + param;
}
p.StartInfo.FileName = @"D:\Anaconda\python.exe"; //没有配环境变量的话,可以写"xx\xx\python.exe"的绝对路径。如果配了,直接写"python"即可
p.StartInfo.Arguments = sArguments;//python命令的参数
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();//启动进程
//MessageBox.Show("启动成功");
p.BeginOutputReadLine();
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
Console.ReadLine();
//p.WaitForExit();
}
  • 输出接收事件函数
void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
var printedStr = e.Data;
Action at = new Action(delegate ()
{
//接受.py进程打印的字符信息到文本显示框
richTextBox1.AppendText(printedStr + "\n");
label5.Text = "扫描结束";
});
Invoke(at);
}

四、效果展示

  • 使用虚拟机搭建测试环境,开启Web服务,在软件中输入网址,点击“开始扫描”,一段时间后,显示出扫描结果。

github地址:https://github.com/Chenmengx/Penetration-testing-tool

使用C#winform编写渗透测试工具--敏感目录扫描的更多相关文章

  1. #使用C#winform编写渗透测试工具--子域名挖掘

    使用C#winform编写渗透测试工具--子域名挖掘 这篇文章主要介绍使用C#winform编写渗透测试工具--子域名挖掘.在渗透测试中,子域名的收集十分重要,通常一个网站的主站的防御能力特别强,而他 ...

  2. 使用C#winform编写渗透测试工具--暴力破解

    使用C#winform编写渗透测试工具--暴力破解 这篇文章主要介绍使用C#winform编写渗透测试工具--暴力破解.暴力破解是指通过利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式.简单来说就 ...

  3. 使用C#winform编写渗透测试工具--Web指纹识别

    使用C#winform编写渗透测试工具--web指纹识别 本篇文章主要介绍使用C#winform编写渗透测试工具--Web指纹识别.在渗透测试中,web指纹识别是信息收集关键的一步,通常是使用各种工具 ...

  4. 使用C#winform编写渗透测试工具--SQL注入

    使用C#winform编写渗透测试工具--SQL注入 本篇文章主要介绍使用C#winform编写渗透测试工具,实现SQL注入的功能.使用python编写SQL注入脚本,基于get显错注入的方式进行数据 ...

  5. 使用C#winform编写渗透测试工具--端口扫描

    使用C#winform编写渗透测试工具--端口扫描器 主要介绍使用C#winform编写渗透测试工具--端口扫描器,端口扫描器则是一种检测服务器或者主机虚拟端口是开启或关闭的工具.由于连接到局域网或互 ...

  6. github渗透测试工具库

    本文作者:Yunying 原文链接:https://www.cnblogs.com/BOHB-yunying/p/11856178.html 导航: 2.漏洞练习平台 WebGoat漏洞练习平台: h ...

  7. github渗透测试工具库[转载]

    前言 今天看到一个博客里有这个置顶的工具清单,但是发现这些都是很早以前就有文章发出来的,我爬下来后一直放在txt里吃土.这里一起放出来. 漏洞练习平台 WebGoat漏洞练习平台:https://gi ...

  8. 轻量级Web渗透测试工具jSQL

    轻量级Web渗透测试工具jSQL jSQL是Kali集成的一款轻量级的Web渗透测试工具.最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具.Kali提供的版本较 ...

  9. 渗透测试工具SQLmap

    一.简介 SQLmap 是一款用 Python 编写的开源渗透测试工具,用来自动检测和利用 SQL 注入漏洞. 二.Windows 下安装 2.1 安装 Python 环境 注:Python 3.0会 ...

随机推荐

  1. csps考前的一些总结(然而可能并没有用)

    记录考前的一些复习和总结,如果没有特殊情况不再写新的题解了 图论: 一.最短路: 1.spfa算法中的vis数组记录的是有没有入队,防止多次入队,通过松弛操作来达到最优解 2.dijkstra算法的v ...

  2. noip2015 总结

    神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方:首先将1写在第一行的 ...

  3. 第11章 PADS功能使用技巧(2)-最全面

    原文链接点击这里 七.Flood与Hatch有什么区别? 我们先看看PADS Layout Help 文档是怎么说的,如下图所示: 从检索到的帮助信息,我们可以得到Hatch与Pour的区别,原文如下 ...

  4. Fiddler手机抓包配置指南

    前言: 对于开发.测试而言,抓包工具绝对是我们日常测试找bug的必备神器.今天主要介绍的是如何配置Fiddler抓取移动端app请求.首先Fiddler是一个http协议调试代理工具,它能够记录并检查 ...

  5. Golang编写Windows动态链接库(DLL)及C调用范例

    一.准备. 1.GoLang在1.10版本之后开始支持编译windows动态链接库,可以打开命令行工具使用go version 查看自己的go版本. 2.你的电脑上需要gcc,如果没有的话[点击这里] ...

  6. Linux 中使用 QT Charts 显示温度传感器

    前一篇笔记中实现了QT的Label控件显示CPU的温度,只能显示当前的温度,并不能反映CPU温度的变化情况,现在来实现使用QT Charts的曲线图实现一个实时曲线来显示CPU的温度. 添加对Qt C ...

  7. JavaScript 沙盒模式

    微前端已经成为前端领域比较火爆的话题,在技术方面,微前端有一个始终绕不过去的话题就是前端沙箱 什么是沙箱 Sandboxie(又叫沙箱.沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程 ...

  8. Unity接入ShareSDK实现QQ登录和QQ分享、微信分享

    原文链接:Unity接入ShareSDK实现QQ登录和QQ分享.微信分享 由于微信登录需要企业审核,我这里就不说明了,有需要的可以去官网看一下文档,和QQ登录比多了一个打包的步骤. 第一步:到官网申请 ...

  9. UV贴图类型

      凹凸贴图Bump Map.法线贴图Normal Map.高度贴图Height map.漫反射贴图Diffuse Map.高光贴图Specular Map.AO贴图Ambient Occlusion ...

  10. k8s部署docker容器

    一.环境 需机器已部署好k8s和docker的环境 二.操作步骤 1.将制作好的镜像推送到docker仓库 docker tag nginx:test harbor:test-nginx docker ...