文章总结: 本文介绍了红队项目中通过目录扫描发现源码泄露后的快速审计方法。作者分享了针对NET源码的审计技巧,包括定位API接口和发现SQL注入漏洞。文章展示了一个典型的ADO.NET注入案例,并指出MSSQL注入存在命令执行风险。这种快速审计方法适用于渗透测试初期的打点阶段,能有效提高测试效率。 综合评分: 88 文章分类: 红队,渗透测试,代码审计,漏洞分析,WEB安全
红队项目下源码泄露快速审计打点
原创
ptr
UpRoot
2025年12月2日 22:46 浙江
项目上目录扫描泄露的一套源码,漏洞均已修复,本文仅供思路及技术分享。
通过Tscanplus做第一波目录扫描的时候泄露了bin.zip,源码不全,但也算天胡开局了。
NET源码泄露的是dll程序集,导入工具快速反编译。对于net快速打点最快的就是dba的sql注入。
对于net源码的快速审计,如果是webform的,我就直接ai跑个脚本提出来aspx、ashx文件路径然后批量访问检测未授权的接口来审计;如果是mvc的,我会直接定位到继承ApiController的接口,这个接口一般是不鉴权的。
这里我们可以定位到api接口的路由写法,下面开干即可。
[HttpPost]
[Route("api/getForklift")]
public ResParameter GetData([FromBody] string CompanyId)
{
DataTable forklift = this.accessRecordService.GetForklift(CompanyId);
DataTable table = this.accessRecordService.NotOrgRepository().FindTable($"select distinct LocationCode,LocationName,WorkShopId,CompanyId,EQPIp from Inv_EqpInfo Where CompanyId='{CompanyId}'");
var data = new
{
forklift = forklift.AsEnumerable().Select(s => new
{
ForkTruckInfoId = s.Field<string>("ForkTruckInfoId"),
ForkTruckCode = s.Field<string>("ForkTruckCode"),
ForkTruckName = s.Field<string>("ForkTruckName"),
CardNo = s.Field<string>("CardNo"),
CardId = s.Field<string>("CardId"),
ForkTruckType = s.Field<int>("ForkTruckType"),
ProLinIds = s.Field<string>("ProLinIds")
}),
rfid = table.AsEnumerable().Select(s => new
{
LocationCode = s.Field<string>("LocationCode"),
LocationName = s.Field<string>("LocationName"),
WorkShopId = s.Field<string>("WorkShopId"),
CompanyId = s.Field<string>(nameof (CompanyId)),
EQPIp = s.Field<string>("EQPIp")
})
};
returnnew ResParameter()
{
code = (ResponseCode) 200,
data = (object) data
};
}
这里典型的ADO.NET的注入,直接拼接导致注入。
dba的mssql注入是存在命令执行风险的。
- END –
查看原文:《红队项目下源码泄露快速审计打点》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论